【发布时间】:2012-08-06 19:26:22
【问题描述】:
我正在开发一个音乐应用程序,该应用程序包含在其他应用程序运行时播放音乐的服务。
为了只欣赏音乐,服务会静音所有其他应用程序。为此,它将 STREAM_MUSIC 静音并通过 STREAM_VOICE_CALL 播放音乐(找到了静音其他应用程序的解决方案here)
由于服务使用 STREAM_VOICE_CALL 播放音乐,我试图找到一种在播放声音时让音量按钮控制此流的方法。
我已经尝试过的:
- setVolumeControlStream: 只适用于活动
- 捕获音量键按下事件:服务未收到此类事件 (source)
- audioManager.setMode(AudioManager.MODE_IN_CALL) :在我的情况下不起作用。另外,SDK documentation 声明“这种模式只能由电话应用程序在拨打电话时使用”。
在这一点上,我没有选择,任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你想播放什么样的声音?通过听筒或通过扬声器的东西?您是否有理由需要使用 STREAM_VOICE_CALL?你不能用STREAM_MUSIC吗?
-
服务是音乐播放器的一部分,声音就是音乐。该服务还将STREAM_MUSIC静音,以使其他应用程序静音,以免音乐与声音混在一起,这就是我使用另一个流的原因。
-
通过选择静音所有其他应用程序并强迫自己使用另一个流,你让事情对自己来说太难了。用户将无法检测是否发生了仅在他们正在收听时才播放声音的事件。就个人而言,我不想要这样的解决方案。
-
如果我将每个流静音,我会同意你的。但唯一静音的流是 STREAM_MUSIC,因此仍然可以听到通知。
标签: android service android-service android-audiomanager