Android蓝牙2.0框架帮您高效交互2.0协议下位机
目前主流蓝牙协议是4.0的协议,但是也是有很多的设备是基于2.0协议的,所以基于业务需求封装了一套2.0框架,所有的处理基于回调,方便开发者基于不同的情况进行相应的处理,不说太多下面开始讲解基本的使用::
蓝牙设备的搜索
蓝牙设备的连接
蓝牙设备的数据写入
蓝牙设备的数据接收
- 实现蓝牙通信的服务端
蓝牙设备的搜索
首先我们需要在自己的Application里面进行相应的初始化。
Bt2.initContext(this);
开始搜索:
Bt2 bt2=Bt2.getInstance(this);;
bt2.search(new SearchListner() {
@Override
public void onBluetoothDevice(BtDevice device) {
Log.e(“MAIN”,”BtDevice==”+device);
}
@Override
public void onBondToothDevice(List devices) {
Log.e(“MAIN”,”BtDevice==”+devices);
}
@Override
public void onSearchStop() { } });
蓝牙设备的连接
bt2.connect(MAC, uuid, new ConnectStateListner() {
@Override
public void connectSuccess(String address) {
Log.e(TAG,"connectSuccess");
}
@Override
public void connectError(Exception e, String address) {
Log.e(TAG,"connectError=="+e.toString());
}
@Override
public void disConnectSuccess(String address) {
Log.e(TAG,"disConnectSuccess");
}
@Override
public void disConnectError(Exception e, String address) {
Log.e(TAG,"disConnectError");
}
@Override
public void disConnect(Exception e, String address) {
Log.e(TAG,"disConnect");
}
});
2.0是单连接模型,所以建议连接第二个设备的时候及时断开掉上个2.0设备(2.0连接和4.0连接是互相之间不影响的)。
蓝牙设备的数据写入
byte[]cmd={0x1B,0x4A,30};
bt2.write(MAC,cmd, new WriteResponse() {
@Override
public void writeSuccess(String address) {
Log.e(TAG,"writeSuccess=="+address);
}
@Override
public void writeError(Exception e, String address) {
Log.e(TAG,"writeError==Error(");
}
});
所有的数据输入都是以byte[]数组的形式去传输的。蓝牙的操作一般都很耗时,所以所有的操作都是委托给线程池,然后回调到主线程进行,所以不用担心会卡顿
蓝牙数据的接收
bt2.read(MAC, new ReadReponse() {
@Override
public void readByte(byte[] value, String address) {
}
@Override
public void readError(String address, Exception e) {
}
});
在线程里面进行轮询异步回调给主线程
蓝牙聊天的服务端实现
首先我们得启动我们的服务端:
ServerSocketMannger mannger= bt2.startServer();
mannger.startAcceptThread();
不用的时候可以停止接收连接:
mannger.stopAcceptThread();
接受客户端发来的信息
mannger.setReadReponse(new ReadReponse() {
@Override
public void readByte(byte[] value, String address) {
}
@Override
public void readError(String address, Exception e) {
}
});
客户端发来的所有信息的会出现在这个回调里面,可以根据Mac去判断是哪个客户端发来的消息;
同时他也有相应的发送功能:
mannger.write(MAC, new WriteResponse() {
@Override
public void writeSuccess(String address) {
}
@Override
public void writeError(Exception e, String address) {
}
});
记住
不用的时候及时的进行相关的bt2.unRegisterReceiver();如果在使用的过程中出现了问题,可以在博客下面留言,我将在最快的时间内进行回复。
下载链接:http://download.youkuaiyun.com/download/baidu_28715573/9961320