程序功能非常简单,设计一个button,作为触动事件——点击后,便将当前电池显示出来。
主程序仍然需要实现一个BroadcastReceiver对象,在Button的onClick事件触发时,向系统注册一个 BroadcastReiver,通过IntentFilter的设置来讲Intent.ACTION_BATTERY_CHANGED
具体源码:
package com.allove.wfp;
import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;
public class BatteryInfoTest extends Activity implements OnClickListener{ private Button mButton; private int intLevel; private int intScale; private BroadcastReceiver mBatteryInfoReceiver=new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action=intent.getAction(); if(Intent.ACTION_BATTERY_CHANGED.equals(action)) { intLevel=intent.getIntExtra("level",0); intScale=intent.getIntExtra("scale", 100); onBatteryInfoReceiver(intLevel,intScale); } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
mButton=(Button) this.findViewById(R.id.Button01); mButton.setOnClickListener(this); }
public void onBatteryInfoReceiver(int intLevel,int intScale) { final Dialog d=new Dialog(this); d.setTitle("电池信息"); d.setContentView(R.layout.dialog); Window window=d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND); TextView mTextView=(TextView) d.findViewById(R.id.dialog_TextView01); mTextView.setText("电池计量:"+String.valueOf(intLevel*100/intScale)+"%"); Button button=(Button) d.findViewById(R.id.dialog_Button01); button.setOnClickListener(new View.OnClickListener(){
@Override public void onClick(View v) { // TODO Auto-generated method stub BatteryInfoTest.this.unregisterReceiver(mBatteryInfoReceiver); d.dismiss(); } }); d.show(); }
@Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.Button01: this.registerReceiver(mBatteryInfoReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); break; } } }
|