android 蓝牙连接库(蓝牙设备选择器)
来源:互联网 发布:欧卡2a卡优化 编辑:程序博客网 时间:2024/05/20 15:42
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里。
- 输入为
Context
、BluetoothConnectCallback
时:
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() { // 原理为通过捕获系统的广播而调用的。 } }); //调用结束 }});
- 输入还可以为
Context
、String(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
- android 蓝牙连接库(蓝牙设备选择器)
- android手机蓝牙连接蓝牙设备
- 自动连接上次连接的蓝牙设备(Android开发)
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- android蓝牙开发 蓝牙设备的查找和连接
- Android 扫描附近的蓝牙设备并连接蓝牙音响
- android wifi(WAP/PSK加密)蓝牙设备的连接
- Android开发——蓝牙多设备连接(四)
- Android 蓝牙设备的查找和连接
- Android蓝牙开发之连接设备
- Android蓝牙开发之自动连接设备
- MongoDB中Criteria查询
- 南阳理工学院 ACM OJ-- 题目6 喷水装置(一) (贪心暴力)
- UILabel自动换行+自适应高度
- SharedPreference.Editor的apply和commit方法异同
- c++实现插入排序
- android 蓝牙连接库(蓝牙设备选择器)
- mysql修改charactet_set_server编码为utf8
- 图像处理DOG 算法,python结合cv2实现
- MYSQL 定时执行存储过程
- 利用pull解析xml文件
- Android自动化测试之Robotium学习(四)
- 第十四周项目2.2—两个成员的类模板
- java中日期格式的加减,Timestamp和util.Date格式互转
- Powerdesigner逆向工程