首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Android 螢幕喚醒與解鎖實作範例

     編輯:Java 相關知識

Android 螢幕喚醒與解鎖實作範例

在 Android 應用開發中,有時需要以程式碼控制螢幕的喚醒與解鎖,例如實作鬧鐘、來電畫面或遠端控制功能。這篇文章示範如何使用 PowerManager 與 KeyguardManager 達成點亮螢幕並解除鎖定鍵盤鎖的功能。

所需權限

在 AndroidManifest.xml 中宣告以下權限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

核心程式碼實作

建立一個工具方法 wakeAndUnlock(boolean),傳入 true 為喚醒解鎖,false 為鎖定並釋放資源:

private KeyguardManager km;
private KeyguardLock kl;
private PowerManager pm;
private PowerManager.WakeLock wl;

private void wakeAndUnlock(boolean b) {
    if (b) {
        // 取得電源管理服務
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        // 取得 WakeLock,ACQUIRE_CAUSES_WAKEUP 會點亮螢幕,SCREEN_BRIGHT_WAKE_LOCK 保持高亮
        wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
        wl.acquire(); // 點亮螢幕

        // 取得鍵盤鎖管理服務
        km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        kl = km.newKeyguardLock("unLock");
        kl.disableKeyguard(); // 解鎖
    } else {
        // 重新啟用鍵盤鎖
        kl.reenableKeyguard();
        // 釋放 WakeLock,讓螢幕熄滅
        wl.release();
    }
}

注意事項

  • SCREEN_BRIGHT_WAKE_LOCK 在 API 17 後已棄用,建議改用 FLAG_KEEP_SCREEN_ON 或 WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON。
  • 請在 onDestroy() 或適當的生命週期中釋放 WakeLock,避免電量耗盡。
  • Android 6.0 (API 23) 以上需動態申請權限。

此範例提供基本架構,實際專案中請根據目標 API 版本調整實作細節。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved