在Android中更改媒体音量?

我可以更改媒体音量吗? 如何? 我到目前为止使用了这个:

setVolumeControlStream(AudioManager.STREAM_MUSIC); 

但有一个seekbar,并希望改变媒体音量,而不是振铃音量。

所以有人可以告诉我如何只改变onCreate()的媒体音量,我稍后修复seekbar。

在你的AudioManager上使用正确的方法是setStreamVolume 。 它可能是这样的

 AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, [int value], [if desired a flag]); 

使用该标志的一个示例是在设置音量时发出嘟嘟声,以便用户可以听到结果。 这个标志是AudioManager.FLAG_PLAY_SOUND

您可以使用AudioManager.FLAG_SHOW_UI如果您不想播放声音,但显示与当前值的烤面包。 使用必须得到反馈。 无论声音还是视觉都无所谓。

要获得给定stream的最大有效值,您只需在AudioManager上调用getStreamMaxVolume()并获取返回的整数,即代表…以及该卷的最大有效值。

 private AudioManager audio; 

在onCreate里面:

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

覆盖onKeyDown:

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); return true; case KeyEvent.KEYCODE_VOLUME_DOWN: audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI); return true; default: // return false; // Update based on @Rene comment below: return super.onKeyDown(keyCode, event); } } 

您可以使用以下代码来使用SeekBar处理音量:

 AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); SeekBar sbVolumeBooster = (SeekBar) findViewById(R.id.sbVolumeBooster); sbVolumeBooster.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); sbVolumeBooster.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); sbVolumeBooster.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { } @Override public void onStartTrackingTouch(SeekBar arg0) { } @Override public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0); // 0 can also be changed to AudioManager.FLAG_PLAY_SOUND } }); 

在标志中给出0–避免获得视觉和audio指示符。 当你实现自己的audio栏和指示器,而不想让android添加任何东西的时候,这是很好的。

使用adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);

http://developer.android.com/reference/android/media/AudioManager.html#adjustStreamVolume(int,int,int