【问题标题】:Control volume keys控制音量键
【发布时间】:2010-12-21 14:35:40
【问题描述】:
在我的应用程序中,我重写了 onKeyDown() 和 onKeyUp() 函数以捕获音量键事件。我使用此类事件来控制我的应用程序量。我使用音乐流来播放我的声音。当检测到这样的事件时,我还会显示一个自定义 toast(类似于 Android 显示的那个)。我面临的问题是:
- Android 总是在音量键事件上播放声音
- 始终以相同的强度播放该声音。
我想要通过以下方式控制播放默认声音的强度(也是播放的流):声音越大,音量越大,声音越小,音量越小,如果这是可能的。
或者一种禁用播放默认声音并以我刚刚设置的强度播放自定义声音的方法。
【问题讨论】:
标签:
android
android-audiomanager
【解决方案1】:
实际上声音是在 onKeyUp(...) 上播放的,所以当你调用音量键时,你可以简单地重载 Activity 中的方法:
@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);
}
这对我有用:)
【解决方案2】:
这很奇怪,因为我正在编写类似的功能,而当您提高流音量时,Android 似乎会播放更响亮的声音。
am.setStreamVolume(AudioManager.STREAM_MUSIC, progress,AudioManager.FLAG_PLAY_SOUND);
这就是我在我的应用程序中使用的。 am 是 AudioManager 的实例,您可以通过以下方式获得:
AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE);
要禁用声音,您可以将 AudioManager.FLAG_PLAY_SOUND 替换为“0”值应该禁用它。
我不确定是否可以在 AudioManager 中替换这些声音,但您可以在 onKeyDown 方法中使用 MediaPlayer 播放这些自定义声音。
希望这会有所帮助。