这次介绍的是如何通过广播监听设备
这个很简单不用太多介绍,直接看代码
布局文件
这样就能时时的获取电量的变化信息,当然也可以通过BatteryManager对象里面的其他String 来获取其他信息,比如EXTRA_PLUGGED,这个是返回当前是用usb,交流电,无线电的方式等
这个很简单不用太多介绍,直接看代码
01 | /** |
02 | * 电量监控 |
03 | * |
04 | * <a href="http://home.51cto.com/index.php?s=/space/1269642" target="_blank">@author</a> user |
05 | * |
06 | */ |
07 | public class BatteryActivity extends Activity implements OnClickListener { |
08 |
09 | private Button startBtn, stopBtn; |
10 | private TextView batteryValue; |
11 | private BroadcastReceiver mReceiver; |
12 | private IntentFilter mFilter; |
13 |
14 | <a href= "http://home.51cto.com/index.php?s=/space/5017954" target= "_blank" > @Override </a> |
15 | protected void onCreate(Bundle savedInstanceState) { |
16 | // TODO Auto-generated method stub |
17 | super .onCreate(savedInstanceState); |
18 |
19 | setContentView(R.layout.battery_layout); |
20 |
21 | startBtn = (Button) findViewById(R.id.start_btn); |
22 | stopBtn = (Button) findViewById(R.id.stop_btn); |
23 | batteryValue = (TextView) findViewById(R.id.battery_vaule); |
24 | batteryValue.setTextColor(Color.RED); |
25 | |
26 | startBtn.setOnClickListener( this ); |
27 | stopBtn.setOnClickListener( this ); |
28 | |
29 | mFilter = new IntentFilter(); |
30 | // 监听电量变化,只能采用动态注册方式,不能在AndroidManifest.xml中用静态注册广播接受者 |
31 | mFilter.addAction(Intent.ACTION_BATTERY_CHANGED); |
32 | |
33 | mReceiver = new BroadcastReceiver() { |
34 |
35 | <a href= "http://home.51cto.com/index.php?s=/space/5017954" target= "_blank" > @Override </a> |
36 | public void onReceive(Context context, Intent intent) { |
37 | // TODO Auto-generated method stub |
38 | // BatteryManager 包含了Intent.ACTION_BATTERY_CHANGED所需的String和常量值 |
39 | // 当前电量 |
40 | int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0 ); |
41 | // 最大电量 |
42 | int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0 ); |
43 | batteryValue.setText( "当前电量为:" + (level * 100 ) / scale + "%" ); |
44 | } |
45 | |
46 | }; |
47 | } |
48 |
49 | <a href= "http://home.51cto.com/index.php?s=/space/5017954" target= "_blank" > @Override </a> |
50 | public void onClick(View v) { |
51 | // TODO Auto-generated method stub |
52 | int id = v.getId(); |
53 | switch (id) { |
54 | case R.id.start_btn: |
55 | registerReceiver(mReceiver, mFilter); |
56 | break ; |
57 |
58 | case R.id.stop_btn: |
59 | unregisterReceiver(mReceiver); |
60 | break ; |
61 |
62 | default : |
63 | break ; |
64 | } |
65 | } |
66 | |
67 | <a href= "http://home.51cto.com/index.php?s=/space/5017954" target= "_blank" > @Override </a> |
68 | protected void onDestroy() { |
69 | // TODO Auto-generated method stub |
70 | super .onDestroy(); |
71 | unregisterReceiver(mReceiver); |
72 | } |
73 | } |
布局文件
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
03 | android:layout_width= "match_parent" |
04 | android:layout_height= "match_parent" |
05 | android:orientation= "vertical" > |
06 |
07 | <Button |
08 | android:id= "@+id/start_btn" |
09 | android:layout_width= "100dp" |
10 | android:layout_height= "50dp" |
11 | android:text= "start" /> |
12 |
13 | <Button |
14 | android:id= "@+id/stop_btn" |
15 | android:layout_width= "100dp" |
16 | android:layout_height= "50dp" |
17 | android:text= "stop" /> |
18 |
19 | <TextView |
20 | android:id= "@+id/battery_vaule" |
21 | android:layout_width= "wrap_content" |
22 | android:layout_height= "wrap_content" |
23 | android:textSize= "20sp" /> |
24 |
25 | </LinearLayout> |
这样就能时时的获取电量的变化信息,当然也可以通过BatteryManager对象里面的其他String 来获取其他信息,比如EXTRA_PLUGGED,这个是返回当前是用usb,交流电,无线电的方式等