之前第七章广播与服务理论篇写到:

特殊的广播接收者(一般发广播次数频率很高)

  • 安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的
  • 屏幕锁屏和解锁
  • 电量改变

今天在这里就回顾一下,且用代码方式注册广播接收者。

需求:使用服务注册广播接收者,广播接收者接收系统锁屏解屏广播,并执行相应的操作(这里还是打印一行log)。

方法:一、activity前台两个按钮,对应两个功能:1、启动服务;2、停止服务。

二、定义服务类,在onCreate方法里面注册广播接受者,指定意图过滤器action为系统解锁屏的action意图;在onDestroy方法里取消注册广播(停止广播)

三、自定义能接收服务的广播接收者,来监听手机锁屏解屏的变化

代码写了出来:

MainActivity:

package com.example.register;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View; public class MainActivity extends Activity { private Intent intent; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent = new Intent(this, RegisterService.class);
} public void start(View v) {//开启服务按钮
startService(intent);
} public void stop(View v) {//停止服务按钮
stopService(intent);
} }

RegisterService:

package com.example.register;

import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder; public class RegisterService extends Service { private ScreenReceiver receiver; @Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
} @Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
receiver = new ScreenReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON); registerReceiver(receiver, filter); } @Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(receiver);
} }

自定义ScreenReceiver:

package com.example.register;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; public class ScreenReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
System.out.println("屏幕关闭了");
} else if (Intent.ACTION_SCREEN_ON.equals(action)) {
System.out.println("屏幕开启了");
} } }

当手机锁屏时,打印log:    屏幕关闭了

当再次解屏是,打印log:    屏幕开启了

Android初级教程使用服务注册广播接收者监听手机解锁屏变化的更多相关文章

  1. Android 监听手机锁屏的工具类

    自定义 ScreenListener package com.example.teagardenhd.Listener; import android.content.BroadcastReceive ...

  2. Android初级教程理论知识(第七章服务)

    服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...

  3. Android手机使用广播监听手机收到的短信

    我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态 ...

  4. [android] 代码注册广播接收者&利用广播调用服务的方法

    利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent ...

  5. Android初级教程理论知识(第六章广播接受者)

    总体概述: 广播接收者 现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息 Android中:系统在运行过程中,会产生很多事件,那么某些事件产生时,比如:电量改变 ...

  6. android91 代码注册广播接收者

    Activity: package com.itheima.register; import android.os.Bundle; import android.app.Activity; impor ...

  7. Android初级教程反射+AIDL+内容观察者监控黑名单号码代码模板

    对于想要拦截一些莫名的陌生号码,就需要电话拦截功能与删除其电话记录功能.拦截的主要业务逻辑,分别是在一个服务里面进行:1.注册电话监听:2.取消注册电话监听(当然注册于取消是在服务里面建立一个广播接收 ...

  8. Android系统编程入门系列之广播接收者BroadcastReceiver实现进程间通信

    在前边几篇关于Android系统两个重要组件的介绍中,界面Activity负责应用程序与用户的交互,服务Service负责应用程序内部线程间的交互或两个应用程序进程之间的数据交互.看上去这两大组件就能 ...

  9. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

随机推荐

  1. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('')在Delphi中进行字符变量连接相加时单引号用('' ...

  2. js打印小结

    <script type="text/javascript"> //打印必备参数 var hkey_root,hkey_path,hkey_key; hkey_root ...

  3. BI之SSIS入门最新版Visual Studio调试技巧

    简介 最近公司业务需要用到BI SSIS,SSIS是什么?"SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案( ...

  4. BookNote: Refactoring - Improving the Design of Existing Code

    BookNote: Refactoring - Improving the Design of Existing Code From "Refactoring - Improving the ...

  5. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  6. Vasya the Hipster

    One day Vasya the Hipster decided to count how many socks he had. It turned out that he had a red so ...

  7. ACM Tempter of the Bone

    小狗在古老的迷宫(maze)中发现了一个骨头,这使它非常着迷.然而,当他把它捡起来的时候,迷宫开始摇晃,狗狗可以感觉到地面下沉(sinking).他意识到这块骨头是一个陷阱(trap),他拼命地想摆脱 ...

  8. PHP $_POST 变量

    $_POST 变量 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值. 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏 ...

  9. ZooKeeper之(四)配置与命令

    4.1 配置文件 ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为"zoo_sample.cfg"的文件,是ZooKeeper配置文件的模板. ZooKe ...

  10. lua 序列化函数

    local function f( ... ) print('hello') end local x = string.dump(f, true) loadstring(x)()