我认为没有 an 的唯一方法Activity
是使用AccessibilityService
有权获取当前显示的窗口列表并检查是否有类型为AccessibilityWindowInfo.TYPE_SPLIT_SCREEN_DIVIDER
.
例如,您可以使用以下方法来执行此操作:
private boolean inSplitScreenMode(List<AccessibilityWindowInfo> windows) {
for (AccessibilityWindowInfo window : windows) {
if (window.getType() == AccessibilityWindowInfo.TYPE_SPLIT_SCREEN_DIVIDER) {
return true;
}
}
return false;
}
在接收窗口状态更改的可访问性事件时检查此方法
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if ((event.getEventType() & AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) != 0) {
if (inSplitScreenMode(getWindows()) {
Log.d(TAG, "Split screen mode detected");
} else {
Log.d(TAG, "No split screen");
}
}
}