基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)

上傳人:1888****888 文檔編號(hào):36500980 上傳時(shí)間:2021-10-31 格式:DOC 頁數(shù):55 大?。?.63MB
收藏 版權(quán)申訴 舉報(bào) 下載
基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)_第1頁
第1頁 / 共55頁
基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)_第2頁
第2頁 / 共55頁
基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)_第3頁
第3頁 / 共55頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計(jì)說明書(論文)(55頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 JIANGSU UNIVERSITY OF TECHNOLOGY 本科畢業(yè)設(shè)計(jì)(論文) 基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件 學(xué)院名稱: 電氣信息工程學(xué)院 專 業(yè): 通信工程

2、 班 級(jí): 09通信2W 學(xué) 號(hào): 09313218 姓 名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 二〇一三 年 六 月 基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件 The Design of remote monitoring software based on Android smartphones I 江蘇理工

3、學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 目 錄 摘 要 I Abstract I 緒 論 2 第1章 課題分析與方案論證 3 1.1 課題任務(wù)分析 3 1.2 方案論證 3 第2章 硬件電路 6 2.1 CDMA網(wǎng)關(guān)模塊硬件設(shè)計(jì) 6 2.2 電源電路 7 2.3 LED燈指示電路 7 2.4 CDMA2000網(wǎng)關(guān)UART接口電路 7 2.5網(wǎng)關(guān)模塊PCB設(shè)計(jì) 8 第3章 軟件設(shè)計(jì) 9 3.1 CDMA終端監(jiān)控節(jié)點(diǎn)軟件設(shè)計(jì)流程圖 9 3.2 Android平臺(tái)監(jiān)控軟件設(shè)計(jì)流程圖 10 3.3 Android監(jiān)控軟件詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 11 3.3.1 登

4、錄界面設(shè)計(jì)與實(shí)現(xiàn) 11 3.3.2 地址配置界面設(shè)計(jì)與實(shí)現(xiàn) 14 3.3.3 顯示界面設(shè)計(jì)與實(shí)現(xiàn) 17 3.3.4 控制界面設(shè)計(jì)與實(shí)現(xiàn) 19 第4章 軟件調(diào)試 21 4.1 非代碼部分調(diào)試 21 4.1.1 JAVA環(huán)境配置 21 4.1.2 Android模擬器 21 4.1.3 系統(tǒng)剩余空間 22 4.2 代碼部分調(diào)試 22 4.2.1 活動(dòng)注冊(cè) 22 4.2.2 安裝軟件 23 4.2.3 授權(quán)問題 24 4.2.4 讀卡 24 附件1 英中翻譯—Androdi平臺(tái)介紹 25 Android 2.3.4 Platform 25 安卓平臺(tái)2.3.4 30

5、附件2 部分Android應(yīng)用程序 36 參考文獻(xiàn) 48 致 謝 49 江蘇理工學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 緒 論 Android是Google發(fā)布的一款基于Linux核心的手機(jī)操作系統(tǒng),Android是一種開源的、免費(fèi)的移動(dòng)計(jì)算軟件平臺(tái),目前基于Android智能手機(jī)的用戶數(shù)量眾多。在智能手機(jī)操作系統(tǒng)中市場(chǎng)占有率最高。 Android平臺(tái)最大的優(yōu)勢(shì)就是其開放性,開放的平臺(tái)允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個(gè)嶄新的平臺(tái)也將很快走向成熟。 豐富的硬件,這一點(diǎn)還是與

6、Android平臺(tái)的開放性相關(guān),由于Android的開放性,眾多的廠商會(huì)推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色, 卻不會(huì)影響到數(shù)據(jù)同步、甚至軟件的兼容。 本課題是基于Android智能手機(jī)進(jìn)行遠(yuǎn)程監(jiān)控程序及其硬件監(jiān)控終端開發(fā)的。移動(dòng)性強(qiáng) ,真正做到隨時(shí)隨地為用戶提供服務(wù)。 本說明書共分為4章,第一章課題分析與方案論證;第二章對(duì)監(jiān)控終端硬件進(jìn)行了說明;第三章對(duì)詳細(xì)的對(duì)應(yīng)用軟件進(jìn)行了分析;第四章有針對(duì)性的列舉了Android應(yīng)用軟件在調(diào)試過程中出現(xiàn)的問題,并對(duì)問題作出了分析。設(shè)計(jì)的最終成果是能通過Android智能手機(jī)顯示遠(yuǎn)程終端傳來的數(shù)據(jù),并通過指令實(shí)現(xiàn)對(duì)遠(yuǎn)程終端的控制。

7、 第1章 課題分析與方案論證 1.1 課題任務(wù)分析 本課題主要實(shí)現(xiàn)用Android智能手機(jī)顯示遠(yuǎn)程監(jiān)控終端傳來的數(shù)據(jù),并通過指令實(shí)現(xiàn)對(duì)遠(yuǎn)程終端的控制。 谷歌公司為了方便用戶Android平臺(tái)上開發(fā)軟件,使用了使用人數(shù)最多的JAVA語言作為主要的開發(fā)語言,開發(fā)環(huán)境是IBM開發(fā)的開源軟件Ecplise。在開發(fā)Android應(yīng)用軟件軟件之前,需要首先配置好開發(fā)環(huán)境,這其中包括Eclipse軟件下載(免安裝),JAVA虛擬機(jī)的安裝,android開發(fā)包SDK的下載并作為插件添加到Eclipse中。 運(yùn)用實(shí)驗(yàn)室的CDMA終端模塊,該模塊通過GPRS網(wǎng)絡(luò)發(fā)送數(shù)

8、據(jù)給具有良好移動(dòng)性的Android手機(jī),Android手機(jī)將接收到的數(shù)據(jù)處理后顯示出來,通過GPRS網(wǎng)絡(luò)發(fā)送指令給終端模塊從而控制終端模塊。 本設(shè)計(jì)研究并實(shí)現(xiàn)了通過無線設(shè)備獲取遠(yuǎn)程終端監(jiān)測(cè)信息。研究?jī)?nèi)容主要包括Android的系統(tǒng)架構(gòu)、應(yīng)用開發(fā)環(huán)境建立、智能手機(jī)遠(yuǎn)程監(jiān)控應(yīng)用軟件開發(fā)、遠(yuǎn)程監(jiān)控網(wǎng)關(guān)軟硬件設(shè)計(jì)。模塊軟件功能上包括:用戶根據(jù)需要進(jìn)行數(shù)據(jù)檢測(cè)、接口選擇與配置;設(shè)備地址配置。 基于應(yīng)用的Android遠(yuǎn)程監(jiān)控管理軟件用于監(jiān)控遠(yuǎn)程基站的溫濕度環(huán)境。實(shí)現(xiàn)對(duì)遠(yuǎn)程基站檢測(cè)節(jié)點(diǎn)終端的溫度、濕度等狀態(tài)參數(shù)的收集與管理。軟件運(yùn)行環(huán)境是Android2.2操作系統(tǒng)及其以上版本。具有掉電后臺(tái)數(shù)據(jù)保護(hù)功

9、能,適當(dāng)修改可被廣泛用于監(jiān)測(cè)和管理遠(yuǎn)程數(shù)據(jù)終端。 1.2 方案論證 盡管沒有在課堂上系統(tǒng)的學(xué)習(xí)過JAVA語言及Android軟件開發(fā)技能,但是由于JAVA語言設(shè)計(jì)的比C++簡(jiǎn)潔的很多,在有C語言的基礎(chǔ)上自學(xué)JAVA語言,難度不是很大,谷歌為了推廣Android,不但推出了便于使用的SDK開發(fā)包,還編寫了大量幫助文檔,同時(shí)也給出了一定數(shù)量的使用示例源代碼,結(jié)合實(shí)驗(yàn)室的CDMA終端模塊,通過價(jià)格合適的GPRS網(wǎng)絡(luò)傳送數(shù)據(jù)。本次方案論證主要對(duì)數(shù)據(jù)傳送方式的選擇。 方案一: 1. Android手機(jī)收發(fā)數(shù)據(jù)方案 選用通用的短信方式收發(fā)數(shù)據(jù),根據(jù)特定的數(shù)據(jù)協(xié)議,從接收到的短信中提取數(shù)據(jù),經(jīng)過

10、處理去掉數(shù)據(jù)中的控制部分,將相關(guān)的監(jiān)測(cè)數(shù)據(jù)提取出來,在應(yīng)用程序界面上給予顯示,同時(shí)通過短信的方式,按照數(shù)據(jù)傳輸協(xié)議,以規(guī)定的方式傳送控制指令到CDMA控制終端。 2. CDMA監(jiān)控終端收發(fā)數(shù)據(jù)方案 通過的短信方式收發(fā)數(shù)據(jù),間歇性質(zhì)的采集周圍環(huán)境的溫濕度數(shù)據(jù),根據(jù)數(shù)據(jù)傳輸協(xié)議,將采集到的數(shù)據(jù)按照特定的格式,通過短信的方式傳輸數(shù)據(jù)給Android智能手機(jī)。同時(shí)根據(jù)特定的數(shù)據(jù)協(xié)議,從接收到的短信中提取數(shù)據(jù),經(jīng)過處理去掉數(shù)據(jù)中的控制部分,得到Android智能手機(jī)發(fā)送的控制指令,根據(jù)指令的內(nèi)容做出相關(guān)的反應(yīng)。 方案二: 1. Android手機(jī)收發(fā)數(shù)據(jù)方案 選用網(wǎng)絡(luò)的方式收發(fā)數(shù)據(jù),購(gòu)買一個(gè)固

11、定的IP地址,在某個(gè)可以聯(lián)入網(wǎng)絡(luò)的設(shè)備上開發(fā)一款服務(wù)器軟件(比如PC),該服務(wù)器軟件具有的功能是儲(chǔ)存相關(guān)設(shè)備的IP地址,并且相關(guān)設(shè)備可以通過該服務(wù)器軟件系統(tǒng)查詢其他設(shè)備的IP地址。在Android手機(jī)聯(lián)入網(wǎng)絡(luò)的時(shí)候,可以得到一個(gè)隨機(jī)的IP地址,Android手機(jī)向具有固定IP地址的設(shè)備匯報(bào)自身的IP地址,并且查詢CDMA監(jiān)控終端的IP地址。查詢成功后,嘗試基于IP地址的通信,嘗試成功后,即可進(jìn)行通信。根據(jù)特定的數(shù)據(jù)協(xié)議,從信息中提取數(shù)據(jù),經(jīng)過處理去掉數(shù)據(jù)中的控制部分,將相關(guān)的監(jiān)測(cè)數(shù)據(jù)提取出來,在應(yīng)用程序界面上給予顯示,同時(shí)IP通信方式,按照數(shù)據(jù)傳輸協(xié)議,以規(guī)定的方式傳送控制指令到CDMA控制終

12、端。 2. CDMA監(jiān)控終端收發(fā)數(shù)據(jù)方案 在CDMA監(jiān)控終端接入網(wǎng)絡(luò)的時(shí)候,可以得到一個(gè)隨機(jī)的IP地址,CDMA監(jiān)控終端向具有固定IP地址的設(shè)備匯報(bào)自身的IP地址,等待其余設(shè)備接入請(qǐng)求,接收到請(qǐng)求后,嘗試基于IP地址的通信,嘗試成功后,間歇性質(zhì)的采集周圍環(huán)境的溫濕度數(shù)據(jù),根據(jù)數(shù)據(jù)傳輸協(xié)議,將采集到的數(shù)據(jù)按照特定的格式,通過基于IP的通信方式方式傳輸數(shù)據(jù)給Android智能手機(jī)。同時(shí)根據(jù)特定的數(shù)據(jù)協(xié)議,從接收到數(shù)據(jù)中,去掉數(shù)據(jù)中的控制數(shù)據(jù),得到Android智能手機(jī)發(fā)送的控制指令,根據(jù)指令的內(nèi)容做出相關(guān)的反應(yīng)。 綜合上述兩種方案,區(qū)別在于所傳輸數(shù)據(jù)的方式不同。 方案一:選用通用通用的短

13、信方式傳送數(shù)據(jù),優(yōu)點(diǎn)是初期開發(fā)難度、工作量較小,成本低廉。缺點(diǎn)是傳輸數(shù)據(jù)所需要的費(fèi)用,短信是按條數(shù)收費(fèi),比起IP采用流量計(jì)費(fèi)的方式要貴。 方案二:采用基于IP的方式收發(fā)數(shù)據(jù),優(yōu)點(diǎn)是符合現(xiàn)代的通信潮流,比起短信是按條數(shù)收費(fèi)方式,IP采用流量計(jì)費(fèi)的方式要便宜。缺點(diǎn)是初期開發(fā)難度、工作量均較大,需要投入的硬件成本也高昂。 通過比較我發(fā)現(xiàn),第一種方案軟、硬較第二種方案簡(jiǎn)單,易于開發(fā)實(shí)現(xiàn),且充分利用了Android本身自帶的資源,節(jié)約了成本。為此,我采用第二種方案。 第2章 硬件電路 設(shè)計(jì)一種合適的GPRS網(wǎng)關(guān)的模塊,該模塊具有無線收發(fā)數(shù)據(jù)的能力。研究?jī)?nèi)容主要包括Android軟件

14、監(jiān)控平臺(tái)的設(shè)計(jì),CDMA無線監(jiān)控節(jié)點(diǎn)模塊軟件件接口設(shè)計(jì)、自定義傳輸協(xié)議設(shè)計(jì)。軟件設(shè)計(jì)功能上包括:用戶根據(jù)需要進(jìn)行設(shè)備地址配置;連網(wǎng)與數(shù)據(jù)傳輸。 2.1 CDMA網(wǎng)關(guān)模塊硬件設(shè)計(jì) GPRS網(wǎng)關(guān)模塊硬件以CDMA2000為處理器模塊或高功率模塊為核心,RS232、RS485作為用戶設(shè)備接口,方便嵌入到用戶設(shè)備中。 圖2-1 CDMA模塊硬件設(shè)計(jì)圖 2.2 電源電路 (1)CDMA2000網(wǎng)關(guān)模塊電源設(shè)計(jì) 圖2-2 CDMA2000網(wǎng)關(guān)模塊電源電路 CDMA2000電源電路如圖 2-2 所示。 CC2530

15、模塊的工作電壓為9V,選用穩(wěn)壓芯片進(jìn)行電壓變換。 2.3 LED燈指示電路 圖2-3 LED燈指示電路 LED電路如圖5所示。LED1作為電源指示燈,有硬件確定。LED2和LED3由接收到的指令控制亮滅。 2.4 CDMA2000網(wǎng)關(guān)UART接口電路 通過UART串口電路與電腦進(jìn)行數(shù)據(jù)傳輸,通過電腦的屏幕顯示硬件工作狀態(tài),從而方便調(diào)試,在實(shí)際工作中不需要用到這個(gè)部分。 圖2-4 UART接口電路 2.5網(wǎng)關(guān)模塊PCB設(shè)計(jì) (1)CDMA2000網(wǎng)關(guān)模塊PCB圖 圖2-5 GPRS網(wǎng)關(guān)PCB圖

16、根據(jù)CDMA2000網(wǎng)關(guān)模塊的原理圖,繪制出網(wǎng)關(guān)模塊 PCB 圖,如圖2-4 所示。 第3章 軟件設(shè)計(jì) 在本章中,給出了CDMA終端監(jiān)控節(jié)點(diǎn)軟件設(shè)計(jì)流程圖,給出了Android平臺(tái)監(jiān)控軟件設(shè)計(jì)流程圖,考慮到側(cè)重點(diǎn)問題,詳細(xì)的說明了Android平臺(tái)監(jiān)控軟件的設(shè)計(jì)。 3.1 CDMA終端監(jiān)控節(jié)點(diǎn)軟件設(shè)計(jì)流程圖 圖3-1 CDMA終端監(jiān)控節(jié)點(diǎn)軟件設(shè)計(jì)流程圖 CDMA終端監(jiān)控節(jié)點(diǎn)上電后首先對(duì)電路進(jìn)行初始化處理,讀取用戶信息,讀取成功后不斷的嘗試接入GPRS網(wǎng)絡(luò),聯(lián)網(wǎng)成功后,判斷有無指令通過GPRS網(wǎng)絡(luò)傳來,若有,指令A(yù)android只能手機(jī)傳送來的指令;接著查看定時(shí)3

17、秒時(shí)間是否已到,如果3秒已到,讀取溫濕度信息,讀取成功后,通過GPRS網(wǎng)絡(luò)傳送給Android智能手機(jī),由Android只能手機(jī)負(fù)責(zé)信息的顯示。 3.2 Android平臺(tái)監(jiān)控軟件設(shè)計(jì)流程圖 圖3-2 Android平臺(tái)監(jiān)控軟件工作流程圖 Android軟件開啟后,輸入正確的用戶名和密碼,可以登錄系統(tǒng),在系統(tǒng)中可以配置監(jiān)控終端信息,可以通過此軟件發(fā)送信息控制終端平臺(tái),終端平臺(tái)每隔三秒鐘發(fā)送信息給手機(jī),手機(jī)通過監(jiān)控平臺(tái)將信息顯示出來。 3.3 Android監(jiān)控軟件詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 3.3.1 登錄界面設(shè)計(jì)與實(shí)現(xiàn) 進(jìn)入登錄畫面,在這一過程中用戶輸入相關(guān)的個(gè)人賬戶信息,輸入完成

18、后點(diǎn)擊登錄按鈕或者點(diǎn)擊修改按鈕,進(jìn)入相關(guān)的界面。如果用戶的個(gè)人信息連續(xù)輸入錯(cuò)誤次數(shù)超過3次,軟件自動(dòng)退出。 圖3-3 登錄界面 在上述圖標(biāo)中如果輸入用戶名和密碼正確,并且選擇修改密碼選項(xiàng)。進(jìn)入修改密碼界面。如果兩次輸入的密碼都正確,返回到重新登錄界面。以新的配置信息登錄。如果連續(xù)3次輸入兩個(gè)表格中的輸入不一致,退出程序。 關(guān)鍵代碼如下: //登錄 class loginButtonListener implements OnClickListener { int namePosition,passwdPosition; //存儲(chǔ)用戶名和密碼的索引

19、 //生成該類的對(duì)象,并將其注冊(cè)到控件上。如果該控件被用戶按下,就會(huì)執(zhí)行onClick方法 @Override public void onClick(View v) { String username = usernameEdit.getText().toString(); String userpasswd = userpasswordEdit.getText().toString(); if(loginTimes>=3) //如果輸入次數(shù)不低于3次,結(jié)束。 { finish();

20、 } //搜索是否存在username字符串,-1表示沒有。 if( username.length()!=0&& userpasswd.length()!=0&& (namePosition = pass.indexOf(username) ) >= 0 && ( passwdPosition = pass.indexOf(userpasswd) )>=0 && ( namePosition + username.length() == passwdPosition ) ) { Intent

21、intent = new Intent(); //設(shè)置Intent對(duì)象要啟動(dòng)的Activity intent.setClass(login.this, SMSReceviedProjectActivity.class); //通過Intent對(duì)象啟動(dòng)另外一個(gè)Activity login.this.startActivity(intent); //注銷這個(gè)Activity finish(); } else { Toast.makeText(login.this, "輸入用戶名或密碼有誤

22、", Toast.LENGTH_SHORT).show(); loginTimes++; } } } 用戶可以在登錄的時(shí)候,選擇是否修改用戶名和密碼。 圖3-4 修改界面 修改成功后,使用新的用戶名和密碼登錄。 關(guān)鍵代碼如下: //修改用戶名或者密碼 public class change extends Activity { private TextView userpasswdChange=null; //新密碼 private EditText userpasswdEditChange=null; priva

23、te TextView userpasswdChange2=null; //第二次輸入新密碼 private EditText userpasswdEditChange2=null; private Button okButton=null; //確認(rèn)按鈕 private Button cancelButton = null ; //取消修改 int changeTimes = 0,loginTimes = 0; //記錄輸入次數(shù) /** Called when the activity is first created. */

24、 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.change); userpasswdChange=(TextView)findViewById(R.id.u

25、serpasswdChange); userpasswdEditChange=(EditText)findViewById(R.id.userpasswdEditChange); userpasswdChange2=(TextView)findViewById(R.id.userpasswdChange2); userpasswdEditChange2=(EditText)findViewById(R.id.userpasswdEditChange2); okButton=(Butt

26、on)findViewById(R.id.okButton); okButton.setOnClickListener(new okButtonListener()); cancelButton=(Button)findViewById(R.id.cancelButton); cancelButton.setOnClickListener(new cancelButtonListener()); } //確認(rèn) class okButtonListener implements OnC

27、lickListener { //生成該類的對(duì)象,并將其注冊(cè)到控件上。如果該控件被用戶按下,就會(huì)執(zhí)行onClick方法 @Override public void onClick(View v) { //測(cè)試使用,沒有在此處寫代碼。實(shí)際應(yīng)用中需寫入。 } } //取消 class cancelButtonListener implements OnClickListener { //生成該類的對(duì)象,并將其注冊(cè)到控件上。如果該控件被用戶按下,就會(huì)執(zhí)行onClick

28、方法 @Override public void onClick(View v) { } } } 3.3.2 地址配置界面設(shè)計(jì)與實(shí)現(xiàn) 點(diǎn)擊新建按鈕新建地址信息,地址信息只有在此處輸入時(shí),才會(huì)給予修改顯示顯示。個(gè)性化的配置地址信息,界面如下: 圖3-5 修改地址信息 關(guān)鍵代碼如下: public class AddressOperationDialog extends Dialog { DbDataFactory dbDataFactory; //數(shù)據(jù)庫(kù)操作類 AddressManagerActivity addressMang

29、erActivity; EditText address;//地址 EditText telnum; //電話號(hào)碼 Button add; //添加按鈕 Button cancel; //取消按鈕 //記錄操作數(shù)據(jù) MyMessage mymessage; Help help; public AddressOperationDialog(Context context,MyMessage mymessage) { super(context); // TODO Auto-generated constructor st

30、u this.addressMangerActivity=(AddressManagerActivity) context; this.mymessage=mymessage; } protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.addressoperation); setTitle(

31、"添加地址信息"); //初始化 init(); } //初始化 private void init() { // TODO Auto-generated method stub help=new Help(); dbDataFactory=new DbDataFactory(); address=(EditText)findViewById(R.id.address); telnum=(EditText)findViewById(R.id.telnum);

32、 //判斷是操作還是修改 if(null!=mymessage) { //更新的時(shí)候 將信息顯示到控件 address.setText(mymessage.getAddress()); telnum.setText(mymessage.getTelnum()); //號(hào)碼不可更改 } cancel=(Button) findViewById(R.id.cancel); cancel.setOnClickLis

33、tener(new Button.OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub dismiss(); } }); add=(Button) findViewById(R.id.add); add.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-g

34、enerated method stub if(isEmptyData()) { //空數(shù)據(jù)給出提示 help.ToastMessage(addressMangerActivity, R.string.emptydata, 2000); }else { //不是空數(shù)據(jù) MyMessage newMessage=null; Message msg=new Message(); if(null==mymessage) { //新增

35、 newMessage=getdata(0); msg.what=(int)dbDataFactory.addMyMessage(addressMangerActivity,newMessage ); dismiss(); }else { //更新 newMessage=getdata(mymessage.get_id()); dbDataFactory.updateMyMessage(addressMangerActivity,newMessage ); dismiss();

36、 } //回調(diào)addressMangerActivity的updateDataHandler 更新數(shù)據(jù) addressMangerActivity.updateDataHandler.sendMessage(msg); } } }); } //獲取數(shù)據(jù) private MyMessage getdata(int id) { // TODO Auto-generated method stub return new MyMessage(id, telnum.getText().toString(), addr

37、ess.getText().toString(),""); } private boolean isEmptyData() { // TODO Auto-generated method stub if((telnum.getText().toString().trim().length()!=0) &&(address.getText().toString().trim().length()!=0)) { return false; } return true; } } 3.3.3 顯示界面設(shè)計(jì)與實(shí)現(xiàn) 軟件開啟并且

38、配置后,顯示效果如下。從圖中可以看出,該應(yīng)用程序成功的顯示出了地點(diǎn)、溫濕度、時(shí)間等信息,達(dá)到了設(shè)計(jì)要求。 圖3-6 監(jiān)控顯示 關(guān)鍵代碼如下: public Handler smsShowHandler=new Handler() { @SuppressWarnings("unchecked") public void handleMessage(Message msg) { //取消進(jìn)度條 if(progressDialog.isShowing()) { progressDia

39、log.cancel(); } //顯示數(shù)據(jù) if(msg.what==0) { // //狀態(tài)為0 表示沒有數(shù)據(jù) // help.ToastMessage(SMSReceviedProjectActivity.this,R.string.nodata,2000); } else { //顯示數(shù)據(jù) String result=""; myMessageList=(List

40、) msg.obj; List mystatus=help.getMyStatus(myMessageList, SMSReceviedProjectActivity.this); for(int i=0;i"+ "|"+mystatus.get(i).getPower()+

41、 "|"+mystatus.get(i).getWaterlevel()+ "|"+mystatus.get(i).getPump()+ "|"+mystatus.get(i).getStatus()+"

"; } tv_show.setText(Html.fromHtml(result)); }

42、 Thread thread = new Thread() { @Override public void run() { int waitingTime = 5000; // ms try { Thread.sleep(3000); } catch (InterruptedException e)

43、 { e.printStackTrace(); } finally { //查詢數(shù)據(jù)、線程啟動(dòng) smsInfoThread=new SMSInfoThread(SMSReceviedProjectActivity.this,myMessageList); smsInfoThread.start(); } }

44、 }; thread.start(); }; }; 3.3.4 控制界面設(shè)計(jì)與實(shí)現(xiàn) 點(diǎn)擊查詢后啟動(dòng)查詢界面,用戶在第一個(gè)輸入框中輸入想查詢終端地址,在第二個(gè)輸入框中輸入指令(目前只支持兩種指令。指令格式是本機(jī)號(hào)+10001或者10000。比如本機(jī)號(hào):12345678900,那么輸入指令是:1234567890011111。其中以10001結(jié)尾表示打開LED1,以10000結(jié)尾表示關(guān)閉LED1)。 圖3-7 控制界面 關(guān)鍵代碼如下: public boolean onCreateOptionsMenu(Me

45、nu menu) { menu.add(0, 0, 0, "控制"); menu.add(0, 1, 1, "關(guān)于"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch(item.getItemId()) { case

46、 0: search(); //選擇“控制”選項(xiàng) break; case 1: about(); //選擇“關(guān)于”選項(xiàng) break; } return true; } //轉(zhuǎn)入發(fā)送控制界面,本應(yīng)用中使用的是谷歌自帶的發(fā)送短信界面 private void search() { Uri uri = Uri.parse("smsto://0800000123"); Intent inte

47、nt = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "格式:本機(jī)號(hào)+11111"); startActivity(intent); } 第4章 軟件調(diào)試 Android系統(tǒng)是一個(gè)很復(fù)雜的操作系統(tǒng)。在開發(fā)應(yīng)用軟件的中,出現(xiàn)了各種各樣的問題,包括開發(fā)環(huán)境配置問題,開發(fā)語言使用問題,虛擬機(jī)不能模擬實(shí)際機(jī)器的問題。在本章中,將開發(fā)中遇到的一些錯(cuò)誤羅列出來。 4.1 非代碼部分調(diào)試 4.1.1 JAVA環(huán)境配置 問題:在啟動(dòng)A

48、ndroid開發(fā)平臺(tái)Eclipse時(shí),出現(xiàn)如圖4-1所示錯(cuò)誤提示: 圖4-1 JAVA環(huán)境配置提示 分析解決:由于Eclipse運(yùn)行需要JAVA環(huán)境的支持,所以在運(yùn)行Eclipse之前需要下載并且安裝一個(gè)JAVA虛擬機(jī)。當(dāng)然其后的Android程序開發(fā),也用到了JAVA環(huán)境。 4.1.2 Android模擬器 問題:在編寫好測(cè)試軟件時(shí),遠(yuǎn)行Android模擬器時(shí),出現(xiàn)如圖4-2錯(cuò)誤提示: 圖4-2 Android模擬器提示 分析解決:虛擬機(jī)沒設(shè)置好或者版本低與程序中設(shè)定的版本??梢栽赪indow-- AVD Manager—new,在彈出的對(duì)話框中輸入name信

49、息,在target中選擇模擬器版本。考慮到使用到的API的級(jí)別(android各個(gè)平臺(tái)API的級(jí)別不同)和更廣泛的適用性(版本越低使用范圍越大),本文中選擇的是2.2版本。配置如圖4-3所示: 圖4-3 Android模擬器配置 4.1.3 系統(tǒng)剩余空間 問題:在開發(fā)環(huán)境及虛擬機(jī)配置好后,仍不能啟動(dòng)虛擬機(jī),錯(cuò)誤報(bào)告如下: [2013-02-22 15:41:46 - Emulator] NAND: could not write file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\\AndroidEmulator\TMP162.tmp, No spac

50、e left on device 分析解決:由于Android虛擬機(jī)較大,對(duì)系統(tǒng)盤有一定大要求,這兒因?yàn)橄到y(tǒng)盤不足,導(dǎo)致Android虛擬機(jī)無法啟動(dòng),建議系統(tǒng)盤預(yù)留1GB空閑空間用于Android開發(fā)。 4.2 代碼部分調(diào)試 4.2.1 活動(dòng)注冊(cè) 問題:?jiǎn)?dòng)Android模擬器后,點(diǎn)擊登錄的時(shí)候出現(xiàn)如圖4-3所示異常提示: 圖4-3 Android異常提示 上面的提示的很模糊,參考錯(cuò)誤報(bào)告: 圖4-4 Eclipse錯(cuò)誤報(bào)告 分析解決:圖中灰色部分給出了很明顯的提示,沒有發(fā)現(xiàn)可直接使用的“activity class”(找不到com.android.

51、activity.login),在android開發(fā)中為了管理各個(gè)“界面”,需要在一個(gè)教“AndroidManifest.xml”的文件中注冊(cè)活動(dòng)界面的login。 4.2.2 安裝軟件 問題:在使用Android手機(jī)調(diào)試的時(shí)候,出現(xiàn)如下的錯(cuò)誤報(bào)告 [2013-05-22 22:46:59 - SMSReceviedProject] Installing SMSReceviedProject.apk... [2013-05-22 22:47:01 - SMSReceviedProject] Re-installation failed due to different applicat

52、ion signatures. [2013-05-22 22:47:01 - SMSReceviedProject] You must perform a full uninstall of the application. WARNING: This will remove the application data! [2013-05-22 22:47:01 - SMSReceviedProject] Please execute adb uninstall com.android.activity in a shell. [2013-05-22 22:47:01 - SMSRecev

53、iedProject] Launch canceled! 分析解決:因?yàn)樵贏ndroid手機(jī)中手工安裝過了這個(gè)軟件,Android模擬器不能刪除已經(jīng)手工安裝的軟件。手動(dòng)卸載后,重新運(yùn)行即可。 4.2.3 授權(quán)問題 問題:在Android手機(jī)上運(yùn)行軟件時(shí),Ecplipse出現(xiàn)如圖4-4所示錯(cuò)誤: 圖4-5 Eclipse授權(quán)錯(cuò)誤報(bào)告 分析解決:由于安全問題,Android要求安裝運(yùn)行的軟件必須在安裝的時(shí)候提示軟件所需得到的權(quán)利,用戶接收后才可獲得相關(guān)的權(quán)利。由于在設(shè)計(jì)軟件時(shí),沒有在“AndroidManifest.xml”中聲明所需要的權(quán)利,導(dǎo)致軟件在使用一些權(quán)利時(shí),被拒絕

54、。可以在“AndroidManifest.xml”中聲明所需的權(quán)利,即可運(yùn)用。 4.2.4 讀卡 問題:在輸入初始化的登錄名和密碼后,出現(xiàn)如圖圖4-6所示的異常報(bào)告: 圖4-6 異常報(bào)告 分析解決:由于在登錄的時(shí)候,需要讀寫“/SD”目錄下的數(shù)據(jù)。在手機(jī)上插入SD卡,即可正常的運(yùn)行。 附件1 英中翻譯—Androdi平臺(tái)介紹 Android 2.3.4 Platform API Level:10 Android 2.3.4 is a maintenance release that adds several bug fixes and patches

55、 to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally, Android 2.3.4 brings support for the Open Accessory API to mobile devices, through the optional Open Accessory Library. For developers, the Android 2.3.4 platform and the Open Accessory Library are available to

56、gether in the latest version of the Google APIs Add-On, a downloadable component for the Android SDK. To get started developing or testing against Android 2.3.4, use the Android SDK Manager to download the latest version of the Google APIs Add-On into your SDK. For more information, see Adding SDK

57、Components. If you are new to Android, download the SDK Starter Package first. For a high-level introduction to Android 2.3, see the Platform Highlights. Revisions The sections below provide notes about successive releases of the Android 2.3.4 platform component for the Android SDK, as denoted by

58、 revision number. To determine what revision(s) of the Android 2.3.4 platforms are installed in your SDK environment, refer to the "Installed Packages" listing in the Android SDK and AVD Manager. API Overview Android 2.3.4 provides the same framework API to applications as Android 2.3.3 (API level

59、 10). For a summary of the API, see the Android 2.3.3 version notes. Open Accessory Library Open Accessory is a new capability for integrating connected peripherals with applications running on the platform. The capability is based on a USB (Universal Serial Bus) stack built into the platform and

60、an API exposed to applications. Peripherals that attach to Android-powered devices as accessories connect as USB hosts. Open Accessory is introduced in Android 3.1 (API level 12), but is made available to devices running Android 2.3.4 by means of an optional external library, the Open Accessory Li

61、brary. The library exposes a framework API that lets applications discover, communicate with, and manage a variety of device types connected over USB. It also provides the implementation of the API against parts of the Android platform that are not directly exposed to applications in Android 2.3.4.

62、 The Open Accessory Library is optional on any given device. Device manufacturers may choose whether to include the Open Accessory Library in their products or exclude it. The library is forward-compatible with Android 3.1, so applications developed against Android 2.3.4 will run properly on devices

63、 running Android 3.1, if those devices support USB accessories. The API provided by the Open Accessory Library is based on the Open Accessory API provided in Android 3.1. In most areas, you can use the same techniques and APIs. However, developing for the Open Accessory Library on Android 2.3.4 di

64、ffers from the standard USB API in these ways: l Obtaining a UsbManager object — To obtain a UsbManager object when using the add-on library, use the helper method getInstance() rather than getSystemService() For example: UsbManager manager = UsbManager.getInstance(this); l Obtaining a UsbAccess

65、ory from a filtered intent — When you filter for a connected device or accessory with an intent filter, the UsbAccessory object is contained inside the intent that is passed to your application. If you are using the add-on library, you can get the UsbAccessory object in the following manner: UsbAcc

66、essory accessory = UsbManager.getAccessory(intent); l No USB host support — Android 2.3.4 and the Open Accessory Library do not support USB host mode (for example, through UsbDevice), although USB host mode is supported in Android 3.1. An Android-powered device running Android 2.3.4 can not function as a USB host. The library enables the Android-powered device to function as a peripheral only, with the connected accessory functioning as USB host (through UsbAccessory). To develop apps using

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!