VibrationEffect不能改变我的Galaxy S8手机上震动的振幅

3

这是代码:

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怎么可能产生相同的震动效果?

1个回答

6

我进行了一些调查,现在这个谜团已经揭开了。
如果有人遇到这个问题,请注意并不是所有支持 VibrationEffect (API>=26) 的设备都具有振幅控制硬件。
要检查你的设备是否具有振幅控制,请使用 hasAmplitudeControl 方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接