BluetoothAdapter mAdapter= BluetoothAdapter.getDefaultAdapter();
2、打開藍牙
if(!mAdapter.isEnabled()){
//彈出對話框提示用戶是後打開
Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, REQUEST_ENABLE);
//不做提示,強行打開
// mAdapter.enable();
}
3、搜索設備
1)第一步,mAdapter.startDiscovery()
2)定義BroadcastReceiver,
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//找到設備
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
Log.v(TAG, "find device:" + device.getName()
+ device.getAddress());
}
}
//搜索完成
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED
.equals(action)) {
setTitle("搜索完成");
}
}
}
};
這樣,沒當查找到新設備或是搜索完成,相應的操作都在上段代碼的兩個if裏執行了,不過前提是你要先註冊
BroadcastReceiver,具體代碼如下
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mReceiver, filter);
(這段代碼,一般寫在onCreate()裏..)
4、建立連接
首先Android sdk(2.0以上版本)支持的藍牙連接是通過BluetoothSocket建立連接,服務器端(BluetoothServerSocket)和客戶端(BluetoothSocket)需指定同樣的UUID,才能建立連接,因爲建立連接的方法會阻塞線程,所以服務器端和客戶端都應啓動新線程連接
1)服務器端:
//UUID格式一般是"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"可到
//http://www.uuidgenerator.com 申請
BluetoothServerSocket serverSocket = mAdapter. listenUsingRfcommWithServiceRecord(serverSocketName,UUID);
serverSocket.accept();
2)客戶端:
//在BroadcastReceiver獲取了BLuetoothDevice
BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID);
clienSocket.connect();
5、數據傳遞
通過以上操作,就已經建立的BluetoothSocket連接了,數據傳遞是通過流的形式
1)獲取流inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
2)寫出、讀入