我正在尝试为Android构建一个颤振应用程序,它可以同时震动手机
足够长的时间和足够强的力量,即使用户的手机在口袋里,振动也是显而易见的。
在用户可以识别的特定模式中(如莫尔斯电码)
我发现了产生触觉反馈的方法,例如HapticFeedback.vibrate
、HapticFeedback.lightImpact
;但是,这些方法都不允许我控制振动的长度。
是否有任何方法可以使手机在指定的时间长度内振动(例如250毫秒)?
最佳答案
我正在回答我自己的问题,因为我找到了一个适用于Android的解决方案;使用插件,以下代码非常适用于发送自定义的振动长度和振动模式:
class GoodVibrations {
static const MethodChannel _channel = const MethodChannel(
'github.com/clovisnicolas/flutter_vibrate');
///Vibrate for ms milliseconds
static Future vibrate(ms) =>
_channel.invokeMethod("vibrate", {"duration": ms});
///Take in an Iterable<int> of the form
///[l_1, p_1, l_2, p_2, ..., l_n]
///then vibrate for l_1 ms,
///pause for p_1 ms,
///vibrate for l_2 ms,
///...
///and vibrate for l_n ms.
static Future vibrateWithPauses(Iterable<int> periods) async {
bool isVibration = true;
for (int d in periods) {
if (isVibration && d > 0) {
vibrate(d);
}
await new Future.delayed(Duration(milliseconds: d));
isVibration = !isVibration;
}
}
}