在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);