From 41cbf073c77b16cd019691e0edea9cc44ddd1838 Mon Sep 17 00:00:00 2001 From: sridhar Date: Thu, 1 Nov 2018 15:18:59 +0530 Subject: [PATCH] Bandwidth is reported as enevts when download happens. Not by timer method Bandwidth is reported as enevts when download happens. Not by timer method --- android-exoplayer/build.gradle | 18 ++++++++----- .../exoplayer/ReactExoplayerView.java | 25 ++++++++++++++++++- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/android-exoplayer/build.gradle b/android-exoplayer/build.gradle index 4546a597..1e93addd 100644 --- a/android-exoplayer/build.gradle +++ b/android-exoplayer/build.gradle @@ -18,18 +18,24 @@ android { dependencies { compileOnly "com.facebook.react:react-native:${safeExtGet('reactNativeVersion', '+')}" - implementation('com.google.android.exoplayer:exoplayer:2.9.0') { - exclude group: 'com.android.support' - } + // implementation('com.google.android.exoplayer:exoplayer:2.9.0') { + // exclude group: 'com.android.support' + // } + implementation project(':exoplayer-library-core') + implementation project(':exoplayer-library-dash') + implementation project(':exoplayer-library-ui') + implementation project(':exoplayer-library-smoothstreaming') + implementation project(':exoplayer-library-hls') + implementation project(':exoplayer-extension-okhttp') // All support libs must use the same version implementation "com.android.support:support-annotations:${safeExtGet('supportLibVersion', '+')}" implementation "com.android.support:support-compat:${safeExtGet('supportLibVersion', '+')}" implementation "com.android.support:support-media-compat:${safeExtGet('supportLibVersion', '+')}" - implementation('com.google.android.exoplayer:extension-okhttp:2.9.0') { - exclude group: 'com.squareup.okhttp3', module: 'okhttp' - } + // implementation('com.google.android.exoplayer:extension-okhttp:2.9.0') { + // exclude group: 'com.squareup.okhttp3', module: 'okhttp' + // } implementation 'com.squareup.okhttp3:okhttp:3.11.0' } 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 760fd6a8..531b64fa 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -60,6 +60,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DefaultAllocator; +import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.Util; @@ -83,7 +84,7 @@ class ReactExoplayerView extends FrameLayout implements private static final String TAG = "ReactExoplayerView"; - private static final DefaultBandwidthMeter BANDWIDTH_METER = new DefaultBandwidthMeter(); + private static DefaultBandwidthMeter BANDWIDTH_METER; // = new DefaultBandwidthMeter(); private static final CookieManager DEFAULT_COOKIE_MANAGER; private static final int SHOW_PROGRESS = 1; private static final int REPORT_BANDWIDTH = 1; @@ -183,6 +184,9 @@ class ReactExoplayerView extends FrameLayout implements public ReactExoplayerView(ThemedReactContext context) { super(context); this.themedReactContext = context; + + buildBandwidthMeter(); + createViews(); this.eventEmitter = new VideoEventEmitter(context); audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); @@ -261,6 +265,25 @@ class ReactExoplayerView extends FrameLayout implements // Internal methods + private void buildBandwidthMeter() { + BANDWIDTH_METER = new DefaultBandwidthMeter(new Handler(), new BandwidthMeter.EventListener() { + @Override + public void onBandwidthSample(int elapsedMs, long bytes, long bitrate) { + String bw = humanReadableByteCount(bitrate, true, true); + System.out.println("Debug::::In function onBandwidthSample, elapsedMs = " + elapsedMs + " bytes = " + bytes + " bitrate = " + bitrate); + } + + public String humanReadableByteCount(long bytes, boolean si, boolean isBits) { + int unit = !si ? 1000 : 1024; + if (bytes < unit) + return bytes + " KB"; + int exp = (int) (Math.log(bytes) / Math.log(unit)); + String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + + (si ? "" : "i"); + return isBits ? String.format("%.1f %sb", bytes / Math.pow(unit, exp), pre) : String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); + } + }); + } private void initializePlayer() { if (player == null) {