마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 pdf 또는 사진을 실시간으로 같이 보는 방법에 대해서 질문하려합니다.

0 추천
클라이언트1에서 pdf를 열면 서버를 통하여 클라이언트2는 클라이언트1이 오픈한 pdf화면을 보게 하고싶습니다.

또한, pdf에 필기를 하면 그것또한 서버를 통해서 다른 클라이언트에 보이도록 하고싶습니다...

 

어떠한종류의 공부가 필요할까요...?ㅠㅠ pdf파일을 이미지로 처리해서 거기다가 해야되나요..? 고수님들의 답변을 기다립니다..
산설 님이 2016년 9월 9일 질문
StackOverflow에서 검색을 해봤습니다.

If I am not understanding wrong, you want remote access to your desktop computer from an Android phone?

Ok, you need to do the following:

Write a simple server application listening on a local port in your desktop. This application understands some commands which you pre-define to represent all kinds of actions you perform on a desktop computer, and when it receives a command from clients, it executes the command accordingly, such as moving the mouse cursor, right click, etc. Here you will use java.awt.Robot.
Write an android application which connects to the server application, send commands to it, you can do all this using Java sockets.
For making the screen like a monitor and updating the display regularly, you need to keep a long-live connection from the client to the server, and the screen will take screenshots of the current desktop screen at a pre-defined interval(we call it fps, or Frame Per Second) and stream the frames to the client, the client will take that raw data to build a Bitmap, and draw that bitmap on a canvas, or you can simply build a Drawable from the bitmap, and set the Drawable image to a ImageView. Here you will also use java.awt.Robot to take screenshots in the server application.

해석은 님의 영어실력에 맡길게요.

1개의 답변

0 추천
너무 범위가 광범위해서 일일이 모든 방법을 다 조언 해드리기는 어렵고

위 내용으로 보았을때에는 어떤 방법을 쓰든 실시간 통신이 기반이 되어야 겠네요.

 

일단 저라면 이렇게 할것 같습니다.

pdf문서파일 공유 개념이 아닌 화면 공유 개념으로 가야할 것 같습니다. 문서 파일 공유 개념으로 간다면 1차적으로 pdf파일에 그리기 기능을 추가한 pdf뷰어 구현부터 해야하기 때문에 작업량이 엄청 많아지기 때문이지요. 어떠한 시점에 화면위에 그리기가 가능한 레이아웃으로 덮도록 하여 화면 위에 그림그리기가 가능하도록 하는 기능도 있어야지요. 이부분은 WindowManager를 사용하면 가능할 것으로 보입니다. 통신하여 화면을 동기화 시키는 시점은 최초에 현재 화면을 공유하는 시점과 그리기를 하다가 화면에서 손을 떼는 시점으로 하겠습니다. pdf 문서에 그리기라면 단순 indicator 역할을 위한것이라고 생각이 됩니다. 실시간으로 어떤 방향으로 어떤속도로 그리는지까지 보여줄 필요는 없다고 생각합니다. 통신이 오버헤드가 크기 때문에 최대한 줄이기 위한 목적도 있습니다. 여기서 통신 오버헤드를 줄이기 위한 목적으로 화면 전체가 아니라 전체를 특정 갯수로 조각화 하여 각각의 조각이 바뀌었을때 바뀐 조각만 동기화 하는것도 방법일 수 있겠네요. 그렇지만 조각화 하면서 바뀐 부분을 찾는 작업도 오버헤드가 될 수가 있으니 적절하게 비교하여 최선의 방법을 찾아야 겠지요. 일반적으로 영상 스트리밍은 UDP를 사용한다고 알고 있습니다.

 

이거는 어디까지나 제 기준으로 생각한 부분이고 정답은 아닙니다. 그냥 딱 질문자님이 하신 질문 보자마자 생각나는데로 끄적거려 봤네요. 도움이 되셨을지 모르겠습니다.
Development Guy (70,570 포인트) 님이 2016년 9월 9일 답변
...