簡體   English   中英

是否有可能檢測到任何應用程序何時在Android中全屏顯示?

[英]is it possible to detect when any application is in full screen in android?

我想知道是否有某種方式使用視圖或某些東西讓后台服務檢測前景應用程序是否處於全屏狀態。 表示狀態欄是隱藏還是不隱藏。

我在想也許使用常量字符串來檢測視圖是否顯示? 但是我不確定。 如果需要,可以選擇“根”。

多謝你們!!

如何使用廣播接收器或類似的東西。 那將是理想的,但是對於全屏請求沒有這樣的廣播。

這是我所做的。

我創建了一個不可見的疊加層,這個不可見的疊加層的大小為0 x 0 :)

然后,我使用View.getLocationOnScreen(int[]);

這將返回帶有x和y坐標值的int數組。 然后,我測試這些坐標(僅真正專注於y值)是否等於0,然后當前可見活動處於全屏狀態(因為它位於屏幕上的最高區域),如果狀態欄顯示出來,則該視圖將以(我的設備上為50像素)返回,這意味着該視圖距離屏幕邊緣頂部50像素。

我將所有這些放置在具有計時器的服務中,當計時器到期時,它將獲取位置,運行測試並執行我需要做的事情。 屏幕關閉后,計時器將被取消。 屏幕顯示時,計時器重新啟動。

我檢查了它使用了多少CPU,在System Tuner中顯示為0.0%。

您是否嘗試過getWindow().getAttributes().flags

public static boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0;
public static boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0;
public static boolean actionbarVisible = getActionBar().isShowing();

參考:

if( MyActivity.fullScreen){
      // full screen
}
else{
     // not full screen
}

我喜歡Seth的想法,所以編寫了代碼段:

/**
 * Check if fullscreen is activated by a position of a top left View
 * @param topLeftView View which position will be compared with 0,0
 * @return
 */
public static boolean isFullscreen(View topLeftView) {
    int location[] = new int[2];
    topLeftView.getLocationOnScreen(location);
    return location[0] == 0 && location[1] == 0;
}

暫無
暫無

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

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