2017-03-23 8 views
2

Android-O의 새로운 ActivityOptions setLaunchDisplayId (int launchDisplayId) 기능은 활동 의도를 시작하려고 할 때 항상 내 앱을 중단시키는 것처럼 보입니다.보조 디스플레이에서 Android-O 시작

내 앱에서 활동을 시작할 때와 다른 앱 (예 : Chrome Canary)을 실행하려고 할 때도 마찬가지입니다.

이 새로운 API의와 일반적인 문제의 경우

사람이 알고 있나요 아니면 내가 뭔가를 놓친 거지 :

내 코드의 작은 조각은 다음과 같습니다 :

options.setLaunchDisplayId(1); startActivity(intent, options);

참고 I을 '두 번째 화면 시뮬레이트'를 사용하여 테스트했습니다 (중요한 경우 @ 1080p).

UPDATE는 는 내가 ADB 명령 adb shell start com.chrome.canary --display 1, 을 시도하고 난 메시지를 얻을 :

시작 : 루트에게 나는 새를 통해 두 번째 화면에 연결 한

+0

'1'이 올바른 숫자라고 어떻게 결정 했습니까? 시뮬레이션 된 두 번째 화면을 사용할 때 두 번째 화면의 ID는'2' AFAICT입니다. 나는 크래시를하지 않지만 그 디스플레이에서 활동을 시작하지는 않습니다. BTW,'adb shell am start'에'am'을 잊어 버렸습니다. – CommonsWare

+0

프리젠 테이션 디스플레이 ID를 가져 와서 새 API로 외부 디스플레이에 연결했습니다. 그러나 나는 아직도 두 번째 화면과 상호 작용하는 방법을 찾기 위해 고심하고있다. 이전 API를 사용하면 자신의 액티비티 만 사용할 수 있었기 때문에 휴대 전화의 입력을 두 번째 화면 UI로 전달할 수 있었지만 새로운 API로 완료하려고 시도 할 때 어려움을 겪었습니다. 이제 다른 앱과 상호 작용하려고합니다. . – Smiler

+0

나를 위해 작동하지 않는 단계는 다음과 같습니다 1.hdmi 케이블을 모바일에 연결하십시오 (USB를 사용할 수 있는지 확실하지 않음). 2. 루트로 장치를 만들고 다음 명령을 보내십시오 (예상되는 앱이 설치됨) 보조 hdmi 케이블 (다중 디스플레이 기능)에서 실행 중입니다. 연결된 hdmi 케이블 adb 셸 am start com.Chrome.Canary --display 1 다른 방법이나 명령을 사용하여 작동하게 하시겠습니까? – prathima

답변

2

해야합니다 API는 아래 코드와 같지만 아직 상호 작용할 방법이 없습니다.

Bundle bdl; 
      MediaRouter mediaRouter = (MediaRouter) mContext.getSystemService(Context.MEDIA_ROUTER_SERVICE); 
      MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); 
      if (route != null) { 
       Display presentationDisplay = route.getPresentationDisplay(); 
       bdl = ActivityOptions.makeClipRevealAnimation(mView, left, top, width, height).setLaunchBounds(rect).setLaunchDisplayId(presentationDisplay.getDisplayId()).toBundle(); 
       Bundle optsBundle = true ? bdl : null; 
       Intent intent = new Intent(mContext, SecondaryActivity.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       mContext.startActivity(intent, optsBundle); 
      } 
+0

"그것과 상호 작용할 방법이 없어"라는 것은 무엇을 의미합니까? – CommonsWare

+0

내 장치에 키보드 또는 마우스를 연결 한 경우 장치 자체의 디스플레이와 만 상호 작용할 때 디스플레이 2에서 실행중인 응용 프로그램과 상호 작용할 수있는 입력 장치를 전달할 수 없습니다.이 문제를 극복 할 수있는 방법이 있다면 여전히 찾고 있습니다. 장벽을 제거하고 내 외부 디스플레이에서 완전히 작동하는 Android 앱을 사용할 수 있습니다. – Smiler

+0

[문서화 된 제한 사항] (https://developer.android.com/preview/api-overview.html#mds) : "앱에 여러 개의 디스플레이가 있어도 한 번에 하나의 활동 만 재개 된 상태가 될 수 있습니다. 초점이있는 활동은 재개 된 상태이며 다른 모든 보이는 활동은 일시 중지되었지만 중지되지는 않았습니다. " 이것은 일반 멀티 창과 크게 다르지 않습니다. 필자의 추측에 의하면, picture-in-picture와 유사하게, 사용자 입력이 필요없는 외부 디스플레이에 뭔가를 넣는 것이 아이디어입니다. – CommonsWare