컴퓨터과학과2007311034임재욱
Smart Mouse
1 개발 목적 및 개발 환경2 서버 구현 (C#)3 클라이언트 구현 (Android, Java)4 시연
SmartMouse
SmartMouse
1 개발 목적 및 개발 환경
4
개발 목적 및 개발 환경01
1 개발 목적
내용• 필요성 PPT 발표를 할 때 한자리에 서서 발표를 하거나 다른 사람이 PC 를 조작 혹은 별도의
리모컨을 이용하게 된다 .거의 모든 사람들이 스마트폰을 사용하는 요즘 간단한 프로그램과 어플리케이션 실행으로 스마트폰을 마우스처럼 사용할 수 있도록 구현해 보았다 .
• 구현 내용 안드로이드 스마트폰의 터치센서 , 자이로 센서 , 가속 센서 , 중력센서 등을 이용하여
마우스를 제어할 수 있도록 구현하였다 .연결의 경우 WiFi 혹은 인터넷을 통하여 구현하였다 .
5
개발 목적 및 개발 환경01
2 개발 환경
내용• Windows8 x64• VisualStudio 2012• .NET Framework 2.0• ADT (Android Developer Tools) v21.1.0• 안드로이드 SDK 4.2 API LEVEL : 17• 옵티머스 G 4.1.2• TCP/IP 100M 급 Internet (WiFi 환경 )
• 개발 언어 C#, Android(Java, XML)
SmartMouse
2 서버 구현 (C#)
7
02 서버 구현 (C#)
처음 돌아가는 함수인 Wait-ingSocket() 에서 시작된 BeginAccept 가 Accept 되면 EndAccept 가 진행되고BeginReceive 가 시작됨
AcceptReceiveCallback 에서 시작된 BeginReceive 가 메시지를받게되면 EndReceive 가 진행되고MouseEvent 를 처리 후 다시BeginReceive 가 시작됨
8
02 서버 구현 (C#)
소스 코드
80 public void AcceptReceiveCallback(IAsyncResult ar)81 {82 Server = (Socket)ar.AsyncState;83 try84 {85 Client = Server.EndAccept(ar);86 ad = new clientAcceptDelegate(getClientIP);87 this.Invoke(ad);88 Client.BeginReceive(getByte, 0, getByte.Length, SocketFlags.None, newAsyncCallback(CallBack_ReceiveMsg), Client);89 }90 catch (ObjectDisposedException e)91 {92 //MessageBox.Show(e.ToString());93 }94 catch (SocketException se)95 {96 //MessageBox.Show(se.ToString());97 }98 catch (Exception e)99 {100 //MessageBox.Show(e.ToString());101 }102 }
104 public void CallBack_ReceiveMsg(IAsyncResult ar)105 {106 int length;107 getString = null;108109 Client = (Socket)ar.AsyncState;110111 try112 {113 length = Client.EndReceive(ar);114 if (length > 0)115 {116 getString = Encoding.UTF8.GetString(getByte, 0, length);117 if (getString != String.Empty)118 {119 // 폰에서 전송한 내용 처리 시작 ( 실제 마우스 입력 되도록 )120 ControlMouse();121 }122 Client.BeginReceive(getByte, 0, getByte.Length, SocketFlags.None, newAsyncCallback(CallBack_ReceiveMsg), Client);123 }124 else125 {126 if (Server != null)127 Server.Close();128 if (Client != null)129 Client.Close();130 ad = new clientAcceptDelegate(initClientIP);131 this.Invoke(ad);132 WaitingSocket();133 }134 }135 catch (ObjectDisposedException obje)136 {137 }138 catch (SocketException se)139 {140 }141 catch (Exception e)142 {143 }144 }
9
02 서버 구현 (C#)
소스 코드
146 void WaitingSocket()147 {148 IPAddress serverIP = IPAddress.Any;149 IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);150151152 try153 {154 Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);155 Server.Bind(serverEndPoint);156 Server.Listen(10);157158 Server.BeginAccept(new AsyncCallback(AcceptReceiveCallback), Server); 159 }160 catch (SocketException socketEx)161 {162 // MessageBox.Show(" 네트워크 에러입니다 .₩n" + socketEx.ToString());163 }164 catch (Exception commonEx)165 {166 // MessageBox.Show(" 시스템 에러입니다 .₩n" + commonEx.ToString());167 }168169 }
10
02 서버 구현 (C#)
실행 화면
어플리케이션 실행 전 어플리케이션 실행 후
SmartMouse
3 클라이언트 구현 (Android, Java)
12
03
안드로이드 구동 원리
클라이언트 구현
Process
Application
Activity BroadCastReceiver
ContentProvider Service
13
03 클라이언트 구현
14
03
실행 화면
클라이언트 구현
로딩 화면 연결 뒤 화면연결 전 화면
SmartMouse
4 시연
감사합니다