>  기사  >  위챗 애플릿  >  소규모 프로그램 개발 시 블루투스 연결 오류 분석 및 해결 방법에 대한 간략한 논의

소규모 프로그램 개발 시 블루투스 연결 오류 분석 및 해결 방법에 대한 간략한 논의

青灯夜游
青灯夜游앞으로
2020-04-25 09:32:376865검색

소규모 프로그램 개발 시 블루투스 연결 오류 분석 및 해결 방법에 대한 간략한 논의

휴대폰에서 블루투스를 켜고 블루투스 연결을 시도하면 연결이 되지 않고 오류 10003이 발생합니다. 이때 애플릿을 다시 시작하거나 블루투스를 다시 꺼도 연결이 되지 않습니다. 정상적으로 Bluetooth 장치에 연결됩니다. 10003은 WeChat Bluetooth 연결에서 자주 발생하는 문제입니다. WeChat에서 제공하는 공식 문서에서는 간단히 "연결 실패"라는 메모와 함께 "연결 실패"라고 설명합니다. 그러나 실제로 연결 실패가 발생하는 상황이 많이 있습니다. 예를 들어 Bluetooth 장치가 사용 중이거나 마지막 Bluetooth 연결이 끊어지지 않아 deviceId를 기반으로 Bluetooth에 연결할 때 Bluetooth 장치가 연결되지 않습니다. 켜져 있거나 비정상적이어서 연결이 불가능합니다.

블루투스 연결이 끊어지지 않아서 발생하는 문제이므로 휴대폰의 블루투스를 끌 때 블루투스 연결을 끊습니다. 그러나 블루투스 상태 모니터링에서 연결 끊기 기능을 호출하면 오류(10001(사용할 수 없음))가 반환됩니다. 현재 블루투스 어댑터 사용이 불가능합니다.)

기존 솔루션을 찾지 못해 코드를 추적하고 키 메서드에 로그를 추가하기만 하면 상단 표시줄에서 휴대폰의 블루투스를 끌 때 블루투스 연결이 끊어지지 않는 것을 발견했습니다. 애플릿에서 오류가 보고되었습니다(10001(현재 Bluetooth 어댑터를 사용할 수 없음)). 나중에 우연히 Bluetooth 장치의 바인딩 관계를 지우고 Bluetooth 검색 페이지에 다시 들어간 것을 발견했습니다. 이 작업을 수행한 후 Bluetooth에 성공적으로 연결할 수 있습니다.

소규모 프로그램 개발 시 블루투스 연결 오류 분석 및 해결 방법에 대한 간략한 논의

위의 문제 위치에서는 마지막 블루투스 연결을 끊지 않아서 발생하는 것으로 확인되며, 블루투스를 다시 검색한 후 다시 연결하면 문제가 해결될 수 있으므로 고려해야 할 유일한 방법은 다음과 같습니다. 10003 오류가 발생한 후 다시 Bluetooth를 검색하고 해당 장치를 찾은 후 Bluetooth를 연결하십시오. 로그에 따르면 10003이 나타납니다. 검색 모듈을 사용하여 지정된 장치를 검색하고 Bluetooth 연결을 한 후 연결하면 이 솔루션으로 문제가 성공적으로 해결되었습니다.

wx.createBLEConnection({
deviceId: deviceId,
success: function (res) { //连接成功
initnotifyCharacteristic(notifyCharacteristic);// 指定特征值,并进行数据交互
// 已连接
_bthConnectStaus = BTH_STATUS_CONNECTED;
},
fail: function (res) {// 连接蓝牙失败
_bthConnectStaus = BTH_STATUS_DISCONNECT;
// 回调上层蓝牙连接失败
callback(res.errCode, connectfailed)
}

그런 다음 실패 시 res.errCode를 기준으로 10003인지 확인합니다.

if(code ==10003) { //  部分android手机特殊情况下需要重新搜索才能连接蓝牙,此时报错10003,进行蓝牙搜索(ps:原因可能是系统中将手机蓝牙关闭导致连接状态不能改为断开,导致下次无法连接同一个设备)
var timeId = setTimeout(function () {
stopSearchBluetooth();
callback(false, timout)
}, 5000); // 最多搜索5s
searchBluetooth(function (res) {
if (res.devices === undefined ||res.devices === null) {
return;
}
for (var i = 0; i < res.devices.length; i++) {
if (res.devices[i] &&res.devices[i].deviceId == deviceId) { // 搜索到该设备
console.log(searchDeviceAndReConnect:find device and re connect);
clearTimeout(timeId);
stopSearchBluetooth() // 停止搜索
callback(true, finddevice);// 找到设备,在回调函数中连接蓝牙
break;
}
}
}, function (res) {
clearTimeout(timeId);
stopSearchBluetooth() // 停止搜索
callback(false, searchBluetoothfail)
});
}

위 코드는 연결 중 10003 에러가 발생했을 때 블루투스 기기를 검색하고, 찾은 후 블루투스에 다시 연결하는 간단한 과정을 제공합니다.

물론, 이 문제에 대해 10003이 보고되는 유일한 오류는 아닙니다. 모두, 장치가 블루투스를 켜지 않을 때에도 10003이 보고됩니다. 그리고 검색 로직이 추가되었기 때문에 장치가 켜지지 않을 때 알림이 느려집니다. 블루투스를 켭니다(기기가 블루투스를 켜지 않습니다). 하지만 다행히도 현재로서는 이 문제를 해결할 만한 좋은 아이디어가 없으므로 연구하겠습니다. 앞으로는 천천히.

일부 휴대폰에서만 10003 오류가 발생한다는 점을 고려하여, 다른 휴대폰에서 블루투스 검색으로 인해 블루투스 데이터 수집 연결 속도가 느려지는 것을 방지하기 위해 먼저 블루투스에 연결한 후 오류 10003을 보고하겠습니다. 10003이 발생하는 경우가 많지만 기본적으로는 마지막 블루투스 연결이 종료되었는지 여부에 따라 위치가 결정됩니다. 블루투스를 다시 검색한 후의 연결도 마지막 블루투스 연결이 끊어지지 않았음을 기준으로 합니다.

추천: "Mini 프로그램 개발 튜토리얼"

위 내용은 소규모 프로그램 개발 시 블루투스 연결 오류 분석 및 해결 방법에 대한 간략한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제