我正在开发一款游戏。在其中,我希望为不同的事件设置不同的振动强度。我只想知道是否真的可以控制振动的强度和持续时间。任何建议或参考链接都会非常有帮助。提前感谢。
我想到了一个简单的方法,来减轻振动的强度。我的想法是在振动间隔中插入静音时间间隔。如果你有1毫秒的振动,然后1秒的静默,如此循环,它看起来像是一个持续的振动,但比正常情况下要弱。你可以尝试增加静默时间间隔,使振动更弱。以下是代码示例:
int strong_vibration = 30; //vibrate with a full power for 30 secs
int interval = 1000;
int dot = 1; //one millisecond of vibration
int short_gap = 1; //one millisecond of break - could be more to weaken the vibration
long[] pattern = {
0, // Start immediately
strong_vibration,
interval,
// 15 vibrations and 15 gaps = 30millis
dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, dot, short_gap, //yeah I know it doesn't look good, but it's just an example. you can write some code to generate such pattern.
};
我认为这取决于你所指的强度是什么意思。您可以控制振动的模式和长度,但我不认为您可以使其振动“更强”。
http://developer.android.com/reference/android/os/Vibrator.html
这可能对你有所帮助,但它只适用于API级别在26或以上的设备。
public void vibrate(View view) {
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
long[] wave_time = {0, 100, 0, 100, 0, 100, 0, 100, 0, 100};
int[] wave_ampl = {0, 50, 0, 100, 0, 150, 0, 200, 0, 255};
VibrationEffect vibrationEffect = null;
vibrationEffect = VibrationEffect.createWaveform(wave_time, wave_ampl, -1);
vibrator.vibrate(vibrationEffect);
}
}
wave_time
数组表示两种类型的时间:
wave_ampl
数组表示振动强度相对于wave_time
数组。wave_time
的0索引),然后开始振动100毫秒(wave_time
的1索引),强度为50(wave_ampl
的1索引)。wave_ampl
的3索引)的强度振动100毫秒(wave_time
的3索引)。