2011-02-01 6 views
0

Android 프레임 워크에서 기본 디스플레이 (UI)에 표시되는 내용을 복제 할 수 있습니까?UI를 외부 출력으로 리디렉션/복제

많은 사람들에게 내 앱을 보여줄 필요가있는 상황이 있으며, 화면 내용을 외부 모니터/TV에 복제 할 수 있다면 더 쉽게 할 수 있습니다. 나는 HDMI 포트를 사용하는 아이디어에 결혼하지 않았으므로 필요하다면 Wi-Fi 나 블루투스 또는 USB을 통해 행복하게 할 수 있습니다. 내가 찾고있는 것은 두 번째 모니터가 연결되었을 때 Windows가 기본적으로하는 것과 비슷한 것을 할 수 있는지 확인하는 것입니다.

저는 개발자의 문서를 읽었으며 이렇게 할 수있는 것을 찾지 못했습니다.하지만 뭔가를 놓친 것은 처음이 아닙니다. 특히 HTC Evo으로이 작업을 수행해야합니다.

답변

4

옵션은 주로 선택한 장치에 따라 제한됩니다. HTC EVO의 HDMI 포트는 내장 된 갤러리 응용 프로그램 (비디오 및 스틸 사진)을 통해서만 응용 프로그램을 재생합니다.

[email protected]과 같은 "소프트웨어 프로젝터"를 사용해야합니다. 프로젝터에 연결된 Android SDK가 장착 된 노트북에 EVO를 연결하십시오. Droid @ Screen은 노트북에 EVO의 화면을 표시합니다 (그 곳에서 프로젝터에 표시됨). 그러나 Droid @ Screen이 활용하는 SDK 도구의 한계로 인해 프레임 속도는 약 5-6fps로 제한됩니다.

또는 특수 케이블을 통해 메인 디스플레이에있는 TV의 복합 출력을 지원하는 HTC Droid Incredible을 사용하십시오. 삼성 갤럭시 탭은 또한 나의 실험에 기초하여 SurfaceView을 포함하지 않는 모든 것을 지원합니다. 삼성 갤럭시 S의 일부 버전은 적어도 어느 정도는이를 지원합니다.

또는 웹캠을 사용하십시오.

또는 ELMO (기본적으로 문서 또는 장치 투영을 위해 설계된 웹캠)를 사용하십시오.

+0

감사합니다 : 예를 들어

, 나는 아래 OMAP3 플랫폼에서 안드로이드 진저 브레드를위한 복제 JNI 기능을 가진 UiCloningService.cpp 붙어있다!내가 무엇을 찾고 있었는지 확실히! – Kingsolmn

+0

응용 프로그램에서이 동작을 차단할 수 있습니까? TV Out이나 이와 비슷한 케이블을 통해 TV에 비디오와 같은 내 응용 프로그램 콘텐츠를 표시하고 싶지 않습니다. 이것을 할 수있는 방법이 있습니까? http://stackoverflow.com/questions/5561232/block-tv-out-for-my-application – DeRagan

1

디스플레이를 복제하기 위해 JNI 메소드를 노출하는 jni에 UiCloningService를 작성할 수 있습니다. 일반적으로 안드로이드는 리눅스를 기반으로 리눅스 장치 버퍼 기술을 사용하여 디스플레이 장치를 /dev/fb* 또는 /dev/graphics/fb* 아래의 dev 노드로 표시합니다. 여기에서 '*'은 연결된 디스플레이 수에 따라 0,1,2,...이 될 수 있습니다.

기기에 HDMI 포트가 이미있는 경우 /dev/graphics/fb1을 통해 노출되며 fb0이 기본 LCD 디스플레이로 간주됩니다.

복제 서비스에서 sysfs 아래의 HDMI 포트 용으로 생성 된 장치 속성 파일에 쓸 수 있습니다. 장치의 디스플레이 드라이버가 이러한 기능을 구현 한 경우 (대부분 가질 수있는 기능) 외부 HDMI 디스플레이), 드라이버의 이러한 기능은 보조 디스플레이에 보조 디스플레이를 복제하는 기능을 담당합니다.

하지만 JNI에 Ui 복제 서비스를 작성해야합니다 (일반적으로 장치 제조업체는 특정 장치 개발을 위해 Android SDK를 제공하는 경우 이러한 방법을 제공합니다). . 팁에 대한

UiCloningService.cpp

관련 문제