[英]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.