AboutAndroid经典蓝牙工具类(cbt)------开关蓝牙、扫描蓝牙设备、连接配对、发送数据、接收数据、获取已配对设备

ClassicBluetooth

Android经典蓝牙工具类

已完成:

  • 开启蓝牙
  • 关闭蓝牙
  • 扫描蓝牙设备
  • 连接配对
  • 发送数据
  • 接收数据
  • 获取已配对设备

TODO:

  • 接收文件
  • 功能优化、性能优化、BUG清扫

最近在做一个带有蓝牙打印机的项目,借此完成这个库的开发

导入

implementation 'com.sdwfqin.cbt:cbt:1.1.1'

使用

1.初始化 

public class BaseApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        CbtManager
                .getInstance()
                // 初始化
                .init(this)
                // 是否打印相关日志
                .enableLog(true);
    }
}

/**
 * 设置自定义UUID
 *
 * @param uuid
 * @return BleManager
 */
public CbtManager setUUID(String uuid) {
    CbtConstant.CBT_UUID = UUID.fromString(uuid);
    return this;
}

/**
 * 设置自定义服务名称
 *
 * @param name
 * @return BleManager
 */
public CbtManager setServiceName(String name) {
    CbtConstant.CBT_NAME = name;
    return this;
}

2.开启蓝牙

CbtManager
    .getInstance()
    .enableBluetooth(isOn -> {
        if (isOn) {
            Toast.makeText(mContext, "蓝牙已开启", Toast.LENGTH_SHORT).show();
        }
    });

3.关闭蓝牙

CbtManager
    .getInstance()
    .disableBluetooth(isOn -> {
        if (!isOn) {
            Toast.makeText(mContext, "蓝牙已关闭", Toast.LENGTH_SHORT).show();
        }
    });

 4.扫描设备

CbtManager
    .getInstance()
    .scan(new ScanCallback() {
        @Override
        public void onScanStart(boolean isOn) {
            // 开始扫描
        }

        @Override
        public void onScanStop(List<BluetoothDevice> devices) {
            // 搜索完成
            mScanListAdapter.setNewData(devices);
        }

        @Override
        public void onFindDevice(BluetoothDevice device) {
            // 搜索到设备
            mScanListAdapter.addData(device);
        }
    });

 5.连接设备

BluetoothDevice item = mScanListAdapter.getItem(position);
CbtManager
    .getInstance()
    .connectDevice(item, new ConnectDeviceCallback() {
        @Override
        public void connectSuccess(BluetoothSocket socket, BluetoothDevice device) {
            // 连接成功
            Toast.makeText(mContext, "连接成功!", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void connectError(Throwable throwable) {
            // 连接失败
            Toast.makeText(mContext, "连接失败:" + throwable.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

 6.发送数据

byte[] data;
try {
    data = (mData.getText().toString() + "\n\n\n\n\n\n").getBytes("GBK");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return;
}

List<byte[]> bytes = new ArrayList<>();
bytes.add(BYTES[0]);
bytes.add(BYTES[1]);
bytes.add(data);

CbtManager
    .getInstance()
    .sendData(bytes, new SendDataCallback() {
        @Override
        public void sendSuccess() {
            // 发送成功
        }

        @Override
        public void sendError(Throwable throwable) {
            // 发送失败
            Toast.makeText(SendDataActivity.this, throwable.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

7.蓝牙服务端(回调接口目前是在子线程中调用)

CbtManager
    .getInstance()
    .startServiceListener(new ServiceListenerCallback() {
        @Override
        public void onStartError(Throwable throwable) {
            // 发生错误
            CbtLogs.e(throwable.getMessage());
        }

        @Override
        public void onDataListener(String s, BluetoothDevice device) {
            // 获取到数据
            runOnUiThread(() ->
                    mReceiveDataAdapter.addData(new ReceiveDataModel(device, s))
            );
        }
    });

项目代码地址:https://github.com/sdwfqin/ClassicBluetooth#readme

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值