From b29ee3a77a3488056afdd54dbb54e9bc87d686ce Mon Sep 17 00:00:00 2001 From: Leo Ma Date: Fri, 26 Aug 2016 09:15:26 +0800 Subject: [PATCH] Modify network weak exception as event handler Signed-off-by: Leo Ma --- .../java/net/ossrs/yasea/MainActivity.java | 22 +++++++++++++ .../main/java/net/ossrs/yasea/SrsEncoder.java | 31 ++++++++++++++++--- .../java/net/ossrs/yasea/SrsPublisher.java | 4 +++ 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/net/ossrs/yasea/MainActivity.java b/app/src/main/java/net/ossrs/yasea/MainActivity.java index ac58963..65747b0 100644 --- a/app/src/main/java/net/ossrs/yasea/MainActivity.java +++ b/app/src/main/java/net/ossrs/yasea/MainActivity.java @@ -228,6 +228,28 @@ public class MainActivity extends Activity { } }); + mPublisher.setNetworkEventHandler(new SrsEncoder.EventHandler() { + @Override + public void onNetworkResume(final String msg) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); + } + }); + } + + @Override + public void onNetworkWeak(final String msg) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); + } + }); + } + }); + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { diff --git a/app/src/main/java/net/ossrs/yasea/SrsEncoder.java b/app/src/main/java/net/ossrs/yasea/SrsEncoder.java index c475edb..367430e 100644 --- a/app/src/main/java/net/ossrs/yasea/SrsEncoder.java +++ b/app/src/main/java/net/ossrs/yasea/SrsEncoder.java @@ -33,6 +33,8 @@ public class SrsEncoder { public static final int ACHANNEL = AudioFormat.CHANNEL_IN_STEREO; public static final int ABITRATE = 32 * 1000; // 32kbps + private EventHandler mHandler; + private boolean onNetworkWeakTriggered = false; private int mOrientation = Configuration.ORIENTATION_PORTRAIT; private SrsFlvMuxer flvMuxer; @@ -56,6 +58,13 @@ public class SrsEncoder { private int audioFlvTrack; private int audioMp4Track; + interface EventHandler { + + void onNetworkResume(String msg); + + void onNetworkWeak(String msg); + } + // Y, U (Cb) and V (Cr) // yuv420 yuv yuv yuv yuv // yuv420p (planar) yyyy*2 uu vv @@ -79,6 +88,10 @@ public class SrsEncoder { this.mp4Muxer = mp4Muxer; } + public void setNetworkEventHandler(EventHandler handler) { + mHandler = handler; + } + public boolean start() { if (flvMuxer == null || mp4Muxer == null) { return false; @@ -369,9 +382,14 @@ public class SrsEncoder { new IllegalArgumentException("libyuv failure")); } } + + if (onNetworkWeakTriggered) { + onNetworkWeakTriggered = false; + mHandler.onNetworkResume("Network resume"); + } } else { - Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), - new IOException("Network is weak")); + mHandler.onNetworkWeak("Network weak"); + onNetworkWeakTriggered = true; } } @@ -451,9 +469,14 @@ public class SrsEncoder { new IllegalArgumentException("libyuv failure")); } } + + if (onNetworkWeakTriggered) { + onNetworkWeakTriggered = false; + mHandler.onNetworkResume("Network resume"); + } } else { - Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), - new IOException("Network is weak")); + mHandler.onNetworkWeak("Network weak"); + onNetworkWeakTriggered = true; } } diff --git a/app/src/main/java/net/ossrs/yasea/SrsPublisher.java b/app/src/main/java/net/ossrs/yasea/SrsPublisher.java index 1681155..7145fbc 100644 --- a/app/src/main/java/net/ossrs/yasea/SrsPublisher.java +++ b/app/src/main/java/net/ossrs/yasea/SrsPublisher.java @@ -268,4 +268,8 @@ public class SrsPublisher { mMp4Muxer = new SrsMp4Muxer(handler); mEncoder.setMp4Muxer(mMp4Muxer); } + + public void setNetworkEventHandler(SrsEncoder.EventHandler handler) { + mEncoder.setNetworkEventHandler(handler); + } }