2012-04-17 7 views
5

में प्रत्येक प्रतिशत पर बैटरी स्थिति बदलना मैं हर प्रतिशत में बैटरी परिवर्तन का पता लगाना चाहता हूं। मैं प्रसारण रिसीवर के साथ एक बार बैटरी स्तर का पता लगाने में सक्षम हूं। लेकिन यह 66 से 67 तक बदलते समय स्वचालित रूप से मूल्य अपडेट नहीं कर रहा है।एंड्रॉइड

यहां मेरा कोड है।

private void batteryLevel() { 
     BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() { 
      public void onReceive(Context context, Intent intent) { 
       context.unregisterReceiver(this); 
       Log.i("Battery CHANGED******",":: IN RECEIVER"); 

       int rawlevel = intent.getIntExtra("level", -1); 
       int scale = intent.getIntExtra("scale", -1); 
       int level = -1; 
       if (rawlevel >= 0 && scale > 0) { 
        level = (rawlevel * 100)/scale; 
       } 
       btnConsumer.setText("Battery Level Remaining: " + level + "%"); 
      } 
     }; 
     IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(batteryLevelReceiver, batteryLevelFilter); 

    } 

जोड़ा अनुमति

<uses-permission android:name="android.permission.BATTERY_STATS"></uses-permission> 

यह 66 का पता लगाने, लेकिन जब इसे बदलने के 65 या 67 यह मूल्य अपडेट नहीं होगा। या लॉग भी प्रदर्शित नहीं

मैं इसे बनाना चाहता हूं जैसे कि मैं हर बदलाव प्राप्त कर सकूं।

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

उत्तर

12

सबसे पहले, आपको BATTERY_STATS अनुमति की आवश्यकता नहीं है।

दूसरा, आपके onReceive() की पहली पंक्ति आपके BroadcastReceiver को अनियंत्रित करती है, जिससे आपको कोई और अपडेट प्राप्त करने से रोका जा सकता है।

तीसरा, इस बात की कोई गारंटी नहीं है कि आपके पास प्रत्येक 1% परिवर्तन के लिए आपको बैटरी जानकारी दी जाएगी। उदाहरण के लिए, कई मोटोरोला फोन, बैटरी कम होने तक केवल 1012% ACTION_BATTERY_CHANGED भेजते हैं। ACTION_BATTERY_CHANGED को कितनी बार प्रसारित करने का निर्णय डिवाइस निर्माता पर निर्भर करता है, न कि आप।