|
@@ -4,7 +4,9 @@
|
|
// const BtIOSHelper = require('./BtIOSHelper');
|
|
// const BtIOSHelper = require('./BtIOSHelper');
|
|
// const QueueManager = require('./QueueManager');
|
|
// const QueueManager = require('./QueueManager');
|
|
// const DeviceManager = require('./DeviceManager');
|
|
// const DeviceManager = require('./DeviceManager');
|
|
-const { CmdBase, BtCmd, } = require('./../devices/bluetooth/bt_cmd');
|
|
|
|
|
|
+const { CmdBase, BtCmd } = require('./../devices/bluetooth/bt_cmd');
|
|
|
|
+const { EnumCmdEvent, CmdEvent } = require('./../devices/cmd_key_event');
|
|
|
|
+const { addNotification } = require('./../utils/event_bus');
|
|
const BtParse = require('./../devices/bluetooth/bt_parse');
|
|
const BtParse = require('./../devices/bluetooth/bt_parse');
|
|
// const VolumeUtil = require('./VolumeUtil');
|
|
// const VolumeUtil = require('./VolumeUtil');
|
|
// const EventManager = require('./EventManager');
|
|
// const EventManager = require('./EventManager');
|
|
@@ -58,8 +60,245 @@ class BtHelper {
|
|
this.queueManager.listenTask((task) => {
|
|
this.queueManager.listenTask((task) => {
|
|
_this.bleManager.sendData(task);
|
|
_this.bleManager.sendData(task);
|
|
});
|
|
});
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ addNotification(CmdEvent.eventName, function (event) {
|
|
|
|
+ console.log("蓝牙helper:", event)
|
|
|
|
+ let device = getApp().globalData.mDeviceList[0] ?? {};
|
|
|
|
+ if (device.connectType != 1 && device.state != "online") {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ _this.handleCommand(event, device);
|
|
|
|
+
|
|
|
|
+ }, this)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ handleCommand(event, mDevice) {
|
|
|
|
+ let name = event.name;
|
|
|
|
+
|
|
|
|
+ switch (name) {
|
|
|
|
+ ///音量 设备控制手机
|
|
|
|
+ case EnumCmdEvent.volume:
|
|
|
|
+ var volume = event.volume;
|
|
|
|
+ // if (ProviderUtil.play.isSimulate) {
|
|
|
|
+ // _isPhoneVolume = false;
|
|
|
|
+ // await VolumeUtil.setVolume(volume);
|
|
|
|
+ // Future.delayed(const Duration(milliseconds: 100), () {
|
|
|
|
+ // _isPhoneVolume = true;
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+ mDevice.volume = volume;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///电量
|
|
|
|
+ case EnumCmdEvent.battery:
|
|
|
|
+ mDevice.kwh = event.kwh;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///低时延模式 低时延模式开启 1:音乐 , 2: 游戏 , 3: movie
|
|
|
|
+ case EnumCmdEvent.lowDelayMode:
|
|
|
|
+ mDevice.lowDelayMode = event.lowDelayMode;
|
|
|
|
+ mDevice.lowDelayModeOpen = event.lowDelayModeOpen;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///电量 耳机电量
|
|
|
|
+ case EnumCmdEvent.batteryEarphone:
|
|
|
|
+ mDevice.kwh = event.kwh;
|
|
|
|
+ mDevice.kwhLeft = event.kwhLeft;
|
|
|
|
+ mDevice.kwhRight = event.kwhRight;
|
|
|
|
+ mDevice.kwhBox = event.kwhBox;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///是否支持TTS
|
|
|
|
+ case EnumCmdEvent.enableTTS:
|
|
|
|
+ mDevice.enableTTS = event.enableTTS;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///切换设备连接模式 0:未知 1:低功耗蓝牙 2:wifi类型 3:经典蓝牙(不做任何操作) 4:4G类型
|
|
|
|
+ case EnumCmdEvent.switchDeviceMode:
|
|
|
|
+ var deviceMode = event.deviceMode.index;
|
|
|
|
+ if (deviceMode != null) {
|
|
|
|
+ L.d("switchDeviceMode======$deviceMode");
|
|
|
|
+ mDevice.deviceMode = deviceMode;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///4G外插卡 4G虚拟卡 当前使用的sim卡
|
|
|
|
+ case EnumCmdEvent.sim:
|
|
|
|
+ mDevice.sim = event.sim;
|
|
|
|
+ mDevice.eSim = event.eSim;
|
|
|
|
+ mDevice.simIndex = event.simIndex;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///闹钟是否开启 闹钟周期 闹钟唤醒时间
|
|
|
|
+ case EnumCmdEvent.wake:
|
|
|
|
+ mDevice.wakeSwitch = event.wakeSwitch;
|
|
|
|
+ mDevice.wakeCycle = event.wakeCycle;
|
|
|
|
+ mDevice.wakeHour = event.wakeHour;
|
|
|
|
+ mDevice.wakeMinutes = event.wakeMinutes;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///休眠是否开启 休眠时间
|
|
|
|
+ case EnumCmdEvent.sleep:
|
|
|
|
+ mDevice.sleepSwitch = event.sleepSwitch;
|
|
|
|
+ mDevice.sleepHour = event.sleepHour;
|
|
|
|
+ mDevice.sleepMinutes = event.sleepMinutes;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///版本和型号
|
|
|
|
+ case EnumCmdEvent.version:
|
|
|
|
+ mDevice.version = event.version;
|
|
|
|
+ var clientType = mDevice.clientType ?? "";
|
|
|
|
+
|
|
|
|
+ ///验证设备首页固件升级图标
|
|
|
|
+ // getCheckOTAIndexProvider.refresh();
|
|
|
|
+
|
|
|
|
+ // // TODO 校验版本是否升级
|
|
|
|
+ // if (clientType.isNotEmpty) {
|
|
|
|
+ // var response = await DeviceService.getDeviceDetail(
|
|
|
|
+ // clientType: clientType,
|
|
|
|
+ // version: event.version,
|
|
|
|
+ // type: mDevice.deviceMode ?? EnumDeviceMode.ble.index,
|
|
|
|
+ // );
|
|
|
|
+
|
|
|
|
+ // if (response.isSuccess) {
|
|
|
|
+ // DeviceDetailEntity ? updateData = response.data;
|
|
|
|
+ // if (updateData != null) {
|
|
|
|
+ // // mDevice.typeList = updateData.typeList;
|
|
|
|
+ // // 是否强制升级0-无更新 1-是,2-否
|
|
|
|
+ // var force = updateData.isEnforcement;
|
|
|
|
+ // var hasNewVersion = force == 1 || force == 2;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // // if (force == 1) {
|
|
|
|
+ // // EventManager.fire(OtaUpdateEvent(updateData: updateData));
|
|
|
|
+ // // }
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///云小微授权
|
|
|
|
+ case EnumCmdEvent.auth:
|
|
|
|
+ var authInfo = event.authInfo;
|
|
|
|
+ mDevice.authInfo = authInfo;
|
|
|
|
+ // QQMusicManager.auth(authInfo: authInfo);
|
|
|
|
+ // CacheUtil.saveDSN(dsn: authInfo.dsn ?? "");
|
|
|
|
+ break;
|
|
|
|
+ case EnumCmdEvent.btMac:
|
|
|
|
+ var btMac = event.btMac;
|
|
|
|
+ mDevice.btMac = btMac;
|
|
|
|
+ // // 更新一下 imei
|
|
|
|
+ // getDeviceImei().then((e) {
|
|
|
|
+ // mDevice.imei = e;
|
|
|
|
+ // });
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///EQ音效
|
|
|
|
+ case EnumCmdEvent.eq:
|
|
|
|
+ mDevice.eqs = event.eqs;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///payId 充流量使用
|
|
|
|
+ case EnumCmdEvent.payId:
|
|
|
|
+ mDevice.payId = event.payId;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///QQ音乐使用dsn授权
|
|
|
|
+ case EnumCmdEvent.dsn:
|
|
|
|
+ var dsn = event.dsn;
|
|
|
|
+ mDevice.dsn = dsn;
|
|
|
|
+ // //存储设备的DSN
|
|
|
|
+ // await CacheUtil.saveDSN(dsn: dsn ?? "");
|
|
|
|
+ // ProviderUtil.twelvePublic.wifiDeviceConnected();
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///自动切换 0,1不能
|
|
|
|
+ ///
|
|
|
|
+ case EnumCmdEvent.netModeAuto:
|
|
|
|
+ mDevice.netModeAuto = event.netModeAuto;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///解绑设备
|
|
|
|
+ case EnumCmdEvent.unbind:
|
|
|
|
+ // let unbindAddress = event.item.address ?? "";
|
|
|
|
+ // if (unbindAddress != mDevice.address) {
|
|
|
|
+ // _resetList();
|
|
|
|
+ // return;
|
|
|
|
+ // }
|
|
|
|
+ // _lastConnectAddress = null;
|
|
|
|
+ // bondedDeviceData.remove(mDevice);
|
|
|
|
+ // if (mDevice.address == event.item.address) {
|
|
|
|
+ // mDevice = null;
|
|
|
|
+ // }
|
|
|
|
+ // _resetList();
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///解绑设备
|
|
|
|
+ case EnumCmdEvent.ctrlStatus:
|
|
|
|
+ // List < int > ctrlList = event.ctrlStatus;
|
|
|
|
+ // if (ctrlList.length == 3) {
|
|
|
|
+ // mDevice.singleClick = ctrlList[0];
|
|
|
|
+ // mDevice.doubleClick = ctrlList[1];
|
|
|
|
+ // mDevice.longPressClick = ctrlList[2];
|
|
|
|
+ // }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case EnumCmdEvent.lowPowerOpen:
|
|
|
|
+ let lowPower = event.lowPowerOpen ?? 0;
|
|
|
|
+ mDevice.lowPowerOpen = lowPower;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case EnumCmdEvent.authSleepStatus:
|
|
|
|
+ let pauseSleep = event.pauseSleep;
|
|
|
|
+ mDevice.pauseSleep = pauseSleep;
|
|
|
|
+
|
|
|
|
+ notifyListeners();
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ ///设备信息
|
|
|
|
+ case EnumCmdEvent.getDeviceInfo:
|
|
|
|
+ // List list = [];
|
|
|
|
+ // String userId = ProviderUtil.user.userModel.uid ?? "";
|
|
|
|
+ // for (var element in bondedDeviceData) {
|
|
|
|
+ // list.add({
|
|
|
|
+ // "clientType": element.clientType ?? "",
|
|
|
|
+ // "userId": userId,
|
|
|
|
+ // "deviceName": element.name ?? "",
|
|
|
|
+ // "mac": element.address,
|
|
|
|
+ // "deviceId": element.deviceId ?? 0,
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // MobClickEvent.mobClickEvent(EnumMobEvent.eventDevicesConnect, params: { "devices": list });
|
|
|
|
+ // if (mDevice != null) {
|
|
|
|
+ // mDevice.imei ??= await CacheUtil.getImei(address: mDevice.address ?? "");
|
|
|
|
+
|
|
|
|
+ // /// 用户绑定设备
|
|
|
|
+ // await CacheUtil.addDevice(item: mDevice!);
|
|
|
|
+
|
|
|
|
+ // // String dsn = await CacheUtil.getDSN();
|
|
|
|
+ // // if (dsn.isEmpty) {
|
|
|
|
+ // // 获取设备dsn
|
|
|
|
+ // DeviceManager.instance.auth();
|
|
|
|
+ // // }
|
|
|
|
+ // //延迟
|
|
|
|
+ // var address = mDevice.address ?? "";
|
|
|
|
+ // bool isSuccess = await ProviderUtil.twelve.questDeviceTwelveData(address);
|
|
|
|
+ // if (isSuccess) {
|
|
|
|
+ // bool showDevice = await DeviceChannelAllPage.presentPage();
|
|
|
|
+ // if (!showDevice) {
|
|
|
|
+ // VipOpenAiTingDialogWidget.presentPage();
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // await CacheUtil.saveConnectedDevice(list: bondedDeviceData);
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
resetConnectState(connect) {
|
|
resetConnectState(connect) {
|
|
// BtHelper._isConnecting = connect;
|
|
// BtHelper._isConnecting = connect;
|
|
@@ -171,8 +410,8 @@ class BtHelper {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- async disconnect(data) {
|
|
|
|
- this.bleManager.disconnect(data.deviceId)
|
|
|
|
|
|
+ async disconnect() {
|
|
|
|
+ this.bleManager.disconnect()
|
|
}
|
|
}
|
|
|
|
|
|
async dispose() {
|
|
async dispose() {
|
|
@@ -323,7 +562,9 @@ class BtHelper {
|
|
}
|
|
}
|
|
|
|
|
|
async setSleep(open, hour, minutes) {
|
|
async setSleep(open, hour, minutes) {
|
|
- this.send(BtCmd.setSleep({ switchStatus: open, hour, minutes }));
|
|
|
|
|
|
+ let defaultMin = minutes ?? 10;
|
|
|
|
+ let defaultHour = hour ?? 0;
|
|
|
|
+ this.send(BtCmd.setSleep({ switchStatus: open, defaultHour, defaultMin }));
|
|
}
|
|
}
|
|
|
|
|
|
async setTime() {
|
|
async setTime() {
|
|
@@ -401,6 +642,9 @@ class BtHelper {
|
|
}
|
|
}
|
|
|
|
|
|
async setLowDelayMode(open, mode) {
|
|
async setLowDelayMode(open, mode) {
|
|
|
|
+ // 0 open,
|
|
|
|
+ // 1 close,
|
|
|
|
+ // mode 1:音乐 , 2: 游戏 , 3: movie
|
|
this.send(BtCmd.setLowDelayMode({ open, mode }));
|
|
this.send(BtCmd.setLowDelayMode({ open, mode }));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -450,10 +694,10 @@ class BtHelper {
|
|
this.send(BtCmd.backgroudImgData(value));
|
|
this.send(BtCmd.backgroudImgData(value));
|
|
}
|
|
}
|
|
// OTA指令
|
|
// OTA指令
|
|
- static OTA(value) {
|
|
|
|
- this.send(BtCmd.OTA(value));
|
|
|
|
- } static OtaData(value) {
|
|
|
|
- this.send(BtCmd.OtaData(value));
|
|
|
|
|
|
+ static otaCmd(value) {
|
|
|
|
+ this.send(BtCmd.otaCmd(value));
|
|
|
|
+ } static otaData(value) {
|
|
|
|
+ this.send(BtCmd.otaData(value));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|