jjzjj

android - 音量变化监听器 : Is registerMediaButtonEventReceiver preferable to onKeyDown?

coder 2023-11-27 原文

在寻找一种“最全面且兼容(即所有 Android 版本...)”的方式来收听音量变化时,我发现了两种不同的方法来处理此问题:

  1. registerMediaButtonEventReceiver
  2. onKeyDown + SettingsContentObserver

哪种方法更可取?

为什么?

更新 1:感谢下面的评论,我发现 onKeyDown() 实际上接管音量键,这可能不是一个完整的解决方案之一帖子提到音量可以通过硬件按钮以外的界面来改变(更不用说谷歌似乎正在逐渐取消那些“接管”功能)。

OTOH,android.media.VOLUME_CHANGED_ACTION 是一个 hack 和 isn't even documented .这可能意味着它将 cease to work在 Android 5 左右...

更新 2:registerMediaButtonEventReceiver 根本不起作用! (对于 音量硬件按钮,也就是说,我刚刚试过了)。

其他见解?

最佳答案

如果在未来的 API 中有一个用于音量流的 BroadcastReceiver 会很棒,但今天最好的解决方案可能是为设置注册一个 ContentObserver(包括 VOLUME_NOTIFICATION ):

mSettingsContentObserver = new SettingsContentObserver( new Handler() ); 
this.getApplicationContext().getContentResolver().registerContentObserver( 
    android.provider.Settings.System.CONTENT_URI, true,
    mSettingsContentObserver );

有关更多信息,请参阅此答案:https://stackoverflow.com/a/7017516/117382

编辑:使用工作代码更正。也许这个解决方案更好:https://stackoverflow.com/a/17398781/117382

关于android - 音量变化监听器 : Is registerMediaButtonEventReceiver preferable to onKeyDown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234176/

有关android - 音量变化监听器 : Is registerMediaButtonEventReceiver preferable to onKeyDown?的更多相关文章

随机推荐