Android: fix media player's volume.
- Preserve the volume when changing the current media. - Don't actually set a new volume when the media player is muted. Intead, save the value to apply it when setMuted(false) is called. Change-Id: I829eb280406ea35ff82a0c2638b2d19cf1d90643 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
This commit is contained in:
committed by
The Qt Project
parent
cb6b4e2079
commit
cf4aba93e4
@@ -248,6 +248,8 @@ public class QtAndroidMediaPlayer
|
||||
if (mMediaPlayer == null) {
|
||||
mMediaPlayer = new MediaPlayer();
|
||||
setState(State.Idle);
|
||||
// Make sure the new media player has the volume that was set on the QMediaPlayer
|
||||
setVolumeHelper(mMuted ? 0 : mVolume);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,6 +478,20 @@ public class QtAndroidMediaPlayer
|
||||
}
|
||||
|
||||
public void setVolume(int volume)
|
||||
{
|
||||
if (volume < 0)
|
||||
volume = 0;
|
||||
|
||||
if (volume > 100)
|
||||
volume = 100;
|
||||
|
||||
mVolume = volume;
|
||||
|
||||
if (!mMuted)
|
||||
setVolumeHelper(mVolume);
|
||||
}
|
||||
|
||||
private void setVolumeHelper(int volume)
|
||||
{
|
||||
if ((mState & (State.Idle
|
||||
| State.Initialized
|
||||
@@ -487,18 +503,9 @@ public class QtAndroidMediaPlayer
|
||||
return;
|
||||
}
|
||||
|
||||
if (volume < 0)
|
||||
volume = 0;
|
||||
|
||||
if (volume > 100)
|
||||
volume = 100;
|
||||
|
||||
float newVolume = adjustVolume(volume);
|
||||
|
||||
try {
|
||||
float newVolume = adjustVolume(volume);
|
||||
mMediaPlayer.setVolume(newVolume, newVolume);
|
||||
if (!mMuted)
|
||||
mVolume = volume;
|
||||
} catch (final IllegalStateException e) {
|
||||
Log.d(TAG, "" + e.getMessage());
|
||||
}
|
||||
@@ -528,7 +535,7 @@ public class QtAndroidMediaPlayer
|
||||
public void mute(final boolean mute)
|
||||
{
|
||||
mMuted = mute;
|
||||
setVolume(mute ? 0 : mVolume);
|
||||
setVolumeHelper(mute ? 0 : mVolume);
|
||||
}
|
||||
|
||||
public boolean isMuted()
|
||||
|
||||
Reference in New Issue
Block a user