如何在我的Android应用程序中理智地管理音量?

时间:2009-03-10 01:54:08

标签: android

我有一个应用程序在其活动打开时播放间歇性声音,并且用户总是期望它发出这些噪音,但不幸的是它受到音乐流量的限制。我发现的选项是:

  1. 调整音乐流的音量,如果他们恰好正在播放音乐,可能会震撼用户。
  2. 调用MediaPlayer.setVolume(),如果音乐流的音量为0,则无效。
  3. 处理音量按钮按下我自己,这有两个问题:音量按钮按下调整振铃器音量,除非我的音频正在播放,而且我已经无法使用我的OnKeyListener捕捉音量按钮按下的onKey事件。如果有某种方法强制调整应用于音乐流,而我的活动有焦点,或者只是按下按钮按下自己,这将有效。
  4. 在后台播放无声循环音频,以便将音乐流保存在上下文中以进行音量调整。
  5. 我认为第3个选项可能是最好的,因为它会将卷控制权交给用户,但是如果有一些方法可以在单个媒体播放器实例中覆盖系统卷,那么它也会起作用。

5 个答案:

答案 0 :(得分:71)

通过Google网上论坛获得了另一个建议,即我正在寻找的平台集成解决方案并且运行正常:

  

请勿处理音量键   你自己 - 这几乎是不可能的   保证你不会破坏   音量键的行为。

     

在onCreate()中调用此API:

     

setVolumeControlStream(AudioManager.STREAM_MUSIC);

     

这告诉AudioManager何时   你的应用程序有重点,卷   键应该调整音量。

答案 1 :(得分:2)

这个API非常有用:setVolumeControlStream(AudioManager.STREAM_MUSIC);

除非这样,否则我会花更多的时间来修复那个卷错误。

答案 2 :(得分:1)

如果您正在使用' OnKeyDown'方法,您可以通过执行以下操作来解决此问题:

public boolean onKeyDown(int keyCode, KeyEvent event) {    
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                setVolumeControlStream(AudioManager.STREAM_MUSIC);}}

答案 3 :(得分:0)

如果你有一个活动的覆盖onKeyDown(int keycode,KeyEvent event)方法,这对你没用。

答案 4 :(得分:0)

{"draw":2,"recordsTotal":16684,"recordsFiltered":16684,"data":[],