通過廣播來監聽屏幕點亮和關閉狀態


監聽屏幕的狀態就需要廣播,我們還必須要動態注冊廣播才能實現監聽屏幕亮暗(靜態注冊無效)。我這里是在service做的處理,沒啥技術難度,直接上代碼。

package com.kale.camerademo;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

/**
 * @author:金凱
 * @tips :
 * @web :http://blog.csdn.net/lamp_zy/article/details/7968938
 * @date :2014-2-27
 */
public class ScreenService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    public void onCreate() {
        super.onCreate();
        /* 注冊屏幕喚醒時的廣播 */
        IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOnFilter);

        /* 注冊機器鎖屏時的廣播 */
        IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOffFilter);
    }

    public void onDestroy() {
        super.onDestroy();
        ScreenService.this.unregisterReceiver(mScreenOReceiver);
    }

    /**
     * 鎖屏的管理類叫KeyguardManager,
     * 通過調用其內部類KeyguardLockmKeyguardLock的對象的disableKeyguard方法可以取消系統鎖屏,
     * newKeyguardLock的參數用於標識是誰隱藏了系統鎖屏
     */
    private BroadcastReceiver mScreenOReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

            if (action.equals("android.intent.action.SCREEN_ON")) {
                System.out.println("—— SCREEN_ON ——");
            } else if (action.equals("android.intent.action.SCREEN_OFF")) {
                System.out.println("—— SCREEN_OFF ——");
            }
        }

    };

}

啟動服務:

startService(new Intent(MainActivity.this,ScreenService.class));

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM