您的位置:首页 > 其它

通过BroadcastReceiver实现监听电池电量

2016-01-07 19:59 267 查看
Broadcast是一种在应用程序之间进行传输信息的机制。BroadcastReceiver对发送出来的Broadcast进行过滤并响应。广播Intent的发送是通过Context.sentBroadcast(),Context.sentOrderedBroadcast()或者Context.sendStickyBroadcast()方法来实现。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收。

广播接收器只有一个回调方法,即void onReceive( Context context,Intent intent)方法,当广播消息抵达接收器时系统将调用onReceive()方法并且把包括消息的Intent对象传递给他。广播接收器只有在执行这个方法的时候才处于活跃状态,当该方法执行完毕后,广播接收器处于失活状态。

package com.example.android_04_demo;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView batteryTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

batteryTextView = (TextView) findViewById(R.id.text);
}

@Override
protected void onResume() {
// TODO Auto-generated method stub//注册广播监听器
super.onResume();
registerReceiver(batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

}

@Override
protected void onPause() {
// TODO Auto-generated method stub注销广播监听器
super.onPause();

unregisterReceiver(batteryInfoReceiver);
}
private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() {

@Override接收广播
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {

int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale",100);

batteryTextView.setText("电量:"+String.valueOf(level*100/scale)+"%");
}
}
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: