2011-11-11 3 views
6

下記のリンクからソースコードをダウンロードしてプロジェクトに追加しました。Android PowerProfileプライベートAPIを使用するにはどうすればよいですか?

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; 

はまた、私は基本的にAndroidデバイスの消費電力を測定したい

import com.android.internal.util.XmlUtils; 

をインポートすることはできません。

ありがとうございます。

+2

パブリックAPIに含まれていない場合は、うまく動作しないか、非常に困難になる可能性があります。たとえあなたがそれを稼働させることができたとしても、あなたがそれを動作させるために使用する手段が、OSアップデートによってある時点で壊れる可能性があります。 – FoamyGuy

答えて

2

はい、あなたはcom.android.internal.os.PowerProfile

だけthis linkを見て、そしてステップのプロセスバイステップに従っている内部APIにアクセスすることができます。

1

あなたは

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

を使用しかしFoamyGuyがコメントし何を認識することができます。

3

パトロールされた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

最も簡単な方法は、アンドロイドのframework.jarをダウンロードして、あなたのプロジェクトに外部ライブラリとして含めることです。あなたのアンドロイドプロジェクトにframework.jarを含めると、そのリソースファイルを見つけることができます。

関連する問題