Android Oreo。該活動可以進入點子模式並返回到啓動器。在Android 8.0以上。有沒有什麼辦法可以知道系統中有pip模式
https://developer.android.com/guide/topics/ui/picture-in-picture.html
現在我發射。有沒有什麼辦法可以知道屏幕上顯示了一個點子窗口?
isInPictureInPictureMode()
只顯示您的應用程序pipmode,如果有其他應用程序進入pip模式,則該值將爲false。
當您退出應用程序並轉到pipmode返回到啓動器時,意圖標誌是相同的。
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT 12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_NEW_TASK 12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP 12-15 03:31:39.581 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_FOREGROUND 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS 12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT 12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_NEW_TASK 12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP 12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE 12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_FOREGROUND 12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND 12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
我檢查PIP模式源代碼和它們由WindowManagerService
控制此。我不認爲它可以通過應用程序級別訪問。
一種方法是,您可以構建一個'AccessibilityService',它可以查詢'IsInPictureInPictureMode()'的'AccessibilityWindowInfo's。請注意,Google目前(2017年底)正在追查無障礙服務功能的濫用情況,因此請謹慎。只有在找不到更好的解決方案時才使用它。 https://developer.android.com/reference/android/view/accessibility/AccessibilityWindowInfo.html#isInPictureInPictureMode() – Madushan
我在ServiceConnected中使用'List windows = getWindows();'查詢Windows。它什麼都不包含,這是正常的嗎? 此方法還需要手動打開輔助功能。 –
您需要請求某些權限才能使Accessibility Service正常工作。用戶必須批准註冊。請參閱https://developer.android.com/training/accessibility/service.html – Madushan