在有些Android 应用中需要在屏幕打开或者关闭的时候进行一些处理,下面介绍一个在android应用程序中捕获屏幕打开或者关闭动作的方法:

首先创建ScreenReceiver 类,该类继承自BroadcastReceiver ,并实现其 onReceive 方法,在该类当中可判断屏幕事件的类型,并添加相关的代码。

public class ScreenReceiver extends BroadcastReceiver {     
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here 
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
                   }
    } 
}

然后在Activity中注册 BroadcastReceiver 并设置其IntenFilter  

public class ExampleActivity extends Activity {
    @Override
    protected void onCreate() {
        // initialize receiver
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        BroadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver, filter);
        // your code
    }        
   
     // your code
}


如果需要在service当中捕获屏幕打开或者关闭事件,可参照以下方法:

 
public class ScreenReceiver extends BroadcastReceiver { 
    private boolean screenOff; 
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        }
        Intent i = new Intent(context, UpdateService.class);
        i.putExtra("screen_state", screenOff);
        context.startService(i);
    } 
}

对应的 service样例代码如下: 

public static class UpdateService extends Service { 
        @Override
        public void onCreate() {
            super.onCreate();
            // register receiver that handles screen on and screen off logic
            IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
            filter.addAction(Intent.ACTION_SCREEN_OFF);
            BroadcastReceiver mReceiver = new ScreenReceiver();
            registerReceiver(mReceiver, filter);
        }
         @Override
        public void onStart(Intent intent, int startId) {
            boolean screenOn = intent.getBooleanExtra("screen_state", false);
            if (!screenOn) {
                // your code
            } else {
                // your code
            }
        }
}



更多相关文章

  1. Android系统启动之Zygote
  2. 自定义View之圆角图片
  3. Android(安卓)Service生命周期及用法
  4. 自定义View系列教程08--滑动冲突的产生及其处理
  5. Android(安卓)Studio启动崩溃的问题:Start Failed Internal error
  6. Google_android_JNI使用方法
  7. Android之ContentProvider源码解析
  8. SingleTask模式的Activity接受Intent注意事项
  9. 【Android(安卓)Studio初探】快捷键大全与常用设置

随机推荐

  1. Android7.0 设置音量最小时有声音输出
  2. 读取Activity/Processes的PID(Android)
  3. Android如何拍照或选择图片并裁剪
  4. listview 问题总结
  5. Android(安卓)属性动画(Property Animatio
  6. Android设置透明、半透明等效果
  7. android 修改默认APN
  8. Android(安卓)Kotlin开发语言学习笔记
  9. Android开机动画
  10. android页面用jquery窗口大小获取错误问