Multi Window에서 Picture-in-picture를 사용하는 방법을 찾은 메모

개요



조금 자세한 것은 두어 Picture in picture를 이용할 수 있는 것을 알았으므로, 메모로서 써 둡니다.
뭔가 잘못되면 지적 부탁드립니다.
Picture-in-picture는 항상 위에 하나의 앱을 표시할 수 있습니다.
(//항상 Pokemon GO를 시작하고 싶다는 불순한 동기로 조사하지 않습니다.)

디버그용의 기능이라고 생각되기 때문에 자기 책임으로 부탁합니다.

절차



force_resizable_activities를 true로 설정



우선 모든 Activity를 resizeable로 하는 이하의 조작을 합니다.
adb shell settings put global force_resizable_activities 1

이렇게 한 후 기기를 다시 시작합니다.

이렇게하면 ActivityManagerService에서 PictureInPicture가 활성화됩니다.
mSupportsPictureInPicture = supportsPictureInPicture || forceResizable;

Activity Stack의 ID 확인



adb shell am stack list를 입력하고
Picture-in-picture로 시작하려는 앱이 있는 스택 ID를 기록해 둡니다. (1 등)
$ adb shell am stack list
Stack id=1 bounds=[0,0][1080,1920] displayId=0 userId=0
  taskId=3236: com.android.settings/com.android.settings.Settings bounds=[0,0][1080,1920] userId=0 visible=true topActivity=ComponentInfo{com.nianticlabs.pokemongo/com.unity3d.player.UnityPlayerNativeActivity}
  taskId=3235: com.nianticlabs.pokemongo/com.unity3d.player.UnityPlayerNativeActivity bounds=[0,0][1080,1920] userId=0 visible=true topActivity=ComponentInfo{com.nianticlabs.pokemongo/com.unity3d.player.UnityPlayerNativeActivity}

Stack id=0 bounds=[0,0][1080,1920] displayId=0 userId=0
  taskId=3234: com.google.android.googlequicksearchbox/com.google.android.launcher.GEL bounds=[0,0][1080,1920] userId=0 visible=false topActivity=ComponentInfo{com.android.systemui/com.android.systemui.recents.RecentsActivity}
  taskId=3237: com.android.systemui/com.android.systemui.recents.RecentsActivity bounds=[0,0][1080,1920] userId=0 visible=false topActivity=ComponentInfo{com.android.systemui/com.android.systemui.recents.RecentsActivity}

Picture-in-picture하기



1이 stack id로 그 다음에 LEFT, TOP, RIGHT, BOTTOM과 따릅니다.
adb shell am stack move-top-activity-to-pinned-stack 1 0 0 400 800

이것으로 이런 느낌이 듭니다.


그건 그렇고, 왜 move-top-activity-to-pinned-stack에서 Picture in picture인지 확실하지 않지만 enterPictureInPictureMode () 메서드 내에서 moveActivityToPinnedStackLocked ()를 호출하기 때문에 내부적으로 그렇게 부를 수 있습니다. 응.
htps : // 기주 b. 코 m / 안 d 로이 d / p t t rm_f 라메를 rks_ 바세 / b b /안 d로이 d/세 rゔぇr/아 m/아c ゔぃty 마나게 r세 rゔぃ세. 그럼 # L7536

해제는 adb shell am stack remove 스택 id로 할 수 있어야 합니다.



여기만 메모하면 OK일지도

특정 앱 (pokemongo라는 패키지 포함)을 Picture-in-picture로 표시
adb shell am stack list|awk '/Stack id.*/{laststack = substr($2,4)} /.*pokemongo.*/{print laststack;exit}'|xargs -I^ adb shell am stack move-top-activity-to-pinned-stack \^ 0 0 100 150
한 앱의 Picture-in-picture 해제
adb shell am stack list|awk '/Stack id.*/{laststack = substr($2,4)} /.*pokemongo.*/{print laststack;exit}'|xargs -I^ adb shell am stack remove \^

좋은 웹페이지 즐겨찾기