我有代码允许用户在其设备上发出声音警报。在 Android 2.3 及更低版本中,即使通过 AudioManager.setStreamVolume
以编程方式增加音量,将声音一路调低,我也能够发出警报。然而现在在 Android 3.x 及更高版本中,当我尝试执行此操作时, native 音量调整小部件会在屏幕上出现一会儿,但当前音量仍保持为零。代码如下:
int currentVolume = audioMgr.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxVolume = audioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
audioMgr.setStreamMute(AudioManager.STREAM_MUSIC, false);
// If the current volume is not set to the maximum level
if (currentVolume < maxVolume) {
// Set the current volume to the maximum level
audioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, AudioManager.ADJUST_RAISE);
}
我的问题是......Honeycomb发生了什么变化,导致这个功能不再起作用?我在 setStreamVolume
之后设置了一个断点,并手动运行 getStreamVolume
。它仍然被设置为零。想法?
最佳答案
对于 ICS(Android 4.0.3),问题仍然存在,但也有一个可行的解决方案。尝试使用此代码:
// The commented code below works with 2.3, but not with 4.0 (ICS)
//audioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, lvl, 0);
// Use this instead
while(audioMgr.getStreamVolume(AudioManager.STREAM_MUSIC) > lvl) {
audioMgr.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0);
}
while(audioMgr.getStreamVolume(AudioManager.STREAM_MUSIC) < lvl) {
audioMgr.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0);
}
关于java - 无法增加 Honeycomb 及以上版本音乐流的音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298383/