Android监听手机屏幕解锁和判断屏幕状态

    技术2022-07-10  174

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在AndroidManifest配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事件。但有时候,在后台执行某个操作时,需要主动判断屏幕的状态,比如是否是亮着的,可以使用PowerManager的isScreenOn方法进行判断,比如屏幕是否开启了自动旋转等。

    注册监听解锁广播:

    MyReceiver: package com.home.testscreen;

    import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast;

    public class MyReceiver extends BroadcastReceiver {

    @Override public void onReceive(Context context, Intent intent) { // 解锁 if (intent != null && Intent.ACTION_USER_PRESENT.equals(intent.getAction())) { Toast.makeText(context, "屏幕已解锁", Toast.LENGTH_SHORT).show(); } }

    }

    主动判断屏幕是否亮着: public boolean isScreenOn(Context context) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (pm.isScreenOn()) { return true; } return false; }

    判断是否开启了重力感应: /**

    是否开启了重力感应@param context@return */ public boolean screenIsOpenRotate(Context context) { int gravity = 0; try { gravity = Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION); } catch (SettingNotFoundException e) { e.printStackTrace(); } if (gravity == 1) { return true; } return false; }

    转至:http://www.open-open.com/lib/view/open1409191355010.html ;

    Processed: 0.010, SQL: 9