基于Android的智能手機遠程監(jiān)控軟件畢業(yè)設計說明書(論文)
《基于Android的智能手機遠程監(jiān)控軟件畢業(yè)設計說明書(論文)》由會員分享,可在線閱讀,更多相關《基于Android的智能手機遠程監(jiān)控軟件畢業(yè)設計說明書(論文)(55頁珍藏版)》請在裝配圖網上搜索。
1、 JIANGSU UNIVERSITY OF TECHNOLOGY 本科畢業(yè)設計(論文) 基于Android的智能手機遠程監(jiān)控軟件 學院名稱: 電氣信息工程學院 專 業(yè): 通信工程
2、 班 級: 09通信2W 學 號: 09313218 姓 名: 指導教師姓名: 指導教師職稱: 二〇一三 年 六 月 基于Android的智能手機遠程監(jiān)控軟件 The Design of remote monitoring software based on Android smartphones I 江蘇理工
3、學院畢業(yè)設計說明書(論文) 目 錄 摘 要 I Abstract I 緒 論 2 第1章 課題分析與方案論證 3 1.1 課題任務分析 3 1.2 方案論證 3 第2章 硬件電路 6 2.1 CDMA網關模塊硬件設計 6 2.2 電源電路 7 2.3 LED燈指示電路 7 2.4 CDMA2000網關UART接口電路 7 2.5網關模塊PCB設計 8 第3章 軟件設計 9 3.1 CDMA終端監(jiān)控節(jié)點軟件設計流程圖 9 3.2 Android平臺監(jiān)控軟件設計流程圖 10 3.3 Android監(jiān)控軟件詳細設計與實現 11 3.3.1 登
4、錄界面設計與實現 11 3.3.2 地址配置界面設計與實現 14 3.3.3 顯示界面設計與實現 17 3.3.4 控制界面設計與實現 19 第4章 軟件調試 21 4.1 非代碼部分調試 21 4.1.1 JAVA環(huán)境配置 21 4.1.2 Android模擬器 21 4.1.3 系統剩余空間 22 4.2 代碼部分調試 22 4.2.1 活動注冊 22 4.2.2 安裝軟件 23 4.2.3 授權問題 24 4.2.4 讀卡 24 附件1 英中翻譯—Androdi平臺介紹 25 Android 2.3.4 Platform 25 安卓平臺2.3.4 30
5、附件2 部分Android應用程序 36 參考文獻 48 致 謝 49 江蘇理工學院畢業(yè)設計說明書(論文) 緒 論 Android是Google發(fā)布的一款基于Linux核心的手機操作系統,Android是一種開源的、免費的移動計算軟件平臺,目前基于Android智能手機的用戶數量眾多。在智能手機操作系統中市場占有率最高。 Android平臺最大的優(yōu)勢就是其開放性,開放的平臺允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應用的日益豐富,一個嶄新的平臺也將很快走向成熟。 豐富的硬件,這一點還是與
6、Android平臺的開放性相關,由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色, 卻不會影響到數據同步、甚至軟件的兼容。 本課題是基于Android智能手機進行遠程監(jiān)控程序及其硬件監(jiān)控終端開發(fā)的。移動性強 ,真正做到隨時隨地為用戶提供服務。 本說明書共分為4章,第一章課題分析與方案論證;第二章對監(jiān)控終端硬件進行了說明;第三章對詳細的對應用軟件進行了分析;第四章有針對性的列舉了Android應用軟件在調試過程中出現的問題,并對問題作出了分析。設計的最終成果是能通過Android智能手機顯示遠程終端傳來的數據,并通過指令實現對遠程終端的控制。
7、 第1章 課題分析與方案論證 1.1 課題任務分析 本課題主要實現用Android智能手機顯示遠程監(jiān)控終端傳來的數據,并通過指令實現對遠程終端的控制。 谷歌公司為了方便用戶Android平臺上開發(fā)軟件,使用了使用人數最多的JAVA語言作為主要的開發(fā)語言,開發(fā)環(huán)境是IBM開發(fā)的開源軟件Ecplise。在開發(fā)Android應用軟件軟件之前,需要首先配置好開發(fā)環(huán)境,這其中包括Eclipse軟件下載(免安裝),JAVA虛擬機的安裝,android開發(fā)包SDK的下載并作為插件添加到Eclipse中。 運用實驗室的CDMA終端模塊,該模塊通過GPRS網絡發(fā)送數
8、據給具有良好移動性的Android手機,Android手機將接收到的數據處理后顯示出來,通過GPRS網絡發(fā)送指令給終端模塊從而控制終端模塊。 本設計研究并實現了通過無線設備獲取遠程終端監(jiān)測信息。研究內容主要包括Android的系統架構、應用開發(fā)環(huán)境建立、智能手機遠程監(jiān)控應用軟件開發(fā)、遠程監(jiān)控網關軟硬件設計。模塊軟件功能上包括:用戶根據需要進行數據檢測、接口選擇與配置;設備地址配置。 基于應用的Android遠程監(jiān)控管理軟件用于監(jiān)控遠程基站的溫濕度環(huán)境。實現對遠程基站檢測節(jié)點終端的溫度、濕度等狀態(tài)參數的收集與管理。軟件運行環(huán)境是Android2.2操作系統及其以上版本。具有掉電后臺數據保護功
9、能,適當修改可被廣泛用于監(jiān)測和管理遠程數據終端。 1.2 方案論證 盡管沒有在課堂上系統的學習過JAVA語言及Android軟件開發(fā)技能,但是由于JAVA語言設計的比C++簡潔的很多,在有C語言的基礎上自學JAVA語言,難度不是很大,谷歌為了推廣Android,不但推出了便于使用的SDK開發(fā)包,還編寫了大量幫助文檔,同時也給出了一定數量的使用示例源代碼,結合實驗室的CDMA終端模塊,通過價格合適的GPRS網絡傳送數據。本次方案論證主要對數據傳送方式的選擇。 方案一: 1. Android手機收發(fā)數據方案 選用通用的短信方式收發(fā)數據,根據特定的數據協議,從接收到的短信中提取數據,經過
10、處理去掉數據中的控制部分,將相關的監(jiān)測數據提取出來,在應用程序界面上給予顯示,同時通過短信的方式,按照數據傳輸協議,以規(guī)定的方式傳送控制指令到CDMA控制終端。 2. CDMA監(jiān)控終端收發(fā)數據方案 通過的短信方式收發(fā)數據,間歇性質的采集周圍環(huán)境的溫濕度數據,根據數據傳輸協議,將采集到的數據按照特定的格式,通過短信的方式傳輸數據給Android智能手機。同時根據特定的數據協議,從接收到的短信中提取數據,經過處理去掉數據中的控制部分,得到Android智能手機發(fā)送的控制指令,根據指令的內容做出相關的反應。 方案二: 1. Android手機收發(fā)數據方案 選用網絡的方式收發(fā)數據,購買一個固
11、定的IP地址,在某個可以聯入網絡的設備上開發(fā)一款服務器軟件(比如PC),該服務器軟件具有的功能是儲存相關設備的IP地址,并且相關設備可以通過該服務器軟件系統查詢其他設備的IP地址。在Android手機聯入網絡的時候,可以得到一個隨機的IP地址,Android手機向具有固定IP地址的設備匯報自身的IP地址,并且查詢CDMA監(jiān)控終端的IP地址。查詢成功后,嘗試基于IP地址的通信,嘗試成功后,即可進行通信。根據特定的數據協議,從信息中提取數據,經過處理去掉數據中的控制部分,將相關的監(jiān)測數據提取出來,在應用程序界面上給予顯示,同時IP通信方式,按照數據傳輸協議,以規(guī)定的方式傳送控制指令到CDMA控制終
12、端。 2. CDMA監(jiān)控終端收發(fā)數據方案 在CDMA監(jiān)控終端接入網絡的時候,可以得到一個隨機的IP地址,CDMA監(jiān)控終端向具有固定IP地址的設備匯報自身的IP地址,等待其余設備接入請求,接收到請求后,嘗試基于IP地址的通信,嘗試成功后,間歇性質的采集周圍環(huán)境的溫濕度數據,根據數據傳輸協議,將采集到的數據按照特定的格式,通過基于IP的通信方式方式傳輸數據給Android智能手機。同時根據特定的數據協議,從接收到數據中,去掉數據中的控制數據,得到Android智能手機發(fā)送的控制指令,根據指令的內容做出相關的反應。 綜合上述兩種方案,區(qū)別在于所傳輸數據的方式不同。 方案一:選用通用通用的短
13、信方式傳送數據,優(yōu)點是初期開發(fā)難度、工作量較小,成本低廉。缺點是傳輸數據所需要的費用,短信是按條數收費,比起IP采用流量計費的方式要貴。 方案二:采用基于IP的方式收發(fā)數據,優(yōu)點是符合現代的通信潮流,比起短信是按條數收費方式,IP采用流量計費的方式要便宜。缺點是初期開發(fā)難度、工作量均較大,需要投入的硬件成本也高昂。 通過比較我發(fā)現,第一種方案軟、硬較第二種方案簡單,易于開發(fā)實現,且充分利用了Android本身自帶的資源,節(jié)約了成本。為此,我采用第二種方案。 第2章 硬件電路 設計一種合適的GPRS網關的模塊,該模塊具有無線收發(fā)數據的能力。研究內容主要包括Android軟件
14、監(jiān)控平臺的設計,CDMA無線監(jiān)控節(jié)點模塊軟件件接口設計、自定義傳輸協議設計。軟件設計功能上包括:用戶根據需要進行設備地址配置;連網與數據傳輸。 2.1 CDMA網關模塊硬件設計 GPRS網關模塊硬件以CDMA2000為處理器模塊或高功率模塊為核心,RS232、RS485作為用戶設備接口,方便嵌入到用戶設備中。 圖2-1 CDMA模塊硬件設計圖 2.2 電源電路 (1)CDMA2000網關模塊電源設計 圖2-2 CDMA2000網關模塊電源電路 CDMA2000電源電路如圖 2-2 所示。 CC2530
15、模塊的工作電壓為9V,選用穩(wěn)壓芯片進行電壓變換。 2.3 LED燈指示電路 圖2-3 LED燈指示電路 LED電路如圖5所示。LED1作為電源指示燈,有硬件確定。LED2和LED3由接收到的指令控制亮滅。 2.4 CDMA2000網關UART接口電路 通過UART串口電路與電腦進行數據傳輸,通過電腦的屏幕顯示硬件工作狀態(tài),從而方便調試,在實際工作中不需要用到這個部分。 圖2-4 UART接口電路 2.5網關模塊PCB設計 (1)CDMA2000網關模塊PCB圖 圖2-5 GPRS網關PCB圖
16、根據CDMA2000網關模塊的原理圖,繪制出網關模塊 PCB 圖,如圖2-4 所示。 第3章 軟件設計 在本章中,給出了CDMA終端監(jiān)控節(jié)點軟件設計流程圖,給出了Android平臺監(jiān)控軟件設計流程圖,考慮到側重點問題,詳細的說明了Android平臺監(jiān)控軟件的設計。 3.1 CDMA終端監(jiān)控節(jié)點軟件設計流程圖 圖3-1 CDMA終端監(jiān)控節(jié)點軟件設計流程圖 CDMA終端監(jiān)控節(jié)點上電后首先對電路進行初始化處理,讀取用戶信息,讀取成功后不斷的嘗試接入GPRS網絡,聯網成功后,判斷有無指令通過GPRS網絡傳來,若有,指令Aandroid只能手機傳送來的指令;接著查看定時3
17、秒時間是否已到,如果3秒已到,讀取溫濕度信息,讀取成功后,通過GPRS網絡傳送給Android智能手機,由Android只能手機負責信息的顯示。 3.2 Android平臺監(jiān)控軟件設計流程圖 圖3-2 Android平臺監(jiān)控軟件工作流程圖 Android軟件開啟后,輸入正確的用戶名和密碼,可以登錄系統,在系統中可以配置監(jiān)控終端信息,可以通過此軟件發(fā)送信息控制終端平臺,終端平臺每隔三秒鐘發(fā)送信息給手機,手機通過監(jiān)控平臺將信息顯示出來。 3.3 Android監(jiān)控軟件詳細設計與實現 3.3.1 登錄界面設計與實現 進入登錄畫面,在這一過程中用戶輸入相關的個人賬戶信息,輸入完成
18、后點擊登錄按鈕或者點擊修改按鈕,進入相關的界面。如果用戶的個人信息連續(xù)輸入錯誤次數超過3次,軟件自動退出。 圖3-3 登錄界面 在上述圖標中如果輸入用戶名和密碼正確,并且選擇修改密碼選項。進入修改密碼界面。如果兩次輸入的密碼都正確,返回到重新登錄界面。以新的配置信息登錄。如果連續(xù)3次輸入兩個表格中的輸入不一致,退出程序。 關鍵代碼如下: //登錄 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) //如果輸入次數不低于3次,結束。 { finish
20、(); } //搜索是否存在username字符串,-1表示沒有。 if( username.length()!=0&& userpasswd.length()!=0&& (namePosition = pass.indexOf(username) ) >= 0 && ( passwdPosition = pass.indexOf(userpasswd) )>=0 && ( namePosition + username.length() ==
21、 passwdPosition ) ) { Intent intent = new Intent(); //設置Intent對象要啟動的Activity intent.setClass(login.this, SMSReceviedProjectActivity.class); //通過Intent對象啟動另外一個Activity login.this.startActivity(intent); //注銷這個Activity finish(); } else {
22、 Toast.makeText(login.this, "輸入用戶名或密碼有誤", Toast.LENGTH_SHORT).show(); loginTimes++; } } } 用戶可以在登錄的時候,選擇是否修改用戶名和密碼。 圖3-4 修改界面 修改成功后,使用新的用戶名和密碼登錄。 關鍵代碼如下: //修改用戶名或者密碼 public class change extends Activity { private TextView userpasswdChange=null; //新密碼 pri
23、vate EditText userpasswdEditChange=null; private TextView userpasswdChange2=null; //第二次輸入新密碼 private EditText userpasswdEditChange2=null; private Button okButton=null; //確認按鈕 private Button cancelButton = null ; //取消修改 int changeTimes = 0,loginTimes = 0; //記錄輸入次數 /**
24、 Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.change);
25、 userpasswdChange=(TextView)findViewById(R.id.userpasswdChange); userpasswdEditChange=(EditText)findViewById(R.id.userpasswdEditChange); userpasswdChange2=(TextView)findViewById(R.id.userpasswdChange2); userpasswdEditChange2=(EditText)findViewById(R.id.userpa
26、sswdEditChange2); okButton=(Button)findViewById(R.id.okButton); okButton.setOnClickListener(new okButtonListener()); cancelButton=(Button)findViewById(R.id.cancelButton); cancelButton.setOnClickListener(new cancelButtonListener()); }
27、 //確認 class okButtonListener implements OnClickListener { //生成該類的對象,并將其注冊到控件上。如果該控件被用戶按下,就會執(zhí)行onClick方法 @Override public void onClick(View v) { //測試使用,沒有在此處寫代碼。實際應用中需寫入。 } } //取消 class cancelButtonListener implements OnClickListener {
28、 //生成該類的對象,并將其注冊到控件上。如果該控件被用戶按下,就會執(zhí)行onClick方法 @Override public void onClick(View v) { } } } 3.3.2 地址配置界面設計與實現 點擊新建按鈕新建地址信息,地址信息只有在此處輸入時,才會給予修改顯示顯示。個性化的配置地址信息,界面如下: 圖3-5 修改地址信息 關鍵代碼如下: public class AddressOperationDialog extends Dialog { DbDataFactory dbDataFac
29、tory; //數據庫操作類 AddressManagerActivity addressMangerActivity; EditText address;//地址 EditText telnum; //電話號碼 Button add; //添加按鈕 Button cancel; //取消按鈕 //記錄操作數據 MyMessage mymessage; Help help; public AddressOperationDialog(Context context,MyMessage mymessage) { super(c
30、ontext); // TODO Auto-generated constructor stu this.addressMangerActivity=(AddressManagerActivity) context; this.mymessage=mymessage; } protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentVi
31、ew(R.layout.addressoperation); setTitle("添加地址信息"); //初始化 init(); } //初始化 private void init() { // TODO Auto-generated method stub help=new Help(); dbDataFactory=new DbDataFactory(); address=(EditText)findViewById(R.id.ad
32、dress); telnum=(EditText)findViewById(R.id.telnum); //判斷是操作還是修改 if(null!=mymessage) { //更新的時候 將信息顯示到控件 address.setText(mymessage.getAddress()); telnum.setText(mymessage.getTelnum()); //號碼不可更改 } cance
33、l=(Button) findViewById(R.id.cancel); cancel.setOnClickListener(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
34、() { public void onClick(View v) { // TODO Auto-generated method stub if(isEmptyData()) { //空數據給出提示 help.ToastMessage(addressMangerActivity, R.string.emptydata, 2000); }else { //不是空數據 MyMessage newMessage=null; Message msg=new
35、Message(); if(null==mymessage) { //新增 newMessage=getdata(0); msg.what=(int)dbDataFactory.addMyMessage(addressMangerActivity,newMessage ); dismiss(); }else { //更新 newMessage=getdata(mymessage.get_id()); dbDataFactory.updateMyMess
36、age(addressMangerActivity,newMessage ); dismiss(); } //回調addressMangerActivity的updateDataHandler 更新數據 addressMangerActivity.updateDataHandler.sendMessage(msg); } } }); } //獲取數據 private MyMessage getdata(int id) { // TODO Auto-generated method stub
37、 return new MyMessage(id, telnum.getText().toString(), address.getText().toString(),""); } private boolean isEmptyData() { // TODO Auto-generated method stub if((telnum.getText().toString().trim().length()!=0) &&(address.getText().toString().trim().length()!=0)
38、) { return false; } return true; } } 3.3.3 顯示界面設計與實現 軟件開啟并且配置后,顯示效果如下。從圖中可以看出,該應用程序成功的顯示出了地點、溫濕度、時間等信息,達到了設計要求。 圖3-6 監(jiān)控顯示 關鍵代碼如下: public Handler smsShowHandler=new Handler() { @SuppressWarnings("unchecked") public void handleMessage(Message msg)
39、 { //取消進度條 if(progressDialog.isShowing()) { progressDialog.cancel(); } //顯示數據 if(msg.what==0) { // //狀態(tài)為0 表示沒有數據 // help.ToastMessage(SMSReceviedProjectActivity.this,R.string.nodata,2000); } else {
40、 //顯示數據 String result=""; myMessageList=(List<MyMessage>) msg.obj; List<MyStatus> mystatus=help.getMyStatus(myMessageList, SMSReceviedProjectActivity.this); for(int i=0;i<mystatus.size();i++)
41、 { result+=mystatus.get(i).getAddress()+":<br/>"+ "|"+mystatus.get(i).getPower()+ "|"+mystatus.get(i).getWaterlevel()+ "|"+mystatus.get(i).getPump()+ "|<font
42、color=\"#ff0000\">"+mystatus.get(i).getStatus()+"</font><br/><br/>"; } tv_show.setText(Html.fromHtml(result)); } Thread thread = new Thread() { @Override
43、 public void run() { int waitingTime = 5000; // ms try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } finall
44、y { //查詢數據、線程啟動 smsInfoThread=new SMSInfoThread(SMSReceviedProjectActivity.this,myMessageList); smsInfoThread.start(); } } }; thread.start(); }; }; 3.3.4 控制界面設計與實現 點擊查詢
45、后啟動查詢界面,用戶在第一個輸入框中輸入想查詢終端地址,在第二個輸入框中輸入指令(目前只支持兩種指令。指令格式是本機號+10001或者10000。比如本機號:12345678900,那么輸入指令是:1234567890011111。其中以10001結尾表示打開LED1,以10000結尾表示關閉LED1)。 圖3-7 控制界面 關鍵代碼如下: public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "控制"); menu.add(0, 1, 1, &qu
46、ot;關于"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch(item.getItemId()) { case 0: search(); //選擇“控制”選項 break; c
47、ase 1: about(); //選擇“關于”選項 break; } return true; } //轉入發(fā)送控制界面,本應用中使用的是谷歌自帶的發(fā)送短信界面 private void search() { Uri uri = Uri.parse("smsto://0800000123"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); inten
48、t.putExtra("sms_body", "格式:本機號+11111"); startActivity(intent); } 第4章 軟件調試 Android系統是一個很復雜的操作系統。在開發(fā)應用軟件的中,出現了各種各樣的問題,包括開發(fā)環(huán)境配置問題,開發(fā)語言使用問題,虛擬機不能模擬實際機器的問題。在本章中,將開發(fā)中遇到的一些錯誤羅列出來。 4.1 非代碼部分調試 4.1.1 JAVA環(huán)境配置 問題:在啟動Android開發(fā)平臺Eclipse時,出現如圖4-1所示錯誤提示:
49、 圖4-1 JAVA環(huán)境配置提示 分析解決:由于Eclipse運行需要JAVA環(huán)境的支持,所以在運行Eclipse之前需要下載并且安裝一個JAVA虛擬機。當然其后的Android程序開發(fā),也用到了JAVA環(huán)境。 4.1.2 Android模擬器 問題:在編寫好測試軟件時,遠行Android模擬器時,出現如圖4-2錯誤提示: 圖4-2 Android模擬器提示 分析解決:虛擬機沒設置好或者版本低與程序中設定的版本??梢栽赪indow-- AVD Manager—new,在彈出的對話框中輸入name信息,在target中選擇模擬器版本??紤]到使用到的API的級別(andr
50、oid各個平臺API的級別不同)和更廣泛的適用性(版本越低使用范圍越大),本文中選擇的是2.2版本。配置如圖4-3所示: 圖4-3 Android模擬器配置 4.1.3 系統剩余空間 問題:在開發(fā)環(huán)境及虛擬機配置好后,仍不能啟動虛擬機,錯誤報告如下: [2013-02-22 15:41:46 - Emulator] NAND: could not write file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\\AndroidEmulator\TMP162.tmp, No space left on device 分析解決:由于Android
51、虛擬機較大,對系統盤有一定大要求,這兒因為系統盤不足,導致Android虛擬機無法啟動,建議系統盤預留1GB空閑空間用于Android開發(fā)。 4.2 代碼部分調試 4.2.1 活動注冊 問題:啟動Android模擬器后,點擊登錄的時候出現如圖4-3所示異常提示: 圖4-3 Android異常提示 上面的提示的很模糊,參考錯誤報告: 圖4-4 Eclipse錯誤報告 分析解決:圖中灰色部分給出了很明顯的提示,沒有發(fā)現可直接使用的“activity class”(找不到com.android.activity.login),在android開發(fā)中為了管理各個“界面
52、”,需要在一個教“AndroidManifest.xml”的文件中注冊活動界面的login。 4.2.2 安裝軟件 問題:在使用Android手機調試的時候,出現如下的錯誤報告 [2013-05-22 22:46:59 - SMSReceviedProject] Installing SMSReceviedProject.apk... [2013-05-22 22:47:01 - SMSReceviedProject] Re-installation failed due to different application signatures. [2013-05-22 22:47:0
53、1 - 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 - SMSReceviedProject] Launch cancele
54、d! 分析解決:因為在Android手機中手工安裝過了這個軟件,Android模擬器不能刪除已經手工安裝的軟件。手動卸載后,重新運行即可。 4.2.3 授權問題 問題:在Android手機上運行軟件時,Ecplipse出現如圖4-4所示錯誤: 圖4-5 Eclipse授權錯誤報告 分析解決:由于安全問題,Android要求安裝運行的軟件必須在安裝的時候提示軟件所需得到的權利,用戶接收后才可獲得相關的權利。由于在設計軟件時,沒有在“AndroidManifest.xml”中聲明所需要的權利,導致軟件在使用一些權利時,被拒絕。可以在“AndroidManifest.xml”中
55、聲明所需的權利,即可運用。 4.2.4 讀卡 問題:在輸入初始化的登錄名和密碼后,出現如圖圖4-6所示的異常報告: 圖4-6 異常報告 分析解決:由于在登錄的時候,需要讀寫“/SD”目錄下的數據。在手機上插入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 to the Android 2.3
56、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 together in the latest
57、 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 Components. If you a
58、re 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 revision number. To
59、 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 10). For
60、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 an API exp
61、osed 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 Library. The
62、 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. The Open
63、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 running A
64、ndroid 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 differs from
65、 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 UsbAccessory from a
66、 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: UsbAccessory acc
67、essory = 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: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。