关闭

android 蓝牙连接库(蓝牙设备选择器)

标签: android蓝牙github开源
1042人阅读 评论(0) 收藏 举报
分类:

BluetoothSelector 蓝牙选择器


项目需要自己写的,欢迎大家使用,也希望大家批评改正,github地址:

https://github.com/yzlee/BluetoothSelector

功能

  • 通过回调函数执行蓝牙连接成功后和断开后的动作
  • 支持多蓝牙设备同时连接
  • 选择界面可显示已配对设备,也可以搜索设备
  • 可通过输入mac地址或者BluetoothDevice直接连接蓝牙
  • 可选择是否出现等待界面(方便后台连接)
  • 重连不重复开线程。
  • 连接失败后返回Exception e
  • 蓝牙选择界面、等待界面自定义(正在完善)

截图

主界面 等待连接 这里写图片描述
连接成功回调 接收数据 连接断开

引用

Gradle:

compile ‘cc.liyongzhi.bluetoothselector:bluetoothselector:1.7’

使用

引用:

/**
 * @param context 上下文
 * @param bluetoothConnectCallback 连接建立和取消连接后调用的回调函数
 */
MedBluetooth.connectBluetooth(Context context, BluetoothConnectCallback bluetoothConnectCallback);

或者

/**
 * @param context 上下文
 * @param mac 如果以前有保存蓝牙mac地址,则可以直接输入
 * @param showConnectBluetoothActivity 是否显示等待界面,若后台有自动重连请设置为false,不然每次连接都转圈圈。。。
 * @param bluetoothConnectCallback 连接建立和取消连接后调用的回调函数
 */
MedBluetooth.connectBluetooth(Context context, String mac, Boolean showConnectBluetoothActivity, BluetoothConnectCallback bluetoothConnectCallback);

BluetoothConnectCallback有两个方法:

/**
 * 连接成功或失败后调用
 * @param socket 获得的socket
 * @param device 本次连接的设备,可存下来方便下次自动重连,就不用每次都选择了。
 * @param e 错误
 */
public abstract void connected(BluetoothSocket socket, BluetoothDevice device, Exception e);

/**
 * 连接断开后调用,原理为监听系统广播
 */
public abstract void disconnected();

示例:

在需要连接蓝牙或者选择设备的地方加入代码,本例为位于OnClickListener里。

  • 输入为ContextBluetoothConnectCallback时:
mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //以下为调用本库,输入为Context、BluetoothConnectCallback
        MedBluetooth.connectBluetooth(mContext, new BluetoothConnectCallback() {
            @Override
            // 连接成功或失败后调用。
            public void connected(BluetoothSocket socket, BluetoothDevice device, Exception e) {
                if (e != null) {
                    //连接失败
                } else {
                    //输出为获得的socket,可以自行存到全局变量里进行数据输入输出操作。
                    //device为本次连接的设备,可调用 device.getAddress() 获得mac地址。
                    //e 为错误。
                }
            }
            @Override
            // 连接断开后调用
            public void disconnected() {
                // 原理为通过捕获系统的广播而调用的。
            }
        });
        //调用结束
    }
});
  • 输入还可以为ContextString(mac地址)Boolean(是否显示等待界面)BluetoothConnectCallback,可以用于重连,代码几乎同上。

更新历史

2016.5.31 version 1.7

可用版本。

Bug

目前公司几款app均未发现bug。但有一处判断线程是否正在运行时使用了

if (!thread.isAlive() && thread.getState() != State.RUNNABLE) {
            thread.start();
}

不知道对不对。。。

作者

微博:这是一条特立独行的猪 http://weibo.com/1881962417/ 欢迎关注!

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52324次
    • 积分:1057
    • 等级:
    • 排名:千里之外
    • 原创:53篇
    • 转载:0篇
    • 译文:0篇
    • 评论:31条
    文章分类
    最新评论