2011-11-11 13 views
6

मैंने नीचे दिए गए लिंक से स्रोत कोड डाउनलोड किया और मेरी परियोजना में जोड़ा।मैं एंड्रॉइड पावरप्रोफाइल निजी एपीआई का उपयोग कैसे करूं?

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

मैं हो रही है और यह आर फ़ाइल नीचे दिखाया गया है नहीं मिल रहा।

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

भी आयात नहीं कर सकते

import com.android.internal.util.XmlUtils; 

मैं मूल रूप से Android उपकरणों की बिजली की खपत को मापने के लिए चाहते हैं।

अग्रिम धन्यवाद।

+2

यदि यह सार्वजनिक एपीआई का हिस्सा नहीं है तो यह संभवतः काम नहीं करेगा, या बहुत मुश्किल हो सकता है। और यहां तक ​​कि यदि आप इसे काम करने के लिए प्रबंधित करते हैं तो भी संभव है कि आप इसे काम करने के लिए जो कुछ भी इस्तेमाल करते हैं, वह ओएस अपडेट द्वारा किसी बिंदु पर टूटा जाएगा। – FoamyGuy

उत्तर

2

हाँ, आप आंतरिक एपीआई है कि com.android.internal.os.PowerProfile

सिर्फ this link पर एक नज़र डालें का उपयोग, और कदम प्रक्रिया द्वारा कदम का पालन कर सकते हैं।

1

आप

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

का उपयोग लेकिन क्या FoamyGuy टिप्पणी की के बारे में पता हो सकता है।

3

व्यक्तिगत रूप से पैच किए गए android.jar का उपयोग करके सिरदर्द का कारण बनता है, प्रतिबिंब का उपयोग करके PowerProfile.java तक पहुंचने का एक 'सरल' तरीका है। लेकिन @FoamyGuy और अनगिनत अन्य लोगों ने यह ध्यान दिया है कि यह छुपा एपीआई है इसलिए इसे एक बड़े प्रयास में लपेटें क्योंकि यह एंड्रॉइड के बाद के संस्करण को तोड़ सकता है।

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 को शामिल करने के बाद आप उस संसाधन फ़ाइल को पा सकते हैं।

संबंधित मुद्दे