diff --git a/library/src/main/java/cn/jzvd/JZMediaInterface.java b/library/src/main/java/cn/jzvd/JZMediaInterface.java index a8202b29..8e070678 100644 --- a/library/src/main/java/cn/jzvd/JZMediaInterface.java +++ b/library/src/main/java/cn/jzvd/JZMediaInterface.java @@ -44,4 +44,10 @@ public JZMediaInterface(Jzvd jzvd) { public abstract void setSpeed(float speed); public abstract void setSurface(Surface surface); + + public void runOnUiThread(Runnable runnable) { + if (handler != null) { + handler.post(runnable); + } + } } diff --git a/library/src/main/java/cn/jzvd/Jzvd.java b/library/src/main/java/cn/jzvd/Jzvd.java index 6ee00c7e..6dcc3449 100644 --- a/library/src/main/java/cn/jzvd/Jzvd.java +++ b/library/src/main/java/cn/jzvd/Jzvd.java @@ -73,18 +73,20 @@ public void onAudioFocusChange(int focusChange) { case AudioManager.AUDIOFOCUS_GAIN: break; case AudioManager.AUDIOFOCUS_LOSS: - CURRENT_JZVD.mediaInterface.handler.post(Jzvd::releaseAllVideos); + CURRENT_JZVD.mediaInterface.runOnUiThread(Jzvd::releaseAllVideos); Log.d(TAG, "AUDIOFOCUS_LOSS [" + this.hashCode() + "]"); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - try { - Jzvd player = CURRENT_JZVD; - if (player != null && player.state == Jzvd.STATE_PLAYING) { - player.startButton.performClick(); + CURRENT_JZVD.mediaInterface.runOnUiThread(() -> { + try { + Jzvd player = CURRENT_JZVD; + if (player != null && player.state == Jzvd.STATE_PLAYING) { + player.startButton.performClick(); + } + } catch (IllegalStateException e) { + e.printStackTrace(); } - } catch (IllegalStateException e) { - e.printStackTrace(); - } + }); Log.d(TAG, "AUDIOFOCUS_LOSS_TRANSIENT [" + this.hashCode() + "]"); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: