簡短說明(Quick explanation):
通過創建BroadcastReceiver來偵測系統中有關電池Intent(ACTION_BATTERY_CHANGED)的變化,一旦有接收到相關事件,將會讀取當前電量情況,并通過TextViews顯示在當前屏幕。
1 public class MyButteryDemo extends Activity {
2 private Button button = null;
3
4 @Override
5 public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.main);
8
9 button = (Button) findViewById(R.id.btn);
10 button.setOnClickListener(new OnClickListenerImpl());
11 }
12
13 private class OnClickListenerImpl implements OnClickListener {
14
15 @Override
16 public void onClick(View arg0) {
17 ButteryBroadcastReceiver receiver = new ButteryBroadcastReceiver();
18 IntentFilter filter = new IntentFilter(
19 Intent.ACTION_BATTERY_CHANGED);
20 MyButteryDemo.this.registerReceiver(receiver, filter);
21 }
22
23 }
24 }
1 public class ButteryBroadcastReceiver extends BroadcastReceiver {
2
3 @Override
4 public void onReceive(Context context, Intent intent) {
5
6 if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
7 int level = intent.getIntExtra("level", 0);
8 int scale = intent.getIntExtra("scale", 100);
9 Dialog dialog = new AlertDialog.Builder(context)
10 .setTitle("電池電量")
11 .setMessage(
12 "電池電量為:" + String.valueOf(level * 100 / scale)
13 + "%").setNegativeButton("關閉", new DialogInterface.OnClickListener() {
14
15 @Override
16 public void onClick(DialogInterface dialog, int which) {
17 // TODO Auto-generated method stub
18
19 }
20 }).create();
21 dialog.show();
22 }
23 }
24
25 }