Android AudioManager 无法在 Samsung 4.0.4 上运行
Android AudioManager not working on Samsung 4.0.4
目前正在调用 AudioManager 来更改我的应用程序的音量 - 适用于 nexus、hudl 和 samsung galaxy s5 - 但是,当我 运行 在 Samsung Galaxy 10"inch 运行ning android 4.0.4 除非按下音量的实际硬键,否则音量不会改变。
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,level,AudioManager.FLAG_PLAY_SOUND);
知道为什么它不起作用吗?
调用 isVolumeFixed
检查设备是否支持该功能。 AudioManager
This method has no effect if the device implements a fixed volume policy as indicated by isVolumeFixed().
下面的代码适用于三星设备。
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;
}
适用于不同版本 android 并构成 (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_RAISE 替换为 AudioManager.ADJUST_LOWER。
我发现的 setStreamVolume 不包含经过测试的 android 版本或品牌。
目前正在调用 AudioManager 来更改我的应用程序的音量 - 适用于 nexus、hudl 和 samsung galaxy s5 - 但是,当我 运行 在 Samsung Galaxy 10"inch 运行ning android 4.0.4 除非按下音量的实际硬键,否则音量不会改变。
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,level,AudioManager.FLAG_PLAY_SOUND);
知道为什么它不起作用吗?
调用 isVolumeFixed
检查设备是否支持该功能。 AudioManager
This method has no effect if the device implements a fixed volume policy as indicated by isVolumeFixed().
下面的代码适用于三星设备。
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;
}
适用于不同版本 android 并构成 (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_RAISE 替换为 AudioManager.ADJUST_LOWER。
我发现的 setStreamVolume 不包含经过测试的 android 版本或品牌。