《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Android智能終端的遠程控制系統(tǒng)
基于Android智能終端的遠程控制系統(tǒng)
來源:電子技術應用2012年第8期
江燕良
西南交通大學 信息科學與技術學院, 四川 成都610031
摘要: 提出了基于Android 手機的遠程控制系統(tǒng)設計方案,該系統(tǒng)基于Openmobster開源手機云計算平臺。介紹了整個系統(tǒng)結(jié)構框架,詳細分析了各個模塊的具體實現(xiàn)。通過應用實例在設備上進行了測試,實現(xiàn)了云服務器端對Android智能手機終端的訪問和遠程控制。
中圖分類號: TP393
文獻標識碼: A
文章編號: 0258-7998(2012)08-0129-04
Remote control system based on Android intelligent terminal
Jiang Yanliang
School of Information Science & Technology, Southwest Jiao tong University, Chengdu 610031, China
Abstract: Remote control system based on Android mobile phone which is based on open source mobile phone cloud computing platform, Openmobster proposed. We introduce the framework of the overall system structure and then have a detailed analysis of specific implementation for each module. The cloud server-side access and remote control to the Android smart phone have been achieved by the development of specific instance and fully test on equipment.
Key words : cloud computing; Openmobster; android;remote control

    隨著移動互聯(lián)網(wǎng)的快速發(fā)展,云計算在移動平臺的應用引發(fā)了一場變革。在移動領域的云計算(移動云計算)是利用云計算技術解決移動終端的存儲和數(shù)據(jù)處理等問題,幫助用戶擺脫硬件設備、存儲設備、應用程序等條件的限制,實現(xiàn)將移動終端應用的“計算”從終端轉(zhuǎn)移到服務器端, 從而弱化了對移動終端設備的處理要求[1]。Openmobster是一個開源的集成了手機應用的云服務平臺,具有開發(fā)手機同步應用、開發(fā)推送應用、開發(fā)離線手機應用、應用開發(fā)框架、移動云服務的服務器端開發(fā)框架和管理控制臺等特征。其目的是讓應用開發(fā)人員省掉開發(fā)底層同步及消息通知中間件的工作,只需將注意力集中于更好地實現(xiàn)業(yè)務需求上。

    本文介紹了一種基于Android智能終端的遠程控制系統(tǒng),在系統(tǒng)中Android手機利用周圍的無線網(wǎng)絡資源,與云端服務器自發(fā)交互,如遠程下發(fā)通知、遠程設置密碼、遠程GPS定位、遠程數(shù)據(jù)同步等操作。通過該系統(tǒng)使云計算真正“落地”,實實在在地為手機提供服務。
1 Openmobster平臺的概述
1.1 Openmobster對應用的支持

    (1)數(shù)據(jù)同步
    無需任何特定的設備間的同步程序,即可支持云端和終端間數(shù)據(jù)的自動同步。允許應用工作于在線或離線模式,一旦檢測到終端數(shù)據(jù)狀態(tài)變更,立即發(fā)起對云端的自動數(shù)據(jù)同步。
    (2)實時推送通知消息
    云端的狀態(tài)變更可以通過實時消息推送通知到終端,該推送機制使用基于網(wǎng)絡Socket的方式,而不是發(fā)送短消息或電郵的方式。
    (3)移動遠程調(diào)用(Mobile RPC)
    提供了一種訪問云端服務的方式,無需復雜的網(wǎng)絡底層編碼(http編碼)即可通過RPC API接口進行調(diào)用。
    (4)管理控制臺
    提供了一個管理控制臺用于對云端服務器進行管理(含安全認證、賬號設置等)。
1.2 Openmobster平臺的架構
    (1)網(wǎng)絡拓撲結(jié)構
    Openmobster平臺的網(wǎng)絡拓撲結(jié)構如圖1所示[2]。

    (2)終端軟件堆棧結(jié)構
    Openmobster平臺的終端軟件堆棧結(jié)構如圖2所示。主要包含以下模塊:
    同步模塊:自動將所有本地狀態(tài)變更與云端數(shù)據(jù)保持同步。
    推送模塊:管理來自云端服務器的狀態(tài)更新通知,從而改善了用戶體驗,使其不必主動查詢新的通知。
    離線應用模塊:用于Sync模塊和Push模塊之間的管理協(xié)調(diào),用戶可不必關注任何實際同步流程的細節(jié),也不必關注如何處理收到的推送通知消息。
    遠程調(diào)用:支持從終端到云端MobileServiceBean的同步遠程調(diào)用。
    網(wǎng)絡連接:管理云端服務器建立的網(wǎng)絡連接,管理接收來自服務器通知的通信頻道。
    Inter-App總線:提供了安裝在設備上的Apps/Moblets底層通信協(xié)調(diào)。
    (3)云端軟件堆棧結(jié)構
    云端軟件堆棧結(jié)構主要包含以下模塊:
    ①同步模塊:同步設備側(cè)數(shù)據(jù)狀態(tài)變化到后端服務,這里使用了數(shù)據(jù)頻道的概念。
    ②推送模塊:監(jiān)視數(shù)據(jù)頻道的更新,一旦發(fā)現(xiàn)數(shù)據(jù)有更新,將發(fā)送基于Comet的通知到終端。
    ③安全模塊:提供了身份驗證和鑒權,以確保連接至服務器的終端得到許可。
    ④Secure Socket-Based Data Service:這是一個高性能的基于Java NIO的Socket服務器。
    ⑤Mobile RPC:服務器端的RPC框架。
    ⑥Management Console:管理控制臺。
2 系統(tǒng)總體設計
    系統(tǒng)的總體設計思路是將Openmobster的Jboss服務器部署在一臺PC上,負責提供底層服務并與用戶的Android 手機進行通信。將Openmobster平臺的客戶端CloudManager安裝在手機上,提供管理界面,如用戶登錄、設備激活、推送通知、數(shù)據(jù)同步、查看網(wǎng)絡連接狀態(tài)等??梢娺@是一個C/S架構的系統(tǒng),其中PC作為服務器,Android 手機作為客戶端。
    在該系統(tǒng)中,PC首先連接到網(wǎng)絡并獲取IP地址,然后將Openmobster的服務器根據(jù)此IP地址部署在PC上。Android手機通過打開WiFi連接到此網(wǎng)絡,根據(jù)部署服務器的IP地址登錄并激活手機客戶端。用戶便可以通過自己設計的網(wǎng)頁界面下發(fā)控制命令到手機終端,JSP模塊獲取并封裝這些命令字段后下發(fā)給云服務器端。CloudServer模塊根據(jù) Openmobster平臺提供的一系列接口和通道,將這些命令最終下發(fā)給手機終端并執(zhí)行相應的操作。系統(tǒng)的總體結(jié)構如圖3 所示。

    圖3所示結(jié)構圖主要涉及以下功能模塊:
    (1)Jboss服務器:Openmobster的服務器均采用Jboss來搭建服務器。
    (2)JSP代碼:網(wǎng)頁界面下發(fā)的命令字段通過JSP代碼封裝并下發(fā)至云服務器端的工程。
    (3)網(wǎng)頁:由于Openmobster只有控制臺沒有自己的網(wǎng)站,操作起來極其不便。因此在本文中設計了一個網(wǎng)頁界面,實現(xiàn)與用戶的交互。
    (4)HSQLDB數(shù)據(jù)庫:建立一個數(shù)據(jù)庫,方便用戶數(shù)據(jù)的存儲和讀取。
    (5)Hibernate:建立與數(shù)據(jù)庫的映射關系,方便用戶查看所需要的數(shù)據(jù)。
    (6)Openmobster:為手機云應用的開發(fā)提供基本的支持。
    (7)Android:手機終端應用開發(fā)。
    (8)CloudManager:安裝在手機上的客戶端。
3 系統(tǒng)的具體實現(xiàn)
3.1搭建開發(fā)環(huán)境

    (1)云服務器端
   由于Openmobster平臺運行于Jboss服務器上,所以先搭建Jboss服務器,下載Jboss軟件并進行相關配置使得Jboss主頁能夠訪問。然后對所使用的數(shù)據(jù)庫預先進行配置,并將數(shù)據(jù)庫中的Openmobster目錄拷入server下。具體步驟如下:
    首先打開Windows控制臺,進入到$JBOSS\bin目錄下,運行:
    Run -c openmobster -b “IP address”以啟動JBoss服務器。
    然后在瀏覽器中運行http://{IP address }:{port}/o確認服務器已正常啟動。
    使用管理控制臺,進入$Openmobster \cloudConsole\bin目錄下,運行以下腳本:openmobster.sh或openmobster.bat啟動控制臺。
    如果是第一次運行,使用如下命令配置root賬號:
    configure -a {cloudServer IP Address} -po 1502 -u root -p { password }
    然后以root賬戶登錄:
    startadmin -u root -p { password }
    最后配置其他普通用戶賬號:
    register -u {email of the user being registered} -p { password }
  (2)手機終端:
    手機終端也需要安裝相應的Openmobster的服務模塊,該服務模塊需要開機自啟動。
    將CloudManager app模塊安裝到手機,然后啟動該應用,選擇“Activate”菜單,按提示逐步輸入云端服務器IP地址,用戶注冊帳號及密碼等實現(xiàn)登錄。
3.2 云服務器端的開發(fā)
    (1)實現(xiàn)一個MobileBean類型,并添加getXXX()、setXXX()方法。MobileBean封裝了用于和服務器端同步的域級信息。通過服務器上的頻道傳播到手機終端。
    (2)實現(xiàn)一個Channel類型,需要首先實現(xiàn)CRUD(Create, Read, Update, Delete)接口來暴露后端數(shù)據(jù)。Create用于創(chuàng)建一個MobileBean的新實例,當設備側(cè)檢查到一個新的實例并同步回云端,返回單獨的id值。Read用于返回對應id完整加載的MobileBean。另外還有一個readAll()方法用于返回所有相關的MobileBean。
    (3)實現(xiàn)bootup()方法,該方法用于返回使程序正常啟動所需的足夠信息 (beans),一般在頻道第一次啟動時調(diào)用。
     public List<? extends MobileBean> bootup()
     {
     List<DemoBean>bootupBeans=new ArrayList<DemoBean>();
     DemoBean Bean = new DemoBean ();
  bootupBeans.add(syncBean);
     return bootupBeans;
     }
     實現(xiàn)scanForNew方法,該方法用于檢查頻道所連接的后端是否已經(jīng)創(chuàng)建了一個新的MobileBean,基于此,將返回新的bean的id或null。如果這些新的bean可用,信息將被自動同步并通知給用戶。
      public String[ ] scanForNew(Device device, Date lastScanTimestamp)
      {
        return new String[]{"push:1", "push:2"};
     }
     (4)聲明相關的MobileServiceBean,實現(xiàn)其invoke方法:
    List<EmailBean> mockBeans = EmailBean.generateMockBeans();
     List<String> subjects = new ArrayList<String>();
     for(EmailBean local:mockBeans)
     {
     subjects.add("id="+local.getOid()+":subject="+local.getSubject());
    } response.setListAttribute("subjects", subjects);
     (5)在openmobster-config.xml 中注冊該頻道。
  <bean name="demobean" class="com.demo.sync.DemoBeanChannel">
3.3 Android手機終端的開發(fā)
    (1)編寫HomeScreen。HomeScreen組件代表了Android
app啟動時的屏幕主界面。其postRender()方法的實現(xiàn)如下:。
    if(MobileBean.isBooted("demobean"))
    {
    MobileBean[]demobeans=MobileBean.readAll("demobean");
     String[] ui = new String[demobeans.length];
     for(int i=0,size=ui.length;i<size;i++)
      {
      ui[i] = demobeans [i].getValue("message");
      }
    listApp.setListAdapter(new ArrayAdapter(listApp,
  android.R.layout.simple_list_item_1, ui));
  }
        (2)在moblet-app.xml 進行配置。
    <screen>com.demo.app.HomeScreen</screen>
3.4 系統(tǒng)的總體設計流程
    整個系統(tǒng)的總體設計流程如圖4所示。具體設計步驟如下:

    (1)用戶通過瀏覽器打開自己設計的網(wǎng)頁,選取需要下發(fā)的控制命令,然后輸入已經(jīng)在服務器上配置好的賬號和密碼,點擊&ldquo;確定&rdquo;后調(diào)用JSP代碼:
    <form action="action.jsp" method="post" name="form1" id="form1">
    (2)JSP執(zhí)行過程為將網(wǎng)頁請求request封裝的各功能選項字段取出并封裝。
    (3)CloudServer中定義的DemoChannel會定期調(diào)用scanForNew并對上面的字段進行檢查,一旦發(fā)現(xiàn)有新數(shù)據(jù),即通過read()接口取出該數(shù)據(jù),將其封裝到DemoBean對象中,并通過OpenMobster下發(fā)推送通知到終端。
    (4)終端的后臺服務Service同樣建立了對應云端
DemoChannel的接口,一旦收到頻道的下發(fā)通知,即通過發(fā)送Intent的方式啟動一個Activity,在啟動過程中可以通過MobileBean.read(channelUri,userName)接口讀出對應賬號名和通道下發(fā)MobileBean,通過MobileBean.getValue接口獲得下發(fā)通知中的各功能命令字段。
    (5)通過對上述各命令字段的含義解析,獲取字段的值,并進入等待隊列。如果手機上的客戶端已經(jīng)被用戶登錄并激活,將調(diào)用Android平臺提供的各個功能接口,完成下發(fā)的控制命令操作[3]。
 (6)如果下發(fā)的命令字段中要求將手機中的數(shù)據(jù)上傳到服務器時,通過類似下發(fā)的逆過程,相應地建立上傳的通道,將數(shù)據(jù)上傳到服務器側(cè)。如果用戶有需要,還可以將這些數(shù)據(jù)展示在網(wǎng)頁界面上。
4 實現(xiàn)結(jié)果
    系統(tǒng)采用了C/S模式的架構進行實現(xiàn),服務器與客戶端通過Socket 進行網(wǎng)絡通信。在PC 端Openmobster的實現(xiàn)中,采用了基于HTTP長連接的&ldquo;服務器推送&rdquo;技術,通過長連接,服務器隨時發(fā)送Push通知;服務器采用移動App框架結(jié)構,手機的客戶端做成一個可開機自啟動的apk,該手機只要接入網(wǎng)絡而且被激活,會在后臺一直運行等待用戶發(fā)送命令。該系統(tǒng)可實現(xiàn)遠程追蹤、遠程擦除、遠程鎖定、遠程同步、遠程推送、遠程過程調(diào)用等功能[4],實現(xiàn)環(huán)境為Eclipse。Android 手機端的激活與遠程下發(fā)和鎖定過程如圖5所示。

 

 

    經(jīng)過在Android高通平臺手機上反復測試,手機連接Server 的時間小于3 s,遠端Server對手機控制命令的響應時間小于5 s,基本完成了云服務器對智能手機終端的訪問和控制功能。但是在測試過程中發(fā)現(xiàn)Openmobster平臺設計的數(shù)據(jù)同步算法還不完善,如在本地進行的新增、修改、刪除記錄的操作時,如果沒來得及同步到服務器側(cè),會因為重新同步數(shù)據(jù)操作而丟失,造成用戶使用不便,有待于今后深入研究和探討。
參考文獻
[1] 王鵬,董靜宜.一種云計算架構的實現(xiàn)方法研究[J].計算機工程與科學,2009,31(1):11-13.
[2] ABI Research. Mobile cloud applications[EB/OL].(2010-03-09)[2011-02-20].http://www.abiresearch.com/research/1003385-Mobile+Cloud+Applications.
[3] 楊文志.Google Android程序設計指南[M].北京:電子工業(yè)出版社,2009.
[4] 韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點詳解[M].北京:電子工業(yè)出版社,2010.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。