From ff7a6336db6fd179b59b00ed187a8716617a076b Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Fri, 16 Jun 2017 10:36:25 +0100 Subject: [PATCH] Android: Catch IllegalStateException when trying to play file-based audio. (#205) --- .../src/main/java/com/zmxv/RNSound/RNSoundModule.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/zmxv/RNSound/RNSoundModule.java b/android/src/main/java/com/zmxv/RNSound/RNSoundModule.java index d865a61c..698032c1 100644 --- a/android/src/main/java/com/zmxv/RNSound/RNSoundModule.java +++ b/android/src/main/java/com/zmxv/RNSound/RNSoundModule.java @@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; +import com.facebook.react.modules.core.ExceptionsManagerModule; import java.io.File; import java.util.HashMap; @@ -87,7 +88,13 @@ public synchronized boolean onError(MediaPlayer mp, int what, int extra) { return true; } }); - player.prepareAsync(); + + try { + player.prepareAsync(); + } catch (IllegalStateException ignored) { + // When loading files from a file, we useMediaPlayer.create, which actually + // prepares the audio for us already. So we catch and ignore this error + } } protected MediaPlayer createMediaPlayer(final String fileName) { @@ -111,6 +118,7 @@ protected MediaPlayer createMediaPlayer(final String fileName) { File file = new File(fileName); if (file.exists()) { Uri uri = Uri.fromFile(file); + // Mediaplayer is already prepared here. return MediaPlayer.create(this.context, uri); } return null;