如何使用Android PowerProfile私有API?

mnemlml8  于 2023-01-07  发布在  Android
关注(0)|答案(4)|浏览(111)

我从下面的链接下载了源代码,并添加到我的项目.
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设备的功耗。

yebdmbv4

yebdmbv41#

个人使用补丁android.jar只会让人头疼,使用反射是访问PowerProfile.java的一种“简单”方式。但正如@FoamyGuy和无数其他人所指出的,这是一个隐藏的API,因此请将其 Package 在一个大的尝试捕获中,因为它可能会在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());
wtzytmuj

wtzytmuj2#

是的,您可以访问内部API com.android.internal.os.PowerProfile
只要看一下this link,并按照一步一步的过程。

bkkx9g8r

bkkx9g8r3#

你可以用

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

但是要注意FoamyGuy的评论。

rjjhvcjd

rjjhvcjd4#

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

相关问题