[英]programmatically turn screen off in Android phone from another thread
我正在嘗試關閉Android手機的屏幕。
我閱讀了許多其他討論,並嘗試了兩種此處描述的方法: 在Android上關閉屏幕
實際上,我真正需要做的是啟動鎖定屏幕(要求輸入PIN碼的屏幕)。 我不確定該怎么做,也找不到有關它的文檔,所以我試圖關閉屏幕,希望當我重新打開手機時它會顯示鎖定屏幕。 不幸的是,我無法檢驗我的理論。
第一種選擇:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();
第二種選擇:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
第一個選項什么都不做,第二個選項導致我的應用崩潰。 在堆棧調用中,我看到了一個可疑的日志: Only the original thread that created a view hierarchy can touch its views.
我確實是從另一個在后台運行的線程(不是主線程)調用此代碼的。
這是否可能導致崩潰? 我該如何克服這個問題?
還有另一種方法可以以編程方式啟動鎖定屏幕,而不必關閉屏幕嗎?
在第一個選項中,還要添加ACQUIRE_CAUSES_WAKEUP。 這將喚醒屏幕並顯示鎖定屏幕。
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Your Tag");
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.