音频-更改Android中的媒体音量?
我可以更改媒体音量吗? 如何? 到目前为止,我使用了以下方法:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
但是有一个搜索栏,并且想要更改媒体音量,而不是铃声音量。
有人可以告诉我如何在onCreate()上更改媒体音量,稍后再修复搜索栏。
5个解决方案
85 votes
正确使用的方法是getStreamMaxVolume()上的setStreamVolume。它看起来像这样
AudioManager audioManager =
(AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
[int value],
[if desired a flag]);
该标志的一个示例用法是在设置音量时发出提示音,以便用户可以听到结果。 该标志是getStreamMaxVolume()。
如果您不想播放声音,但显示带有当前值的吐司,则可以使用getStreamMaxVolume()。 使用必须获得反馈。 声音或视觉无关紧要。
要获得给定流的最大有效值,只需在AudioManager上调用getStreamMaxVolume()并获得一个整数,该整数表示...以及该卷的最大有效值。
Octavian Damiean answered 2020-01-25T23:37:05Z
38 votes
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);
}
}
trgraglia answered 2020-01-25T23:37:29Z
8 votes
您可以使用以下代码通过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
}
});
Xar E Ahmer answered 2020-01-25T23:37:49Z
4 votes
将标志设为0可以避免获得视觉和听觉指示器。当您实现自己的音频栏和指示器并且您不希望android添加任何东西时,这很好。
Yoni answered 2020-01-25T23:38:09Z
1 votes
使用adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, flags);
[http://developer.android.com/reference/android/media/AudioManager.html#adjustStreamVolume(int,] int,int)
Computerish answered 2020-01-25T23:38:33Z