基于简单配对模式RFCOMM连接方式写的一个蓝牙通讯模块。
1.初始化
推荐使用一个全局的Activity做初始化,因为在整个生命周期其实蓝牙只需要连接一次。
BtManager.init(xxActivity);
2.获取BtManager对象
btManager= BtManager.getInstance();
3.设置扫描回调
btManager.setIScanCallback(new IScanCallback() {
@Override
public void discoverDevice(BluetoothDevice bluetoothDevice, short rssi) {
mSurroundBluetoothAdapter.addItem(bluetoothDevice);
}
@Override
public void scanTimeout() {
Toast.makeText(BlueToothActivity.this, "扫描超时!", Toast.LENGTH_LONG).show();
}
@Override
public void scanFinish(List<BluetoothDevice> bluetoothList) {
}
})
4.设置连接状态回调
btManager.setConnectStateCallback(new IConnectStateCallBack() {
@Override
public void connecting() {
}
@Override
public void connected() {
}
@Override
public void disConnect() {
currentConnectDevice = null;
}
@Override
public void waitForConnect() {
}
@Override
public void connectedToDeviceName(BluetoothDevice device) {
currentConnectDevice = device;
launchActivity(device);
}
});
4.扫描设备
btManager.scanBluetooth();
5.连接到设备
btManager.connectToDevice(bluetoothDevice);
找到DataProcessHandler这个类,修改需要读取的数据规则,如果无规则处理可直接Write到ByteDataReadProcess。(后续会将这块抽成基类,由用户扩展实现。。)
这样就算完成了。 大家可以参照一下我的小demo。目前还在完善中