《老罗Android》监听电量变化、Broadcast实现开机启动
来源:互联网 发布:ms sql server 版本 编辑:程序博客网 时间:2024/05/20 22:04
1. Broadcast监听电量变化
如果我们阅读软件,可能是全屏阅读,这个时候用户就看不到剩余的电量,我们就可以为他们提供电量的信息。要想做到这一点,我们需要接收一条电量变化的广播,然后获取百分比信息.
<uses-permission android:name="android.permission.BATTERY_STATS"/>
假如你在Activity.onResume()中注册了receiver广播,那么你要在Activtity.onPause()方法中注销它。
当然,有些时候我们是要立即获取电量的,而不是等电量变化的广播,比如当阅读软件打开时立即显示出电池电量。我们可以按以下方式获取:
2. Broadcast实现开机启动
我们经常会有这样的应用场合,比如启动一个Activity,需要实现开机启动的功能。要实现这个功能,我们就可以订阅系统“启动完成”这条广播,接收到这条广播后我们就可以启动自己的服务了。
要实现开机启动,就要在 Manifest中监听:
添加权限: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
注册 receiver:
如果我们阅读软件,可能是全屏阅读,这个时候用户就看不到剩余的电量,我们就可以为他们提供电量的信息。要想做到这一点,我们需要接收一条电量变化的广播,然后获取百分比信息.
public class MainActivity extends Activity {private BatteryBroadCastReceiver receiver;private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) this.findViewById(R.id.textView1);}public class BatteryBroadCastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {// 获取当前电量int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);// 电量的总刻度int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);textView.setText("电池电量为" + ((level * 100) / scale) + "%");// if (level < 15) {// // dosomething/////// }}}}protected void onResume() {super.onResume();receiver = new BatteryBroadCastReceiver();// 监听电量变化的意图IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(receiver, filter);}@Overrideprotected void onPause() {super.onPause();unregisterReceiver(receiver);}}上面是动态注册,也可以采用静态注册:
<receiver android:name=".BatteryBroadCastReceiver"> <intent-filter> <action android:name="android.intent.action.BATTERY_CHANGED"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>在Manifest中添加授权:
<uses-permission android:name="android.permission.BATTERY_STATS"/>
假如你在Activity.onResume()中注册了receiver广播,那么你要在Activtity.onPause()方法中注销它。
当然,有些时候我们是要立即获取电量的,而不是等电量变化的广播,比如当阅读软件打开时立即显示出电池电量。我们可以按以下方式获取:
Intent batteryIntent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); int currLevel = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); int total = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1); int percent = currLevel * 100 / total; Log.i("battery", "battery: " + percent + "%");
2. Broadcast实现开机启动
我们经常会有这样的应用场合,比如启动一个Activity,需要实现开机启动的功能。要实现这个功能,我们就可以订阅系统“启动完成”这条广播,接收到这条广播后我们就可以启动自己的服务了。
要实现开机启动,就要在 Manifest中监听:
添加权限: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
注册 receiver:
<receiver android:name=".StartBootComplete" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" ></action> <!-- 注册开机广播地址--> <category android:name="android.intent.category.DEFAULT" ></category> </intent-filter></receiver>实现一个广播接收者:
public class StartBootComplete extends BroadcastReceiver {static final String action_boot="android.intent.action.BOOT_COMPLETED"; @Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(action_boot)){ Intent bootStartIntent=new Intent(context,MainActivity.class); bootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(bootStartIntent); }}}也可以启动一个service,如消息推送服务:
public void onReceive(Context context, Intent intent) { Intent service = new Intent(context, MsgPushService.class); context.startService(service); Log.i(TAG, "Boot Complete. Starting MsgPushService..."); }在这个服务中可以制定你想要的操作:
public class MsgPushService extends Service { @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate called."); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand called."); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent arg0) { return null; } }记得要在Manifest中加入你的service声明:
<service android:name=".MsgPushService"/>
1 0
- 《老罗Android》监听电量变化、Broadcast实现开机启动
- Android 电量变化监听
- Android 电量变化监听
- 监听电量变化 Android 良讯
- android 监听手机电量变化
- 监听开机,电量变化,信号变化的广播
- Android工具之监听电量变化
- Android通过Broadcast(广播)实现开机自启动
- android 监听开机启动
- Android 监听开机广播启动服务 动态注册时间变化监听广播
- 10 Broadcast 监听开机
- Broadcast监听开机
- 四大组件之BroadCastReceiver(监听电量变化+开机自启app)
- android-code-电量变化
- 【Android】利用广播BroadCast监听网络的变化
- 开机关机广播和电量变化广播
- android 实现开机后台监听
- Android实现开机启动
- dropzone的使用方法
- win2003 iis6架设邮箱不能收外部邮件
- smack+openfire自定义协议获取当前用户加入的群
- 信号量集知识整理
- 2014年十大发展前景比较好的行业
- 《老罗Android》监听电量变化、Broadcast实现开机启动
- 将vimdiff作为svn di默认的编辑工具
- 查看apache版本-命令
- 如何学好C语言[转载]
- POJ-3190-Stall Reservations
- C/C++笔试经典——链表倒序
- 归并排序之逆序对
- 瑞柏匡丞:如何正确应对移动互联带来的影响
- Linux下禁止ping最简单的方法