Android安卓的藍(lán)牙數(shù)據(jù)傳輸_第1頁
Android安卓的藍(lán)牙數(shù)據(jù)傳輸_第2頁
Android安卓的藍(lán)牙數(shù)據(jù)傳輸_第3頁
Android安卓的藍(lán)牙數(shù)據(jù)傳輸_第4頁
Android安卓的藍(lán)牙數(shù)據(jù)傳輸_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

8.8.想要開發(fā)一個(gè)通過藍(lán)牙傳輸數(shù)據(jù)的安卓應(yīng)用程序,理所當(dāng)然你需要從安卓開發(fā)者的藍(lán)牙頁面開始,那里面詳盡描述了所有必需的步驟,包括設(shè)備搜尋、配對、客戶端/服務(wù)器套接字和RFCOMM通道等。嘿嘿別急,在開始討論套接字和線程編程之前還需要先執(zhí)行一個(gè)基礎(chǔ)的藍(lán)牙操作,讓我們來考慮一個(gè)取巧的做法,基于安卓的一個(gè)最重要的特性:設(shè)備的默認(rèn)藍(lán)牙應(yīng)用提供的由一個(gè)給定應(yīng)用發(fā)送用戶到另一個(gè)應(yīng)用。這樣做將由安卓系統(tǒng)會替我們完成所有底層工作。importandroid.bluetooth.BluetoothAdapter;//...//函數(shù)中代碼//檢查設(shè)備是否支持藍(lán)牙<!--EndFragment-->BluetoothAdapterbtAdapter=BluetoothAdapter.getDefaultAdapter();2.if(btAdapter==null){//設(shè)備不支持藍(lán)牙//告訴用戶我們無能為力}以上是我們需要執(zhí)行的第一次檢查。完成之后,讓我們看看它如何用我們的應(yīng)用啟動藍(lán)牙。在過去的一篇關(guān)于手機(jī)短信編程的文章里,我們談到關(guān)于隱式意圖(ImplicitIntent)允許我們指定希望系統(tǒng)處理的動作。然后安卓會顯示一個(gè)單選列表,列出所有能夠完成我們要求的應(yīng)用。下面是一段示例代碼://啟動Android選擇器Intentintent=newIntent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file_to_transfer));//...startActivity(intent);在這段代碼中,我們要求安卓系統(tǒng)發(fā)送一個(gè)文本文件。然后系統(tǒng)會顯示所有已安裝能夠處理這一意圖的活動列表,如下圖所示:我們可以看到,這個(gè)基礎(chǔ)藍(lán)牙應(yīng)用在這個(gè)列表的最上端。我們可以點(diǎn)擊它,當(dāng)然也可以讓用戶選擇其他活動去完成傳送。我想,如果我們增加一點(diǎn)用戶友好體驗(yàn),可以自動啟動那個(gè)藍(lán)牙應(yīng)用,而不是簡單地丟出一張列表甩在用戶臉上,把它和其他不必要的應(yīng)用魚龍混雜在一起讓用戶玩找茬……要怎么做呢?一個(gè)辦法是使用安卓的PackageManager,如下面代碼所示://打開對應(yīng)的列表PackageManagerpm=getPackageManager();ListappsList=pm.queryIntentActivities(intent,0);4.if(appsList.size()>0{6.//處理}PackageManger中的queryintentActivities()方法返回一個(gè)列表,其中內(nèi)容正是我們前面看到的那張圖中的所有選項(xiàng),用迭代器遍歷這個(gè)列表每個(gè)Resolveinf。對象里封裝著我們需要的信息://選擇藍(lán)牙StringpackageName=null;StringclassName=null;4.booleanfound=false;5.for(ResolveInfoinfo:appsList){packageName=info.activityInfo.packageName;if(packageName.equals("com.android.bluetooth")){className=info.activityI;found=true;11.break;//找到,結(jié)束查找}}if(!found){Toast.makeText(this,R.string.blu_notfound_inlist,Toast.LENGTH_SHORT).show();//退出}這段代碼之后,我們擁有了自動調(diào)用藍(lán)牙活動的必要信息://設(shè)置啟動藍(lán)牙intentintent.setClassName(packageName,className);startActivity(intent);我們所做的是使用包和其對應(yīng)的類(在前面檢索到的)。我們會對上面的代碼很好奇,可能不知道“com.android.bluetooth”包的類名。如果我們將其打印出來會看到這些:“com.broadcom.bt.app.opp.OppLauncherActivity“OPP代表對象推送模式,是允許無線共享文件的系統(tǒng)組件。看起來功德圓滿了,但為了上述所有代碼真正能夠使用,藍(lán)牙不僅僅需要設(shè)備支持也要由用戶在設(shè)置里啟用。那么我們想要做的第一件事情之一,就是要求用戶啟用藍(lán)牙一段時(shí)間(有多長?我們認(rèn)為必要的那么長,在這里是300秒):importandroid.bluetooth.BluetoothAdapter;//...3.//設(shè)備可被發(fā)現(xiàn)持續(xù)時(shí)間inalintDISCOVER_DURATION=300;2.//請求碼<spanstyle="font-family:Calibri;"〉(requestcode),</span〉<spanstyle="font-family:宋體;"〉必須大于0</span〉<!--EndFragment--〉privatestaticfinalintREQUEST_BLU=1;//...publicvoidenableBlu(){//啟動設(shè)備搜索——<spanstyle="font-family:Calibri;"〉</span〉<spanstyle="font-family:宋體;"〉這會自動啟用藍(lán)牙</span〉<!--EndFragment--〉Intentdiscoveryintent=newIntent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoveryIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,DISCOVER_DURATION);startActivityForResult(discoveryIntent,REQUEST_BLU);}一旦我們指定我們希望-從我們的活動得到一個(gè)返回值,調(diào)用startActivityForResult()用戶會看到下面的對話框:現(xiàn)在每當(dāng)活動結(jié)束后會返回請求碼,即我們已送出的第二參數(shù):REQUEST_BLU,同時(shí)返回?cái)?shù)據(jù)和我們的主活動通過onActivityResult()方法返回的結(jié)果碼。我們知道請求碼,因此必須核對。至于結(jié)果代碼?很簡單:如果用戶回答“否”,上述要求的權(quán)限(或如果出現(xiàn)一個(gè)錯(cuò)誤),結(jié)果碼將會是RESULT_CANCELED。相反地如果用戶接受,藍(lán)牙文檔指出結(jié)果碼等于這設(shè)備處于可被發(fā)現(xiàn)狀態(tài)的(即DISCOVER_DURATION,即300)的持續(xù)時(shí)間。處理上述藍(lán)牙對話框的代碼如下://startActivityForResult執(zhí)行完成...protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(resultCode==DISCOVER_DURATION&&requestCode==REQUEST_BLU){

7.8.//這里編寫你的代碼9.}10.else{//取消或出錯(cuò)Toast.makeText(this,R.string.blu_cancelled,Toast.LENGTH_SHORT).show();}1.<uses-permissionandroid:name="android.permission.BLUETOOTH"/><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"/>

好了,一切準(zhǔn)備妥當(dāng)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論