{"id":31651,"date":"2024-11-25T14:29:36","date_gmt":"2024-11-25T06:29:36","guid":{"rendered":"https:\/\/fwq.ai\/blog\/31651\/"},"modified":"2024-11-25T14:29:36","modified_gmt":"2024-11-25T06:29:36","slug":"%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e4%b8%ad%e8%93%9d%e7%89%99%e7%9a%84%e9%93%be%e6%8e%a5","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/31651\/","title":{"rendered":"\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e2d\u84dd\u7259\u7684\u94fe\u63a5"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e4b\u84dd\u7259\u7684\u94fe\u63a5\u7684\u76f8\u5173\u8d44\u6599,\u5e0c\u671b\u901a\u8fc7\u672c\u6587\u5927\u5bb6\u80fd\u591f\u638c\u63e1\u5c0f\u7a0b\u5e8f\u84dd\u7259\u7684\u5f00\u53d1\u65b9\u6cd5\uff0c\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b<\/p>\n<p><strong>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e4b\u84dd\u7259\u7684\u94fe\u63a5<\/strong><\/p>\n<p>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u84dd\u7259\u8fde\u63a52.0\u8bf4\u660e\uff1a<\/p>\n<p>1\u3001\u672c\u7248\u672c\u533a\u5206\u4e86ANDROID\u548cIOS\u7cfb\u7edf\u4e0b\u84dd\u7259\u8fde\u63a5\u7684\u4e0d\u540c\u65b9\u5f0f\u3002 <\/p>\n<p>2\u3001\u517c\u5bb9\u4e86\u66f4\u591a\u60c5\u51b5\u4e0b\u7684\u94fe\u63a5\u5305\u62ec\uff1a<\/p>\n<p>\uff081\uff09\u672a\u5f00\u542f\u8bbe\u5907\u84dd\u7259\uff0c\u5f53\u76d1\u542c\u5230\u5f00\u542f\u4e86\u84dd\u7259\u540e\u81ea\u52a8\u5f00\u59cb\u8fde\u63a5\u3002 <br \/>\uff082\uff09\u521d\u59cb\u5316\u84dd\u7259\u5931\u8d25\u540e\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u521d\u59cb\u5316\u84dd\u7259\u9002\u914d\u5668\u3002 <br \/>\uff083\uff09\u5b89\u5353\u7aef\u5f00\u542f\u84dd\u7259\u9002\u914d\u5668\u626b\u63cf\u5931\u8d25\uff0c\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u5f00\u542f\u3002 <br \/>\uff084\uff09IOS\u7aef\u83b7\u53d6\u5df2\u8fde\u63a5\u84dd\u7259\u8bbe\u5907\u4e3a\u7a7a\uff0c\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u83b7\u53d6\u3002 <br \/>\uff085\uff09\u5b89\u5353\u7aef\u84dd\u7259\u5f00\u59cb\u94fe\u63a5\u540e\u4e2d\u65ad\u626b\u63cf\uff0c\u8fde\u63a5\u5931\u8d25\u4e86\uff0c\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\u3002 <br \/>\uff086\uff09IOS\u7aef\u5f00\u59cb\u8fde\u63a5\u8bbe\u5907\u540e\uff0c\u505c\u6b62\u83b7\u53d6\u5df2\u8fde\u63a5\u8bbe\u5907\uff0c\u8fde\u63a5\u5931\u8d25\u81ea\u52a8\u91cd\u65b0\u5f00\u542f\u83b7\u53d6\u3002 <br \/>\uff087\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u7cfb\u7edf\u84dd\u7259\uff0c\u84dd\u7259\u9002\u914d\u5668\u91cd\u7f6e\u3002 <br \/>\uff088\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u7cfb\u7edf\u84dd\u7259\uff0c\u518d\u6b21\u6253\u5f00\u84dd\u7259\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u8fde\u63a5\u3002 <br \/>\uff089\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u76ee\u6807\u84dd\u7259\u8bbe\u5907\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\uff08\u83b7\u53d6\uff09\u3002 <br \/>\uff0810\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u6700\u5c0f\u5316\u5c0f\u7a0b\u5e8f\uff08\u8fde\u63a5\u672a\u4e2d\u65ad\uff09\uff0c\u6253\u5f00\u5c0f\u7a0b\u5e8f\u663e\u793a\u5df2\u8fde\u63a5\u3002 <br \/>\uff0811\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u6740\u6389\u5c0f\u7a0b\u5e8f\u8fdb\u7a0b\uff0c\u8fde\u63a5\u5173\u95ed\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\uff08\u83b7\u53d6\uff09\u3002<\/p>\n<p>3\u3001\u60f3\u8d77\u6765\u4e86\u518d\u6765\u66f4\u65b0&#8230;.\u3002 <\/p>\n<p>4\u3001\u6d41\u7a0b\u56fe\uff0c\u660e\u5929\u6216\u540e\u5929\u6216&#8230;\u8c01\u6709\u7a7a\u5e2e\u6211\u753b\u4e00\u4e0b\u4e5f\u884c\u3002<\/p>\n<p>\u6211\u7684\u8fde\u63a5\u662f\u5728App.js\u4e2d\u505a\u7684\u3002 <\/p>\n<p>\u5728App.js\u4e2d\u7684onLaunch\u89e6\u53d1\u662f\u8c03\u7528 init()\u65b9\u6cd5\u3002 <\/p>\n<p>init\u4ee3\u7801\uff1a<\/p>\n<\/p>\n<pre>init:&nbsp;function&nbsp;(n)&nbsp;{\n&nbsp;&nbsp;this.list&nbsp;=&nbsp;[];\n&nbsp;&nbsp;this.serviceId&nbsp;=&nbsp;\"6E400001-B5A3-F393-E0A9-E50E24DCCA9E\";\n&nbsp;&nbsp;this.serviceId_2&nbsp;=&nbsp;\"00001803-0000-1000-8000-00805F9B34FB\";\n&nbsp;&nbsp;this.serviceId_3&nbsp;=&nbsp;\"00001814-0000-1000-8000-00805F9B34FB\";\n&nbsp;&nbsp;this.serviceId_4&nbsp;=&nbsp;\"00001802-0000-1000-8000-00805F9B34FB\";\n&nbsp;&nbsp;this.serviceId_5&nbsp;=&nbsp;\"00001804-0000-1000-8000-00805F9B34FB\";\n&nbsp;&nbsp;this.serviceId_6&nbsp;=&nbsp;\"00001535-1212-EFDE-1523-785FEABCD123\";\n&nbsp;&nbsp;this.characterId_write&nbsp;=&nbsp;\"6E400042-B5A3-F393-E0A9-E50E24DCCA9E\";\n&nbsp;&nbsp;this.characterId_read&nbsp;=&nbsp;\"6E400012-B5A3-F393-E0A9-E50E24DCCA9E\";\n&nbsp;&nbsp;this.connectDeviceIndex&nbsp;=&nbsp;0;\n&nbsp;&nbsp;this.isGettingConnected&nbsp;=&nbsp;false;\n&nbsp;&nbsp;this.isDiscovering&nbsp;=&nbsp;false;\n&nbsp;&nbsp;this.isConnecting&nbsp;=&nbsp;false;\n&nbsp;&nbsp;this.connectedDevice&nbsp;=&nbsp;{};\n&nbsp;&nbsp;console.log('init&nbsp;state',&nbsp;this.connectedDevice.state);\n&nbsp;&nbsp;if&nbsp;(!this.connectedDevice.state&nbsp;||&nbsp;n&nbsp;==&nbsp;200)&nbsp;{\n&nbsp;&nbsp;&nbsp;this.connectedDevice.state&nbsp;=&nbsp;false;\n&nbsp;&nbsp;&nbsp;this.connectedDevice.deviceId&nbsp;=&nbsp;'';\n&nbsp;&nbsp;&nbsp;this.adapterHasInit&nbsp;=&nbsp;false\n&nbsp;&nbsp;}\n&nbsp;&nbsp;this.startConnect();\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a<\/p>\n<p>1\u3001 serviceId_2~6 \u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u7684serviceId\u53ef\u4ee5\u53ea\u5199\u4e00\u4e2a\u3002 <br \/>2\u3001characterId_write \u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u5199\u5165\u6570\u636e\u7684\u7279\u5f81\u503c\u3002 <br \/>3\u3001characterId_read\u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u8bfb\u53d6\u6570\u636e\u7684\u7279\u5f81\u503c\u3002 <br \/>\uff08\u4ee5\u4e0a3\u4e2a\u90fd\u662f\u4e3a\u4e86\u505a\u6bd4\u5bf9\uff0c\u771f\u5b9e\u7684\u64cd\u4f5c\u6309\u7167\u83b7\u53d6\u5230\u7684sericeid, characterid\u4e3a\u51c6\uff09\u3002 <br \/>4\u3001connectedDevice \u662f\u5df2\u8fde\u63a5\u4e86\u7684\u8bbe\u5907\u4fe1\u606f\u5bf9\u8c61\u3002<\/p>\n<p>init\u5b8c\u6210\u540e\u5f00\u59cb\u8c03\u7528\u8fde\u63a5 startConnect();<\/p>\n<p><strong>startConnect\u4ee3\u7801:<\/strong><\/p>\n<\/p>\n<pre>startConnect:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;if&nbsp;(that.connectedDevice.state)&nbsp;return;\n&nbsp;&nbsp;that.connectedDevice.deviceId&nbsp;=&nbsp;\"\";\n&nbsp;&nbsp;that.connectedDevice.state&nbsp;=&nbsp;false;\n&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u9002\u914d\u5668\u5df2\u7ecf\u521d\u59cb\u5316\u4e0d\u5728\u8c03\u7528\u521d\u59cb\u5316(\u91cd\u590d\u521d\u59cb\u5316\u4f1a\u62a5\u9519)\n&nbsp;&nbsp;if&nbsp;(this.adapterHasInit&nbsp;==&nbsp;undefined&nbsp;||&nbsp;this.adapterHasInit)&nbsp;return;\n&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;title:&nbsp;'\u521d\u59cb\u5316\u84dd\u7259',\n&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;});\n&nbsp;&nbsp;\/\/&nbsp;\u5f00\u542f\u84dd\u7259\u9002\u914d\u5668\u72b6\u6001\u76d1\u542c\n&nbsp;&nbsp;this.listenAdapterStateChange();\n&nbsp;&nbsp;\/\/&nbsp;\u521d\u59cb\u5316\u84dd\u7259\u9002\u914d\u5668\u72b6\u6001(\u5fc5\u987b\u6b65\u9aa4\uff0c\u5426\u5219\u65e0\u6cd5\u8fdb\u884c\u540e\u7eed\u7684\u4efb\u4f55\u64cd\u4f5c)\n&nbsp;&nbsp;wx.openBluetoothAdapter({\n&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(\"\u521d\u59cb\u5316\u84dd\u7259\u9002\u914d\u5668\u6210\u529f\");\n&nbsp;&nbsp;&nbsp;&nbsp;that.getBluetoothAdapterState();\n&nbsp;&nbsp;&nbsp;&nbsp;that.adapterHasInit&nbsp;=&nbsp;true;\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);\n&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u8bf7\u5f00\u84dd\u7259',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:&nbsp;'loading',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;});\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a\u8fd9\u6bb5\u6709\u6ce8\u91ca\uff0c\u5c31\u4e0d\u591a\u8bf4\u4e86\uff0c\u6bd4\u8f83\u7b80\u5355\u3002<\/p>\n<p>\u5728\u521d\u59cb\u5316\u84dd\u7259\u9002\u914d\u5668\u72b6\u6001\u6210\u529f\u540e\u8c03\u7528getBluetoothAdapterState()\u65b9\u6cd5\u3002<\/p>\n<p><strong>getBluetoothAdapterState\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>getBluetoothAdapterState:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;wx.getBluetoothAdapterState({\n&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(res);\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;available&nbsp;=&nbsp;res.available;\n&nbsp;&nbsp;&nbsp;&nbsp;that.isDiscovering&nbsp;=&nbsp;res.discovering;\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!available)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u8bf7\u5f00\u84dd\u7259',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:&nbsp;'loading',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!that.connectedDevice['state'])&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.judegIfDiscovering(res.discovering);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;})\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a\u6b64\u65b9\u6cd5\u662f\u7528\u6765\u83b7\u53d6\u5f53\u524d\u84dd\u7259\u72b6\u6001\u3002<\/p>\n<p>\u5f53\u68c0\u6d4b\u5230\u84dd\u7259\u53ef\u7528\u65f6\u8c03\u7528judegIfDiscovering\u65b9\u6cd5\u3002<\/p>\n<p><strong>judegIfDiscovering\u4ee3\u7801<\/strong>\uff1a<\/p>\n<\/p>\n<pre>judegIfDiscovering:&nbsp;function&nbsp;(discovering)&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;if&nbsp;(this.isConnectinng)&nbsp;return;\n&nbsp;&nbsp;wx.getConnectedBluetoothDevices({\n&nbsp;&nbsp;&nbsp;services:&nbsp;[that.serviceId],\n&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(\"\u83b7\u53d6\u5904\u4e8e\u8fde\u63a5\u72b6\u6001\u7684\u8bbe\u5907\",&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;devices&nbsp;=&nbsp;res['devices'];\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(devices[0])&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(that.isAndroidPlatform)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showToast({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u8fde\u63a5\u6210\u529f',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:&nbsp;'success',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices(256);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(discovering)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u641c\u7d22\u4e2d'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(that.isAndroidPlatform)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startBluetoothDevicesDiscovery();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices(267);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('getConnectedBluetoothDevices&nbsp;err&nbsp;264',&nbsp;err);\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(that.isAndroidPlatform)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startBluetoothDevicesDiscovery();\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices(277);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;});\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a <\/p>\n<p>1\u3001\u6b64\u65b9\u6cd5\u662f\u7528\u6765\u5224\u65ad\u662f\u5426\u6b63\u5728\u626b\u63cf\u3002 <\/p>\n<p>2\u3001isAndroidPlatform \u662f\u901a\u8fc7\u5c0f\u7a0b\u5e8f\u7684getSystemInfo\u83b7\u53d6\u5230\u7684\u5224\u65ad\u662f\u5b89\u5353\u8bbe\u5907\u8fd8\u662fIOS\u8bbe\u5907\u3002<\/p>\n<p>\u5982\u679c\u662f\u5b89\u5353\u8bbe\u5907\u8c03\u7528startBluetoothDevicesDiscovery()\u5f00\u542f\u626b\u63cf\uff0c\u5982\u679c\u662fIOS\u8bbe\u5907\u8c03\u7528getConnectedBluetoothDevices() \u5f00\u542f\u83b7\u53d6\u5df2\u914d\u5bf9\u7684\u84dd\u7259\u8bbe\u5907\u3002<\/p>\n<p><strong>startBluetoothDevicesDiscovery\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>startBluetoothDevicesDiscovery:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;if&nbsp;(!this.isAndroidPlatform)&nbsp;return;\n&nbsp;&nbsp;if&nbsp;(!this.connectedDevice['state'])&nbsp;{\n&nbsp;&nbsp;&nbsp;wx.getBluetoothAdapterState({\n&nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(res);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;available&nbsp;=&nbsp;res.available;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.isDiscovering&nbsp;=&nbsp;res.discovering;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!available)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u8bf7\u5f00\u84dd\u7259',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:&nbsp;'loading',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(res.discovering)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u641c\u7d22\u4e2d'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.startBluetoothDevicesDiscovery({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;services:&nbsp;[],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowDuplicatesKey:&nbsp;true,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.onBluetoothDeviceFound();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u641c\u7d22\u4e2d'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(err.isDiscovering)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u641c\u7d22\u4e2d'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startDiscoveryTimer&nbsp;=&nbsp;setTimeout(function&nbsp;()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!that.connectedDevice.state)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startBluetoothDevicesDiscovery();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;5000)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a<\/p>\n<p>1\u3001\u4ec5\u5728\u5b89\u5353\u7aef\u8bbe\u5907\u4e0a\u5f00\u542f\u626b\u63cf\u9644\u8fd1\u84dd\u7259\u8bbe\u5907\u3002<\/p>\n<p>2\u3001\u5728\u5f00\u542f\u6210\u529f\u7684\u56de\u8c03\u4e2d\u5f00\u542f\u53d1\u73b0\u65b0\u84dd\u7259\u8bbe\u5907\u7684\u4e8b\u4ef6\u76d1\u542conBluetoothDeviceFound()\u3002<\/p>\n<p><strong>onBluetoothDeviceFound\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>[mw_shl_code=javascript,true]onBluetoothDeviceFound:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;wx.onBluetoothDeviceFound(function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;console.log('new&nbsp;device&nbsp;list&nbsp;has&nbsp;founded');\n&nbsp;&nbsp;&nbsp;if&nbsp;(res.devices[0])&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;name&nbsp;=&nbsp;res.devices[0]['name'];\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(name.indexOf('FeiZhi')&nbsp;!=&nbsp;-1)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;deviceId&nbsp;=&nbsp;res.devices[0]['deviceId'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(deviceId);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.deviceId&nbsp;=&nbsp;deviceId;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!that.isConnecting)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startConnectDevices();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;})\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a <\/p>\n<p>1\u3001\u6b64\u5904\u5bf9\u5df2\u53d1\u73b0\u7684\u84dd\u7259\u8bbe\u5907\u6839\u636ename\u5c5e\u6027\u8fdb\u884c\u4e86\u8fc7\u6ee4\u3002 <\/p>\n<p>2\u3001\u5f53\u7b5b\u9009\u51fa\u542b\u6709\u9700\u8981\u8fde\u63a5\u7684\u8bbe\u5907\u7684name\u5c5e\u6027\u7684\u8bbe\u5907\u662f\u83b7\u53d6\u5230deviceId\uff0c\u5f00\u59cb\u8fde\u63a5\u8c03\u7528startConnectDevices()\u65b9\u6cd5\u3002<\/p>\n<p><strong>startConnectDevices\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>startConnectDevices:&nbsp;function&nbsp;(ltype,&nbsp;array)&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;clearTimeout(this.getConnectedTimer);\n&nbsp;&nbsp;clearTimeout(this.startDiscoveryTimer);\n&nbsp;&nbsp;this.getConnectedTimer&nbsp;=&nbsp;null;\n&nbsp;&nbsp;this.startDiscoveryTimer&nbsp;=&nbsp;null;\n&nbsp;&nbsp;this.isConnectinng&nbsp;=&nbsp;true;\n&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;title:&nbsp;'\u6b63\u5728\u8fde\u63a5'\n&nbsp;&nbsp;});\n&nbsp;&nbsp;that.stopBluetoothDevicesDiscovery();\n&nbsp;&nbsp;wx.createBLEConnection({\n&nbsp;&nbsp;&nbsp;deviceId:&nbsp;that.deviceId,\n&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u8fde\u63a5\u6210\u529f',&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u6b63\u5728\u8fde\u63a5'\n&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;that.connectedDevice.state&nbsp;=&nbsp;true;\n&nbsp;&nbsp;&nbsp;&nbsp;that.connectedDevice.deviceId&nbsp;=&nbsp;that.deviceId;\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(res.errCode&nbsp;==&nbsp;0)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(function&nbsp;()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getService(that.deviceId);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;5000)\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;wx.onBLEConnectionStateChange(function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u8fde\u63a5\u53d8\u5316',&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.connectedDevice.state&nbsp;=&nbsp;res.connected;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.connectedDevice.deviceId&nbsp;=&nbsp;res.deviceId;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!res.connected)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.init('200');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log('\u8fde\u63a5\u5931\u8d25\uff1a',&nbsp;err);\n&nbsp;&nbsp;&nbsp;&nbsp;wx.hideLoading();\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ltype&nbsp;==&nbsp;'loop')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;=&nbsp;array.splice(0,&nbsp;1);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(array);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.loopConnect(array);\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(that.isAndroidPlatform)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.startBluetoothDevicesDiscovery();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices(488);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;complete:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;that.isConnectinng&nbsp;=&nbsp;false;\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;});\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a <\/p>\n<p>1\u3001\u5f00\u542f\u8fde\u63a5\u540e\u7ec8\u6b62\u626b\u63cf\uff08\u83b7\u53d6\u5df2\u914d\u5bf9\uff09\u65b9\u6cd5\u3002 <br \/>2\u3001\u6839\u636edeviceId\u521b\u5efa\u4f4e\u529f\u8017\u84dd\u7259\u8fde\u63a5\u3002\u5982\u679c\u8fde\u63a5\u6210\u529f\uff0c\u5c31\u7ee7\u7eed\u505a\u540e\u7eed\u8bfb\u5199\u64cd\u4f5c\u3002 <br \/>3\u3001\u5982\u679c\u8fde\u63a5\u5931\u8d25\u6839\u636e\u8bbe\u5907\u7cfb\u7edf\u5206\u522b\u8c03\u7528startBluetoothDevicesDiscovery() \u6216 getConnectedBluetoothDevices();<\/p>\n<p><strong>getConnectedBluetoothDevices\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>getConnectedBluetoothDevices:&nbsp;function&nbsp;(n)&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;that.isGettingConnected&nbsp;=&nbsp;true;\n&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;title:&nbsp;'\u84dd\u7259\u641c\u7d22\u4e2d'\n&nbsp;&nbsp;});\n&nbsp;&nbsp;wx.getConnectedBluetoothDevices({\n&nbsp;&nbsp;&nbsp;services:&nbsp;[that.serviceId],\n&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(\"\u83b7\u53d6\u5904\u4e8e\u8fde\u63a5\u72b6\u6001\u7684\u8bbe\u5907\",&nbsp;res);\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;devices&nbsp;=&nbsp;res['devices'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;false,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;0,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conDevList&nbsp;=&nbsp;[];\n&nbsp;&nbsp;&nbsp;&nbsp;devices.forEach(function&nbsp;(value,&nbsp;index,&nbsp;array)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(value['name'].indexOf('FeiZhi')&nbsp;!=&nbsp;-1)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u5b58\u5728\u5305\u542bFeiZhi\u5b57\u6bb5\u7684\u8bbe\u5907\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;true;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;+=&nbsp;1;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conDevList.push(value['deviceId']);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.deviceId&nbsp;=&nbsp;value['deviceId'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(flag)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.connectDeviceIndex&nbsp;=&nbsp;0;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.loopConnect(conDevList);\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.failToGetConnected();\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;that.failToGetConnected();\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;complete:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;that.isGettingConnected&nbsp;=&nbsp;false;\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;});\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a\u5982\u679c\u83b7\u53d6\u84dd\u7259\u5df2\u914d\u5bf9\u7684\u84dd\u7259\u8bbe\u5907\u5931\u8d25\u4e86\uff0c\u6216\u83b7\u53d6\u5230\u7684\u5217\u8868\u4e3a\u7a7a\u8c03\u7528failToGetConnected();<\/p>\n<p><strong>failToGetConnected\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>failToGetConnected:&nbsp;function&nbsp;()&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;if&nbsp;(!that.getConnectedTimer)&nbsp;{\n&nbsp;&nbsp;&nbsp;clearTimeout(that.getConnectedTimer);\n&nbsp;&nbsp;&nbsp;that.getConnectedTimer&nbsp;=&nbsp;null;\n&nbsp;&nbsp;}\n&nbsp;&nbsp;that.getConnectedTimer&nbsp;=&nbsp;setTimeout(function&nbsp;()&nbsp;{\n&nbsp;&nbsp;&nbsp;wx.getBluetoothAdapterState({\n&nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(res)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(res);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;available&nbsp;=&nbsp;res.available;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!available)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.showLoading({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'\u8bf7\u5f00\u84dd\u7259',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:&nbsp;'loading',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;2000\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!that.connectedDevice['state'])&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;fail:&nbsp;function&nbsp;(err)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;})\n&nbsp;&nbsp;},&nbsp;5000);\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1a <\/p>\n<p>1\u3001\u8be5\u65b9\u6cd5\u8c03\u7528\u6210\u529f\u540e\u8fd4\u56de\u7684devices\u662f\u4e00\u4e2a\u6570\u7ec4\u5305\u542b\u591a\u4e2a\u5df2\u7ecf\u7cfb\u7edf\u914d\u5bf9\u7684\u84dd\u7259\u8bbe\u5907\u3002 <br \/>2\u3001\u5982\u679cdevices\u5217\u8868\u83b7\u53d6\u5230\u8c03\u7528loopConnect()\u65b9\u6cd5\u5f00\u59cb\u9012\u5f52\u8c03\u7528\u8fde\u63a5\u84dd\u7259\u8bbe\u5907\u3002<\/p>\n<p><strong>loopConnect\u4ee3\u7801\uff1a<\/strong><\/p>\n<\/p>\n<pre>loopConnect:&nbsp;function&nbsp;(array)&nbsp;{\n&nbsp;&nbsp;var&nbsp;that&nbsp;=&nbsp;this;\n&nbsp;&nbsp;var&nbsp;listLen&nbsp;=&nbsp;array.length;\n&nbsp;&nbsp;if&nbsp;(array[0])&nbsp;{\n&nbsp;&nbsp;&nbsp;that.deviceId&nbsp;=&nbsp;array[0];\n&nbsp;&nbsp;&nbsp;if&nbsp;(!that.isConnecting)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;that.startConnectDevices('loop',&nbsp;array);\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;console.log('\u5df2\u914d\u5bf9\u7684\u8bbe\u5907\u5c0f\u7a0b\u5e8f\u84dd\u7259\u8fde\u63a5\u5931\u8d25');\n&nbsp;&nbsp;&nbsp;if&nbsp;(!that.isAndroidPlatform)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;that.getConnectedBluetoothDevices(431);\n&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;}\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bf4\u660e\uff1alooConnect\u5728\u521b\u5efa\u8fde\u63a5\u7684\u65b9\u6cd5\u8fde\u63a5\u5931\u8d25\u540e\u4f1a\u64cd\u4f5c\u5220\u9664\u6570\u7ec4\u7684\u7b2c\u4e00\u4e2a\u503c\uff0c\u7136\u540e\u7ee7\u7eed\u8c03\u7528\u8be5\u65b9\u6cd5\uff0c\u76f4\u5230\u5176\u4e2d\u6240\u6709\u7684\u8bbe\u5907\u90fd\u8fde\u63a5\u8fc7\u3002 <\/p>\n<p>\u5dee\u70b9\u6f0f\u4e86\uff1a\u5728app.js\u7684onShow\u91cc\u8c03\u7528init()\u65b9\u6cd5\u3002<\/p>\n<p><strong>\u7279\u522b\u8bf4\u660e\uff1a<\/strong><\/p>\n<p>1\u3001\u5b89\u5353\u548cIOS\u7684\u84dd\u7259\u8fde\u63a5\u5728\u5f53\u524d\u7248\u672c\u4e2d\u63a8\u8350\u91c7\u7528\u4e0d\u540c\u65b9\u5f0f\u3002\u5b89\u5353\u8bbe\u5907\u76f4\u63a5\u4f7f\u7528\u5c0f\u7a0b\u5e8f\u7684\u84dd\u7259\u8fde\u63a5\uff0c\u53d6\u6d88\u7cfb\u7edf\u914d\u5bf9\u3002IOS\u8bbe\u5907\u5148\u7cfb\u7edf\u914d\u5bf9\u5728\u6253\u5f00\u5c0f\u7a0b\u5e8f\u53ef\u4ee5\u65f6\u6548\u79d2\u8fde\u63a5\u6210\u529f\u3002 <\/p>\n<p>2\u3001\u6b64\u7248\u672c\u7684\u8fde\u63a5\u4ecd\u7136\u6709\u5f85\u5b8c\u5584\uff0c\u8fde\u63a5\u4e0d\u4f1a\u81ea\u52a8\u7ec8\u6b62\uff08\u9700\u8981\u7684\u53ef\u4ee5\u81ea\u5df1\u52a0\uff09\uff0c\u4f1a\u65e0\u9650\u626b\u63cf\u91cd\u8fde\uff0c\u76f4\u5230\u6210\u529f\u3002 <\/p>\n<p>3\u3001\u94fe\u63a5\u6210\u529f\u540e\u7684\u64cd\u4f5c\u5982\u679c\u5199\u5165\u6570\u636e\u548c\u5f00\u542fnotify\u9700\u8981\u540c\u65f6\u8fdb\u884c\uff0c\u5efa\u8bae\u5148\u5199\u5165\uff0c\u540e\u5f00\u542fnotify\u3002\uff08\u539f\u56e0\u672a\u77e5\uff0c\u5426\u5219\u5fc5\u7136\u51fa\u73b010008\u9519\u8bef\uff09\u3002<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u672c\u6587\u7684\u5168\u90e8\u5185\u5bb9\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u7684\u5b66\u4e60\u6709\u6240\u5e2e\u52a9\uff0c\u66f4\u591a\u76f8\u5173\u5185\u5bb9\u8bf7\u5173\u6ce8PHP\u4e2d\u6587\u7f51\uff01<\/p>\n<p>\u76f8\u5173\u63a8\u8350\uff1a<\/p>\n<p><\/p>\n<p><\/p>\n<p><\/p>\n<\/p>\n<p><span><\/span><\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e2d\u84dd\u7259\u7684\u94fe\u63a5\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e4b\u84dd\u7259\u7684\u94fe\u63a5\u7684\u76f8\u5173\u8d44\u6599,\u5e0c\u671b\u901a\u8fc7\u672c\u6587\u5927\u5bb6\u80fd\u591f\u638c\u63e1\u5c0f\u7a0b\u5e8f\u84dd\u7259\u7684\u5f00\u53d1\u65b9\u6cd5\uff0c\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b \u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u4e4b\u84dd\u7259\u7684\u94fe\u63a5 \u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u84dd\u7259\u8fde\u63a52.0\u8bf4\u660e\uff1a 1\u3001\u672c\u7248\u672c\u533a\u5206\u4e86ANDROID\u548cIOS\u7cfb\u7edf\u4e0b\u84dd\u7259\u8fde\u63a5\u7684\u4e0d\u540c\u65b9\u5f0f\u3002 2\u3001\u517c\u5bb9\u4e86\u66f4\u591a\u60c5\u51b5\u4e0b\u7684\u94fe\u63a5\u5305\u62ec\uff1a \uff081\uff09\u672a\u5f00\u542f\u8bbe\u5907\u84dd\u7259\uff0c\u5f53\u76d1\u542c\u5230\u5f00\u542f\u4e86\u84dd\u7259\u540e\u81ea\u52a8\u5f00\u59cb\u8fde\u63a5\u3002 \uff082\uff09\u521d\u59cb\u5316\u84dd\u7259\u5931\u8d25\u540e\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u521d\u59cb\u5316\u84dd\u7259\u9002\u914d\u5668\u3002 \uff083\uff09\u5b89\u5353\u7aef\u5f00\u542f\u84dd\u7259\u9002\u914d\u5668\u626b\u63cf\u5931\u8d25\uff0c\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u5f00\u542f\u3002 \uff084\uff09IOS\u7aef\u83b7\u53d6\u5df2\u8fde\u63a5\u84dd\u7259\u8bbe\u5907\u4e3a\u7a7a\uff0c\u6bcf3000ms\u81ea\u52a8\u91cd\u65b0\u83b7\u53d6\u3002 \uff085\uff09\u5b89\u5353\u7aef\u84dd\u7259\u5f00\u59cb\u94fe\u63a5\u540e\u4e2d\u65ad\u626b\u63cf\uff0c\u8fde\u63a5\u5931\u8d25\u4e86\uff0c\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\u3002 \uff086\uff09IOS\u7aef\u5f00\u59cb\u8fde\u63a5\u8bbe\u5907\u540e\uff0c\u505c\u6b62\u83b7\u53d6\u5df2\u8fde\u63a5\u8bbe\u5907\uff0c\u8fde\u63a5\u5931\u8d25\u81ea\u52a8\u91cd\u65b0\u5f00\u542f\u83b7\u53d6\u3002 \uff087\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u7cfb\u7edf\u84dd\u7259\uff0c\u84dd\u7259\u9002\u914d\u5668\u91cd\u7f6e\u3002 \uff088\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u7cfb\u7edf\u84dd\u7259\uff0c\u518d\u6b21\u6253\u5f00\u84dd\u7259\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u8fde\u63a5\u3002 \uff089\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u5173\u95ed\u76ee\u6807\u84dd\u7259\u8bbe\u5907\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\uff08\u83b7\u53d6\uff09\u3002 \uff0810\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u6700\u5c0f\u5316\u5c0f\u7a0b\u5e8f\uff08\u8fde\u63a5\u672a\u4e2d\u65ad\uff09\uff0c\u6253\u5f00\u5c0f\u7a0b\u5e8f\u663e\u793a\u5df2\u8fde\u63a5\u3002 \uff0811\uff09\u8fde\u63a5\u6210\u529f\u540e\uff0c\u6740\u6389\u5c0f\u7a0b\u5e8f\u8fdb\u7a0b\uff0c\u8fde\u63a5\u5173\u95ed\uff0c\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u626b\u63cf\uff08\u83b7\u53d6\uff09\u3002 3\u3001\u60f3\u8d77\u6765\u4e86\u518d\u6765\u66f4\u65b0&#8230;.\u3002 4\u3001\u6d41\u7a0b\u56fe\uff0c\u660e\u5929\u6216\u540e\u5929\u6216&#8230;\u8c01\u6709\u7a7a\u5e2e\u6211\u753b\u4e00\u4e0b\u4e5f\u884c\u3002 \u6211\u7684\u8fde\u63a5\u662f\u5728App.js\u4e2d\u505a\u7684\u3002 \u5728App.js\u4e2d\u7684onLaunch\u89e6\u53d1\u662f\u8c03\u7528 init()\u65b9\u6cd5\u3002 init\u4ee3\u7801\uff1a init:&nbsp;function&nbsp;(n)&nbsp;{ &nbsp;&nbsp;this.list&nbsp;=&nbsp;[]; &nbsp;&nbsp;this.serviceId&nbsp;=&nbsp;&#8220;6E400001-B5A3-F393-E0A9-E50E24DCCA9E&#8221;; &nbsp;&nbsp;this.serviceId_2&nbsp;=&nbsp;&#8220;00001803-0000-1000-8000-00805F9B34FB&#8221;; &nbsp;&nbsp;this.serviceId_3&nbsp;=&nbsp;&#8220;00001814-0000-1000-8000-00805F9B34FB&#8221;; &nbsp;&nbsp;this.serviceId_4&nbsp;=&nbsp;&#8220;00001802-0000-1000-8000-00805F9B34FB&#8221;; &nbsp;&nbsp;this.serviceId_5&nbsp;=&nbsp;&#8220;00001804-0000-1000-8000-00805F9B34FB&#8221;; &nbsp;&nbsp;this.serviceId_6&nbsp;=&nbsp;&#8220;00001535-1212-EFDE-1523-785FEABCD123&#8221;; &nbsp;&nbsp;this.characterId_write&nbsp;=&nbsp;&#8220;6E400042-B5A3-F393-E0A9-E50E24DCCA9E&#8221;; &nbsp;&nbsp;this.characterId_read&nbsp;=&nbsp;&#8220;6E400012-B5A3-F393-E0A9-E50E24DCCA9E&#8221;; &nbsp;&nbsp;this.connectDeviceIndex&nbsp;=&nbsp;0; &nbsp;&nbsp;this.isGettingConnected&nbsp;=&nbsp;false; &nbsp;&nbsp;this.isDiscovering&nbsp;=&nbsp;false; &nbsp;&nbsp;this.isConnecting&nbsp;=&nbsp;false; &nbsp;&nbsp;this.connectedDevice&nbsp;=&nbsp;{}; &nbsp;&nbsp;console.log(&#8216;init&nbsp;state&#8217;,&nbsp;this.connectedDevice.state); &nbsp;&nbsp;if&nbsp;(!this.connectedDevice.state&nbsp;||&nbsp;n&nbsp;==&nbsp;200)&nbsp;{ &nbsp;&nbsp;&nbsp;this.connectedDevice.state&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;this.connectedDevice.deviceId&nbsp;=&nbsp;&#8221;; &nbsp;&nbsp;&nbsp;this.adapterHasInit&nbsp;=&nbsp;false &nbsp;&nbsp;} &nbsp;&nbsp;this.startConnect(); &nbsp;} \u767b\u5f55\u540e\u590d\u5236 \u8bf4\u660e\uff1a 1\u3001 serviceId_2~6 \u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u7684serviceId\u53ef\u4ee5\u53ea\u5199\u4e00\u4e2a\u3002 2\u3001characterId_write \u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u5199\u5165\u6570\u636e\u7684\u7279\u5f81\u503c\u3002 3\u3001characterId_read\u662f\u6211\u5df2\u77e5\u7684\u60f3\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u8bfb\u53d6\u6570\u636e\u7684\u7279\u5f81\u503c\u3002 \uff08\u4ee5\u4e0a3\u4e2a\u90fd\u662f\u4e3a\u4e86\u505a\u6bd4\u5bf9\uff0c\u771f\u5b9e\u7684\u64cd\u4f5c\u6309\u7167\u83b7\u53d6\u5230\u7684sericeid, characterid\u4e3a\u51c6\uff09\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-31651","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/31651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=31651"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/31651\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=31651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=31651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=31651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}