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) {
|
if (mMediaPlayer == null) {
|
||||||
mMediaPlayer = new MediaPlayer();
|
mMediaPlayer = new MediaPlayer();
|
||||||
setState(State.Idle);
|
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)
|
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
|
if ((mState & (State.Idle
|
||||||
| State.Initialized
|
| State.Initialized
|
||||||
@@ -487,18 +503,9 @@ public class QtAndroidMediaPlayer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (volume < 0)
|
|
||||||
volume = 0;
|
|
||||||
|
|
||||||
if (volume > 100)
|
|
||||||
volume = 100;
|
|
||||||
|
|
||||||
float newVolume = adjustVolume(volume);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
float newVolume = adjustVolume(volume);
|
||||||
mMediaPlayer.setVolume(newVolume, newVolume);
|
mMediaPlayer.setVolume(newVolume, newVolume);
|
||||||
if (!mMuted)
|
|
||||||
mVolume = volume;
|
|
||||||
} catch (final IllegalStateException e) {
|
} catch (final IllegalStateException e) {
|
||||||
Log.d(TAG, "" + e.getMessage());
|
Log.d(TAG, "" + e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -528,7 +535,7 @@ public class QtAndroidMediaPlayer
|
|||||||
public void mute(final boolean mute)
|
public void mute(final boolean mute)
|
||||||
{
|
{
|
||||||
mMuted = mute;
|
mMuted = mute;
|
||||||
setVolume(mute ? 0 : mVolume);
|
setVolumeHelper(mute ? 0 : mVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMuted()
|
public boolean isMuted()
|
||||||
|
|||||||
Reference in New Issue
Block a user