SerialPort-4.0.+ 使用说明(Kotlin版本)
SerialPort-4.0.+
项目官网
Java版本使用说明
介绍
SerialPort 是一个开源的对 Android 蓝牙串口通信的轻量封装库,轻松解决了构建自己的串口调试APP的复杂程度,让人可以专注追求自己设计,不用考虑蓝牙串口底层的配置。
相较于3.0.+版本,4.0.+新增了对蓝牙4.0及以上设备的支持。具体更新内容见下文详细说明。
特性
- 兼容传统蓝牙与BLE蓝牙设备
- 内部集成搜索页面
- 自动重连上一次连接的设备
- 间隔时间自动重连
- Toast提示信息修改
QQ技术交流群
最新版本信息
- 4.1.0
- 修复内置搜索页面搜索到设备名为空的设备造成闪退的问题
- 修复连接设备成功后会报广播接收器没有被注册的问题
- 优化搜索结果的处理
- 内置搜索页面新增设备类型字段
- 内置搜索页面设备图标跟设备类型相匹配
- 新增附带搜索设备类型的搜索状态回调
- 新增通过设置地址自动区分设备连接函数
- 优化对蓝牙开关状态的处理
- 4.0.2
- 添加搜索状态回调,
setDiscoveryStatusCallback
- 接收回调函数名修改,由
setReceivedDataListener
变更为setReceivedDataCallback
- 添加搜索状态回调,
- 4.0.1
- 修复
setLegacyUUID
和setBleUUID
不能链式调用的问题
- 修复
- 4.0.0
- 新特性
- 支持蓝牙4.0以上设备
- 新增间隔自动重连
- 新增Toast提示内容修改
- 新增搜索页面忽视没有名字的设备
- 部分API过时,详情见下文
- 修复
- 打开内置搜索页面闪退
- 断开连接延时过长
- 未连接时发送数据自动打开内置搜索页面不稳定
- 发送十六进制 0A 时,自动变为 0A 0D
- 新特性
源码地址
- GitHub仓库
- Gitee仓库
Demo示例源码地址
网盘下载
站内下载
使用说明
添加依赖
- 根目录下的
build.gradle
加入以下代码:
allprojects {repositories {//...maven { url 'https://jitpack.io' }}
}
- app模块的
build.gradle
加入以下代码即可:
dependencies {//根据自身网络情况以下两个仓库二选一即可implementation 'com.github.Shanyaliux:SerialPortSample:4.1.0' //国外仓库implementation 'com.gitee.Shanya:SerialPortSample:4.1.0' //国内仓库
}
获取SerialPort实例
val serialPort = SerialPortBuilder//是否打印调试信息.isDebug(true)//设置传统设备连接UUID(不设置则为以下默认值)
// .setLegacyUUID("00001101-0000-1000-8000-00805F9B34FB")//设置BLE设备连接UUID(不设置则为以下默认值)
// .setBleUUID("0000ffe1-0000-1000-8000-00805f9b34fb")//是否开启启动时自动重连.autoConnect(false)//是否开启间隔时间自动重连(间隔时间time不设置则默认为10000ms).setAutoReconnectAtIntervals(false, time = 10000)//搜索结果是否忽略没有名字的设备.isIgnoreNoNameDevice(true)//发送数据时若未连接设备是否自动打开内置搜索页面.autoOpenDiscoveryActivity(true)//在接收数据格式为十六进制时,是否将其自动转换为字符串.autoHexStringToString(false)//设置接收数据格式(若不设置则默认为字符串)
// .setReadDataType(SerialPort.READ_STRING)//设置发送数据格式(若不设置则默认为字符串)
// .setSendDataType(SerialPort.SEND_STRING)//搜索状态监听(status 为搜索状态).setDiscoveryStatusCallback { status ->}//搜索状态带类型的监听//deviceType = SerialPort.DISCOVERY_BLE 搜索BLE设备//deviceType = SerialPort.DISCOVERY_LEGACY 搜索传统类型//status 为搜索状态.setDiscoveryStatusWithTypeCallback { deviceType, status ->}//连接状态监听(status 为连接状态,bluetoothDevice 为连接设备).setConnectionStatusCallback { status, bluetoothDevice ->}//接收数据监听(string 为收到的数据).setReceivedDataListener { string ->}.build(this)
设置UUID
- 传统设备
SerialPort.setLegacyUUID("00001101-0000-1000-8000-00805F9B34FB")
- BLE设备
SerialPort.setBleUUID("0000ffe1-0000-1000-8000-00805f9b34fb")
BLE设备的UUID可以在连接后调用
serialPort.printPossibleBleUUID()
来查看一些可选值
搜索设备
//以下两种方案均可
serialPort.doDiscovery(this)
SerialPortBuilder.doDiscovery(this)
停止搜索
serialPort.cancelDiscovery(this)
搜索状态监听
//status 为搜索状态
serialPort.setDiscoveryStatusCallback{ status -> }
//搜索状态带类型的监听
//deviceType = SerialPort.DISCOVERY_BLE 搜索BLE设备
//deviceType = SerialPort.DISCOVERY_LEGACY 搜索传统类型
//status 为搜索状态
serialPort.setDiscoveryStatusWithTypeCallback { deviceType, status ->}
若多处设置了监听,仅最后一次设置的生效
获取搜索结果
serialPort.getPairedDevicesList() //获取已配对设备
serialPort.getUnPairedDevicesList() //获取未配对设备
上述方法在4.0.0开始被弃用,建议使用以下方法
serialPort.getPairedDevicesListBD() //获取已配对设备
serialPort.getUnPairedDevicesListBD() //获取未配对设备
连接设备
- 打开内部集成的搜索页面
serialPort.openDiscoveryActivity()
- 打开自定义的搜索页面
val intent = Intent(this,YourActivity::class.java)
serialPort.openDiscoveryActivity(intent)
- 通过设备地址连接
- 传统设备连接
serialPort.connectLegacyDevice("98:D3:32:21:67:D0")
- BLE设备连接
serialPort.connectBle("98:D3:32:21:67:D0")
断开连接
serialPort.disconnect()
连接状态监听
serialPort.setConnectStatusCallback { status, device -> }
上述方法在4.0.0开始被弃用,建议使用以下方法
serialPort.setConnectionStatusCallback { status, bluetoothDevice ->}
若多处设置了监听,仅最后一次设置的生效
设置接收数据格式
//SerialPort.READ_HEX 十六进制
//SerialPort.READ_STRING 字符串
//不设置则默认字符串形式
serialPort.setReadDataType(SerialPort.READ_HEX)
目前BLE设备暂不支持设置数据格式设置
设置发送数据格式
//SerialPort.SEND_HEX 十六进制
//SerialPort.SEND_STRING 字符串
//不设置则默认字符串形式
serialPort.setSendDataType(SerialPort.SEND_HEX )
目前BLE设备暂不支持设置数据格式设置
发送数据
//以下两种方案均可
serialPort.sendData("hello")
SerialPortBuilder.sendData("hello")
若发送的数据为十六进制,则输入的数据需要为偶数个,只有一位的需要在其前面补0,且字母大写
例如:发送0x0a 0x0D
,需要写成serialPort.sendData("0A 0D")
接收消息监听
serialPort.setReceivedDataCallback { string ->}
若多处设置了监听,仅最后一次设置的生效
十六进制字符串转换成字符串
val string = serialPort.hexStringToString(hexString)
此时的接收数据格式为十六进制
修改Toast提示
//是否显示
SerialPortToast.connectSucceeded.status = true
//提示内容
SerialPortToast.connectSucceeded.content = "连接成功"
//显示时长 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG
SerialPortToast.connectSucceeded.time = Toast.LENGTH_SHORT
项目 | 描述 | 默认值 |
---|---|---|
connectSucceeded | 连接成功时 | 连接成功 |
connectFailed | 连接失败时 | 连接失败 |
disconnect | 断开连接时 | 断开连接 |
connectFirst | 未连接设备时执行发送数据 | 请先连接设备 |
disconnectFirst | 已连接设备后执行连接操作 | 请先断开连接 |
permission | 询问是否开启定位权限 | 请先开启位置权限 |
hexTip | 发送十六进制时,数据格式不对提示 | 请输入的十六进制数据保持两位,不足前面补0 |
openBluetoothSucceeded | 打开蓝牙成功时 | 蓝牙打开成功 |
openBluetoothFailed | 打开蓝牙失败时 | 蓝牙打开失败 |
SerialPort-4.0.+ 使用说明(Kotlin版本)相关推荐
- 【错误记录】Android Studio 4.2.1 编译报错 ( Kotlin 版本推荐设置 1.5.0 )
文章目录 一.报错信息 二.解决方案 一.报错信息 将 Android Studio 版本升级成最新的 4.2.14.2.14.2.1 版本 , 出现如下错误 ; Build file 'D:\pro ...
- 谷歌开源 Kotlin 版本 gRPC
谷歌开源了 gRPC-Kotlin/JVM,让开发者可以在 Kotlin 项目中更方便地使用 gRPC,以更简单的方式构建可靠的网络连接服务. gRPC 是谷歌开源的高性能.通用 RPC 框架,支持多 ...
- 【Android】app应用内版本更新升级(DownloadManager下载,适配Android6.0以上所有版本)
目录 前言 一.实现思路 二.服务端接口 三.UI页面 三.工具类实现 1.检查版本号 2.下载apk 3.安装apk 4.实时更新下载进度 5.完整代码 三.外部使用 总结 前言 版本的升级和更新是 ...
- Android Compose 版本与 Kotlin 版本的兼容问题
文章目录 问题描述 解决问题 1. 找到 compose 与 kotlin 的[兼容性版本对照表](https://developer.android.google.cn/jetpack/androi ...
- cnPuTTY 0.78.0.1—PuTTY Release 0.78中文版本简单说明~~
2022-10-29 官方正式发布 PuTTY 0.78 released 主要的更新内容有:新功能特性支持OpenSSH的证书系统:新形式的SSH jump host支持:恢复Windows XP支 ...
- protege连接mysql_Protege4.0使用说明+问题整理.doc
Protege4.0使用说明 1 准备知识 OWL-Lite 它是OWL中句法最简单的一种子语言.对于简单的继承或者约束,它就显得非常适用.一般用于合并同类字典和简单继承.lite是清淡的意思 OWL ...
- 【Flutter】Flutter 拍照示例 ( 拍照并获取照片源码示例 | image_picker: ^0.5.2 版本 )
文章目录 一.image_picker 使用 二.image_picker 使用示例 三.相关资源 一.image_picker 使用 在 image_picker 插件主页 有关于该 Flutter ...
- 如何修改MySQL8.0.5以上版本root密码
2019独角兽企业重金招聘Python工程师标准>>> 如何修改MySQL8.0.5以上版本root密码 听语音 | 浏览:101 | 更新:2018-11-09 15:23 1 2 ...
- apache 版本_Apache Hudi 0.5.1版本重磅发布
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...
- H3CNE新版本V6.0与旧版本V5.1的区别
H3CNE新版本V6.0与旧版本V5.1的区别 华×××司于09年3月份推出了自己的新版NE培训教材V6.0版本,考试代号为GB0-190,考试价格也由原来的340元上涨到了1000元.通过分数线为6 ...
最新文章
- php 遍历所有的文件
- python glob 模块 map函数
- android录制视频横向,Android从零开始(26)(设置全屏+横屏、相机拍照、视频录制)(新)...
- mysql语法题_mysql数据库题语法练习
- Linux网络协议栈:网卡收包分析
- 成功激活windows server 2008 sp2!
- 《算法设计与分析》黄宇编著 课后习题参考答案
- 转载:C语言运算符优先级记忆口诀
- 2013年8个存储热点话题总结及高端存储发展趋势
- Window安装RabbitMQ并设置为开机启动
- Ubuntu 机箱前置耳机没声音的问题(彻底解决)
- ​关于百度网盘扩容的一点经验分享2022
- gluster容量显示处理
- 苗条的生成树_苗条手册
- 富勒x100滚轮无法调节音量怎么办?
- 什么是内存泄露?遇到内存泄露该怎么解决?
- 达人评测 麒麟9000、麒麟990e和苹果a15 哪个好
- 讲讲语言转换程序:将一种语言转换为另一种语言的程序
- 做一个小程序要多少钱?
- WPF 4 开发Windows 7 任务栏(Overlay Icon、Thumbnail Toolbar、Progress Bar)
热门文章
- Web Components 的使用,从入门到基础
- 爬取沪深股票并找出最近1个月创出新高的股票
- 怎么下载QQ空间或者知乎类似网站上面的视频文件
- 【愚公系列】2022年03月 .NET架构班 021-ABP vNext 动态代理模块
- 以前端的角度出发做好SEO需要考虑什么
- 邮箱POP3、SMTP和IMAP
- 第三方微信登录 | 静默授权与网页授权的实现
- Bootstrap-CL:标签
- NPDP新产品考试考后感想~
- 【论文阅读-句向量】Whitening Sentence Representations for Better Semantics and Faster Retrieval