2016-10-03 74 views

回答

1

使用下面的代碼來實現工具欄上的數據使用。如果你想在狀態欄上實現,你需要通過窗口管理器來實現。沒有直接的api與狀態條對話

private long total_rcv; 
private long total_send; 
private long prev_upload_speed; 
private long prev_download_speed; 
private Handler mHandler; 
private TextView networkSpeedMeter; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    networkSpeedMeter = (TextView) toolbar.findViewById(R.id.networkspeed); 
    mHandler = new Handler(); 
    if(mHandler!=null){ 
     mHandler.removeCallbacks(runnable); 
     mHandler.post(runnable); 
    } 
} 

protected void onDestroy() { 
    if(mHandler!=null){ 
     mHandler.removeCallbacks(runnable); 
     mHandler=null; 
    } 
    super.onDestroy(); 
};  

private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     //do the job 
     final long download_speed = (TrafficStats.getTotalRxBytes()-total_rcv)/1024; 
     final long upload_speed = (TrafficStats.getTotalTxBytes()-total_send)/1024; 
     if(networkSpeedMeter!=null && (prev_download_speed!= download_speed || prev_upload_speed != upload_speed)){ 
      prev_download_speed = download_speed; 
      prev_upload_speed = upload_speed; 
      networkSpeedMeter.setText(String.format("D:%4sKB/S%4sU:%4sKB/S", download_speed, "", upload_speed)); 
     } 
     total_rcv = TrafficStats.getTotalRxBytes(); 
     total_send = TrafficStats.getTotalTxBytes(); 
     if(mHandler!=null){ 
      mHandler.postDelayed(this,1000L*1); /*every 1 second*/ 
     } 
    } 
};