【问题标题】:VibrationEffect doesn't change the amplitude of the vibes on my Galaxy S8VibrationEffect 不会改变 Galaxy S8 上的振动幅度
【发布时间】:2020-07-04 18:09:04
【问题描述】:

这是代码:

public class Vibrate extends AppCompatActivity {
    long[] timings = {1000, 1000, 1000, 1000};
    int[] amplitudes = {0, 5, 250, 5};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vibrate);

        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        // Vibrate for 500 milliseconds
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            v.vibrate(VibrationEffect.createWaveform(timings, amplitudes, 0));
        } else {
            //deprecated in API 26
            v.vibrate(500);
        }
    }
}

我尝试了波形效果,但是当我在 Galaxy S8 上运行它时,所有的振动感觉都一样。 怎么回事?
5 的振幅和 250 的振幅怎么可能产生相同的振动?

【问题讨论】:

    标签: android android-studio android-8.0-oreo galaxy android-vibration


    【解决方案1】:

    所以我做了一些挖掘,现在谜团解开了,
    如果有人在这个问题上遇到困难,您应该知道,并非所有支持 VibrationEffect (API>=26) 的设备实际上都具有振幅控制硬件。
    要检查您的设备是否具有振幅控制,请使用hasAmplitudeControl 方法:

     Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
     Log.i("================", "This device has amplitude control: " + v.hasAmplitudeControl());
    

    【讨论】:

      猜你喜欢
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2018-01-19
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多