Come recommended by the doc, mi piacerebbe utilizzare il metodo setvolume()
per controllare il volume del mio MediaPlayer
, ma sono un po 'confuso su come gestirlo.Come gestire MediaPlayer.setVolume() + SeekBar per impostarlo + controllo volume dispositivo
Sto impostando il volume utilizzando un SeekBar
, inizializzato sul volume corrente nel flusso AudioManager.STREAM_MUSIC
.
Questo ha senso se l'utente non modifica il controllo del volume del dispositivo, ma quando lo fa, io non sono sicuro che cosa devo fare, e ho molti dubbi:
Come è il
MediaPlayer
volume relativo al volume del dispositivo? Fa il valore massimo (1) posta insetVolume()
corrispondono amAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
se è il caso, il valore di avanzamento del
SeekBar
dovrebbe essere resettare ogni volta che il controllo del volume del dispositivo è impostato, ma poi, qual è il punto di usareMediaPlayer.setVolume()
invece di AudioManager.setStreamVolume()?qual è il modo standard di utilizzare
MediaPlayer.setVolume()
con unSeekBar
?
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) {
}
};
come si è risolto? – Erum