Android上藍(lán)牙通信功能開發(fā)
1. 概述
本文引用地址:http://butianyuan.cn/article/154455.htmBluetooth 是幾乎現(xiàn)在每部手機(jī)標(biāo)準(zhǔn)配備的功能,多用于耳機(jī) mic 等設(shè)備與手機(jī)的連接,除此之外,還可以多部手機(jī)之間建立 bluetooth 通信,本文就通過 SDK 中帶的一個聊天室的例程,來介紹一下 Android 上的 Bluetooth 的開發(fā)。
在 Android1.x 的時候,相關(guān) API 非常不完善,還不能簡單的使用 Bluetooth 開發(fā),有一個開源項目可以幫助程序員使用、開發(fā)藍(lán)牙,支持直接方法bluetooth 協(xié)議棧。在 Android2 以后,框架提供了一些官方 API 來進(jìn)行藍(lán)牙的通信,但目前的程序也比較不完善。本文主要討論 Android2 后的Bluetooth 通信的 API 使用方法。
首先看聊天室的效果圖:
2. Bluetooth 通信 API 介紹2.1. Bluetooth 通信過程
2.2. Bluetooth API 的主要方法
BluetoothAdapter 類
BluetoothAdapter.getDefaultAdapter() :得到本地默認(rèn)的 BluetoothAdapter ,若返回為 null 則表示本地不支持藍(lán)牙;
isDiscovering() :返回設(shè)備是否正在發(fā)現(xiàn)周圍藍(lán)牙設(shè)備;
cancelDiscovery() :取消正在發(fā)現(xiàn)遠(yuǎn)程藍(lán)牙設(shè)備的過程;
startDiscovery() :開始發(fā)現(xiàn)過程;
getScanMode() :得到本地藍(lán)牙設(shè)備的 Scan Mode ;
getBondedDevices() :得到已配對的設(shè)備;
isEnabled() :藍(lán)牙功能是否啟用。
當(dāng)發(fā)現(xiàn)藍(lán)牙功能未啟用時,如下調(diào)用設(shè)置啟用藍(lán)牙:
if (! mBluetoothAdapter .isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE );
startActivityForResult(enableIntent, REQUEST_ENABLE_BT );
}
復(fù)制代碼
如果發(fā)現(xiàn)當(dāng)前設(shè)備沒有打開對外可見模式,則傳遞 Intent 來調(diào)用打開可發(fā)現(xiàn)模式,代碼如下:
Intent discoverableIntent = new Intent(BluetoothAdapter. ACTION_REQUEST_DISCOVERABLE ); discoverableIntent.putExtra(BluetoothAdapter. EXTRA_DISCOVERABLE_DURATION , 300);
startActivity(discoverableIntent);
復(fù)制代碼
BluetoothDevice 類,此為對應(yīng)的遠(yuǎn)程藍(lán)牙 Device
createRfcommSocketToServiceRecord() :創(chuàng)建該 Device 的 socket 。
BluetoothSocket 類
connect() :請求連接藍(lán)牙。
getInputStream() :得到輸入流,用于接收遠(yuǎn)程方信息。
getOutputStream() :得到輸出流,發(fā)送給遠(yuǎn)程方的信息。
close() :關(guān)閉藍(lán)牙連接。
InputStream 類:
read(byte[]) :以阻塞方式讀取輸入流。
OutputStream 類:
write(byte[]) :將信息寫入該輸出流,發(fā)送給遠(yuǎn)程。
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論