如何使用Android PowerProfile私有API?

时间:2011-11-11 22:00:26

标签: android

我从以下链接下载了源代码并添加到我的项目中。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/com/android/internal/os/PowerProfile.java

我收到了,但找不到下面显示的R文件。

 int id = com.android.internal.R.xml.power_profile;

也无法导入

import com.android.internal.util.XmlUtils;

我基本上想测量Android设备的功耗。

提前致谢。

4 个答案:

答案 0 :(得分:3)

个人使用patached android.jar只会导致头痛,使用反射是一种访问PowerProfile.java的“简单”方式。但是,正如@FoamyGuy和无数其他人已经注意到这是隐藏的api所以将它包装在一个很大的尝试中,因为它可能会破坏Android的更高版本。

Class<?> powerProfileClazz = Class.forName("com.android.internal.os.PowerProfile");

//get constructor that takes a context object
Class[] argTypes = { Context.class };
Constructor constructor = powerProfileClazz
            .getDeclaredConstructor(argTypes);
Object[] arguments = { context };
//Instantiate
Object powerProInstance = constructor.newInstance(arguments);

//define method
Method batteryCap = powerProfileClazz.getMethod("getBatteryCapacity", null);

//call method 
Log.d(TAG, batteryCap.invoke(powerProInstance, null).toString());

答案 1 :(得分:2)

是的,您可以访问com.android.internal.os.PowerProfile

的内部API

只需查看this link,然后按照分步流程进行操作。

答案 2 :(得分:1)

您可以使用

int id = Resources.getSystem().getIdentifier("power_profile", "xml", "android");

但要注意FoamyGuy的评论。

答案 3 :(得分:1)

最简单的方法是下载android的framework.jar并将其作为项目中的外部库包含在内。在你的android项目中包含framework.jar后,你可以找到该资源文件。