如何在我的Android应用程序中正确pipe理audio卷?
我有一个应用程序,当它的活动打开时播放断断续续的声音,用户总是期待它发出这些噪音,但不幸的是它受音乐stream量的限制。 我发现的选项是这样的:
- 调整音乐stream的音量,如果他们碰巧正在播放音乐,可能会震惊用户。
- 调用MediaPlayer.setVolume(),如果音乐stream的音量为0,则无效。
- 手柄音量button按下自己,这performance出两个问题:音量button按下调整铃声音量,除非我的audio正在播放,我已经无法赶上使用我的OnKeyListener按音量button的onKey事件。 如果有某种方法可以在我的活动集中时强制调整应用于音乐stream,或者只需按下button就可以实现。
- 在背景中播放静音循环audio片段,以保持音乐stream的音量调整。
我认为第三个选项可能是最好的,因为它将音量控制权交给用户,但是如果有一种方法可以在单个媒体播放器实例中覆盖系统音量,那么也可以工作。
通过Google网上论坛得到了另外一个build议,这是我一直在寻找的平台集成解决scheme,工作正常:
请不要自己处理音量键 – 几乎不可能保证您不会打破音量键的行为。
在你的onCreate()中调用这个API:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
这告诉AudioManager,当你的应用程序有焦点时,音量键应该调整音量。
这是有用的这个API:setVolumeControlStream(AudioManager.STREAM_MUSIC);
除非这样,否则我会花更多的时间来修复这个音量错误。
如果您正在使用“OnKeyDown”方法,则可以通过执行以下操作来解决此问题:
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { setVolumeControlStream(AudioManager.STREAM_MUSIC);}}
如果您重写了一个activity的onKeyDown(int keycode,KeyEvent event)方法,这将无济于事。