Android视频获取缓冲网速(kb/s),手机实时网速

> 获取手机实时网速 Android
TrafficStats 流量统计类的范例,获取实时网速- http://www.mamicode.com/info-detail-225320.html

Android 获取当前网速- https://blog.csdn.net/a22422931/article/details/76155241

public class NetSpeedRate {
    private static final String TAG = NetSpeedRate.class.getSimpleName();
    private long lastTotalRxBytes = 0;
    private long lastTimeStamp = 0;

    public String getNetSpeed(int uid) {
        long nowTotalRxBytes = getTotalRxBytes(uid);
        long nowTimeStamp = System.currentTimeMillis();
        long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换
        lastTimeStamp = nowTimeStamp;
        lastTotalRxBytes = nowTotalRxBytes;
        return String.valueOf(speed) + " kb/s";
    }

    //getApplicationInfo().uid
    public long getTotalRxBytes(int uid) {
        return TrafficStats.getUidRxBytes(uid) == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats.getTotalRxBytes() / 1024);//转为KB
    }
}

> Android视频缓冲获取网速(kb/s)
Android视频播放器缓冲时加载速度的显示- http://blog.sina.com.cn/s/blog_a25bbbb50101igic.html
Android视频播放器缓冲时流量显示的实现方式- https://blog.csdn.net/puhaibo_skynet/article/details/44198463
Android视频播放器缓冲时流量显示的实现方式- http://www.apkbus.com/android-123796-1-1.html
 <!--  圆形缓冲    loading转圈-->
 <ProgressBar
            android:id="@+id/app_video_loading"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_centerInParent="true"
            android:indeterminate="false"
            android:indeterminateBehavior="repeat"
            android:indeterminateDrawable="@drawable/circle_progress"
            android:indeterminateOnly="true"
            android:visibility="visible" />

 <!-- 显示下载速度 -->
 <com.nayun.framework.colorUI.widget.ColorTextView
            android:layout_marginLeft="3dp"
            android:gravity="center"
            android:textColor="#ffffff"
            android:text="0 kb/s"
            android:id="@+id/show_down_rate"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_centerInParent="true"
            android:layout_toRightOf="@+id/app_video_loading"
            android:visibility="visible" />

private long mOldTotalTrafficKb;
private boolean isFirstCaculateRate;
private static final int MSG_VIDEO_DOWNLOAD_RATE = 107;//

Runnable netSpeedRunnable = new Runnable() {//Runnable匿名类
        @Override
        public void run() {
            controlBoxHandler.sendEmptyMessage(MSG_VIDEO_DOWNLOAD_RATE);
            try {
                controlBoxHandler.postDelayed(this, MSG_SEEKBAR_CHANGE_INTERVAL_TIME);
            } catch (Exception e) {
            }
        }
    };

public long getUidRxBytes() { //获取总的接受字节数,包含Mobile和WiFi等
        PackageManager pm = getPackageManager();
        ApplicationInfo ai = null;
        try {
            ai = pm.getApplicationInfo("com.nayun.framework", PackageManager.GET_ACTIVITIES);
        } catch (PackageManager.NameNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        return TrafficStats.getUidRxBytes(ai.uid) == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats.getTotalRxBytes() / 1024);
    }

case MSG_VIDEO_DOWNLOAD_RATE: //Handler中的根据消息Id处理逻辑
                    long newTrafficKb = getUidRxBytes() - mOldTotalTrafficKb;
                    mOldTotalTrafficKb = getUidRxBytes();
                    if(!isFirstCaculateRate){
                        isFirstCaculateRate = true;
                    }else{
                        tvShowDownRate.setText(""+newTrafficKb+"kb/s");
                    }

                    break;

或 

case MSG_VIDEO_DOWNLOAD_RATE:
    long newTrafficKb = getUidRxBytes() - mOldTotalTrafficKb;
    mOldTotalTrafficKb = getUidRxBytes();
    if (newTrafficKb > 1500) {
        newTrafficKb = 400;
    }
    tvShowDownRate.setText("" + newTrafficKb + "kb/s");
case IMediaPlayer.MEDIA_INFO_BUFFERING_START://MediaPlayer setOnInfoListener
                        if (mProgressBar.getVisibility() == View.GONE) {
                            mProgressBar.setVisibility(View.VISIBLE);
                        }
                        controlBoxHandler.post(netSpeedRunnable);
                        tvShowDownRate.setVisibility(View.VISIBLE);//show_down_rate
                        break;
                    case IMediaPlayer.MEDIA_INFO_BUFFERING_END:
                        if (mProgressBar.getVisibility() == View.VISIBLE) {
                            mProgressBar.setVisibility(View.GONE);
                        }
                        controlBoxHandler.removeCallbacks(netSpeedRunnable);
                        tvShowDownRate.setVisibility(View.GONE);
                        break;

猜你喜欢

转载自blog.csdn.net/shareus/article/details/80915307