【发布时间】:2018-04-28 02:57:01
【问题描述】:
我正在开发一款游戏。其中,我想为不同的事件设置不同的振动强度。我只是想知道它是否真的可以控制振动强度和持续时间。任何建议或参考链接都可能非常有帮助。提前致谢。
【问题讨论】:
我正在开发一款游戏。其中,我想为不同的事件设置不同的振动强度。我只是想知道它是否真的可以控制振动强度和持续时间。任何建议或参考链接都可能非常有帮助。提前致谢。
【问题讨论】:
我认为这取决于您所说的强度。您可以控制振动的模式和长度,但我认为您无法使其振动“更强”。
http://developer.android.com/reference/android/os/Vibrator.html
【讨论】:
我做了一个简单的技巧来以某种方式降低振动强度。我的想法是将振动间隔与静音间隔交错。如果你有 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.
};
【讨论】:
这可以帮助你,但它只适用于 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 数组代表振动的强度 w.r.t wave_time 数组。
电话等待 0 毫秒(wave_time 的第 0 个索引)并开始振动 100 毫秒(wave_time 的第一个索引),强度为 50(wave_ampl 的第一个索引)。
类似地,手机振动 100 毫秒(wave_time 的第三个索引),强度为 100(wave_ampl 的第三个索引)。
在android中最大强度为255。
【讨论】: