Support traffic

pull/123/head
FongMi 3 years ago
parent 8e8ef7f12b
commit 895c4e4b3f
  1. 15
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 29
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 22
      app/src/leanback/res/layout/view_widget_live.xml
  4. 22
      app/src/leanback/res/layout/view_widget_vod.xml
  5. 42
      app/src/main/java/com/fongmi/android/tv/utils/Traffic.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);

@ -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;

@ -4,10 +4,26 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
<LinearLayout
android:id="@+id/progress"
layout="@layout/view_progress"
android:visibility="gone" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="visible">
<include layout="@layout/view_progress" />
<TextView
android:id="@+id/traffic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="120KB/s" />
</LinearLayout>
<TextView
android:id="@+id/digital"

@ -59,10 +59,26 @@
</RelativeLayout>
<include
<LinearLayout
android:id="@+id/progress"
layout="@layout/view_progress"
android:visibility="gone" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="visible">
<include layout="@layout/view_progress" />
<TextView
android:id="@+id/traffic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="120KB/s" />
</LinearLayout>
<LinearLayout
android:id="@+id/error"

@ -0,0 +1,42 @@
package com.fongmi.android.tv.utils;
import android.content.pm.PackageManager;
import android.net.TrafficStats;
import com.fongmi.android.tv.App;
public class Traffic {
private static final String UNIT_KB = " KB/s";
private static final String UNIT_MB = " MB/s";
private static long lastTotalRxBytes = 0;
private static long lastTimeStamp = 0;
public static String get() {
long total = getTotalRxBytes(getUid());
long time = System.currentTimeMillis();
long diff = (total - lastTotalRxBytes) * 1000;
long speed = diff / Math.max(time - lastTimeStamp, 1);
lastTimeStamp = time;
lastTotalRxBytes = total;
if (speed > 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;
}
}
}
Loading…
Cancel
Save