[img]http://img.tongji.linezing.com/2640324/tongji.gif[/img]
IBatteryStats battryStats = IBatteryStats.Stub.asInterface(ServiceManager.getService("batteryinfo"));
byte[] data = null;
try {
data = battryStats.getStatistics();
Parcel parcel = Parcel.obtain();
parcel.unmarshall(data, 0, data.length);
parcel.setDataPosition(0);
final BatteryStatsImpl impl = BatteryStatsImpl.CREATOR.createFromParcel(parcel);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long length1_1 = impl.getTotalTcpBytesReceived(BatteryStats.STATS_CURRENT);
long length1_2 = impl.getTotalTcpBytesReceived(BatteryStats.STATS_LAST);
long length1_3 = impl.getTotalTcpBytesReceived(BatteryStats.STATS_TOTAL);
long length1_4 = impl.getTotalTcpBytesReceived(BatteryStats.STATS_UNPLUGGED);
long length2_1 = impl.getTotalTcpBytesSent(BatteryStats.STATS_CURRENT);
long length2_2 = impl.getTotalTcpBytesSent(BatteryStats.STATS_LAST);
long length2_3 = impl.getTotalTcpBytesSent(BatteryStats.STATS_TOTAL);
long length2_4 = impl.getTotalTcpBytesSent(BatteryStats.STATS_UNPLUGGED);
long length3_1 = impl.getMobileTcpBytesReceived(BatteryStats.STATS_CURRENT);
long length3_2 = impl.getMobileTcpBytesReceived(BatteryStats.STATS_LAST);
long length3_3 = impl.getMobileTcpBytesReceived(BatteryStats.STATS_TOTAL);
long length3_4 = impl.getMobileTcpBytesReceived(BatteryStats.STATS_UNPLUGGED);
long length4_1 = impl.getMobileTcpBytesSent(BatteryStats.STATS_CURRENT);
long length4_2 = impl.getMobileTcpBytesSent(BatteryStats.STATS_LAST);
long length4_3 = impl.getMobileTcpBytesSent(BatteryStats.STATS_TOTAL);
long length4_4 = impl.getMobileTcpBytesSent(BatteryStats.STATS_UNPLUGGED);
Log.d("TAG", "total tcp R dataC:" + length1_1/(1024*1024));
Log.d("TAG", "total tcp R dataL:" + length1_2/(1024*1024));
Log.d("TAG", "total tcp R dataT:" + length1_3/(1024*1024));
Log.d("TAG", "total tcp R dataU:" + length1_4/(1024*1024));
Log.d("TAG", "total tcp S dataC:" + length2_1/(1024*1024));
Log.d("TAG", "total tcp S dataL:" + length2_2/(1024*1024));
Log.d("TAG", "total tcp S dataT:" + length2_3/(1024*1024));
Log.d("TAG", "total tcp S dataU:" + length2_4/(1024*1024));
Log.d("TAG", "M R tcp dataC:" + length3_1/(1024*1024));
Log.d("TAG", "M R tcp dataL:" + length3_2/(1024*1024));
Log.d("TAG", "M R tcp dataT:" + length3_3/(1024*1024));
Log.d("TAG", "M R tcp dataU:" + length3_4/(1024*1024));
Log.d("TAG", "M S tcp dataC:" + length4_1/(1024*1024));
Log.d("TAG", "M S tcp dataL:" + length4_2/(1024*1024));
Log.d("TAG", "M S tcp dataT:" + length4_3/(1024*1024));
Log.d("TAG", "M S tcp dataU:" + length4_4/(1024*1024));
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
本文展示了如何在Android设备上通过BatteryStats服务获取电池统计信息,并计算总接收和发送的TCP流量,包括当前、最后、总和未插电情况下的数据,最后将这些数据转换为MB单位进行展示。
555

被折叠的 条评论
为什么被折叠?



