《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > Android上藍牙通信功能開發:BluetoothChat例程分析
Android上藍牙通信功能開發:BluetoothChat例程分析
摘要: Bluetooth是幾乎現在每部手機標準配備的功能,多用于耳機mic等設備與手機的連接,除此之外,還可以多部手機之間建立bluetooth通信,本文就通過SDK中帶的一個聊天室的例程,來介紹一下Android上的Bluetooth的開發。
Abstract:
Key words :

  1. 概述

  Bluetooth 是幾乎現在每部手機標準配備的功能,多用于耳機 mic 等設備與手機的連接,除此之外,還可以多部手機之間建立 bluetooth 通信,本文就通過 SDK 中帶的一個聊天室的例程,來介紹一下 Android 上的 Bluetooth 的開發。

  在 Android1.x 的時候,相關 API 非常不完善,還不能簡單的使用 Bluetooth 開發,有一個開源項目可以幫助程序員使用、開發藍牙,支持直接方法 bluetooth 協議棧。在 Android2 以后,框架提供了一些官方 API 來進行藍牙的通信,但目前的程序也比較不完善。本文主要討論 Android2 后的 Bluetooth 通信的 API 使用方法。

  首先看聊天室的效果圖:

Android上<a class=藍牙通信功能開發:BluetoothChat例程分析" height="317" src="http://files.chinaaet.com/images/20110809/38a6aba3-3b6c-4287-a8bd-108dd07c4440.jpg" width="192" />

  2. Bluetooth 通信 API 介紹

  2.1. Bluetooth 通信過程

  

 

  2.2. Bluetooth API 的主要方法

  BluetoothAdapter 類

  BluetoothAdapter.getDefaultAdapter() :得到本地默認的 BluetoothAdapter ,若返回為 null 則表示本地不支持藍牙;

 

  isDiscovering() :返回設備是否正在發現周圍藍牙設備;

  cancelDiscovery() :取消正在發現遠程藍牙設備的過程;

  startDiscovery() :開始發現過程;

  getScanMode() :得到本地藍牙設備的 Scan Mode ;

  getBondedDevices() :得到已配對的設備;

  isEnabled() :藍牙功能是否啟用。

  當發現藍牙功能未啟用時,如下調用設置啟用藍牙:

 

  如果發現當前設備沒有打開對外可見模式,則傳遞 Intent 來調用打開可發現模式,代碼如下:

 

  BluetoothDevice 類,此為對應的遠程藍牙 Device

  createRfcommSocketToServiceRecord() :創建該 Device 的 socket 。

  BluetoothSocket 類

  connect() :請求連接藍牙。

  getInputStream() :得到輸入流,用于接收遠程方信息。

  getOutputStream() :得到輸出流,發送給遠程方的信息。

  close() :關閉藍牙連接。

  InputStream 類:

  read(byte[]) :以阻塞方式讀取輸入流。

  OutputStream 類:

  write(byte[]) :將信息寫入該輸出流,發送給遠程。

 

  3. BluetoothChat 例程分析

  Google 提供的關于 Bluetooth 開發的例程為 Bluetoothchat ,使用截圖可見本文一開始。除去配置及 ui 定義等文件,主程序文件共三個: BluetoothChat.java 、 BluetoothChatService.java 以及 DeviceListActivity.java ,詳細功能可見下面的描述。

  3.1. 整體調用關系序列圖

  

 

  3.2. BluetoothChat.java

  例程的主 Activity 。 onCreate() 得到本地 BluetoothAdapter 設備,檢查是否支持。 onStart() 中檢查是否啟用藍牙,并請求啟用,然后執行 setupChat() 。 setupChat() 中先對界面中的控件進行初始化增加點擊監聽器等,然創建 BluetoothChatService 對象,該對象在整個應用過程中存在,并執行藍牙連接建立、消息發送接受等實際的行為。

  3.3. BluetoothChatService.java

  public synchronized void start() :

  開啟 mAcceptThread 線程,由于樣例程序是僅 2 人的聊天過程,故之前先檢測 mConnectThread 和 mConnectedThread 是否運行,運行則先退出這些線程。

  public synchronized void connect(BluetoothDevice device) :

  取消 CONNECTING 和 CONNECTED 狀態下的相關線程,然后運行新的 mConnectThread 線程。

  public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) :

  開啟一個 ConnectedThread 來管理對應的當前連接。之前先取消任意現存的 mConnectThread 、 mConnectedThread 、 mAcceptThread 線程,然后開啟新 mConnectedThread ,傳入當前剛剛接受的 socket 連接。最后通過 Handler 來通知 UI 連接 OK 。

  public synchronized void stop() :

  停止所有相關線程,設當前狀態為 NONE 。

  public void write(byte[] out) :

  在 STATE_CONNECTED 狀態下,調用 mConnectedThread 里的 write 方法,寫入 byte 。

  private void connectionFailed() :

  連接失敗的時候處理,通知 ui ,并設為 STATE_LISTEN 狀態。

  private void connectionLost() :

  當連接失去的時候,設為 STATE_LISTEN 狀態并通知 ui 。

  內部類:

  private class AcceptThread extends Thread :

  創建監聽線程,準備接受新連接。使用阻塞方式,調用 BluetoothServerSocket.accept() 。提供 cancel 方法關閉 socket 。

  private class ConnectThread extends Thread :

  這是定義的連接線程,專門用來對外發出連接對方藍牙的請求和處理流程。構造函數里通過 BluetoothDevice.createRfcommSocketToServiceRecord() ,從待連接的 device 產生 BluetoothSocket. 然后在 run 方法中 connect ,成功后調用 BluetoothChatSevice 的 connected() 方法。定義 cancel() 在關閉線程時能夠關閉相關 socket 。

  private class ConnectedThread extends Thread :

  這個是雙方藍牙連接后一直運行的線程。構造函數中設置輸入輸出流。 Run 方法中使用阻塞模式的 InputStream.read() 循環讀取輸入流, 然后 post 到 UI 線程中更新聊天消息。也提供了 write() 將聊天消息寫入輸出流傳輸至對方,傳輸成功后回寫入 UI 線程。最后 cancel() 關閉連接的 socket 。

  3.4. DeviceListActivity.java

  該類包含 UI 和操作的 Activity 類,作用是得到系統默認藍牙設備的已配對設備列表,以及搜索出的未配對的新設備的列表。然后提供點擊后發出連接設備請求的功能。

  除了 RFCOMM 通信外, Android 上關于 Bluetooth 的還有 SDP 、 GAP 、耳機設備連接等內容,本文還未涉及,將會隨著藍牙相關 API 在新版本中的進一步完善來學習使用。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美黑人在线观看| 激情91久久| 国产精品高精视频免费| 亚洲一二三区精品| 欧美日韩国产91| 国产亚洲欧美日韩在线一区| 亚洲国产婷婷综合在线精品| 一区二区电影免费观看| 一本久久青青| 美女主播精品视频一二三四| 亚洲高清视频一区二区| 欧美日韩一区二区三区视频| 中文欧美字幕免费| 先锋影音一区二区三区| 亚洲欧洲美洲综合色网| 久久精品五月婷婷| 在线成人免费视频| 欧美丝袜一区二区| 国产精品va在线| 国产精品区一区二区三区| 久久福利视频导航| 欧美午夜精品理论片a级大开眼界| 欧美1区2区视频| 欧美99久久| 国产精品一级久久久| 国产精品电影在线观看| 在线视频日韩| 亚洲欧美www| 欧美三级网址| 欧美日韩国产美| 亚洲一区二区在线免费观看| 亚洲欧美日韩精品久久奇米色影视| 激情文学综合丁香| 国产精品网站在线观看| 亚洲电影中文字幕| 在线视频亚洲一区| 国产精品久久久久久一区二区三区| 免费高清在线视频一区·| 国产精品一级久久久| 欧美+亚洲+精品+三区| 日韩视频一区二区三区| 欧美视频一区二区| 久久久久久9999| 久久久精品2019中文字幕神马| 一区二区三区高清视频在线观看| 亚洲激情一区二区三区| 午夜在线成人av| 国产精品av久久久久久麻豆网| 国产欧美日韩一区二区三区| 国产亚洲日本欧美韩国| 亚洲视频在线观看| 性欧美暴力猛交另类hd| 欧美视频日韩视频在线观看| 欧美激情欧美狂野欧美精品| 久久精品视频在线看| **欧美日韩vr在线| 日韩一级二级三级| 亚洲欧美日韩国产中文在线| 欧美性大战久久久久久久| 亚洲欧美综合另类中字| 欧美一二三区在线观看| 久久亚洲春色中文字幕| 韩日视频一区| 99ri日韩精品视频| 久久综合精品一区| 国产精品素人视频| 日韩视频在线观看国产| 午夜在线观看欧美| 欧美性猛交xxxx免费看久久久| 国产欧美日韩亚洲| 一本大道久久精品懂色aⅴ| 性欧美videos另类喷潮| 免费久久99精品国产自| 亚洲成人在线网| 精品动漫一区| 欧美日韩精品一区二区| 欧美国产日本| 国产日产精品一区二区三区四区的观看方式| 亚洲国产另类精品专区| 欧美一区二区三区在线观看视频| 国产精品乱码久久久久久| 欧美日韩成人精品| 国产一区二区三区直播精品电影| 欧美视频中文字幕在线| 午夜久久一区| 亚洲一区二区三区精品在线观看| 欧美福利电影在线观看| 亚洲成人在线网站| 国产精品视频99| 亚洲国产99精品国自产| 亚洲欧美视频| 老牛嫩草一区二区三区日本| 国产精品日韩欧美一区二区| 禁断一区二区三区在线| 国产欧美日韩视频| 国产精品国产三级国产普通话99| 欧美成人精品福利| 美女精品视频一区| 亚洲无线一线二线三线区别av| 国产伦精品一区二区三区高清| 在线看视频不卡| 亚洲女人天堂av| 美女图片一区二区| 在线免费观看视频一区| 欧美日韩美女在线观看| 欧美视频精品在线| 国产精品日韩久久久久| 亚洲日韩第九十九页| 蜜桃精品久久久久久久免费影院| 影音先锋中文字幕一区| 国内精品嫩模av私拍在线观看| 亚洲欧洲另类国产综合| 国产精品亚洲аv天堂网| 欧美四级在线观看| 亚洲二区三区四区| 91久久精品国产| 欧美一区日韩一区| 欧美日韩视频一区二区| 国内伊人久久久久久网站视频| 国产精品乱码人人做人人爱| 久久夜色精品国产噜噜av| 国产在线拍揄自揄视频不卡99| 国产日韩欧美一区在线| 亚洲黄色免费| 亚洲一区精品在线| 久久久综合香蕉尹人综合网| 欧美激情视频一区二区三区免费| 日韩亚洲一区在线播放| 日韩图片一区| 欧美~级网站不卡| 蜜臀a∨国产成人精品| 久久亚洲精品视频| 国产精品呻吟| 国产视频精品网| 另类成人小视频在线| 国产综合久久久久影院| 国产精品日韩精品欧美精品| 国产亚洲精品资源在线26u| 欧美在线视频一区二区三区| 狠狠色伊人亚洲综合网站色| 亚洲黄一区二区| 亚洲免费黄色| 亚洲精品四区| 久久成人国产| 免费看黄裸体一级大秀欧美| 国产精品美女久久久久久2018| 久久精品国产在热久久| 亚洲高清123| 国产欧美日韩视频一区二区三区| 国产综合在线视频| 久久精品一本久久99精品| 欧美激情一区二区三区成人| 一区二区三区高清在线| 欧美在线视频a| 欧美日韩国产一区二区三区地区| 欧美综合激情网| 欧美日本二区| 精品动漫3d一区二区三区免费| 欧美欧美天天天天操| 在线播放亚洲一区| 亚洲国产高清在线观看视频| 一本高清dvd不卡在线观看| 好吊妞**欧美| 国产精品日韩精品欧美在线| 国内外成人免费视频| 午夜精品福利一区二区三区av| 欧美综合第一页| 欧美mv日韩mv国产网站| 欧美a级在线| 国产精品视频自拍| 久久男人资源视频| 亚洲人成在线播放网站岛国| 黄色一区三区| 亚洲精品麻豆| 欧美专区日韩专区| 国产欧美视频一区二区| 海角社区69精品视频| 亚洲国产天堂网精品网站| 另类图片综合电影| 麻豆国产精品777777在线| 国产亚洲午夜高清国产拍精品| 国产精自产拍久久久久久| 亚洲午夜黄色| 久久久久国产成人精品亚洲午夜| 午夜精品久久久久久| 在线看视频不卡| 在线精品视频一区二区三四| 欧美激情精品久久久久久免费印度| 欧美freesex交免费视频| 欧美午夜免费影院| 国产精品久久毛片a| 欧美理论视频| 国产精品v片在线观看不卡| 国产亚洲欧美激情| 亚洲欧洲三级| 亚洲一区二区网站| 亚洲国产精品日韩| 欧美精品在欧美一区二区少妇| 亚洲国产经典视频| 久久大逼视频| 亚洲国产另类久久精品| 免费人成网站在线观看欧美高清| 国产精品欧美一区二区三区奶水| 欧美国产精品va在线观看| 亚洲欧洲一区二区三区在线观看| 91久久精品网| 亚洲精品麻豆| 99精品国产在热久久婷婷| 欧美视频免费看| 久久九九国产精品怡红院| 久久人人97超碰精品888| 国产欧美一区二区精品忘忧草| 久久久精彩视频| 国产精品老牛| 久久成年人视频| 亚洲精品视频免费观看| 国模私拍视频一区| 亚洲国产成人tv| 国产日韩欧美综合在线| 久久久久国产一区二区三区| 欧美激情欧美狂野欧美精品| 性欧美超级视频| 欧美日本二区| 国产精品一区一区| 国产在线观看一区| 欧美视频在线看| 欧美视频在线一区二区三区| 另类国产ts人妖高潮视频| 亚洲欧美中日韩| 久久精品91久久久久久再现| 国产精品久久国产精麻豆99网站| 欧美欧美在线| 久久精品91| 国产在线国偷精品产拍免费yy| 精品99一区二区| 亚洲精品免费一二三区| 欧美国产精品中文字幕| 亚洲欧美日韩一区二区三区在线观看| 久久se精品一区精品二区| 美女主播一区| 国产精品一区二区在线观看不卡| 欧美区一区二| 欧美日产国产成人免费图片| 99精品国产在热久久| 亚洲精品美女在线观看| 久久久国产午夜精品| 久久精品国产一区二区电影| 亚洲精品视频啊美女在线直播| 欧美一区二区三区四区在线观看| 国产亚洲精品高潮| 国产精品www994| 亚洲免费影院| 亚洲少妇最新在线视频| 欧美影院午夜播放| 国产日韩精品视频一区二区三区| 欧美1区2区视频| 久久香蕉精品| 国产精品一区视频| 欧美成人精品| ●精品国产综合乱码久久久久| 久久视频免费观看| 久久亚洲精品中文字幕冲田杏梨| 欧美国产精品va在线观看| 国产精品久久久久久久午夜片| 久久综合福利| 欧美电影免费观看高清完整版| 狠狠做深爱婷婷久久综合一区| 亚洲欧美日产图| 国产精品久久久久久久午夜| 影视先锋久久| 亚洲专区在线视频| 午夜精品视频在线观看一区二区| 国产精品系列在线| 国内精品模特av私拍在线观看| 亚洲直播在线一区| 欧美在线观看视频一区二区| 国产一区二区三区四区三区四| 欧美一区永久视频免费观看| 久久综合电影一区| 欧美一区亚洲二区| 久久久久综合一区二区三区| 亚洲第一福利视频| 国产麻豆91精品| 国产视频观看一区| 欧美成人精品福利| 影音先锋另类| 欧美三级午夜理伦三级中视频| 韩日精品视频一区| 99在线精品观看| 欧美在线一区二区三区| 日韩亚洲精品电影| 一区二区三区视频在线| 日韩视频在线观看国产| 国产精品对白刺激久久久| 伊人久久大香线蕉av超碰演员| 伊人久久男人天堂| 在线视频日韩精品| 中文精品视频一区二区在线观看| 国产精品青草久久久久福利99| 欧美精品在线观看播放| 国产日韩精品视频一区| 老牛嫩草一区二区三区日本| 亚洲第一精品福利| 免费人成网站在线观看欧美高清| 久久久99久久精品女同性| 欧美在线不卡视频| 亚洲电影免费观看高清| 亚洲欧美另类在线| 国产欧美日韩高清| 欧美色精品在线视频| 一本色道久久88亚洲综合88| 欧美1区免费| 久久精品视频在线| 欧美精品在线观看91| 在线精品一区二区| 国产一区二区三区精品久久久| 在线观看日韩av先锋影音电影院| 欧美中文字幕不卡| 久久国产加勒比精品无码| 亚洲欧美国产一区二区三区| 日韩视频免费在线观看| 亚洲在线一区二区| 欧美在线视频网站| 欧美亚洲综合网| 99精品国产一区二区青青牛奶| 日韩网站免费观看| 欧美精品 日韩| 国产主播一区二区三区四区|