一 、蓝牙开发流程图
图片来自:https://blog.youkuaiyun.com/xj10160/article/details/73655112
二 、 蓝牙开发权限
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
三 、打开蓝牙
BluetoothAdapter bluetoothAdapter;
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (!bluetoothAdapter.isEnabled()) {
// 启动蓝牙
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, BleManager.REQUEST_ENABLE_BT);
}
四 、搜索并展示设备列表
//搜索设备
private void scanLeDevice(final boolean enable) {
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (enable) { //true
handler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false; //设置一个标识
bluetoothAdapter.stopLeScan(mLeScanCallback);
tvSearchLan.setText(R.string.search_again);
}
}, 10 * 1000); //10秒后停止搜索
mScanning = true;
bluetoothAdapter.startLeScan(mLeScanCallback); //开始搜索
tvSearchLan.setText(R.string.searching);
} else {//false
mScanning = false;
bluetoothAdapter.stopLeScan(mLeScanCallback);//停止搜索
tvSearchLan.setText(R.string.search_again);
}
}
//搜索设备的回调
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override