我写一个应用程序,以评估在Android蓝牙P2P网络的可行性。
我注意到,在Galaxy Nexus的,它使用非常小的电池,而在Nexus S,它很快消耗电池电量。 这是直接由于蓝牙引起的高CPU的负载。
现在,我想收集关于多电池耗尽如何它在安装的设备上我的应用程序的原因的信息。 只需登录时间与电池电量是无用的,因为我不知道什么时候该设备正在使用中,即使我登录,我不知道,如果用户正在玩3D游戏,同时Torrenting通过WiFi或在阅读电子书暗淡的画面。
为了使问题变得更糟,不是由于我的应用,电池使用是由于它在电池屏幕 - 一些被列为“蓝牙”,例如(再次,取决于设备)。
有没有简单的,隐私保护的方式得到无根的设备有用的信息? 该设备是不是我的控制之下。 我不能简单地去看看菜单,我不能使用ADB。
Android的API目前不支持这一点。 唯一可用的文件是一个描述如何使用BatteryManager的广播,只提供整体的电池电量和无每个应用程序的细节。
我想,即使有公开的方式来模拟一下系统设置电池管理器中显示,他们将需要生根。
据我所知是没有办法做到这一点。 你可以去这样做的最接近的是该设备挂接到像一个监测工具的小眼睛实验室这确实提请您的应用随着时间的推移在图表上所消耗的电池。 它还支持标记在应用程序的生命周期的关键事件如打开WIFI /蓝牙等等。
没有为远程执行此操作不支持,但你可以在自己的测试设备上的数据。
这种做法是相当粗糙,但它可以帮助。 您可以使用现有的BatteryManager广播,而你的应用程序是积极跟踪更改整体电池电量。
知道什么时候你的应用程序是活动的是另外一个问题。 如果您的应用程序完全活动组成,那么你可以开始跟踪任何您的任何活动取得好成绩onResume()
方法被调用,并停止在跟踪onPause()
如果你可以有你所有的活动从单一的基本活动类派生,那么这是很容易的。 请参阅如何当一个Android应用程序转到后台检测和回来的前景 ,了解如何跟踪此建议。
如果你的程序比较复杂,且智能的事情发生在类似服务更长的运行组件,那么它要困难得多。
这是简陋,但至少它会帮助您区分“玩3D游戏”,从“使用我的应用程序”。
文章来源: How can I find out how much battery my Android app consumes on user's devices?