目前正在调用AudioManager来改变我的应用程序的音量 - 适用于nexus,hudl和samsung galaxy s5 - 但是,当我在三星Galaxy 10“英寸运行android 4.0.4上运行以下代码时,音量不会改变除非按下该卷的实际硬键。
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,level,AudioManager.FLAG_PLAY_SOUND);
为什么它不起作用的任何想法?
答案 0 :(得分:0)
调用isVolumeFixed
检查设备是否支持该功能。 AudioManager
如果设备实现isVolumeFixed()指示的固定卷策略,则此方法无效。
答案 1 :(得分:0)
以下代码适用于三星设备。
public static boolean changeStreamVolume(int sign) {
final AudioManager am = (AudioManager)ApplicationAdapter.getInstance().getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
final int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
final int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
if (sign == 1 && currentVolume >= maxVolume) {
return false;
}
else if (sign == -1 && currentVolume <= 0) {
return false;
}
// Why 11? Why not? :-)
final int delta = (maxVolume >= 11? maxVolume / 11 : 1) * sign;
int newVolume = (currentVolume + delta > maxVolume ? maxVolume : currentVolume + delta);
if (newVolume < 0) {
newVolume = 0;
}
am.setStreamVolume(AudioManager.STREAM_MUSIC, newVolume, AudioManager.FLAG_SHOW_UI);
return true;
}
答案 2 :(得分:0)
适用于不同版本的android和make(nexus,samsung,hudl,samsung galaxy 10“)的答案如下:
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.adjustSteamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
要减小音量,只需用AudioManager.ADJUST_LOWER替换AudioManager.ADJUST_RAISE。
我发现的setStreamVolume没有携带Android版本或者已经过测试。