diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cade30c..29c55c67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ * Switch useTextureView to default to `true` [#1286](https://github.com/react-native-community/react-native-video/pull/1286) * Re-add fullscreenAutorotate prop [#1303](https://github.com/react-native-community/react-native-video/pull/1303) * Make seek throw a useful error for NaN values [#1283](https://github.com/react-native-community/react-native-video/pull/1283) +* Fix: volume should not change on onAudioFocusChange event [#1327](https://github.com/react-native-community/react-native-video/pull/1327) ### Version 3.2.0 * Basic fullscreen support for Android MediaPlayer [#1138](https://github.com/react-native-community/react-native-video/pull/1138) diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java index 3d141f3c..7d69368e 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -109,6 +109,7 @@ class ReactExoplayerView extends FrameLayout implements private boolean isPaused; private boolean isBuffering; private float rate = 1f; + private float audioVolume = 1f; private int minBufferMs = DefaultLoadControl.DEFAULT_MIN_BUFFER_MS; private int maxBufferMs = DefaultLoadControl.DEFAULT_MAX_BUFFER_MS; @@ -454,10 +455,10 @@ class ReactExoplayerView extends FrameLayout implements if (player != null) { if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { // Lower the volume - player.setVolume(0.8f); + player.setVolume(audioVolume * 0.8f); } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { // Raise it back to normal - player.setVolume(1); + player.setVolume(audioVolume * 1); } } } @@ -875,15 +876,17 @@ class ReactExoplayerView extends FrameLayout implements } public void setMutedModifier(boolean muted) { + audioVolume = muted ? 0.f : 1.f; if (player != null) { - player.setVolume(muted ? 0 : 1); + player.setVolume(audioVolume); } } public void setVolumeModifier(float volume) { + audioVolume = volume; if (player != null) { - player.setVolume(volume); + player.setVolume(audioVolume); } }