4

在我的应用程序中,我重写了onKeyDown()andonKeyUp()函数以捕获音量键事件。我使用此类事件来控制我的应用程序量。我使用音乐流来播放我的声音。当检测到这样的事件时,我还会显示一个自定义 toast(类似于 Android 显示的那个)。我面临的问题是:

  1. Android 总是在音量键事件上播放声音
  2. 该声音始终以相同的强度播放。

我想要的是通过以下方式控制播放默认声音的强度(也是播放的流):声音越大,音量越大,声音越小,音量越小,如果这是可能的。或者禁用播放默认声音并以我刚刚设置的强度播放我的自定义声音的方法。

4

2 回答 2

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);
}

这对我有用:)

于 2011-06-16T12:47:09.593 回答
0

It's strange cause I was writing similar functionality and Android seems to play louder sounds when you rise stream volume.

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

Thats what I used in my application. am is instance of AudioManager you can get by writing:

AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE);

To disable sound you can replace AudioManager.FLAG_PLAY_SOUND with "0" value what should disable it.

I'm not sure if it is possible to replace those sound in AudioManager but you can play those custom sounds with MediaPlayer inside of your onKeyDown methods.

Hope this helps.

于 2011-01-27T20:52:19.147 回答