Android AudioManager无法在Samsung 4.0.4上运行

时间:2015-02-24 13:45:23

标签: android volume

目前正在调用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);

为什么它不起作用的任何想法?

3 个答案:

答案 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版本或者已经过测试。