2010-12-21 94 views
4

在我的应用程序中,我已经覆盖了onKeyDown()onKeyUp()函数以捕获音量键事件。我使用这些事件来控制我的应用程序量。我使用音乐流播放我的声音。当检测到这样的事件时,我还会显示一个自定义烤面包(类似于Android显示的烤面包)。我面对这个走的问题是:控制音量键

  1. 的Android总是播放声音的音量键事件
  2. 那声音是在相同的强度始终扮演。

我想要的是用以下方式控制默认声音播放的强度(也就是播放的流):对于较高音量和较低音量的较大声音低音量,如果这是可能的话。 或者一种方法来禁用播放默认声音并以我刚刚设置的强度播放我的自定义声音。

回答

0

这是奇怪的原因,我正在写类似的功能和Android似乎发挥更响亮的声音,当你上升流量。

am.setStreamVolume(AudioManager.STREAM_MUSIC, progress,AudioManager.FLAG_PLAY_SOUND); 

这就是我在我的应用程序中使用。上午是AudioManager的情况下,你可以通过写作获得:

AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE); 

要禁用的声音,你可以用“0”值什么应该关闭它取代AudioManager.FLAG_PLAY_SOUND。

我不确定是否可以在AudioManager中替换这些声音,但是您可以在onKeyDown方法中使用MediaPlayer播放这些自定义声音。

希望这会有所帮助。

9

其实声音播放上的onkeyup(...),所以你可以简单地在超负荷的活性的方法,当它被调用的音量键:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) { 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

这为我工作:)