基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計說明書(論文)
《基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計說明書(論文)》由會員分享,可在線閱讀,更多相關(guān)《基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件畢業(yè)設(shè)計說明書(論文)(55頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 JIANGSU UNIVERSITY OF TECHNOLOGY 本科畢業(yè)設(shè)計(論文) 基于Android的智能手機(jī)遠(yuǎn)程監(jiān)控軟件 學(xué)院名稱: 電氣信息工程學(xué)院 專 業(yè): 通信工程
2、 班 級: 09通信2W 學(xué) 號: 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è)計說明書(論文) 目 錄 摘 要 I Abstract I 緒 論 2 第1章 課題分析與方案論證 3 1.1 課題任務(wù)分析 3 1.2 方案論證 3 第2章 硬件電路 6 2.1 CDMA網(wǎng)關(guān)模塊硬件設(shè)計 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è)計 8 第3章 軟件設(shè)計 9 3.1 CDMA終端監(jiān)控節(jié)點軟件設(shè)計流程圖 9 3.2 Android平臺監(jiān)控軟件設(shè)計流程圖 10 3.3 Android監(jiān)控軟件詳細(xì)設(shè)計與實現(xiàn) 11 3.3.1 登
4、錄界面設(shè)計與實現(xiàn) 11 3.3.2 地址配置界面設(shè)計與實現(xiàn) 14 3.3.3 顯示界面設(shè)計與實現(xiàn) 17 3.3.4 控制界面設(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 活動注冊 22 4.2.2 安裝軟件 23 4.2.3 授權(quán)問題 24 4.2.4 讀卡 24 附件1 英中翻譯—Androdi平臺介紹 25 Android 2.3.4 Platform 25 安卓平臺2.3.4 30
5、附件2 部分Android應(yīng)用程序 36 參考文獻(xiàn) 48 致 謝 49 江蘇理工學(xué)院畢業(yè)設(shè)計說明書(論文) 緒 論 Android是Google發(fā)布的一款基于Linux核心的手機(jī)操作系統(tǒng),Android是一種開源的、免費的移動計算軟件平臺,目前基于Android智能手機(jī)的用戶數(shù)量眾多。在智能手機(jī)操作系統(tǒng)中市場占有率最高。 Android平臺最大的優(yōu)勢就是其開放性,開放的平臺允許任何移動終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個嶄新的平臺也將很快走向成熟。 豐富的硬件,這一點還是與
6、Android平臺的開放性相關(guān),由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色, 卻不會影響到數(shù)據(jù)同步、甚至軟件的兼容。 本課題是基于Android智能手機(jī)進(jìn)行遠(yuǎn)程監(jiān)控程序及其硬件監(jiān)控終端開發(fā)的。移動性強(qiáng) ,真正做到隨時隨地為用戶提供服務(wù)。 本說明書共分為4章,第一章課題分析與方案論證;第二章對監(jiān)控終端硬件進(jìn)行了說明;第三章對詳細(xì)的對應(yīng)用軟件進(jìn)行了分析;第四章有針對性的列舉了Android應(yīng)用軟件在調(diào)試過程中出現(xiàn)的問題,并對問題作出了分析。設(shè)計的最終成果是能通過Android智能手機(jī)顯示遠(yuǎn)程終端傳來的數(shù)據(jù),并通過指令實現(xiàn)對遠(yuǎn)程終端的控制。
7、 第1章 課題分析與方案論證 1.1 課題任務(wù)分析 本課題主要實現(xiàn)用Android智能手機(jī)顯示遠(yuǎn)程監(jiān)控終端傳來的數(shù)據(jù),并通過指令實現(xiàn)對遠(yuǎn)程終端的控制。 谷歌公司為了方便用戶Android平臺上開發(fā)軟件,使用了使用人數(shù)最多的JAVA語言作為主要的開發(fā)語言,開發(fā)環(huán)境是IBM開發(fā)的開源軟件Ecplise。在開發(fā)Android應(yīng)用軟件軟件之前,需要首先配置好開發(fā)環(huán)境,這其中包括Eclipse軟件下載(免安裝),JAVA虛擬機(jī)的安裝,android開發(fā)包SDK的下載并作為插件添加到Eclipse中。 運用實驗室的CDMA終端模塊,該模塊通過GPRS網(wǎng)絡(luò)發(fā)送數(shù)
8、據(jù)給具有良好移動性的Android手機(jī),Android手機(jī)將接收到的數(shù)據(jù)處理后顯示出來,通過GPRS網(wǎng)絡(luò)發(fā)送指令給終端模塊從而控制終端模塊。 本設(shè)計研究并實現(xiàn)了通過無線設(shè)備獲取遠(yuǎn)程終端監(jiān)測信息。研究內(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ìn)行數(shù)據(jù)檢測、接口選擇與配置;設(shè)備地址配置。 基于應(yīng)用的Android遠(yuǎn)程監(jiān)控管理軟件用于監(jiān)控遠(yuǎn)程基站的溫濕度環(huán)境。實現(xiàn)對遠(yuǎn)程基站檢測節(jié)點終端的溫度、濕度等狀態(tài)參數(shù)的收集與管理。軟件運行環(huán)境是Android2.2操作系統(tǒng)及其以上版本。具有掉電后臺數(shù)據(jù)保護(hù)功
9、能,適當(dāng)修改可被廣泛用于監(jiān)測和管理遠(yuǎn)程數(shù)據(jù)終端。 1.2 方案論證 盡管沒有在課堂上系統(tǒng)的學(xué)習(xí)過JAVA語言及Android軟件開發(fā)技能,但是由于JAVA語言設(shè)計的比C++簡潔的很多,在有C語言的基礎(chǔ)上自學(xué)JAVA語言,難度不是很大,谷歌為了推廣Android,不但推出了便于使用的SDK開發(fā)包,還編寫了大量幫助文檔,同時也給出了一定數(shù)量的使用示例源代碼,結(jié)合實驗室的CDMA終端模塊,通過價格合適的GPRS網(wǎng)絡(luò)傳送數(shù)據(jù)。本次方案論證主要對數(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)測數(shù)據(jù)提取出來,在應(yīng)用程序界面上給予顯示,同時通過短信的方式,按照數(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ī)。同時根據(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ù),購買一個固
11、定的IP地址,在某個可以聯(lián)入網(wǎng)絡(luò)的設(shè)備上開發(fā)一款服務(wù)器軟件(比如PC),該服務(wù)器軟件具有的功能是儲存相關(guān)設(shè)備的IP地址,并且相關(guān)設(shè)備可以通過該服務(wù)器軟件系統(tǒng)查詢其他設(shè)備的IP地址。在Android手機(jī)聯(lián)入網(wǎng)絡(luò)的時候,可以得到一個隨機(jī)的IP地址,Android手機(jī)向具有固定IP地址的設(shè)備匯報自身的IP地址,并且查詢CDMA監(jiān)控終端的IP地址。查詢成功后,嘗試基于IP地址的通信,嘗試成功后,即可進(jìn)行通信。根據(jù)特定的數(shù)據(jù)協(xié)議,從信息中提取數(shù)據(jù),經(jīng)過處理去掉數(shù)據(jù)中的控制部分,將相關(guān)的監(jiān)測數(shù)據(jù)提取出來,在應(yīng)用程序界面上給予顯示,同時IP通信方式,按照數(shù)據(jù)傳輸協(xié)議,以規(guī)定的方式傳送控制指令到CDMA控制終
12、端。 2. CDMA監(jiān)控終端收發(fā)數(shù)據(jù)方案 在CDMA監(jiān)控終端接入網(wǎng)絡(luò)的時候,可以得到一個隨機(jī)的IP地址,CDMA監(jiān)控終端向具有固定IP地址的設(shè)備匯報自身的IP地址,等待其余設(shè)備接入請求,接收到請求后,嘗試基于IP地址的通信,嘗試成功后,間歇性質(zhì)的采集周圍環(huán)境的溫濕度數(shù)據(jù),根據(jù)數(shù)據(jù)傳輸協(xié)議,將采集到的數(shù)據(jù)按照特定的格式,通過基于IP的通信方式方式傳輸數(shù)據(jù)給Android智能手機(jī)。同時根據(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)點是初期開發(fā)難度、工作量較小,成本低廉。缺點是傳輸數(shù)據(jù)所需要的費用,短信是按條數(shù)收費,比起IP采用流量計費的方式要貴。 方案二:采用基于IP的方式收發(fā)數(shù)據(jù),優(yōu)點是符合現(xiàn)代的通信潮流,比起短信是按條數(shù)收費方式,IP采用流量計費的方式要便宜。缺點是初期開發(fā)難度、工作量均較大,需要投入的硬件成本也高昂。 通過比較我發(fā)現(xiàn),第一種方案軟、硬較第二種方案簡單,易于開發(fā)實現(xiàn),且充分利用了Android本身自帶的資源,節(jié)約了成本。為此,我采用第二種方案。 第2章 硬件電路 設(shè)計一種合適的GPRS網(wǎng)關(guān)的模塊,該模塊具有無線收發(fā)數(shù)據(jù)的能力。研究內(nèi)容主要包括Android軟件
14、監(jiān)控平臺的設(shè)計,CDMA無線監(jiān)控節(jié)點模塊軟件件接口設(shè)計、自定義傳輸協(xié)議設(shè)計。軟件設(shè)計功能上包括:用戶根據(jù)需要進(jìn)行設(shè)備地址配置;連網(wǎng)與數(shù)據(jù)傳輸。 2.1 CDMA網(wǎng)關(guān)模塊硬件設(shè)計 GPRS網(wǎng)關(guān)模塊硬件以CDMA2000為處理器模塊或高功率模塊為核心,RS232、RS485作為用戶設(shè)備接口,方便嵌入到用戶設(shè)備中。 圖2-1 CDMA模塊硬件設(shè)計圖 2.2 電源電路 (1)CDMA2000網(wǎng)關(guān)模塊電源設(shè)計 圖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)試,在實際工作中不需要用到這個部分。 圖2-4 UART接口電路 2.5網(wǎng)關(guān)模塊PCB設(shè)計 (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è)計 在本章中,給出了CDMA終端監(jiān)控節(jié)點軟件設(shè)計流程圖,給出了Android平臺監(jiān)控軟件設(shè)計流程圖,考慮到側(cè)重點問題,詳細(xì)的說明了Android平臺監(jiān)控軟件的設(shè)計。 3.1 CDMA終端監(jiān)控節(jié)點軟件設(shè)計流程圖 圖3-1 CDMA終端監(jiān)控節(jié)點軟件設(shè)計流程圖 CDMA終端監(jiān)控節(jié)點上電后首先對電路進(jìn)行初始化處理,讀取用戶信息,讀取成功后不斷的嘗試接入GPRS網(wǎng)絡(luò),聯(lián)網(wǎng)成功后,判斷有無指令通過GPRS網(wǎng)絡(luò)傳來,若有,指令A(yù)android只能手機(jī)傳送來的指令;接著查看定時3
17、秒時間是否已到,如果3秒已到,讀取溫濕度信息,讀取成功后,通過GPRS網(wǎng)絡(luò)傳送給Android智能手機(jī),由Android只能手機(jī)負(fù)責(zé)信息的顯示。 3.2 Android平臺監(jiān)控軟件設(shè)計流程圖 圖3-2 Android平臺監(jiān)控軟件工作流程圖 Android軟件開啟后,輸入正確的用戶名和密碼,可以登錄系統(tǒng),在系統(tǒng)中可以配置監(jiān)控終端信息,可以通過此軟件發(fā)送信息控制終端平臺,終端平臺每隔三秒鐘發(fā)送信息給手機(jī),手機(jī)通過監(jiān)控平臺將信息顯示出來。 3.3 Android監(jiān)控軟件詳細(xì)設(shè)計與實現(xiàn) 3.3.1 登錄界面設(shè)計與實現(xiàn) 進(jìn)入登錄畫面,在這一過程中用戶輸入相關(guān)的個人賬戶信息,輸入完成
18、后點擊登錄按鈕或者點擊修改按鈕,進(jìn)入相關(guān)的界面。如果用戶的個人信息連續(xù)輸入錯誤次數(shù)超過3次,軟件自動退出。 圖3-3 登錄界面 在上述圖標(biāo)中如果輸入用戶名和密碼正確,并且選擇修改密碼選項。進(jìn)入修改密碼界面。如果兩次輸入的密碼都正確,返回到重新登錄界面。以新的配置信息登錄。如果連續(xù)3次輸入兩個表格中的輸入不一致,退出程序。 關(guān)鍵代碼如下: //登錄 class loginButtonListener implements OnClickListener { int namePosition,passwdPosition; //存儲用戶名和密碼的索引
19、 //生成該類的對象,并將其注冊到控件上。如果該控件被用戶按下,就會執(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對象要啟動的Activity intent.setClass(login.this, SMSReceviedProjectActivity.class); //通過Intent對象啟動另外一個Activity login.this.startActivity(intent); //注銷這個Activity finish(); } else { Toast.makeText(login.this, "輸入用戶名或密碼有誤
22、", Toast.LENGTH_SHORT).show(); loginTimes++; } } } 用戶可以在登錄的時候,選擇是否修改用戶名和密碼。 圖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 { //生成該類的對象,并將其注冊到控件上。如果該控件被用戶按下,就會執(zhí)行onClick方法 @Override public void onClick(View v) { //測試使用,沒有在此處寫代碼。實際應(yīng)用中需寫入。 } } //取消 class cancelButtonListener implements OnClickListener { //生成該類的對象,并將其注冊到控件上。如果該控件被用戶按下,就會執(zhí)行onClick
28、方法 @Override public void onClick(View v) { } } } 3.3.2 地址配置界面設(shè)計與實現(xiàn) 點擊新建按鈕新建地址信息,地址信息只有在此處輸入時,才會給予修改顯示顯示。個性化的配置地址信息,界面如下: 圖3-5 修改地址信息 關(guān)鍵代碼如下: public class AddressOperationDialog extends Dialog { DbDataFactory dbDataFactory; //數(shù)據(jù)庫操作類 AddressManagerActivity addressMang
29、erActivity; EditText address;//地址 EditText telnum; //電話號碼 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) { //更新的時候 將信息顯示到控件 address.setText(mymessage.getAddress()); telnum.setText(mymessage.getTelnum()); //號碼不可更改 } 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è)計與實現(xiàn) 軟件開啟并且
38、配置后,顯示效果如下。從圖中可以看出,該應(yīng)用程序成功的顯示出了地點、溫濕度、時間等信息,達(dá)到了設(shè)計要求。 圖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
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ù)、線程啟動 smsInfoThread=new SMSInfoThread(SMSReceviedProjectActivity.this,myMessageList); smsInfoThread.start(); } }
44、 }; thread.start(); }; }; 3.3.4 控制界面設(shè)計與實現(xiàn) 點擊查詢后啟動查詢界面,用戶在第一個輸入框中輸入想查詢終端地址,在第二個輸入框中輸入指令(目前只支持兩種指令。指令格式是本機(jī)號+10001或者10000。比如本機(jī)號: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(); //選擇“控制”選項 break; case 1: about(); //選擇“關(guān)于”選項 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ī)號+11111"); startActivity(intent); } 第4章 軟件調(diào)試 Android系統(tǒng)是一個很復(fù)雜的操作系統(tǒng)。在開發(fā)應(yīng)用軟件的中,出現(xiàn)了各種各樣的問題,包括開發(fā)環(huán)境配置問題,開發(fā)語言使用問題,虛擬機(jī)不能模擬實際機(jī)器的問題。在本章中,將開發(fā)中遇到的一些錯誤羅列出來。 4.1 非代碼部分調(diào)試 4.1.1 JAVA環(huán)境配置 問題:在啟動A
48、ndroid開發(fā)平臺Eclipse時,出現(xiàn)如圖4-1所示錯誤提示: 圖4-1 JAVA環(huán)境配置提示 分析解決:由于Eclipse運行需要JAVA環(huán)境的支持,所以在運行Eclipse之前需要下載并且安裝一個JAVA虛擬機(jī)。當(dāng)然其后的Android程序開發(fā),也用到了JAVA環(huán)境。 4.1.2 Android模擬器 問題:在編寫好測試軟件時,遠(yuǎn)行Android模擬器時,出現(xiàn)如圖4-2錯誤提示: 圖4-2 Android模擬器提示 分析解決:虛擬機(jī)沒設(shè)置好或者版本低與程序中設(shè)定的版本。可以在Window-- AVD Manager—new,在彈出的對話框中輸入name信
49、息,在target中選擇模擬器版本??紤]到使用到的API的級別(android各個平臺API的級別不同)和更廣泛的適用性(版本越低使用范圍越大),本文中選擇的是2.2版本。配置如圖4-3所示: 圖4-3 Android模擬器配置 4.1.3 系統(tǒng)剩余空間 問題:在開發(fā)環(huán)境及虛擬機(jī)配置好后,仍不能啟動虛擬機(jī),錯誤報告如下: [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ī)較大,對系統(tǒng)盤有一定大要求,這兒因為系統(tǒng)盤不足,導(dǎo)致Android虛擬機(jī)無法啟動,建議系統(tǒng)盤預(yù)留1GB空閑空間用于Android開發(fā)。 4.2 代碼部分調(diào)試 4.2.1 活動注冊 問題:啟動Android模擬器后,點擊登錄的時候出現(xiàn)如圖4-3所示異常提示: 圖4-3 Android異常提示 上面的提示的很模糊,參考錯誤報告: 圖4-4 Eclipse錯誤報告 分析解決:圖中灰色部分給出了很明顯的提示,沒有發(fā)現(xiàn)可直接使用的“activity class”(找不到com.android.
51、activity.login),在android開發(fā)中為了管理各個“界面”,需要在一個教“AndroidManifest.xml”的文件中注冊活動界面的login。 4.2.2 安裝軟件 問題:在使用Android手機(jī)調(diào)試的時候,出現(xiàn)如下的錯誤報告 [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! 分析解決:因為在Android手機(jī)中手工安裝過了這個軟件,Android模擬器不能刪除已經(jīng)手工安裝的軟件。手動卸載后,重新運行即可。 4.2.3 授權(quán)問題 問題:在Android手機(jī)上運行軟件時,Ecplipse出現(xiàn)如圖4-4所示錯誤: 圖4-5 Eclipse授權(quán)錯誤報告 分析解決:由于安全問題,Android要求安裝運行的軟件必須在安裝的時候提示軟件所需得到的權(quán)利,用戶接收后才可獲得相關(guān)的權(quán)利。由于在設(shè)計軟件時,沒有在“AndroidManifest.xml”中聲明所需要的權(quán)利,導(dǎo)致軟件在使用一些權(quán)利時,被拒絕
54、??梢栽凇癆ndroidManifest.xml”中聲明所需的權(quán)利,即可運用。 4.2.4 讀卡 問題:在輸入初始化的登錄名和密碼后,出現(xiàn)如圖圖4-6所示的異常報告: 圖4-6 異常報告 分析解決:由于在登錄的時候,需要讀寫“/SD”目錄下的數(shù)據(jù)。在手機(jī)上插入SD卡,即可正常的運行。 附件1 英中翻譯—Androdi平臺介紹 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等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩