一、程式設明:
這是一個透過TCP/IP的協定來實作PC遙控器的軟體,而軟體本身分成Server端使用C#來撰寫
及Client端使用android來撰寫;該軟體提供三種不同的操作方法:
(1) Presenter:提供Page UP、Page Down及F5(Start to Play Power Point )三個按鍵訊息。
(2) TouchPad:模擬TouchPad的功能,有左、右鍵及滑鼠的功能。
(3) Media Device:提供多媒體按鍵,如mute、Vol+/-、Play/Paus…等七個按鍵。
Client Setting :
AVD Manager 設定 一 Android 版本設定:2.3.3 (API Level 10)
Skin:HVGA SC Card:256M LCD Density:160 Touch Screen:yes
Server Setting:
Visual Studio C# 2008 and .Net Framework 2.0
二、android程式檔案說明:
(1) KeyboardListener.java 一
自訂onTouchListener的介面, 用於監控按鍵的行為,並依照不同的按鍵透過Socket
的方式將相對應的按鍵傳送到PC的Server端進行操作。
(2) MediaDevice.java 一 初始化和載入多媒體的按鍵畫面。
(3) MouseListener.java 一
自訂onTouchListener的介面, 用於監控螢幕觸控和按鍵的行為,並依照不同的按鍵
及觸控的位移值透過Socket 的方式將相關的參數傳送到PC的Server端進行操作。
(4) PopupDialog.java 一 使用PopuWindow物件來建立快捷鍵的浮動視窗。(外部參考的資料連結)
(5) PresenterDevice.java 一 初始化和載入簡報器的按鍵畫面.
(6) RemoteControl.java 一
程式啟動時最先執行的程式,主要是讀取和判斷上次使用者連線的Server 是否可以進行連接
若可以則載入上次使用的設備類型,反之則跳入Server搜尋的畫面。
(7) SendKeyboardData.java 一 儲存及格式化目前要傳送的Keyboard訊號。
(8) SendMouseData.java 一 儲存及格式化目前要傳送的Mouse訊號。
(9) ServerList.java 一 建立ListActivity用來顯示目前取得可以進行連線的PC相關訊息。
(10) ServerListItem.java 一
擴展BaseAdapter的類別,對目前的網域進行廣播來偵測目前的可連線的PC並將相關訊息
格式化後顯示於ServerList上的列表中。
(11) TouchPad.java 一 初始化和載入Touch Pad的操作畫面。
(12) UseOnGestureListener.java 一
實作OnGestureListener介面,用來讀取使用者在螢幕上滑動的位移量,
並將該參數值透過Socket的方式傳送至PC Server端來操作電腦上的游標。
三、Android 特殊類別的使用說明:
(1) DatagramSocket 一
建立UDP Socket,用來對Server端進行UDP的傳輸連線。
(2) DatagramPacket 一
用來建立UDP Package並透過廣播模式(x.x.x.255)來取得該子域中是否有Server並取得該Server
的基本資訊及網路連線訊息。
(3) SocketAddress & InetSocketAddress 一
實體化SocketAddress抽象類別必須使用InetSocketAddress建立Socket EndPoint。
(4) Socket 一
建立一個TCP/IP協定的Socket並使用其函式connect與Server端進行連線,而當資料須要進行傳輸時則
使用getStream函式取得OutputStream類別後使用其write函式將資料寫入到其stream中,並使用flash
函式立即的將資料傳送出去。
四、C#程式檔案說明:
(1) UdpServer.cs 一
建立一個UDP的Server用來接收由手機端所發送的廣播訊息,並回傳本機的訊息到手機中。
(2) RCServer.cs 一
建立一個TCP的Server用來對每一個連線的使用者建立一個專屬的連線。
(3) ClientConnecthandle.cs 一
建立使用者專屬的執行緒用來處理使用者從手機中所傳送的操作命令。
(4) WinAPI.cs 一
載入和引用Windows API的相關函式,並建立相關的參數值。
五、C# 特殊類別的使用說明:
5-1 TcpListener 一
用來監聽TCP的連線訊息,在建立時可以做用BeginAcceptSocket函式來設定非同步的處理函式
(AsyncCallback Function),當每次執行AsyncCallback函數後必須重新使用BeginAcceptSocket
函式來重新設定,並使用EndAcceptTcpClient函式來取得TcpClient類別物件。
5-2 TcpClient 一
使用TcpClient類別中的GetStream函數來取的NetStream類別並使用其BeginRead、BeginWrite
EndRead、EndWrite等函式來接收使用者所傳送資料或是傳送資料到使用者端,並且使用Async-
Callback類別分別來建立接收和傳送資料的Callback類別,進行非同步的接收/傳送的動作。
5-3 UdpClient 一
使用UdpClient類別來建立Udp server 用來處理Client端所發出的廣播封包,由於必須接收廣播
封包 則必須設定EnableBroadcast參數為ture,並使用BegineReceive函數來接受廣播封包而回傳則使
用Send 函數。
六、執行畫面:
6-1 一 Server的執行畫面:
6-2 一 Menu Item:
(1) Server Search 一 搜尋此子網域內是否有開啟的RC Server並切換到Server List畫面。
(2) Device 一 開啟Device List 的Popup Widnows提供使用者進行Device Change.
(3) Exit 一 關閉此軟體。
6-3 一 Device List
(1) Presenter 一 模擬簡報器的功能
(2) TouchPad 一 模擬TouchPad的功能
(3) Media Device 一 模擬多媒體控制面板
6-4 一 Server List
(1) Server Search 一 搜尋此子網域內是否有開啟的RC Server,並列出該Server相關訊息。
(2) Back 一 回到控制畫面,若之前無連接到任何的Server則直接關閉此軟體。
6-4 一 Presenter Device:
(1) Page UP (2) Page Down
(3) Play - Fast move to right or left
6-5 一 Media Device:
(1) Play/Pause (2) Stop (3) Last Track (4) Next Track
(5) Mute (6) Volume UP (7) Volume Down
6-6 一 TouchPad : 左鍵、右鍵、滑鼠移動區
程式內圖片來源: (1) http://www.icojoy.com/blogs/3/2/
(2) http://www.lanrentuku.com/png/p22.html
Download : RemoteControl.rar