2012-04-17 36 views
5

tôi muốn phát hiện thay đổi pin ở mọi tỷ lệ phần trăm. Tôi có thể phát hiện mức pin một lần với bộ thu phát sóng. Nhưng giá trị không tự động cập nhật khi% thay đổi từ 66 xuống 67.Phát hiện Thay đổi trạng thái pin ở mọi tỷ lệ phần trăm trong android

Đây là mã của tôi.

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); 

    } 

Added phép

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

Nó phát hiện 66 nhưng khi nó thay đổi 65 hoặc 67 nó sẽ không cập nhật giá trị. hoặc không hiển thị nhật ký quá

Tôi muốn làm cho nó giống như tôi có thể nhận được mọi thay đổi.

Xin cảm ơn trước.

Trả lời

12

Trước tiên, bạn không cần sự cho phép BATTERY_STATS.

Thứ hai, dòng đầu tiên của số onReceive() hủy đăng ký BroadcastReceiver, do đó ngăn bạn nhận thêm bất kỳ cập nhật nào khác.

Thứ ba, không đảm bảo rằng bạn sẽ cung cấp thông tin về pin cho mỗi thay đổi 1%. Nhiều điện thoại Motorola, ví dụ, chỉ gửi ACTION_BATTERY_CHANGED cứ 10% cho đến khi pin yếu. Quyết định về tần suất phát sóng ACTION_BATTERY_CHANGED tùy thuộc vào nhà sản xuất thiết bị, không phải cho bạn.

Các vấn đề liên quan