Android应用耗电量统计,无需USB连接

Android应用耗电量统计一直是一个很头疼的问题,手工统计耗时太长,自动化统计又不是非常精准(执行自动化代码需要通过USB连接,而USB又会充电,这就造成统计数据不准)。后来从前辈那里得知可以通过adb connect来实现无线连接,下面就来说说方法。

1、首先找到一台已经root的手机

2、使手机与PC处于同一个网段

3、下载安装Wireless ADB

4、打开Wireless ADB,勾选Wireless ADB,设置端口(默认5555,被占用时设置)

5、打开pc的CMD窗口,输入adb connect 192.168.1.100:5555 回车(详细IP会在Wireless ADB中显示)

6、连接成功

如果提示not implement,则与其他软件冲突,请尝试关掉豌豆夹、360等软件

下面来执行统计耗电量的代码,由于要统计应用前台操作一小时耗电量,人工点击显然是不现实的,这里用到了monkey来配合测试。这里只演示整个系统的耗电量,单个应用的耗电量dumpsys较为复杂。

#coding=utf-8
‘‘‘
Create on 2015-1-7
python 2.7 for window
@auther: tangdongchu
‘‘‘
import os
import sys
import time
import re
import datetime

class monkeyTest():

    def __init__(self):
        """ init """

    #monkey命令,packageName包名,interval间隔时间单位ms ,frequency执行次数
    def monkeyApp(self,packageName,interval,frequency):
        try:
            os.popen("adb shell monkey -p %s --throttle %s --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v %s >e:\monkeylog\monkeyScreenLog.log" % (packageName, interval, frequency),‘r‘)
        except Exception,e:
            print e

    #获取当前电量
    def getCurrentBattery(self):
        try:
            for Battery in os.popen(‘adb shell dumpsys battery‘,‘r‘).readlines():
                reList = re.sub(‘Battery:‘,‘‘,Battery)
                reList = reList.replace(‘\n‘,‘‘)
                result = re.search(‘level‘, reList)
                if result != None :
                    List = reList.split()
                    level=List.pop()#删除第i个元素,并返回这个元素。若调用pop()则删除最后一个元素
                    #print "battery level " + level + "%"
                    return level
                    break
        except Exception,e:
            print e

    #获取当前时间,用于计算应用运行时间
    def getCurrentTime(self):
        try:
            currentTime = datetime.datetime.now()
            return currentTime
        except Exception,e:
            print e

def main():
    print """"""

if __name__=="__main__":

    packageName = ‘ctrip.android.view‘
    myApp = monkeyTest()
    level = int(myApp.getCurrentBattery())
    runtime = myApp.getCurrentTime()
    myApp.monkeyApp(packageName,500,2500) #0.5秒点一次,运行2500次
    #判断是否执行完成,执行完成后统计耗电量
    for i in range(1, 1000000):
        monkeylog = open(‘E:\monkeylog\monkeyScreenLog.log‘)
        try:
            temp = monkeylog.read( )
        finally:
            monkeylog.close( )
        if temp.count(‘Monkey finished‘)>0:
            level = int(myApp.getCurrentBattery())-level
            runtime = myApp.getCurrentTime()-runtime
            break
        else:
            time.sleep(2)
    print "run time " + str(runtime)
    print "use battery" + str(level) + "%"

  

时间: 2024-07-30 05:30:03

Android应用耗电量统计,无需USB连接的相关文章

[Android] 深入浅出Android App耗电量统计

reference to : http://www.cnblogs.com/hyddd/p/4402621.html 前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件

深入浅出Android App耗电量统计

前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件的消耗电量的总和. 2. 假设运行App导致CPU运行,时间:t,CPU单位时间消耗电量:w,则App的CPU耗电量为

Android性能专项测试之耗电量统计API

参考文章:Android应用的耗电量统计 深入浅出Android App耗电量统计 Battery stats - CPU total vs CPU foreground 深入浅出 Android App 耗电量统计 浅析Wakelock机制与Android电源管理 耗电量API Android系统中很早就有耗电量的API,只不过一直都是隐藏的,Android系统的设置-电池功能就是调用的这个API,该API的核心部分是调用了com.android.internal.os.BatteryStat

Android - 设置adb的usb连接配置

设置adb的usb连接配置 本文地址: http://blog.csdn.net/caroline_wendy 把须要測试的手机连接入电脑.通过系统查找USB连接配置,找到厂商ID: 把ID加入进adb_usb.ini; 使用命令: vi ~/.android/adb_usb.ini 如: 0x2717 0x9bb5 使用adb命令: adb kill-server adb start-server 能够方便Android Studio查找USB连接设备.

mac 使用USB连接Android真机遇到的问题

问题一:使用USB连接Android真机,USB调试已打开,但是使用adb device 命令没有发现连接设备. 解决方法: 方法一.检查连接的USB数据线,是否能能传输数据,如果不能,就换一根能传输的数据线试试 方法二.一般国产手机无法连接设备,需要将设备的vender id加入到 .android/adb_usb.ini中即可 1. 查看连接USB设备的信息 打开终端,输入:system_profiler SPUSBDataType 另一种查看ID的方式: 点击Mac左上角的苹果图标----

Chrome OS 更新新版本可让Linux访问USB连接的Android设备

谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75.本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Linux进行调试等等. Chrome OS 75更新日志: ● 新增功能可以让父母在Chrome OS设备为孩子提供更多的时间● 对儿童账号启用对儿童友好的助理● Linux(Beta)可以访问USB连接的Android设备● 通过实现Android DocumentsProvider APIs,现在F

Android 4.4 Kitkat 使能 USB adb 功能

背景 在 Linux-3.8 以后,Android 的内核分支,便去掉了 f_adb,改使用 USB function FS,在用户空间实现 USB adb 功能.这篇文章根据原作者的 Google+ 文章,在 Atmel sama5 开发板上做了测试,将步骤记录如下,供需要使用的读者参考,你也可以查看作者原文:https://plus.google.com/111524780435806926688/posts/AaEccFjKNHE 在 Linux-3.10 上使能 USB ADB 编译内核

android app 流量统计

https://blog.csdn.net/yzy9508/article/details/48300265 | android 数据流量统计 - CSDN博客https://blog.csdn.net/forlong401/article/details/8440160 | android如何开发流量监控软件 - CSDN博客https://stackoverflow.com/questions/12613402/android-statistic-3g-traffic-for-each-ap

通过usb连接adb

手机不同进入的方式可能不一样,我使用的是努比亚手机. 借鉴这里的:http://adbshell.com/commands/adb-connect 在Wi-Fi上使用ADB:adb connect <host> [:<port>] 1.在手机设置里面打开开发者模式:关于手机--->版本号(多次点击版本号) 2.通过USB连接电脑 3.进入电脑的cmd界面,输入:adb devices,出现device说明手机通过usb连接电脑成功 4.如果上一步没有出现,可以通过adb tc