Android蓝牙2.0框架帮您高效交互2.0协议下位机

来源:互联网 发布:淘宝直播在哪里开通 编辑:程序博客网 时间:2024/05/21 19:23

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.csdn.net/download/baidu_28715573/9961320

原创粉丝点击