Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android監聽屏幕解鎖和判斷屏幕狀態

Android監聽屏幕解鎖和判斷屏幕狀態

編輯:關於Android編程

開發後台服務的時候經常需要對屏幕狀態進行判斷,如果是想要監聽屏幕解鎖事件,可以在配置裡面注冊action為 android.intent.action.USER_PRESENT的廣播,則可以監聽解鎖事件。但有時候,在後台執行某個操作時,需要主動判斷屏幕的狀態,比如是否是亮著的,可以使用PowerManager的isScreenOn方法進行判斷,比如屏幕是否開啟了自動旋轉等。

注冊監聽解鎖廣播:

1 2 3 4 5 <receiver android:name="com.home.testscreen.MyReceiver"> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> intent-filter> receiver>


MyReceiver:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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(); } } }

主動判斷屏幕是否亮著:

? 1 2 3 4 5 6 7 public boolean isScreenOn(Context context) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (pm.isScreenOn()) { return true; } return false; }


判斷是否開啟了重力感應:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** * 是否開啟了重力感應 * @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; }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved