是否可以在 Flutter 中完全处理音量增大/减小产生的事件?

Posted

技术标签:

【中文标题】是否可以在 Flutter 中完全处理音量增大/减小产生的事件?【英文标题】:Is it possible to handle events generated by volume up/down completely in Flutter? 【发布时间】:2020-03-25 11:52:08 【问题描述】:

是否可以在 Flutter 中完全拦截硬件按钮产生的事件?例如,如果应用程序处于活动状态并且按下了音量增大/减小按钮,是否可以在应用程序中拦截该事件,以应用程序特定的方式处理它,最重要的是防止它被系统进一步操作,以便实际调高/调低音量并显示显示音量调高/调低的系统对话框/弹出窗口的默认行为不会发生?

我尝试使用 hardware_buttons 颤振库/插件。它允许我在按下按钮时做出反应,但事件仍会继续传播,因此系统也会以常规方式处理它们。

提前感谢您的建议!

【问题讨论】:

这能回答你的问题吗? Access hardware buttons (like the volume buttons) from Flutter 不,它没有。我在我的问题中提到了这个插件,我知道。它不允许我通过 mu 应用程序专门处理事件而不进一步传播它们 你有没有办法做到这一点@hicnar?我发现的唯一库现在已弃用。 :(github.com/flutter-moum/flutter_hardware_buttons android 上,你可以轻松做到这一点,你所要做的就是在你的主要活动中覆盖 onKeyDown 和 onKeyUp 函数,所以它应该看起来像这样:class MainActivity: FlutterActivity() override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean super.onKeyDown(keyCode, event) return true override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean super.onKeyUp(keyCode, event) return true 关于 Apple,AFAIK 你的应用程序将如果它修改了硬件按钮的默认行为,则会被拒绝。 【参考方案1】:

volume_watcher 为我工作。您可以:

使用小部件监听音量事件:
import 'package:volume_watcher/volume_watcher.dart';

VolumeWatcher(
  onVolumeChangeListener: (double volume) 
    // do stuff
  ,
)
或者直接监听事件:
import 'package:volume_watcher/volume_watcher.dart';

int _volumeListenerId;

@override
void initState() 
  super.initState();
  _volumeListenerId = VolumeWatcher.addListener((volume) 
    // do stuff
  );


@override
void dispose() 
  VolumeWatcher.removeListener(_volumeListenerId);
  super.dispose();

【讨论】:

【参考方案2】:

答案是否定的,虽然您可以聆听它们,但无法使用它们并阻止操作系统对其进行操作。另一个示例问题只是听音量。

【讨论】:

【参考方案3】:

您可以使用perfect_volume_control 包。 获取设备音量

PerfectVolumeControl.getVolume();
PerfectVolumeControl.volume;

添加监听器

PerfectVolumeControl.stream.listen((volume) 
  print(volume);
);

【讨论】:

以上是关于是否可以在 Flutter 中完全处理音量增大/减小产生的事件?的主要内容,如果未能解决你的问题,请参考以下文章

xamarin.forms - 音量增大和减小键的事件侦听器

请问家里用闹钟的蜂鸣器音量太小,有什么方法可以增大音量,比如换蜂鸣器等!多谢详细介绍~谢谢!

如何隐藏按下音量增大/减小按钮时弹出的消息

如何检测音量上下是不是被按下

WM的智能手机怎么修改注册表

如何在windows10实现键盘控制音量快捷键 - F12增大音量F11减低音量F10静音 - 使用微软官方的PowerToys实用工具中的Keyboard Manager自定义快捷键