From ef75c1ecde0c94287d3fde244744bc5d1486ee16 Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 20 Sep 2019 18:47:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20app=20=E7=AB=AF=20b?= =?UTF-8?q?le=20=E6=8E=A5=E5=8F=A3=E6=97=A0=E6=B3=95=E5=86=99=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app-plus/service/api/device/bluetooth.js | 47 ++++++++++++++----- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/src/platforms/app-plus/service/api/device/bluetooth.js b/src/platforms/app-plus/service/api/device/bluetooth.js index 02f755e5e..c36dfdc00 100644 --- a/src/platforms/app-plus/service/api/device/bluetooth.js +++ b/src/platforms/app-plus/service/api/device/bluetooth.js @@ -1,14 +1,14 @@ import { invoke, - publish, - pack, - unpack + publish, + arrayBufferToBase64, + base64ToArrayBuffer } from '../../bridge' /** * 执行蓝牙相关方法 */ -function bluetoothExec (method, callbackId, data = {}) { +function bluetoothExec (method, callbackId, data = {}, beforeSuccess) { var deviceId = data.deviceId if (deviceId) { data.deviceId = deviceId.toUpperCase() @@ -20,7 +20,10 @@ function bluetoothExec (method, callbackId, data = {}) { plus.bluetooth[method.replace('Changed', 'Change')](Object.assign(data, { success (data) { - invoke(callbackId, Object.assign({}, pack(data), { + if (typeof beforeSuccess === 'function') { + beforeSuccess(data) + } + invoke(callbackId, Object.assign({}, data, { errMsg: `${method}:ok`, code: undefined, message: undefined @@ -37,9 +40,12 @@ function bluetoothExec (method, callbackId, data = {}) { /** * 监听蓝牙相关事件 */ -function bluetoothOn (method) { +function bluetoothOn (method, beforeSuccess) { plus.bluetooth[method.replace('Changed', 'Change')](function (data) { - publish(method, Object.assign({}, pack(data), { + if (typeof beforeSuccess === 'function') { + beforeSuccess(data) + } + publish(method, Object.assign({}, data, { code: undefined, message: undefined })) @@ -47,6 +53,16 @@ function bluetoothOn (method) { return true } +function checkDevices (data) { + data.devices = data.devices.map(device => { + var advertisData = device.advertisData + if (advertisData && typeof advertisData !== 'string') { + device.advertisData = arrayBufferToBase64(advertisData) + } + return device + }) +} + var onBluetoothAdapterStateChange var onBluetoothDeviceFound var onBLEConnectionStateChange @@ -67,7 +83,7 @@ export function getBluetoothAdapterState (data, callbackId) { } export function startBluetoothDevicesDiscovery (data, callbackId) { - onBluetoothDeviceFound = onBluetoothDeviceFound || bluetoothOn('onBluetoothDeviceFound') + onBluetoothDeviceFound = onBluetoothDeviceFound || bluetoothOn('onBluetoothDeviceFound', checkDevices) bluetoothExec('startBluetoothDevicesDiscovery', callbackId, data) } @@ -76,7 +92,7 @@ export function stopBluetoothDevicesDiscovery (data, callbackId) { } export function getBluetoothDevices (data, callbackId) { - bluetoothExec('getBluetoothDevices', callbackId, {}) + bluetoothExec('getBluetoothDevices', callbackId, {}, checkDevices) } export function getConnectedBluetoothDevices (data, callbackId) { @@ -102,12 +118,18 @@ export function getBLEDeviceCharacteristics (data, callbackId) { } export function notifyBLECharacteristicValueChange (data, callbackId) { - onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange') + onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange', + data => { + data.value = arrayBufferToBase64(data.value) + }) bluetoothExec('notifyBLECharacteristicValueChange', callbackId, data) } export function notifyBLECharacteristicValueChanged (data, callbackId) { - onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange') + onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange', + data => { + data.value = arrayBufferToBase64(data.value) + }) bluetoothExec('notifyBLECharacteristicValueChanged', callbackId, data) } @@ -116,5 +138,6 @@ export function readBLECharacteristicValue (data, callbackId) { } export function writeBLECharacteristicValue (data, callbackId) { - bluetoothExec('writeBLECharacteristicValue', callbackId, unpack(data)) + data.value = base64ToArrayBuffer(data.value) + bluetoothExec('writeBLECharacteristicValue', callbackId, data) } -- GitLab