我正在开发一个音乐应用程序,它包含一个在其他应用程序运行时播放音乐的服务。
为了只欣赏音乐,服务会静音所有其他应用程序。为了做到这一点,它静音了STREAM_MUSIC,并通过STREAM_VOICE_CALL播放音乐(在这里找到了静音其他应用程序的解决方案)
由于该服务使用STREAM_VOICE_CALL播放音乐,我试图找到一种方法,使音量按钮在播放声音时控制此流。
我已经尝试过的:
- setVolumeControlStream:仅适用于活动
- 捕获音量键按下的事件:服务不接收此类事件(来源)
- audioManager.setMode(audioManager.MODE_IN_CALL):在我的情况下不起作用。此外,SDK文档指出,"只有当电话应用程序拨打电话时,才应使用此模式"
在这一点上,我没有选择,任何帮助都将不胜感激。谢谢
我个人不建议您使用STREAM_VOICE_CALL
,因为与媒体播放相比,建议您将其用于语音通话。使用此功能可能会阻止您使用Android公开的功能进行媒体播放。
话虽如此&考虑到您的用例,我认为您需要考虑将"呼叫音量"级别与"媒体音量"级别进行比较。
看看股票音乐播放器应用程序中使用的MediaPlaybackService.java,并尝试根据您的需求进行自定义。
我自己还没试过。但看起来应该有效。请尝试一下。
m_audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
m_audioManager.setMode(AudioManager.MODE_IN_CALL);