android中蓝牙的使用方法,Android蓝牙开发教程(一)
Android藍牙功能的開發(fā)一直是很多新手頭疼的問題,網(wǎng)上雖然也有很多教程貼,但大多都寫得不全面,不能讓我們真正掌握藍牙開發(fā)的基本知識。本教程主要講解搜索藍牙設備、藍牙設備之間的連接和藍牙之間的通訊三個主要模塊。掌握了這三個,基本就能進行簡單的藍牙開發(fā)了。
先上效果圖
界面比較簡單。主要有三個按鈕,兩個文本和一個列表。三個按鈕主要對應打開藍牙,搜索設備和發(fā)送信息三個功能。兩個文本主要用于提示連接狀態(tài)和發(fā)送的消息以及獲取的消息。列表主要展示搜索到的藍牙設備。源碼在后面會提供。
要用到藍牙的功能,需要先在manifest中聲明一下藍牙的使用權限
打開藍牙設備BluetoothAdapter bTAdatper = BluetoothAdapter.getDefaultAdapter();
if(bTAdatper==null){
Toast.makeText(this,"當前設備不支持藍牙功能",Toast.LENGTH_SHORT).show();
}
if(!bTAdatper.isEnabled()){
/* Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(i);*/
bTAdatper.enable();
}
//開啟被其它藍牙設備發(fā)現(xiàn)的功能
if (bTAdatper.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//設置為一直開啟
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(i);
}
開啟藍牙需要用到BluetoothAdapter,我們可以通過BluetoothAdapter.ACTION_REQUEST_ENABLE 提示用戶開啟,也可以bTAdatper.enable()直接開啟藍牙。
開啟藍牙后,需要設置藍牙為可發(fā)現(xiàn)狀態(tài),讓其他設備能夠搜索到。
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
最后的參數(shù)設置為0,可以讓藍牙設備一直處于可發(fā)現(xiàn)狀態(tài)。當我們需要設置具體可被發(fā)現(xiàn)的時間時,最多只能設置300秒。
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
搜索藍牙設備
成功開啟藍牙設備后,調(diào)用藍牙適配器的startDiscovery方法就可以搜索附近可連接的藍牙設備。另外我們可以調(diào)用cancelDiscovery()來取消搜索。mBluetoothAdapter.startDiscovery();
mBluetoothAdapter.cancelDiscovery()
當我們開始搜索附近藍牙設備的時候,系統(tǒng)會發(fā)出三個搜索狀態(tài)的廣播:BluetoothAdapter.ACTION_DISCOVERY_STARTED、
BluetoothDevice.ACTION_FOUND、
BluetoothAdapter.ACTION_DISCOVERY_FINISHED。
這三個分別對應開始搜索、搜索到設備、搜索結束。因此,我們可以定義一個廣播,來獲取這些狀態(tài)。private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//避免重復添加已經(jīng)綁定過的設備
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
//此處的adapter是列表的adapter,不是BluetoothAdapter
adapter.add(device);
adapter.notifyDataSetChanged();
}
} else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
Toast.makeText(MainActivity.this,"開始搜索",Toast.LENGTH_SHORT).show();
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
Toast.makeText(MainActivity.this,"搜索完畢",Toast.LENGTH_SHORT).show();
}
}
};
在這里,我將搜索到的設備添加到列表中進行展示。
if (device.getBondState() != BluetoothDevice.BOND_BONDED)
系統(tǒng)會保存之前配對過的藍牙設備,這里我們對搜索到的設備進行過濾,判斷是否設備是否已經(jīng)配對過。因此,我們還可以直接獲取之前配對過的設備。
獲取配對過的藍牙設備Set pairedDevices = bTAdatper.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
adapter.add(device);
}
}
至此,我們就成功地獲取到附近的藍牙設備。
歡迎繼續(xù)閱讀下一篇
總結
以上是生活随笔為你收集整理的android中蓝牙的使用方法,Android蓝牙开发教程(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq旋风离线服务器维护,QQ旋风停止服务
- 下一篇: 相似图片搜索原理三(颜色直方图—c++实