const AiSport = requirePlugin("aiSport"); const humanDetection = AiSport.humanDetection; const BodyDebugClient = AiSport.BodyDebugClient; Page({ data: { isDetecting: false, ve: null, enhanced: false, frameWidth: 480, frameHeight: 640, score: 0, isDetected: false, isDevelopmentMode: false, isPushback: false }, onLoad() { // 初始化配置 this.setData({ ve: humanDetection.getVe(), enhanced: humanDetection.isEnhanced() }); // 环境判断(微信小程序环境判断方式) const accountInfo = wx.getAccountInfoSync(); this.setData({ isDevelopmentMode: accountInfo.miniProgram.envVersion === 'develop' }); }, onReady() { // 获取组件引用 this.humanComp = this.selectComponent('#humanDetection'); }, async initPushbackChannel() { if (this.debugClient) return true; //请务必关必调试工具电脑的防火墙,保持手机与手机的畅通,替换您电话的URL,关闭域名校验、真机打开vconsole let client = new BodyDebugClient('http://192.168.5.10:20231'); client.queueSize = 12; let testOk = await client.testAsync(); if (!testOk) { wx.showToast({ title: '与工具通信异常,请检查网络。', icon: 'none' }); return false; } console.info('与调试工具通信正常。'); await client.connectAsync(); this.debugClient = client; return true; }, doPushback() { //请勿在识别帧的同时同步调用本回传接口,以免丢帧或UI卡死 if (!this.debugClient) return; wx.showLoading({ title: '回传帧数据...' }); this.debugClient.syncing((idx, total) => { wx.hideLoading(); if (idx >= total) return; wx.showLoading({ title: `同步进度${idx}/${total}` }); }); }, onStartStop() { if (!this.data.isDetecting) { this.humanComp.startCapture(); this.setData({ isDetecting: true }); } else { this.humanComp.stopCapture(); this.setData({ isDetecting: false }); this.doPushback(); } }, onHumanDetecting(e) { const { human, frame } = e.detail; if (!human) { this.setData({ score: 0, isDetected: false }); return; } this.setData({ isDetected: true, frameWidth: human.width, frameHeight: human.height, score: human.score }); //入队暂存 if (this.data.isPushback) { this.debugClient.enqueue(frame, human); } }, async onPushback() { if (this.data.isPushback) { this.setData({ isPushback: false }); return; } const isConnect = await this.initPushbackChannel(); this.setData({ isPushback: isConnect }); } })