2015-02-24 108 views
0

當前調用AudioManager更改我的應用程序的音量 - 在nexus,hudl和samsung galaxy s5上工作 - 但是,當我在Samsung Galaxy 10英寸運行時運行以下代碼安卓4.0.4,除非卷的實際硬鍵被按下音量也不會改變。Android AudioManager不工作在三星4.0.4

  myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

     myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,level,AudioManager.FLAG_PLAY_SOUND); 

任何想法,爲什麼它不工作?

回答

0

上不同版本的Android,使作品的答案(的Nexus,三星,hudl,三星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。

我發現對面已經測試了Android版本或品牌不攜帶setStreamVolume。

0

呼叫isVolumeFixed來檢查設備是否支持該功能。 AudioManager

如果設備實現isVolumeFixed()所示的固定量策略,則此方法不起作用。

+0

運行Android 13不21所以方法不可用,謝謝 – Perry 2015-02-24 14:49:29

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; 
    } 
相關問題