当打开手机蓝牙后去连接蓝牙,会出现连接不上情况,报错10003,此时不管是重启小程序还是重新关闭打开蓝牙,都不能正常连接蓝牙设备。10003是微信蓝牙连接经常碰到的问题,微信官方给出的文档中就简单的描述为“connection fail”,备注为“连接失败”。然而,实际上出现连接失败的状况有很多,比如蓝牙设备被占用或者上次蓝牙连接未断开导致无法连接;根据deviceId连接蓝牙时,蓝牙设备未开启或异常导致无法连接。
既然是因为没有断开蓝牙连接导致的,那就在关闭手机蓝牙时去断开蓝牙;然而,在蓝牙状态监听中调用断开连接函数,返回错误(10001(not available)当前蓝牙适配器不可用)。
没有找到现成的解决方案,就只有跟踪代码了,在关键方法中加日志;发现,在顶部栏关闭手机蓝牙时,小程序中无法断开蓝牙连接,报错(10001(not available)当前蓝牙适配器不可用);后来又在偶然情况下,清除了蓝牙设备的绑定关系,重新进入蓝牙搜索页面,发现这样操作后竟然能成功连接上蓝牙。
上述问题定位中,可以发现应该是没有断开上次蓝牙连接导致的,重新搜索蓝牙以后再连接可以解决该问题;于是只能考虑重新搜索蓝牙后再连接的方法,在出现10003错误后,重新搜索蓝牙,并且在找到对应的设备后进行蓝牙连接;修改代码反复测试,根据日志显示,确实是出现了10003,然后进入搜索模块,搜到指定设备后进行蓝牙连接,之后连接成功,这个方案解决了该问题。
wx.createBLEConnection({ deviceId: deviceId, success: function (res) { //连接成功 initnotifyCharacteristic(notifyCharacteristic);// 指定特征值,并进行数据交互 // 已连接 _bthConnectStaus = BTH_STATUS_CONNECTED; }, fail: function (res) {// 连接蓝牙失败 _bthConnectStaus = BTH_STATUS_DISCONNECT; // 回调上层蓝牙连接失败 callback(res.errCode, connectfailed) }
然后根据fail中的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出现的情况很多,不过基本上可以从上一次蓝牙连接是否结束来定位,重新搜索蓝牙后进行连接也是基于上次蓝牙连接未断开这一情况。
推荐:《小程序开发教程》
Atas ialah kandungan terperinci 浅谈小程序开发中蓝牙连接错误分析及解决方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
