簡體   English   中英

是否可以檢測到用戶何時打開屏幕(Android)?

[英]Is it possible to detect when the screen turns on by the user (Android)?

我發現兩年前的帖子說有人無法做到。 我還發現可以使用ACTION_USER_PRESENT來檢測用戶何時解鎖屏幕,但是可以檢測到用戶何時打開屏幕(通過任何操作)?

編輯:我想知道用戶何時按下任何按鈕或執行其他可以打開屏幕的操作

系統將廣播Intent.ACTION_SCREEN_ON ,您可以在屏幕打開時使用它捕獲事件。

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // your code here

        }
    }
}

請注意,您不能自己廣播此事件。

我開始寫這篇文章作為評論,但結果太大了。

我也找不到任何東西。 不能在服務上使用鍵偵聽器,並且顯然不能為電源按鈕( 僅用於媒體按鈕)注冊廣播接收器。 也許您可以在屏幕上的廣播接收器上執行此操作,並檢查當前活動是什么? 像這樣 ,例如:

ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+"   Package Name :  "+ componentInfo.getPackageName());

如果您可以檢測到具有焦點的活動是鎖定屏幕,則增加了打開手機的用戶的機會。 廣播接收器上的另一種方法可能是檢測電話是否已鎖定,但是我想無論當前顯示的是哪種活動,通常都是這種情況:

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = km.inKeyguardRestrictedInputMode();

希望這可以有所幫助。 這是一個有趣的問題。

您在找這個嗎?

@Override
public void onConfigurationChanged (Configuration newConfig)

並將其放置在清單中,以便您需要定向通知的每個活動:

android:configChanges="orientation" >

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM