diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
index 351923c15..c1f512631 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
@@ -50,6 +50,7 @@ import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
+import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.StyledPlayerView;
@@ -91,6 +92,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private int mCurrent;
private Runnable mR1;
private Runnable mR2;
+ private Runnable mR3;
public static void start(Activity activity, String id) {
start(activity, ApiConfig.get().getHome().getKey(), id);
@@ -166,6 +168,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mPlayers = new Players().init();
mR1 = this::hideControl;
mR2 = this::hideCenter;
+ mR3 = this::setTraffic;
setRecyclerView();
setVideoView();
setViewModel();
@@ -589,11 +592,14 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void showProgress() {
- mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE);
+ mBinding.widget.progress.setVisibility(View.VISIBLE);
+ App.post(mR3, 250);
}
private void hideProgress() {
- mBinding.widget.progress.getRoot().setVisibility(View.GONE);
+ mBinding.widget.progress.setVisibility(View.GONE);
+ App.removeCallbacks(mR3);
+ Traffic.reset();
}
private void showError() {
@@ -630,6 +636,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
hideInfo();
}
+ private void setTraffic() {
+ mBinding.widget.traffic.setText(Traffic.get());
+ App.post(mR3, 250);
+ }
+
private void setR1Callback() {
App.removeCallbacks(mR1);
App.post(mR1, 5000);
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index da42ed14b..691fa4450 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -42,6 +42,7 @@ import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
+import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.StyledPlayerView;
@@ -81,6 +82,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private Runnable mR3;
private Runnable mR4;
private Runnable mR5;
+ private Runnable mR6;
private int count;
public static void start(Activity activity) {
@@ -119,7 +121,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mR2 = this::hideCenter;
mR3 = this::hideControl;
mR4 = this::setChannelActivated;
- mR5 = this::onError;
+ mR5 = this::setTraffic;
+ mR6 = this::onError;
mPlayers = new Players().init();
mKeyDown = CustomKeyDownLive.create(this);
mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
@@ -251,6 +254,11 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
getUrl();
}
+ private void setTraffic() {
+ mBinding.widget.traffic.setText(Traffic.get());
+ App.post(mR5, 250);
+ }
+
private void onToggle() {
if (isVisible(mBinding.recycler)) hideUI();
else showUI();
@@ -321,11 +329,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void showProgress() {
- mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE);
+ mBinding.widget.progress.setVisibility(View.VISIBLE);
+ App.post(mR5, 250);
}
private void hideProgress() {
- mBinding.widget.progress.getRoot().setVisibility(View.GONE);
+ mBinding.widget.progress.setVisibility(View.GONE);
+ App.removeCallbacks(mR5);
+ Traffic.reset();
}
private void showControl(View view) {
@@ -370,9 +381,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
App.post(mR3, 5000);
}
- private void setR5Callback() {
- App.removeCallbacks(mR5);
- App.post(mR5, 10000);
+ private void setR6Callback() {
+ App.removeCallbacks(mR6);
+ App.post(mR6, 10000);
}
private void resetPass() {
@@ -613,7 +624,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
public void onPlayerEvent(PlayerEvent event) {
switch (event.getState()) {
case 0:
- setR5Callback();
+ setR6Callback();
break;
case Player.STATE_IDLE:
break;
@@ -623,14 +634,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
case Player.STATE_READY:
hideProgress();
mPlayers.reset();
- App.removeCallbacks(mR5);
+ App.removeCallbacks(mR6);
TrackSelectionDialog.setVisible(mPlayers.exo(), mBinding.control.tracks);
break;
case Player.STATE_ENDED:
onKeyDown();
break;
default:
- App.removeCallbacks(mR5);
+ App.removeCallbacks(mR6);
if (!event.isRetry() || mPlayers.addRetry() > 2) onError();
else getUrl();
break;
diff --git a/app/src/leanback/res/layout/view_widget_live.xml b/app/src/leanback/res/layout/view_widget_live.xml
index c61605810..d893b9a50 100644
--- a/app/src/leanback/res/layout/view_widget_live.xml
+++ b/app/src/leanback/res/layout/view_widget_live.xml
@@ -4,10 +4,26 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ android:visibility="visible">
+
+
+
+
+
+
-
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ android:visibility="visible">
+
+
+
+
+
+
1000) return speed / 1000 + UNIT_MB;
+ else return speed + UNIT_KB;
+ }
+
+ public static void reset() {
+ lastTotalRxBytes = 0;
+ lastTimeStamp = 0;
+ }
+
+ private static long getTotalRxBytes(int uid) {
+ return TrafficStats.getUidRxBytes(uid) == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats.getTotalRxBytes() / 1024);
+ }
+
+ private static int getUid() {
+ try {
+ return App.get().getPackageManager().getApplicationInfo(App.get().getPackageName(), PackageManager.GET_META_DATA).uid;
+ } catch (Exception e) {
+ return 0;
+ }
+ }
+}