在Android中获取电池待机时间,2G / 3G使用率

时间:2014-11-25 07:56:35

标签: android

我想以编程方式从我的Android设备获取以下信息:

  • 我的Android设备的每个组件使用了多少电池。
  • 电池支持我的Android设备。
  • 我的Android设备的2G和3G使用情况。

我怎样才能使用可用的Android API来实现这一点?

谢谢

4 个答案:

答案 0 :(得分:1)

有关数据使用统计信息,请检查:
http://developer.android.com/reference/android/net/TrafficStats.html
http://agolovatyuk.blogspot.com/2012/04/android-traffic-statistics-inside.html
https://github.com/commonsguy/cw-andtuning/tree/master/TrafficMonitor

关于电池:
一种选择是订阅电池状态更新
http://mobiledevtuts.com/android/android-sdk-get-device-battery-information/ http://developer.android.com/training/monitoring-device-state/battery-monitoring.html http://developer.android.com/training/monitoring-device-state/docking-monitoring.html
然后显示拔掉插头后的时间。但是,如果将设备连接到电源一分钟,这将重置时间。因此,您可能更感兴趣的是显示设备正常运行时间或设备开启后所有放电时间的总和。

答案 1 :(得分:1)

  

电池待机时间

无法获得此值。我们欢迎您检查电池电量(通过ACTION_BATTERY_CHANGEDBatteryManager上定义的额外费用)并提出您自己的预算。

  

2G使用和3G使用

无法获得这些值。 TrafficStats及其getMobile...()方法可让您测量移动数据所消耗的带宽,但不区分移动数据类型,也不包括短信和电话等电话操作所花费的时间

答案 2 :(得分:0)

对于电池统计使用此库,它充当隐藏api的代理以获取电池统计数据,如果手机是kitkat以上,则需要root访问权限,因为谷歌已经移动了用于提供电池统计数据作为系统应用程序的服务

https://github.com/asksven/AndroidCommon

答案 3 :(得分:0)

用于电池剩余统计使用 BATTERY_PROPERTY_CAPACITY剩余电池容量占总容量的整数百分比(没有小数部分)。 BATTERY_PROPERTY_CHARGE_COUNTER以微安 - 小时为单位给出电池容量,为整数。

BATTERY_PROPERTY_CURRENT_AVERAGE gives  Average battery current in microamperes, as an integer.

BATTERY_PROPERTY_CURRENT_NOW  gives Instantaneous battery current in microamperes, as an integer.   

BATTERY_PROPERTY_ENERGY_COUNTER以纳瓦时为单位给出电池剩余能量,为长整数。

请参阅BatteryManager开发者页面

http://developer.android.com/reference/android/os/BatteryManager.html

对于2G或3G检测,您可以使用telephontManager类中的DATA_ACTIVITY_IN来检测使用情况。 要确定您的网络是否使用2G或3G,请执行以下操作:

TelephonyManager mTelephonyManager = (TelephonyManager)
            context.getSystemService(Context.TELEPHONY_SERVICE);
    int networkType = mTelephonyManager.getNetworkType();
    switch (networkType) {
        case TelephonyManager.NETWORK_TYPE_GPRS:
        case TelephonyManager.NETWORK_TYPE_EDGE:
        case TelephonyManager.NETWORK_TYPE_CDMA:
        case TelephonyManager.NETWORK_TYPE_1xRTT:
        case TelephonyManager.NETWORK_TYPE_IDEN:
            return "2G";
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_EVDO_0:
        case TelephonyManager.NETWORK_TYPE_EVDO_A:
        case TelephonyManager.NETWORK_TYPE_HSDPA:
        case TelephonyManager.NETWORK_TYPE_HSUPA:
        case TelephonyManager.NETWORK_TYPE_HSPA:
        case TelephonyManager.NETWORK_TYPE_EVDO_B:
        case TelephonyManager.NETWORK_TYPE_EHRPD:
        case TelephonyManager.NETWORK_TYPE_HSPAP:
            return "3G";
        case TelephonyManager.NETWORK_TYPE_LTE:
            return "4G";
        default:
            return "Unknown";
    }
}

将DATA_ACTIVITY_IN与此结合使用可获得合适的使用效果。  有关更多信息,请参阅

http://developer.android.com/reference/android/telephony/TelephonyManager.html