Commit 4ae0401c by kimvde Committed by kim-vde

Work around AudioManager#getStreamVolume crashes

#minor-release
Issue:#8191
PiperOrigin-RevId: 341632732
parent 363693d8
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
([#7882](https://github.com/google/ExoPlayer/issues/7882)). ([#7882](https://github.com/google/ExoPlayer/issues/7882)).
* Audio: * Audio:
* Retry playback after some types of `AudioTrack` error. * Retry playback after some types of `AudioTrack` error.
* Work around `AudioManager` crashes when calling `getStreamVolume`
([#8191](https://github.com/google/ExoPlayer/issues/8191)).
* Extractors: * Extractors:
* Matroska: Add support for 32-bit floating point PCM, and 8-bit and * Matroska: Add support for 32-bit floating point PCM, and 8-bit and
16-bit big endian integer PCM 16-bit big endian integer PCM
......
...@@ -188,7 +188,14 @@ import com.google.android.exoplayer2.util.Util; ...@@ -188,7 +188,14 @@ import com.google.android.exoplayer2.util.Util;
} }
private static int getVolumeFromManager(AudioManager audioManager, @C.StreamType int streamType) { private static int getVolumeFromManager(AudioManager audioManager, @C.StreamType int streamType) {
return audioManager.getStreamVolume(streamType); // AudioManager#getStreamVolume(int) throws an exception on some devices. See
// https://github.com/google/ExoPlayer/issues/8191.
try {
return audioManager.getStreamVolume(streamType);
} catch (RuntimeException e) {
Log.w(TAG, "Could not retrieve stream volume for stream type " + streamType, e);
return audioManager.getStreamMaxVolume(streamType);
}
} }
private static boolean getMutedFromManager( private static boolean getMutedFromManager(
...@@ -196,7 +203,7 @@ import com.google.android.exoplayer2.util.Util; ...@@ -196,7 +203,7 @@ import com.google.android.exoplayer2.util.Util;
if (Util.SDK_INT >= 23) { if (Util.SDK_INT >= 23) {
return audioManager.isStreamMute(streamType); return audioManager.isStreamMute(streamType);
} else { } else {
return audioManager.getStreamVolume(streamType) == 0; return getVolumeFromManager(audioManager, streamType) == 0;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment