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

本文介绍了一个针对Android蓝牙2.0协议的高效框架,包括设备搜索、连接、数据写入与接收,以及服务端实现。通过回调机制,开发者能便捷处理各种蓝牙交互情况。同时强调在多设备连接时注意管理,并提供了问题反馈渠道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值