在安卓系统上设置服务的音量控制流



我正在开发一个音乐应用程序,它包含一个在其他应用程序运行时播放音乐的服务。

为了只欣赏音乐,服务会静音所有其他应用程序。为了做到这一点,它静音了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);

最新更新