java - 无法增加 Honeycomb 及以上版本音乐流的音量

标签 java android

我有代码允许用户在其设备上发出声音警报。在 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/

相关文章:

java - CMAKE-COMPILE 在 hadoop-hdfs-native 客户端中失败

java - 在 Double 域中生成 Double

java - 我可以使用 fastxml 将日期写入 ISODate 以使用即将到期的 mongodb 索引吗?

java - 将 Spring cloud sleuth 与 Spring 项目集成

android - ionic externalRootDirectory 无法写入 SD 卡

java - 如何在ListView中显示HashMap中的项目和子项目

android - 我正在使用 Firebase,在创建 firebase 对象时出现此异常

android - Eclipse 在没有时显示错误

android - 实现简单 NDK 设置的 UnsatisfiedLinkError

java - java中圆的圆周坐标