我想做的是,能够在 android 4.4 上的锁屏上捕获音量增大/减小按钮操作。
Google Cast 设计清单 https://developers.google.com/cast/docs/design_checklist#sender-control-lockscreen文档描述了锁屏要求“通过硬件按钮提供对音量控制的访问”。我尝试了各种方法来处理锁定屏幕上的硬件音量按钮,但没有一个起作用。
onKeyDown/dispatchKeyEvent- 我尝试重写 Activity 上的 onKeyDown 和dispatchKeyEvent 方法,但这些方法都不会在锁屏上执行,这些方法仅在我的应用程序聚焦时才有效。
设置.System.CONTENT_URI/ContentObserver- 在主活动的内容解析器上注册内容观察器确实可以捕获系统设置更改,但这也不会发生在锁屏上。
android.intent.action.MEDIA_BUTTON- 清单中包含此过滤器,我可以从锁屏接收播放/暂停操作,但没有音量更改事件。
android.media.VOLUME_CHANGED_ACTION- 在清单中包含此过滤器后,我的 BroadcastReceiver 中会收到此事件,不幸的是,它的额外值永远不会在锁定屏幕上更改。当我不断点击音量按钮时,返回的 android.media.EXTRA_VOLUME_STREAM_VALUE 保持不变(即始终为 1),即使我的广播接收器收到了 CHANGED 操作。
CastVideos-android- 参考 Android 发送器应用程序似乎能够控制接收器上的音量,即使从发送器锁定屏幕进行控制也是如此,但是即使在 Cast.CastApi.setVolume() 周围放置断点之后,这些也不会被选中。所以看来该命令是从我无法找到的地方发送到接收器的。
我还可以看到其他一些应用程序能够捕获硬件音量键,即播放音乐应用程序。所以我的设备肯定有能力...
谁能建议任何可行的解决方案?
您需要使用 RemoteControlClient(在棒棒糖之前)或最近引入的 MediaSession。举个例子,看看CastCompanionLibrary, VideoCastManager#setUpRemoteControl()
方法其中 RCC 注册到MediaRouter
。如果使用MediaSession
,那么你需要注册 MediaSessionMediaRouter
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)