在android上截取电池分析截图

时间:2012-10-03 09:51:37

标签: android adb monkeyrunner

我正在对我的应用进行电池分析,我只剩下这些选项:

  1. 禁用设备上的USB充电,这是我尚无法做到的,并使用设置的monkeyrunner进行截屏 - >电池屏幕
  2. 如果没有连接USB线,我可以通过在我的root手机上运行的shell脚本来模拟向下音量键+电源键保持事件,以获取设置的屏幕截图 - >电池屏幕
  3. 获取dumpsys电池,其中显示了设置中列出的所有流程 - >再次使用在root电话上的adb shell中运行的shell脚本,但我不知道命令
  4. 每种方法都有其自身的局限性。有什么方法可以实现我的目标吗?

3 个答案:

答案 0 :(得分:1)

如果您的目标是功耗分析,请查看AT& T研究实验室的Application Resource Optimizer (ARO)。我认为这正是你要找的。它将为您提供比屏幕截图更准确的分析。

答案 1 :(得分:1)

使用ICS及更高版本,所有手机都与/ system / bin中名为 screencap 的exe捆绑在一起。运行以下命令行以截取屏幕截图

screencap -p /sdcard/screenshot.png

这也可以通过使用Java抓取shell来完成,因此您可以根据需要捕获sceenshot。

答案 2 :(得分:1)

我在这个问题上有一些专业知识。在我看来,你有两个选择:

  1. 你可以创建本地猴子脚本并从你的shell上运行它 设备
  2. 您可以通过TCP / IP(WiFi)连接设备并存储电池 消费快照。
  3. 修改

    要从设备运行猴子脚本,您需要运行以下命令(如果我不弄乱smth):

    adb shell monkey -v -f /mnt/sdcard/script.txt
    

    在这种情况下,脚本使用了一些不寻常的sintax(只是一个例子,这是Nexus S与姜饼的默认联系人应用程序的脚本):

    # Start of Script
    type= user
    count= 150
    speed= 1.0
    start data >>
    
    #launch browser com.android.contacts/.DialtactsContactsEntryActivity
    LaunchActivity(com.android.contacts, com.android.contacts.DialtactsContactsEntryActivity)
    UserWait(4000)
    
    #go to favorites tab
    Tap(415, 85)
    UserWait(3000)
    
    #go to phone tab
    Tap(60, 85)
    UserWait(3000)
    
    #calllog
    Tap(175,90)
    UserWait(2000)
    
    #contacts
    Tap(300,90)
    UserWait(4000)
    
    #create new contact
    DispatchPress(KEYCODE_MENU)
    UserWait(2000)
    Tap(360,650)
    UserWait(4000)
    
    #go name
    Tap(200,340)
    UserWait(8000)
    DispatchString(123)
    UserWait(5000)
    
    Tap(125,385)
    
    #launching launcher and exit com.android.launcher/com.android.launcher2.Launcher
    UserWait(10000)
    LaunchActivity(com.android.launcher, com.android.launcher2.Launcher)
    quit
    

    至于我,使用第二种方法更容易(而且更容易出错)。 您可以通过WiFi连接到您的设备(因此,您的USB电缆已分离)。为此你应该:

    1. 通过USB连接设备并运行adb tcpip <port_num>
    2. 然后将您的设备连接到WiFi网络
    3. 然后在您的计算机上执行(也连接到 网络)adb connect <phone_ip_addres>:<port_num>
    4. 现在,您可以使用标准方式为monkeyrunner(monkeyrunner <script_name>.py

      通过WiFi发送monkeyrunner命令