|
@@ -1,3 +1,6 @@
|
|
|
+import { userMobileLogin } from './api/wxlogin.js'
|
|
|
+import sysconfig from './sysconfig/sysconfig.js'
|
|
|
+
|
|
|
// app.js
|
|
|
App({
|
|
|
data: {//数据
|
|
@@ -6,13 +9,50 @@ App({
|
|
|
wavFilePath: '',//wav文件路径
|
|
|
readFileTimes: 0,//读取本地文件次数
|
|
|
imuStartTimestamp: 0,//IMU开始时间戳
|
|
|
+ loginFlag: false,//登录标识符
|
|
|
},
|
|
|
+ //初始化全局参数,在小程序存活期间onLaunch只执行一次
|
|
|
onLaunch() {
|
|
|
+ // 用户登录登录(发送登录凭证[res.code]到后台换取openId、sessionKey和unionId)
|
|
|
+ wx.login({
|
|
|
+ success: (res) => {
|
|
|
+ var paramData = {};
|
|
|
+ paramData.code = res.code; //登录凭证
|
|
|
+ paramData.domain_name = sysconfig.domanName; //系统二级域名(用二级域名换取项目编号)
|
|
|
+
|
|
|
+ userMobileLogin(paramData).then((resp) => {
|
|
|
+ //保存token
|
|
|
+ const tokenKey = sysconfig.user.tokenKey
|
|
|
+ wx.setStorageSync(tokenKey, resp.data.data.token)
|
|
|
+
|
|
|
+ //保存用户数据
|
|
|
+ const userInfoKey = sysconfig.user.userInfoKey
|
|
|
+ wx.setStorageSync(userInfoKey, resp.data.data)
|
|
|
+
|
|
|
+ this.data.loginFlag = true//登录成功
|
|
|
+ }).catch((err) => {
|
|
|
+ this.data.loginFlag = false//登录失败
|
|
|
+ console.log("%%%%%%%%", err.message)
|
|
|
+ wx.showToast({
|
|
|
+ title: '用户登录失败' + err.message,
|
|
|
+ icon: 'error',
|
|
|
+ duration: 10000
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
//创建线程(listener:线程监听服务程序)
|
|
|
createWorker(listener) {
|
|
|
if (this.data.worker == null) {
|
|
|
- this.data.worker = wx.createWorker("worker/worker.js")
|
|
|
+ this.data.worker = wx.createWorker("worker/worker.js", {
|
|
|
+ useExperimentalWorker: true//使用实验worker,提升ios下js运行效率
|
|
|
+ })
|
|
|
+
|
|
|
+ // 监听worker被系统回收事件
|
|
|
+ this.data.worker.onProcessKilled(() => {
|
|
|
+ this.createNewWorker()// 重新创建一个worker
|
|
|
+ })
|
|
|
|
|
|
//设置线程监听服务程序
|
|
|
if (typeof (listener) === 'function') {
|
|
@@ -58,8 +98,15 @@ App({
|
|
|
})
|
|
|
})
|
|
|
|
|
|
- //延迟1秒后开始录音,以便让录音机稳定
|
|
|
- setTimeout(this.startRecord, 1000)
|
|
|
+ //注册录音被打断回调函数
|
|
|
+ this.data.recorder.onInterruptionBegin(() => {
|
|
|
+ console.log("录音被打断")
|
|
|
+ })
|
|
|
+
|
|
|
+ //注册监听录音中断结束事件
|
|
|
+ this.data.recorder.onInterruptionEnd(() => {
|
|
|
+ this.resumeRecord()//恢复录音
|
|
|
+ })
|
|
|
},
|
|
|
//开始录音
|
|
|
startRecord() {
|
|
@@ -69,24 +116,32 @@ App({
|
|
|
//组织录音参数
|
|
|
options.duration = 600000 //最长连续录音10分钟
|
|
|
options.sampleRate = 48000 //采样频率
|
|
|
- options.encodeBitRate = 320000 //TODO,编码率,不知道干什么用的
|
|
|
+ options.encodeBitRate = 320000 //编码率,与采样率配对适用,参照腾讯文档要求设置具体值
|
|
|
options.numberOfChannels = 1 //单通道采样
|
|
|
options.format = "pcm"
|
|
|
options.frameSize = "22" //单位kB(数据不会太准确,因此需要缓存数据以实施成帧操作)
|
|
|
+ options.audioSource = "auto"//录音源,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用。
|
|
|
|
|
|
//开始录音
|
|
|
this.data.recorder.start(options)
|
|
|
}
|
|
|
},
|
|
|
+ //恢复录音
|
|
|
+ resumeRecord() {
|
|
|
+ if (this.data.recorder != null) {
|
|
|
+ this.data.recorder.resume()
|
|
|
+ }
|
|
|
+ },
|
|
|
//打开蓝牙适配器
|
|
|
openBleAdapter() {
|
|
|
let self = this
|
|
|
|
|
|
wx.openBluetoothAdapter({
|
|
|
- mode: "central",
|
|
|
- success: function (res) {//打开成功,开始扫描周边设备
|
|
|
+ mode: "central",//主机模式
|
|
|
+ //打开成功,开始扫描周边设备
|
|
|
+ success: function (res) {
|
|
|
wx.startBluetoothDevicesDiscovery({
|
|
|
- allowDuplicatesKey: true,
|
|
|
+ allowDuplicatesKey: true,//允许重复上报同一设备,每次上报RSSI值会有不同
|
|
|
interval: 2000,//2秒扫描一次
|
|
|
powerLevel: "medium",
|
|
|
success() {
|
|
@@ -94,42 +149,14 @@ App({
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- fail: function (err) {//打开失败
|
|
|
+ //打开失败
|
|
|
+ fail: function (err) {
|
|
|
console.log("open ble fail", err)
|
|
|
setTimeout(() => {
|
|
|
self.openBleAdapter()
|
|
|
}, 3000)
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
- //this.monitorBleBtsScanResult();
|
|
|
-
|
|
|
-
|
|
|
- // // 监听扫描到新设备事件
|
|
|
- // wx.onBluetoothDeviceFound((res) => {
|
|
|
- // console.log("扫描到了蓝牙设备")
|
|
|
- // res.devices.forEach((device) => {
|
|
|
- // console.log('Device Found', device)
|
|
|
- // })
|
|
|
- // })
|
|
|
- },
|
|
|
- //开始扫描周边蓝牙设备
|
|
|
- startScanNearbyBleBts() {
|
|
|
- let self = this
|
|
|
-
|
|
|
- //扫描周边设备
|
|
|
- wx.startBluetoothDevicesDiscovery({
|
|
|
- allowDuplicatesKey: true,//允许重复上报已扫描到的设备
|
|
|
- interval: 3000,//3秒扫描一次
|
|
|
- powerLevel: "medium",
|
|
|
- success: function () {
|
|
|
- self.monitorBleBtsScanResult()//监听蓝牙基站扫描结果
|
|
|
- },
|
|
|
- fail: function () {
|
|
|
- //500毫秒之后重新扫描
|
|
|
- setTimeout(self.startScanNearbyBleBts, 500)
|
|
|
- }
|
|
|
- })
|
|
|
},
|
|
|
//监听蓝牙基站扫描结果
|
|
|
monitorBleBtsScanResult() {
|
|
@@ -142,8 +169,8 @@ App({
|
|
|
res.devices.forEach((element) => {
|
|
|
if (element.name && element.name.length == 23) {
|
|
|
|
|
|
- let bleName = element.name
|
|
|
- let subName = bleName.slice(-10)
|
|
|
+ let bleName = element.name//蓝牙名称
|
|
|
+ let subName = bleName.slice(-10)//蓝牙项目标识符
|
|
|
|
|
|
//该设备为本系统设备
|
|
|
if (subName === "IPS8000BLE") {
|
|
@@ -297,4 +324,22 @@ App({
|
|
|
return { code: 0, data: e }
|
|
|
}
|
|
|
},
|
|
|
+ //开始扫描周边蓝牙设备
|
|
|
+ startScanNearbyBleBts() {
|
|
|
+ let self = this
|
|
|
+
|
|
|
+ //扫描周边设备
|
|
|
+ wx.startBluetoothDevicesDiscovery({
|
|
|
+ allowDuplicatesKey: true,//允许重复上报已扫描到的设备
|
|
|
+ interval: 3000,//3秒扫描一次
|
|
|
+ powerLevel: "medium",
|
|
|
+ success: function () {
|
|
|
+ self.monitorBleBtsScanResult()//监听蓝牙基站扫描结果
|
|
|
+ },
|
|
|
+ fail: function () {
|
|
|
+ //500毫秒之后重新扫描
|
|
|
+ setTimeout(self.startScanNearbyBleBts, 500)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
})
|