-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
您好,我正在使用您的库,用于连接我们的中控设备。我在发现服务后,设置通知。触发设置通知代码后,基本上安卓手机就会弹出PIN码输入框,但是目前我们公司的测试机的里面,有一部华为mate9和一部OPPO手机无法弹出PIN码。下面是我的代码,请问是什么原因导致的?需要设置什么参数吗?我脱离APP在手机的设置,蓝牙列表里面去点击连接,可以正常弹出PIN码输入框。万分感激
private fun vehicleConnect(device: Device) {
// 连接配置
val config = ConnectionConfiguration()
config.setConnectTimeoutMillis(20000)
config.setRequestTimeoutMillis(2000)
config.setTryReconnectMaxTimes(3)
config.setAutoReconnect(true)
// 观察者监听连接状态
vehicleDevice = device
vehicleConnection = EasyBLE.getInstance().connect(device, config, object : EventObserver {
@Tag("onConnectionStateChanged")
@Observe
@RunOn(ThreadMode.MAIN)
@Override
override fun onConnectionStateChanged(device: Device) {
super.onConnectionStateChanged(device)
Log.d("EasyBLE", "当前线程:${Thread.currentThread().name}")
when (device.connectionState) {
ConnectionState.DISCONNECTED -> {
Log.d("EasyBLE", "已断开连接")
runOnUiThread {
// 如果是车辆
methodChannel?.invokeMethod("vehicleBlueConnectStateChange", "disconnected")
clearVehicleGatt()
}
}
ConnectionState.CONNECTING -> {
Log.d("EasyBLE", "正在连接")
}
ConnectionState.SCANNING_FOR_RECONNECTION -> {
Log.d("EasyBLE", "正在搜索重连")
}
ConnectionState.CONNECTED -> {
Log.d("EasyBLE", "已连接,还未执行发现服务")
}
ConnectionState.SERVICE_DISCOVERING -> {
Log.d("EasyBLE", "已连接,正在发现服务")
}
ConnectionState.SERVICE_DISCOVERED -> {
Log.d("EasyBLE", "已连接,成功发现服务")
// 车子获取PIN码,如果有绑定记录,直接成功
if (isAuto) {
runOnUiThread(Runnable {
methodChannel?.invokeMethod("vehicleBlueConnectStateChange", "connected")
})
} else {
// 发送PIN码获取
runOnUiThread(Runnable {
methodChannel?.invokeMethod("handlerLoadPin", null)
})
}
// 设置通知
setVehicleNotification()
}
ConnectionState.RELEASED -> {
Log.d("EasyBLE", "连接已释放")
}
else -> {
}
}
}
/**
* 车控设置通知
*/
private fun setVehicleNotification() {
vehicleConnection?.let {
val serverUUID = UUID.fromString("18424398-7CBC-11E9-8F9E-2A86E4085A59")
val writeUUID = UUID.fromString("772AE377-B3D2-4F8E-4042-5481D1E0098C")
setNotification(it, serverUUID, writeUUID, object : NotificationChangeCallback {
override fun onRequestFailed(request: Request, failType: Int, gattStatus: Int, value: Any?) {
Log.e("EasyBLE", "开启通知失败")
}
override fun onNotificationChanged(request: Request, isEnabled: Boolean) {
Log.e("EasyBLE", "通知开启")
}
})
}
}
private fun setNotification(connection: Connection?, serverUUID: UUID, notificationUUID: UUID,callBack:NotificationChangeCallback) {
Log.d("EasyBLE", "设置开启通知")
connection?.let {
val builder = RequestBuilderFactory().getSetNotificationBuilder(
serverUUID,
notificationUUID,
true
)
builder.setCallback(callBack)
builder.build().execute(it)
}
}
Metadata
Metadata
Assignees
Labels
No labels