Android蓝牙4.0 Ble读写数据详解 -1
因为最近公司在开发智能硬件这一块,于是就学习了下Android 4.0 Ble的蓝牙开发
首先 权限肯定是要的:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
创建Activity 然后写一个Listview 用来展示设备列表 这些我就不写在文档了
其次获取到蓝牙的管理类:
BluetoothManager bluetoothManager = (BluetoothManager) bluetoothService.getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter adapter = bluetoothManager.getAdapter();
开启扫描:
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
/**
*
* @param device 扫描到的设备
* @param rssi
* @param scanRecord
*/
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
String address = device.getAddress();
String name = device.getName();
// 然后将device先判断一下 是否已经在列表了 如果不在的话 就添加到listview列表上
}
};
adapter.startLeScan(leScanCallback);
停止扫描
adapter.stopLeScan(leScanCallback);
开始连接蓝牙:
/**
* 需要连接的设备 可以从适配器当中使用MAC地址获取到设备 然后再进行链接 也可以直接从扫描到存储的列表直接取出来
*/
BluetoothDevice remoteDevice = adapter.getRemoteDevice(address);
remoteDevice.connectGatt(bluetoothService, false, new BluetoothGattCallback() {
/**
* 蓝牙设备状态的监听
*
* @param gatt
* @param status
* @param newState 蓝牙的状态被改变
*/
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
switch (newState) {//对蓝牙反馈的状态进行判断
case BluetoothProfile.STATE_CONNECTED://已链接
LogUtils.log("已连接");
break;
case BluetoothProfile.STATE_DISCONNECTED://已断开
LogUtils.log("已断开");
break;
}
}
});
至此 一个简单的蓝牙链接例子已经结束。之后再详解,传输数据,与读取数据和接收Notify通知。