上海做网站哪个好,河南省城乡和住房建设厅,显示浏览次数 single wordpress,wordpress 回复后查看在我们工作中#xff0c;如果涉及到软硬结合#xff0c;经常会用到蓝牙#xff0c;而蓝牙有两种#xff1a;一种是普通的蓝牙#xff0c;一种是低功耗的蓝牙#xff0c;今天我们主要讲解的是低功耗蓝牙#xff1a;主要根据第三方库进行的讲解
第一步#xff1a;在使用…在我们工作中如果涉及到软硬结合经常会用到蓝牙而蓝牙有两种一种是普通的蓝牙一种是低功耗的蓝牙今天我们主要讲解的是低功耗蓝牙主要根据第三方库进行的讲解
第一步在使用蓝牙之前我们要添加对应的蓝牙权限
首先在清单文件AndroidManifest.xml添加对应的蓝牙权限
uses-permission android:nameandroid.permission.BLUETOOTH /
uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN /
uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION /
uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION /
其次在使用的位置添加对应的动态权限
我使用的是三方库在app的build中导入依赖api com.github.yjfnypeu:EasyAndroid:1.3.2
具体的使用
EasyPermissions.create(// 指定待申请权限Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.WAKE_LOCK
)// 定制权限申请说明弹窗.rational { permission, chain -AlertDialog.Builder(context).setTitle(权限申请说明).setMessage(应用需要此权限\n$permission).setNegativeButton(拒绝, { _, _ - chain.cancel() }).setPositiveButton(同意, { _, _ - chain.process() }).show()returnrational true}
做完以上步骤下面我们开始做低功耗蓝牙的处理
第二步处理低功耗蓝牙的准备工作
首先在app的build中添加蓝牙通讯的依赖 api com.clj.fastble:FastBleLib:2.3.4
其次配置蓝牙扫描规则
如果正在扫描就先取消扫描
if (BleManager.getInstance().scanSate BleScanState.STATE_SCANNING){BleManager.getInstance().cancelScan()
}
配置规则 扫描规则可以配置1个或多个也可以不配置使用默认扫描10秒。 扫描的时候会根据配置的过滤选项对扫描到的设备进行过滤结果返回过滤后的设备。 扫描时间配置为小于等于0会实现无限扫描直至调用BleManger.getInstance().cancelScan()来中止扫描。 具体的代码示例如下
val scanRuleConfig BleScanRuleConfig.Builder().setAutoConnect(false) // 连接时的autoConnect参数可选默认false.setScanTimeOut(1000 * 10) // 扫描超时时间可选默认10秒小于等于0表示不限制扫描时间.build()
BleManager.getInstance().initScanRule(scanRuleConfig)
最后进行蓝牙的扫描连接
//如果正在扫描,就先取消
if (BleManager.getInstance().scanSate BleScanState.STATE_SCANNING){BleManager.getInstance().cancelScan()
}
BleManager.getInstance().scan(object : BleScanCallback() {override fun onScanFinished(scanResultList: ListBleDevice) {var isble falsefor (e in scanResultList.listIterator()){if (e.mac.equals(蓝牙设备对应的地址)){isble true}}if (!isble){BleManager.getInstance().cancelScan()startScan()}}override fun onScanStarted(success: Boolean) {//正在搜索设备}override fun onScanning(bleDevice: BleDevice) {
//将接收到的处理好的蓝牙地址做一个回调方便我们在其他地方使用if (bleDevice.name ! null)mDeviceListener!!.onDevice(bleDevice)}
})
回调的方法设置
var mDeviceListener: OnDeviceListener? null
interface OnDeviceListener {fun onDevice(bleDevice :BleDevice)fun onScanFinished(scanResultList: ListBleDevice)
}
fun setOnDeviceListener(listener: OnDeviceListener) {this.mDeviceListener listener
}
以上就是今天讲解的主要的蓝牙使用的方式怎么具体的详细的使用待续