我正在尝试为Android构建一个颤振应用程序,它可以同时震动手机
足够长的时间和足够强的力量,即使用户的手机在口袋里,振动也是显而易见的。
在用户可以识别的特定模式中(如莫尔斯电码)
我发现了产生触觉反馈的方法,例如HapticFeedback.vibrateHapticFeedback.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;
    }
  }
}

10-02 11:21