電話が 2G または 3G のときに TX および RX バイトを別々にカウントするために、次の 2 つのコードを混合/結合するにはどうすればよいですか?
電話が動作しているように見える EDGE または UMTS ネットワークに接続されていることを識別する次のコードがあり、トースト メッセージが表示されます。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener ConnectionStateListener = new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state, int networkType) {
super.onDataConnectionStateChanged(state, networkType);
String sState = "";
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_EDGE: sState = "EDGE (2G)"; break;
case TelephonyManager.NETWORK_TYPE_UMTS: sState = "UMTS (3G)"; break;
}
Toast.makeText(getApplicationContext(), sState, Toast.LENGTH_SHORT).show();
}
};
telephonyManager.listen(ConnectionStateListener,PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
}
}
Tech Republicのこの例から、このコードを取得して TX および RX バイトをカウントします。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStartRX = TrafficStats.getTotalRxBytes();
mStartTX = TrafficStats.getTotalTxBytes();
mHandler.postDelayed(mRunnable, 1000);
}
//This would be to update the bytes usage every second
private final Runnable mRunnable = new Runnable() {
public void run() {
TextView RX = (TextView)findViewById(R.id.RX);
TextView TX = (TextView)findViewById(R.id.TX);
long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;
RX.setText(Long.toString(rxBytes));
long txBytes = TrafficStats.getTotalTxBytes()- mStartTX;
TX.setText(Long.toString(txBytes));
mHandler.postDelayed(mRunnable, 1000);
}
};
}
多分誰かがこれで私を助けることができます。アドバイス/ヘルプをお寄せいただきありがとうございます。