簡體   English   中英

從服務Android檢測全屏

[英]Detect full screen from service Android

我需要從服務中檢測系統ui可見性(全屏)。 我嘗試創建一個自定義視圖並添加setOnSystemUiVisibilityChangeListener但是它從未被調用。

public void setListener() {
    setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {
        @Override
        public void onSystemUiVisibilityChange(int i) {
            Log.e(TAG, "onSystemUiVisibilityChange =" + i);
        }
    });
}

我跑setListener從我服務的onStartCommand 怎么了 還是有其他方法可以檢測系統ui何時可見? 謝謝你的幫助。

你寫了:

...來自服務 我嘗試創建自定義視圖...

Service中的自定義View未添加到繪制的視圖層次結構中。 這就是為什么不調用該方法的原因。 在活動中,您可以執行mRootView.add(mCustomView) ,然后檢查,但由於無法引用可見的布局,因此無法在Service

對於(hacky)解決方案,請參見以下答案: 接收隱藏的狀態欄/在服務上輸入全屏活動事件

如果在Service運行時可見Activity ,則有更多選項。 您可以將Service綁定到Activity ,並將更新從Activity內的setOnSystemUiVisibility()發送到Service 請參閱: http : //developer.android.com/guide/components/bound-services.html

或只是在UI狀態更改時從“ Activity發出廣播, Service監聽該廣播。

您可以添加一個視圖(具有完整高度),並使用OnGlobalLayoutListener來更改列表器的布局,在onGlobalLayout中檢查view.getHeight,屏幕的Y值上限為Y。

if (mMaxY == helperWnd.getHeight()) {
    //full screen
} else {
//none full screen
}

希望對你有幫助

暫無
暫無

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

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