2011-11-11 14 views
6

Pobrałem kod źródłowy z linku poniżej i dodałem go do mojego projektu.Jak korzystać z prywatnego interfejsu API Android PowerProfile?

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

Dostaję i nie może odnaleźć pliku R pokazano poniżej.

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

Również nie można importować

import com.android.internal.util.XmlUtils; 

Zasadniczo chcę, aby mierzyć pobór mocy urządzeń z systemem Android.

Z góry dziękuję.

+2

Jeśli nie jest częścią publicznych interfejsów API, prawdopodobnie nie będzie działać lub będzie bardzo trudny. Nawet jeśli uda Ci się go uruchomić, najprawdopodobniej to, co zrobisz, aby działało, zostanie w pewnym momencie uszkodzone przez aktualizację systemu operacyjnego. – FoamyGuy

Odpowiedz

2

Tak można uzyskać dostęp do API wewnętrzny, który jest com.android.internal.os.PowerProfile

wystarczy spojrzeć na this link i postępować krok po kroku proces.

1

Można użyć

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

jednak zdawać sobie sprawę z tego, co FoamyGuy skomentował.

3

Osobiście używanie patowanego android.jar powoduje po prostu bóle głowy, używanie refleksji to "prosty" sposób dostępu do PowerProfile.java. Ale jak @FoamyGuy i niezliczone inne zauważyły, że to jest ukryta api, więc zapakuj ją w wielką próbę złapania, ponieważ może ona zepsuć późniejszą wersję Androida.

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

Najprostszym sposobem, aby to zrobić, jest pobranie pliku framework.jar z systemu Android i uwzględnienie go jako biblioteki zewnętrznej w projekcie. Po dodaniu pliku framework.jar do projektu Android możesz znaleźć ten plik zasobów.

Powiązane problemy