2013.07.18 19:22


 

프로젝트 소개

 

2008년 9월 말 구글이 안드로이드 SDK 1.0을 발표 했다. 안드로이드가 발표 되기전 아이폰에 관심이 갔었지만

오픈소스 모바일 플랫폼이리는 점과 리눅스 커널 기반으로 만들어진 점이 매력적 이었다.

그리고 2학기가 끝난 후 WOC라는 오픈 소스 프로젝트를 진행하는 것을 알게 되어서 참가하게 되었다.

처음에 '안드로이드 컨텐츠 브라우저'에 지원 했지만... 탈락하고...ㅋㅋㅋ

기간이 좀 남아서 그냥 있기 좀 뭐 해서 '안드로이드 PC 원격제어'라는 주제로 학생 프로젝트를 신청했는데,

운 좋게 붙어서 지금의 프로젝트를 진행 할 수 있었다.

 

프로젝트 개발자

구본헌 : darkgs@hanmail.net

신진호 : superstarsjh@nate.com

 

프로젝트 이름 : 안드로이드 PC 원격 제어

프로젝트 내용 : 안드로이드 폰에서 윈도우즈가 설치된 PC를 원격 제어한다.

    안드로이드의 제한된 입/출력 장치를 극복하여 PC를 편안하게 제어할 수 있는 프로그램을 개발하자. 

 


 목표했던 SPEC

사용자 인증 : 안드로이드에서 PC로 접속할때 아이디와 비밀번호로 사용자 인증 (구현 O)

윈도우즈 마우스와 키보드 입력 : 안드로이드에서 PC로 마우스, 키보드 제어 (구현 X)

부드러운 실시간 화면전송 : PC 화면을 안드로이드로 부드럽게 전송 (구현 X)

파일 전송 : PC에 저장된 파일을 안드로이드 SD카드로 전송 (구현 O)

PC 파일 탐색기 : 윈도우에 맞지 않는 파일 탐색의 불편함을 극복하기 위해 안드로이드UI에 맞는 파일 탐색기 제공 (구현 O)

Wake On Lan : Mac-Address를 이용하여 안드로이드에서 PC 켜기/끄기 (구현 X)

 

주 차별 진행 상황

 

 02/01 첫 번째 주

 프로젝트 목표를 정하고, 프로그램의 추상적인 그림을 구상

 구글 코드에 "androidpcremotecontrol"프로젝트를 개설  http://code.google.com/p/androidpcremotecontrol/

 (보고서, 프로그램 버전 관리)

 안드로이드와 원격제어에 관한 자료를 광범위하게 수집

 

 처음 목표인 이미지 전송을 위한 프로그램을 만들기 위해 안드로이드와 WIN32API에 대해 학습

 

 02/08 두 번째 주

 원격제어 암호화 방식을 ARIA암호 알고리즘을 이용기로 결정, 소스 코드를 분석

 안드로이드와 PC 이미지 전송하는 프로그램을 만듬

 

 02/15 세 번째 주

 두 번째 목표인 안드로이드에서 PC로 마우스와 키보드 메세지 전달을 위해

 윈도우즈 후킹에 대해서 자료 조사 및 학습

 

 안드로이드의 제한된 화면 크기와 입력 장치로 인해, 어떻게 UI를 구성 할 것인가 고민

 안드로이드의 구조와 API를 학습

 

 02/22 네 번째 주

 대부분의 원격제어 프로그램에서 사용하는 화면을 보여주는 방법을 버리고 파일 브라우저에서 파일을 선택 후 화면을 보여주는 방법으로 변경

 ARIA로 암호화 하여 PC에 저장하는 방식 대신, (파일로 저장 할 경우 보안적? 문제)

 구글에서 제공하는 Client Login을 이용하여 사용자 인증하는 벙법을 선택, 자료를 수집하고 학습 및 구현

 

 03/01 다섯 번째 주

 스프링노트에 프로젝트 페이지 개설 http://superstarsjh.springnote.com (문서 관리를 위해. 잘 실천 되지는 않음)

 안드로이드에서 제공하는 DB인 SQLite와 구글의 Client Login을 이용하여 로그인 모듈을 완성

 수정된 계획에 따라 윈도우즈후킹 대신 다른 몇 가지의 WIN32API를 이용하여 윈도우를 컨트롤 하기로 결정

 

 03/08 여섯 번째 주

 PC서버 프로그램 파일 검색 및 전송 추가

 PC서버 프로그램의 윈도우를 없애고 Tray Icon으로 변경

 

 03/15 일곱 번째 주

 PC화면을 볼 수 있는 뷰어, 파일을 볼 수 있는 브라우저 개발

 SD카드 저장 기능 추가

 안드로이드와 PC간의 통신 및 모듈 통합, 테스트, 버그 핸들링 진행

 WOC 최종 제출물 문서 작업

 

 

 

 Versioning 계획

      1. 동영상 스트리밍 화면 전송 방식

현재는 화면을 스크린 캡쳐를 이용, 이미지를 JPG로 압축하여 전송하는 방식이라 약간 끊긴다.

그래서 화면을 동영상 스트리밍 방식으로 화면을 전송하는 기능으로 발전 시키고 싶다.

2. 키보드, 마우스 입력 제어

현재도 이 기능을 구현하는데 있어서 별 어려움이 없지만, 프로젝트 도중 변경된 UI와 현재 우리에게 DevPhone이 없어서 편한 UI를 개발하기 어렵다는 점 등

여러가지 이유로 빠진 기능이지만 다음에 넣어 보고 싶다.

3. WakeOnLan

프로젝트 초반 원격 제어에 관한 자료를 모으던중 원격으로 컴퓨터를 켤수 있는 기능인 WakeOnLan에 관한 자료를 보았다.

이 기능은 컴퓨터 랜카드에서 제공하는 기능인데, 모든 랜카드가 제공하지는 않지만, Intel과 Realtek에서 나오는 대부분의 랜카드를 지원하기때문에 이 기능을 추가한다면 항상 컴퓨터를 켜놓고 있지 않아도 되고, 여러모로 편리한 기능이 될 것 같다.

 

 

 개발 관련 문서

개발 하면서 참고하거나 사용했던 문서나 자료가 있는 곳

 

안드로이드 관련 문서(JAVA)

안드로이드 기본 튜토리얼 및 정보

http://www.mobileplace.co.kr/2389

http://openproject.tistory.com/category/Android%20Lecture

http://androidhuman.tistory.com/category/안드로이드/안드로이드%20입문

http://whyandroid.com/android/tutorial.html

http://www.kandroid.org/

안드로이드 SQLite 

사용법 및 예제

http://mnd777.egloos.com/1057423

http://www.anddev.org/working_with_the_sqlite-database_-_cursors-t319.html

안드로이드 소켓 통신

사용법 및 예제

http://hyena0.tistory.com/173?1815dd48
http://humaneer.net/71

http://www.wiseant.net/tc/wiseant/384

구글 Client Login

PC에서의 Client Login

http://sites.google.com/site/oauthgoog/UXFedLogin/desktopapps

http://code.google.com/intl/ko/apis/gdata/auth.html

안드로이드에서의 Client Login

http://unlocking-android.googlecode.com/svn/chapter6/trunk/NetworkExplorer/src/com/msi/manning/network/

 

PC서버 프로그램 관련 문서 (C++ WIN32_API)

자바와 C++간 통신

http://program.egloos.com/626437

http://www.okjsp.pe.kr/seq/101420

http://www.javaservice.com/~java/bbs/read.cgi?b=qna2&c=r_p&n=1192255046

http://www.rohitab.com/discuss/index.php?showtopic=31171

GDI+

http://www.winapi.co.kr/project/library/gdiplus/gdiplus.htm

윈도우 파일 검색

http://www.winapi.co.kr/clec/cpp2/16-2-3.htm

윈도우 제어

EnumWindow 함수

http://www.winapi.co.kr/ApiBoard/content.php?table=tblqa&pk=120

마우스 포인터에 윈도우 핸들 얻기
http://cpueblo.com/programming/api/contents/178.html

바탕화면에 그림그리기
http://jinsu56.springnote.com/pages/401824.xhtml

실행중인 윈도우 핸들 얻기
http://web.lge.cn:8000/system/2290

스크롤바 제어
http://www.winapi.co.kr/reference/Message/WM_HSCROLL.htm

다른 윈도우 제어
http://user.chollian.net/~allopen/lec12.htm

FindWindowEX 함수

http://www.excellove.com/board/bbs/view.php?id=vba&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=165

윈도우 핸들 구하기

http://cysnim12.tistory.com/129

WM_CLOSE, WM_DESTROY, WM_QUIT 차이점
http://love0710.egloos.com/1118936

Tray icon 등록
http://heestory.kr/81
http://swain.egloos.com/2241973

shell excute
http://blog.theple.com/joeinfo/folder/10.html?uid=147

윈도우 TOPMOST(항상 위)

http://www.winapi.co.kr/reference/Function/SetWindowPos.htm

 

신고

'Project > Remote' 카테고리의 다른 글

MyRemote Ver 1.41  (0) 2014.06.08
MyRemote_Install ver1.4  (0) 2014.05.13
RemoteOne  (0) 2013.07.27
Remote One 참고자료  (0) 2013.07.18
원격 데스크톱의 속도와 구동 원리에 대한 간단한 정보  (0) 2013.07.16
MyRemote_Install ver1.3  (0) 2013.02.22


Posted by injunech

티스토리 툴바