android setvolume,android – 如何管理MediaPlayer.setVolume()SeekBar来设置它的设备音量控制...

这篇博客探讨了如何使用MediaPlayer的setVolume()方法与SeekBar结合来控制音量。作者提出了一些疑问,比如MediaPlayer的音量如何与设备音量相关,setVolume()中的最大值1是否对应于AudioManager的流最大音量,以及在用户调整设备音量时如何处理。博客还提供了一个示例代码片段,展示如何初始化SeekBar并监听其变化来更新MediaPlayer的音量。

作为

recommended by the doc,我想使用setvolume()方法来控制我的MediaPlayer的音量,但我对如何管理它有点困惑.

我正在使用SeekBar设置音量,初始化为AudioManager.STREAM_MUSIC流中的当前音量.

当用户不修改设备音量控制时这是有道理的,但是当他这样做时,我不确定我应该做什么,我有几个疑问:

> MediaPlayer卷如何与设备卷相关? setVolume()中设置的最大值(1)是否对应于mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)

>如果是这种情况,每次设置设备音量控制时都应重置SeekBar的进度值,但是,使用MediaPlayer.setVolume()而不是AudioManager.setStreamVolume()是什么意思?

>将MediaPlayer.setVolume()与SeekBar一起使用的标准方法是什么?

private final static int MAX_VOLUME = 100;

private AudioManager mAudioManager;

private SeekBar mVolumeControl;

mVolumeControl = (SeekBar) getActivity().findViewById(R.id.volume_control);

mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUdio_SERVICE);

mVolumeControl.setMax(MAX_VOLUME);

mVolumeControl.setProgress(MAX_VOLUME*mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)/mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));

mVolumeControl.setOnSeekBarChangeListener(mVolumeControlChangeListener);

private SeekBar.OnSeekBarChangeListener mVolumeControlChangeListener = new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser) {

float volume = (float) (1 - (Math.log(MAX_VOLUME - progress) / Math.log(MAX_VOLUME)));

mediaPlayer.setVolume(volume,volume);

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值