1546 lines
44 KiB
JavaScript
1546 lines
44 KiB
JavaScript
|
||
|
||
//index.js
|
||
//获取应用实例
|
||
const app = getApp();
|
||
const utils = require("../../../utils/utils.js");
|
||
const recorderManager = wx.getRecorderManager();
|
||
|
||
const options = {
|
||
duration: 60000, //指定录音的时长,单位 ms,最大为10分钟(600000),默认为1分钟(60000)
|
||
sampleRate: 16000, //采样率
|
||
numberOfChannels: 1, //录音通道数
|
||
format: 'mp3', //音频格式,有效值 aac/mp3
|
||
}
|
||
|
||
var livePlayerContext;
|
||
|
||
|
||
|
||
Page({
|
||
data: {
|
||
scene: 1001,
|
||
accessToken: '',
|
||
deviceSerial: '',
|
||
channelNo: '1',
|
||
list: [
|
||
{
|
||
id: 'ptz',
|
||
name: '云台控制',
|
||
status: -1,
|
||
normalPath: './images/ptz.png',
|
||
disablePath: './images/ptz_disable.png',
|
||
activePath:'./images/ptz.png',
|
||
},
|
||
{
|
||
id: 'voice',
|
||
name: '语音播报',
|
||
status: -1,
|
||
normalPath: './images/voice.png',
|
||
disablePath: './images/voice_disable.png',
|
||
// activePath: './images/voice_active.png',
|
||
activePath: './images/voice.gif',
|
||
},
|
||
{
|
||
id: 'mirror',
|
||
name: '镜像翻转',
|
||
status: -1,
|
||
normalPath: './images/fanzhuan.png',
|
||
disablePath: './images/fanzhuan_disable.png',
|
||
activePath: './images/fanzhuan.png',
|
||
},
|
||
{
|
||
id: 'cover',
|
||
name: '镜头遮蔽',
|
||
status: -1,
|
||
normalPath: './images/yinsi.png',
|
||
disablePath: './images/yinsi_disable.png',
|
||
activePath: './images/yinsi_active.png',
|
||
},
|
||
],
|
||
videoSrc:"",
|
||
videoHDSrc: "",
|
||
panelStatus: 0, //0: 展示面板 1:进入云台 2-进入语音播报 3-进入镜像翻转 4-进入镜头遮蔽,
|
||
ptzDisabled: true,
|
||
voiceDiasbled: true,
|
||
mirrorDisabled: true,
|
||
mirrorInterval: false,
|
||
coverDisabled: true,
|
||
coverInterval: false,
|
||
showVideoControls: true,
|
||
autoHideTimer: undefined,
|
||
videoLoadingStatus: 0,
|
||
playVideo: false,
|
||
videoNetWorkError: false,
|
||
objectFit:'contain',
|
||
openSound: true,
|
||
isHD: false,
|
||
showHDSelect: false,
|
||
fullScreen: false,
|
||
ptzStatus: 0, //0-初始化 1-top noraml 2-downnoraml 3-left normal 4-right normal 5-top noraml 6-down limit 7-left limit 8-right limit
|
||
ptzLoading: false,
|
||
ptzLimit: '',
|
||
deviceOffline: false,
|
||
deviceOfflineTime: new Date(),
|
||
deviceName: '',
|
||
currentPtzImg: './images/yuntai/normal.png',
|
||
// 语音播报
|
||
activeDefaultVoiceName: '',
|
||
activeCustomVoiceName: '',
|
||
defaultVoiceList: [], // 默认语音列表
|
||
defaultVoiceTotal: 0, // 默认语音总数
|
||
defaultVoicePage: 0, // 默认语言当前页
|
||
defaultVoiceListLoading: false,
|
||
defaultVoiceNoMore: false,
|
||
customVoiceList: [], // 默认语音列表
|
||
customVoiceTotal: 0, // 默认语音总数
|
||
customVoicePage: 0, // 默认语言当前页
|
||
customVoiceListLoading: false,
|
||
customVoiceListNoMore: false,
|
||
recoderTime:60,
|
||
recoderTimer: undefined,
|
||
sendingOnceVoice: false,
|
||
dialogTitle: '',
|
||
dialogContent: '',
|
||
buttons: [{text: '知道了'}],
|
||
dialogShow: false,
|
||
pathParam: '',
|
||
imgUrl:'./images'
|
||
},
|
||
onLaunch(){
|
||
console.log(onLaunch);
|
||
},
|
||
onShow () {
|
||
console.log("show");
|
||
var launchOptions = wx.getLaunchOptionsSync();
|
||
const pathParam = launchOptions.query.scene;
|
||
console.log('pathParam:',pathParam);
|
||
this.setData({
|
||
pathParam: pathParam
|
||
});
|
||
if (pathParam) {
|
||
this.getWxaInfo();
|
||
}
|
||
// Do something when show.
|
||
this.checkNetWork();
|
||
},
|
||
onHide () {
|
||
// Do something when hide.
|
||
console.log("hide")
|
||
this.setData({
|
||
panelStatus:0,
|
||
})
|
||
},
|
||
onError (msg) {
|
||
console.log(msg)
|
||
},
|
||
onLoad(query){
|
||
var launchOptions = wx.getLaunchOptionsSync();
|
||
const { accessToken, deviceSerial,channelNo,scene } = query;
|
||
console.log("scene",scene)
|
||
this.setData({
|
||
scene: parseInt(scene,10) || launchOptions.scene,
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
panelStatus:0,
|
||
});
|
||
if (accessToken) {
|
||
this.getPlayUrl();
|
||
this.getDeviceInfo();
|
||
this.getDeviceCoverInfo();
|
||
}
|
||
this.setData({
|
||
showOneButtonDialog: true
|
||
});
|
||
// 录音模块
|
||
recorderManager.onStart(() => {
|
||
console.log('recorder start');
|
||
})
|
||
recorderManager.onPause(() => {
|
||
console.log('recorder pause');
|
||
this.speakEnd();
|
||
})
|
||
recorderManager.onInterruptionBegin(this.speakEnd);
|
||
|
||
recorderManager.onStop((res) => {
|
||
console.log('recorder stop', res)
|
||
const { recoderTime } = this.data;
|
||
const { tempFilePath } = res;
|
||
if(recoderTime >= 59) {
|
||
this.setData({
|
||
recoderTime: 60,
|
||
})
|
||
clearTimeout(this.data.recoderTimer);
|
||
return false;
|
||
}
|
||
this.setData({
|
||
sendingOnceVoice: true,
|
||
})
|
||
wx.uploadFile({
|
||
url: 'https://open.ys7.com/api/lapp/voice/sendonce', //仅为示例,非真实的接口地址
|
||
filePath: tempFilePath, //tempFilePaths[0],
|
||
name: 'voiceFile',
|
||
formData: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
},
|
||
header: {
|
||
'content-type': 'amultipart/form-data' // 默认值
|
||
},
|
||
success: (res)=> {
|
||
let data = res.data;
|
||
if(!data.code){
|
||
data = JSON.parse(data);
|
||
}
|
||
if(data.code == 200) {
|
||
console.log("发送成功");
|
||
}else if(data.code =='111012') { // 设备正忙
|
||
wx.showToast({
|
||
title: '操作中,请稍后再试',
|
||
icon:'none',
|
||
})
|
||
}else if(data.code =='20007') { // 设备正忙
|
||
wx.showToast({
|
||
title: '设备不在线',
|
||
icon:'none',
|
||
})
|
||
}else if(data.code =='20008') { // 设备正忙
|
||
wx.showToast({
|
||
title: '设备响应超时',
|
||
icon:'none',
|
||
})
|
||
}else {
|
||
wx.showToast({
|
||
title: data.msg,
|
||
icon: 'none',
|
||
})
|
||
}
|
||
this.setData({
|
||
recoderTime: 60,
|
||
})
|
||
//do something
|
||
},
|
||
fail: (res)=>{
|
||
wx.showToast({
|
||
title: '网络异常',
|
||
icon: 'none'
|
||
})
|
||
},
|
||
complete: ()=>{
|
||
this.setData({
|
||
sendingOnceVoice: false,
|
||
})
|
||
}
|
||
})
|
||
})
|
||
recorderManager.onFrameRecorded((res) => {
|
||
const { frameBuffer } = res
|
||
console.log('frameBuffer.byteLength', frameBuffer.byteLength)
|
||
});
|
||
//视频
|
||
livePlayerContext = wx.createLivePlayerContext('livePlayer');
|
||
console.log("livePlayerContext", livePlayerContext);
|
||
|
||
},
|
||
checkNetWork(){
|
||
const _this = this;
|
||
wx.getNetworkType({
|
||
success (res) {
|
||
const networkType = res.networkType
|
||
if(!networkType || networkType === 'none'){
|
||
wx.showToast({
|
||
title: '当前网络异常',
|
||
icon: 'none',
|
||
duration: 2000,
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
getPlayUrl(){
|
||
const { accessToken, deviceSerial, channelNo } = this.data;
|
||
var _this = this;
|
||
// wx.request({
|
||
// url: 'https://open.ys7.com/api/lapp/live/address/get', //仅为示例,并非真实的接口地址
|
||
// method: 'POST',
|
||
// data: {
|
||
// accessToken: accessToken,
|
||
// source: deviceSerial + ':' + channelNo,
|
||
// },
|
||
// header: {
|
||
// 'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
// },
|
||
// success: (res) => {
|
||
// console.log(res.data);
|
||
// const { list } = this.data;
|
||
// if(res.data.code ==200 && res.data.data && res.data.data.length>0){
|
||
// var result = res.data.data[0];
|
||
// if(result.ret == 200){
|
||
// _this.setData({
|
||
// videoSrc: result.rtmp,
|
||
// videoHDSrc: result.rtmpHd,
|
||
// })
|
||
// }else {
|
||
// list[0].status = -1;
|
||
// list[1].status = -1;
|
||
// list[2].status = -1;
|
||
// list[3].status = -1;
|
||
// _this.setData({
|
||
// list:list,
|
||
// dialogTitle: '获取播放地址失败',
|
||
// dialogContent: result.desc,
|
||
// dialogShow: true,
|
||
// showVideoControls: false,
|
||
// })
|
||
// }
|
||
// }else {
|
||
// _this.openPlayUrl();
|
||
// }
|
||
// }
|
||
// });
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/v2/live/address/get', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
expireTime: 86400,
|
||
quality: 1,
|
||
protocol: 3,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success: (res) => {
|
||
const { list } = this.data;
|
||
if(res.data.code ==200 && res.data.data && res.data.data.url){
|
||
var result = res.data;
|
||
if(result.code == 200){
|
||
_this.setData({
|
||
videoSrc: result.data.url,
|
||
// videoHDSrc: result.rtmpHd,
|
||
})
|
||
} else {
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
list[3].status = -1;
|
||
_this.setData({
|
||
list:list,
|
||
dialogContent: result.msg,
|
||
showVideoControls: false,
|
||
})
|
||
}
|
||
} else if (res.data.code == "20001" ||res.data.code == "20002" || res.data.code == '20018'|| res.data.code == '10001'){ // 设备不存在 / 不属于用户
|
||
this.setData({
|
||
dialogTitle: '获取播放地址失败',
|
||
dialogContent: '该用户不拥有该设备',
|
||
dialogShow: true,
|
||
})
|
||
}else {
|
||
console.log("获取播放地址失败")
|
||
// _this.openPlayUrl();
|
||
}
|
||
}
|
||
});
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/v2/live/address/get', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
expireTime: 86400,
|
||
quality: 1,
|
||
protocol: 3,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success: (res) => {
|
||
console.log(res.data);
|
||
const { list } = this.data;
|
||
if(res.data.code ==200 && res.data.data && res.data.data.url){
|
||
var result = res.data;
|
||
if(result.code == 200){
|
||
_this.setData({
|
||
//videoSrc: result.rtmp,
|
||
videoHDSrc: result.data.url,
|
||
})
|
||
}else {
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
list[3].status = -1;
|
||
_this.setData({
|
||
list:list,
|
||
dialogContent: result.msg,
|
||
showVideoControls: false,
|
||
})
|
||
}
|
||
}else {
|
||
console.log("获取高清播放地址失败")
|
||
// _this.openPlayUrl();
|
||
}
|
||
}
|
||
})
|
||
},
|
||
/*
|
||
* 获取设备基本信息
|
||
*/
|
||
getDeviceCoverInfo(){
|
||
const { accessToken, deviceSerial, channelNo } = this.data;
|
||
console.log(accessToken,deviceSerial,channelNo);
|
||
var _this = this;
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/device/scene/switch/status',
|
||
method: 'POST',
|
||
data: {
|
||
accessToken,
|
||
deviceSerial,
|
||
channelNo,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res) =>{
|
||
console.log(res.data);
|
||
if(res.data.code ==200 && res.data.data){
|
||
const result = res.data.data;
|
||
let list = this.data.list;
|
||
if(result.enable == 1){ // 当前镜头遮蔽中
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
list[3].status = 1;
|
||
this.setData({
|
||
videoNetWorkError: false,
|
||
showVideoControls: false,
|
||
panelStatus: 4,
|
||
videoLoadingStatus: 100,
|
||
list: list,
|
||
})
|
||
console.log("panelStatus",this.data.panelStatus)
|
||
}
|
||
}
|
||
},
|
||
error:(err)=>{
|
||
console.log(err);
|
||
},
|
||
})
|
||
},
|
||
|
||
/*
|
||
* 获取设备基本信息
|
||
*/
|
||
getDeviceInfo(){
|
||
const { accessToken, deviceSerial, channelNo ,showVideoControls, videoNetWorkError,videoLoadingStatus } = this.data;
|
||
var _this = this;
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/device/info', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
accessToken,
|
||
deviceSerial,
|
||
channelNo,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res) =>{
|
||
console.log(res.data);
|
||
if(res.data.code ==200 && res.data.data){
|
||
let list = this.data.list;
|
||
var result = res.data.data;
|
||
_this.setData({
|
||
deviceName: result.deviceName,
|
||
deviceOffline: result.status !== 1,
|
||
videoNetWorkError: result.status !==1 ? false : videoNetWorkError,
|
||
showVideoControls: result.status !==1 ? false : showVideoControls,
|
||
deviceOfflineTime: utils.DateFormat(new Date(result.updateTime),'yyyy-MM-dd hh:mm:ss'),
|
||
deviceIsEncrypt: result.isEncrypt,
|
||
videoLoadingStatus: (result.isEncrypt === 1 || result.status !== 1) ? 100 : videoLoadingStatus,
|
||
});
|
||
// 配置标题
|
||
if(result.deviceName){
|
||
wx.setNavigationBarTitle({
|
||
title: result.deviceName,
|
||
})
|
||
}
|
||
if(result.status != 1 ){ // 设备不在线
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
list[3].status = -1;
|
||
_this.setData({
|
||
list:list,
|
||
showVideoControls: false
|
||
})
|
||
}else if(result.isEncrypt == 1 ){ // 设备被加密
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
list[3].status = -1;
|
||
_this.setData({
|
||
list:list,
|
||
dialogTitle: '设备被加密',
|
||
dialogContent: '设备已被加密,无法继续查看,请前往萤石云app解密。',
|
||
dialogShow: true,
|
||
showVideoControls: false,
|
||
})
|
||
} else {
|
||
// 获取设备能力
|
||
// _this.getDeviceCapacity();
|
||
_this.getDeviceCoverInfo();
|
||
}
|
||
} else if (res.data.code == "20001" ||res.data.code == "20002" || res.data.code == '20018'){ // 设备不存在 / 不属于用户
|
||
this.setData({
|
||
dialogTitle: '获取播放地址失败',
|
||
dialogContent: '该用户不拥有该设备',
|
||
dialogShow: true,
|
||
})
|
||
}else if(res.data.code == 10029){
|
||
wx.showToast({
|
||
title: '个人版接口调用超限,请升级企业版',
|
||
icon: 'none',
|
||
})
|
||
}else if(res.data.code == 10002){
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon: 'none',
|
||
})
|
||
setTimeout(()=>{
|
||
this.pageBack();
|
||
},2000)
|
||
}else {
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
/*
|
||
* 获取设备能力集
|
||
*/
|
||
getDeviceCapacity(){
|
||
const { accessToken,deviceSerial,channelNo,playVideo} = this.data;
|
||
var _this = this;
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/device/capacity',
|
||
method: 'POST',
|
||
data: {
|
||
accessToken,
|
||
deviceSerial,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res) =>{
|
||
console.log(res.data);
|
||
if(res.data.code ==200 && res.data.data){
|
||
var result = res.data.data;
|
||
let list = this.data.list;
|
||
list[0].status = result.support_ptz == 0 ? -1 : 0;
|
||
list[1].status = result.support_talk != 1 ? -1 : 0;
|
||
list[2].status = result.ptz_top_bottom_mirror == 0 ? -1 : 0;
|
||
list[3].status = result.support_privacy == 0 ? -1 : 0;
|
||
if(!playVideo){ // 非视频播放成功状态下
|
||
list[0].status = -1;
|
||
list[2].status = -1;
|
||
}
|
||
_this.setData({
|
||
list: list,
|
||
})
|
||
} else if (res.data.code == "20002" || res.data.code == '20018'){ // 设备不存在 / 不属于用户
|
||
this.setData({
|
||
dialogTitle: '设备被删除',
|
||
dialogContent: '设备已从账号下删除,无法继续查看',
|
||
dialogShow: true,
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
fullScreen(){
|
||
var _this = this;
|
||
livePlayerContext.requestFullScreen({
|
||
direction: 90,
|
||
success: function(){
|
||
_this.setData({
|
||
fullScreen: true,
|
||
})
|
||
}
|
||
});
|
||
console.log("开启全屏");
|
||
},
|
||
unfullScreen() {
|
||
var _this = this;
|
||
livePlayerContext.exitFullScreen({
|
||
success: function(){
|
||
_this.setData({
|
||
fullScreen: false,
|
||
})
|
||
}
|
||
});
|
||
console.log("开启全屏");
|
||
},
|
||
ToggleObjectFit(){
|
||
var objectFit = this.data.objectFit;
|
||
this.setData({
|
||
objectFit: objectFit === 'contain' ? 'fillCrop': 'contain',
|
||
})
|
||
},
|
||
fullscreenChange(event){
|
||
console.log("监听到全屏变化", event)
|
||
},
|
||
getDefaultVoice: function () {
|
||
const { accessToken } = this.data;
|
||
var _this = this;
|
||
console.info("默认语音: 第" + _this.data.defaultVoicePage + "页");
|
||
var _this = this;
|
||
_this.setData({
|
||
defaultVoiceListLoading: true,
|
||
})
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/voice/query', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
"accessToken": accessToken,
|
||
"default": "true",
|
||
"pageStart": _this.data.defaultVoicePage,
|
||
"pageSize": 5,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success(res) {
|
||
console.log(res.data);
|
||
var defaultVoiceList = _this.data.defaultVoiceList;
|
||
defaultVoiceList = defaultVoiceList.concat(res.data.data);
|
||
if(res.data.data && res.data.data.length>0){
|
||
_this.setData({
|
||
defaultVoiceList: defaultVoiceList,
|
||
defaultVoicePage: _this.data.defaultVoicePage + 1,
|
||
});
|
||
}else {
|
||
_this.setData({
|
||
defaultVoiceNoMore: true,
|
||
});
|
||
}
|
||
_this.setData({
|
||
defaultVoiceListLoading: false,
|
||
})
|
||
},
|
||
error(error){
|
||
console.log(error);
|
||
_this.setData({
|
||
defaultVoiceListLoading: false,
|
||
})
|
||
}
|
||
})
|
||
},
|
||
getCustomVoice: function () {
|
||
const { accessToken } = this.data;
|
||
var _this = this;
|
||
console.info("用户自定义语音: 第" + _this.data.defaultVoicePage + "页");
|
||
var _this = this;
|
||
_this.setData({
|
||
customVoiceListLoading: true,
|
||
})
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/voice/query', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
"accessToken": accessToken,
|
||
default:false,
|
||
"pageStart": _this.data.defaultVoicePage,
|
||
"pageSize": 5,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success(res) {
|
||
console.log(res.data);
|
||
var customVoiceList = _this.data.customVoiceList;
|
||
customVoiceList = customVoiceList.concat(res.data.data);
|
||
if(res.data.data && res.data.data.length>0){
|
||
_this.setData({
|
||
customVoiceList: customVoiceList,
|
||
customVoicePage: _this.data.customVoicePage + 1,
|
||
});
|
||
}else {
|
||
_this.setData({
|
||
customVoiceNoMore: true,
|
||
});
|
||
}
|
||
_this.setData({
|
||
customVoiceListLoading: false,
|
||
})
|
||
},
|
||
error(error){
|
||
console.log(error);
|
||
_this.setData({
|
||
customVoiceListLoading: false,
|
||
})
|
||
}
|
||
})
|
||
},
|
||
// 滚动至低端事件
|
||
defaultScrollLower: function () {
|
||
var _this = this;
|
||
console.info("defaultScrollLower 第" + _this.data.defaultVoicePage + "页");
|
||
this.getDefaultVoice();
|
||
},
|
||
// 滚动至低端事件
|
||
customScrollLower: function () {
|
||
var _this = this;
|
||
console.info("customScrollLower 第" + _this.data.defaultVoicePage + "页");
|
||
this.getCustomVoice();
|
||
},
|
||
handlePlay(callback){
|
||
console.log("handelPlay",this.data.playVideo,this.data.isHD);
|
||
this.checkNetWork()
|
||
livePlayerContext.play({
|
||
success: ()=>{
|
||
this.setData({
|
||
// playVideo: true,
|
||
showVideoControls: true,
|
||
// videoLoadingStatus: 100,
|
||
videoNetWorkError: false,
|
||
});
|
||
if(callback && typeof callback === "function"){
|
||
callback();
|
||
}
|
||
},
|
||
fail: (error)=>{
|
||
this.checkNetWork();
|
||
wx.showToast({
|
||
title: '网络异常',
|
||
icon:'none',
|
||
})
|
||
console.log("开始播放失败");
|
||
this.setData({
|
||
videoNetWorkError: true,
|
||
showVideoControls: false,
|
||
videoLoadingStatus: 100,
|
||
})
|
||
}
|
||
})
|
||
},
|
||
handleStop(callback){
|
||
console.log("stop");
|
||
const { list } = this.data;
|
||
livePlayerContext.stop({
|
||
success: ()=>{
|
||
list[0].status = -1;
|
||
// list[1].status = -1;
|
||
// list[2].status = -1;
|
||
// list[3].status = -1;
|
||
this.setData({
|
||
playVideo: false,
|
||
// showVideoControls: true,
|
||
videoLoadingStatus: 0,
|
||
list: list,
|
||
panelStatus: 0,
|
||
})
|
||
if(callback && typeof callback === "function"){
|
||
callback();
|
||
}
|
||
},
|
||
fail: (error)=>{
|
||
console.log("停止播放失败")
|
||
}
|
||
})
|
||
},
|
||
autoHideControl(){
|
||
console.log("showHdSelect",this.data.showHDSelect);
|
||
const _this = this;
|
||
clearTimeout(this.data.autoHideTimer);
|
||
this.data.autoHideTimer = setTimeout(()=>{
|
||
const { showHDSelect } = _this.data;
|
||
if(!showHDSelect){
|
||
this.setData({
|
||
showVideoControls: false,
|
||
})
|
||
}
|
||
},5000);
|
||
},
|
||
handleSound(e){
|
||
var openSound = this.data.openSound;
|
||
this.setData({
|
||
openSound: !openSound,
|
||
})
|
||
},
|
||
handleHD(e){
|
||
var showHDSelect = this.data.showHDSelect;
|
||
console.log("handleHD",showHDSelect)
|
||
this.setData({
|
||
showHDSelect: !showHDSelect,
|
||
});
|
||
},
|
||
changeVideoHD(e){
|
||
var _this = this;
|
||
this.setData({
|
||
showHDSelect: false,
|
||
isHD: true
|
||
});
|
||
this.handleStop(_this.handlePlay);
|
||
},
|
||
changeVideoNormal(e) {
|
||
this.setData({
|
||
showHDSelect: false,
|
||
isHD: false
|
||
})
|
||
this.handleStop(this.handlePlay);
|
||
},
|
||
statechange(e) {
|
||
console.log('live-player code:', e.detail.code,e.detail);
|
||
const { code } = e.detail;
|
||
let { videoLoadingStatus,list,panelStatus } = this.data;
|
||
switch (code){
|
||
case 2007: //启动loading
|
||
videoLoadingStatus = 0;
|
||
this.setData({
|
||
playVideo: true,
|
||
videoLoadingStatus: 0,
|
||
})
|
||
break;
|
||
case 2001: //连接服务器
|
||
videoLoadingStatus = 20 + Math.floor(Math.random()*10+1);
|
||
break;
|
||
case 2002: //已经连接 RTMP 服务器,开始拉流
|
||
videoLoadingStatus = 40 + Math.floor(Math.random()*10+1);
|
||
break;
|
||
case 2008: // 解码器启动
|
||
break;
|
||
case 2009: //视频分辨率改动
|
||
break;
|
||
case 2004: // 视频播放开始
|
||
videoLoadingStatus = 80 + Math.floor(Math.random()*10+1);
|
||
break;
|
||
case 2003: //网络接收到首个视频数据包(IDR)
|
||
videoLoadingStatus = 100;
|
||
this.setData({
|
||
playVideo: true,
|
||
})
|
||
this.autoHideControl();
|
||
this.getDeviceCapacity();
|
||
break;
|
||
case 2103: //网络断连, 已启动自动重连(本小程序不自动重连)
|
||
// videoLoadingStatus = 100;
|
||
// this.handleStop();
|
||
// 获取设备状态
|
||
// this.getDeviceInfo();
|
||
break;
|
||
case 3001:
|
||
case 3002:
|
||
case 3003:
|
||
case 3005: // 播放失败
|
||
videoLoadingStatus = 100;
|
||
// this.getDeviceInfo();
|
||
this.checkNetWork();
|
||
this.handleStop(this.playError);
|
||
list[2].status = -1;
|
||
this.setData({
|
||
// playVideo: false,
|
||
showVideoControls: false,
|
||
videoNetWorkError: true,
|
||
videoLoadingStatus: 100,
|
||
list: list,
|
||
})
|
||
break;
|
||
case -2301: // 经多次重连抢救无效,更多重试请自行重启播放
|
||
videoLoadingStatus = 100;
|
||
this.setData({
|
||
// playVideo: false,
|
||
showVideoControls: false,
|
||
videoNetWorkError: true,
|
||
videoLoadingStatus: 100,
|
||
})
|
||
break;
|
||
}
|
||
this.setData({
|
||
videoLoadingStatus: videoLoadingStatus
|
||
})
|
||
},
|
||
playError(){
|
||
this.setData({
|
||
showVideoControls: false,
|
||
videoNetWorkError: true,
|
||
videoLoadingStatus: 100,
|
||
});
|
||
// this.getPlayUrl();
|
||
this.getDeviceInfo();
|
||
this.getDeviceCoverInfo();
|
||
},
|
||
error(e) {
|
||
console.log('live-player',e);
|
||
console.error('live-player error:', e.detail)
|
||
if(e.detail.errCode == 10001){
|
||
wx.showToast({
|
||
title: '视频直播对讲需要你手机授权微信录音或麦克风权限',
|
||
icon:'none',
|
||
duration:3000,
|
||
})
|
||
}
|
||
},
|
||
onVideoTap(e){
|
||
console.log("点击视频");
|
||
const { deviceOffline,showVideoControls,panelStatus,videoNetWorkError} = this.data;
|
||
if(deviceOffline || panelStatus === 4 || videoNetWorkError){
|
||
return false;
|
||
}
|
||
if(showVideoControls){
|
||
this.setData({
|
||
showVideoControls: false,
|
||
});
|
||
clearTimeout(this.data.autoHideTimer);
|
||
}else {
|
||
this.setData({
|
||
showVideoControls: true,
|
||
})
|
||
this.autoHideControl();
|
||
}
|
||
},
|
||
tapPanel: function(event) {
|
||
const { accessToken, deviceSerial, channelNo } = this.data;
|
||
var tValue = event.currentTarget.dataset.value;
|
||
var list = this.data.list;
|
||
var panelStatus = this.data.panelStatus;
|
||
switch (tValue) {
|
||
case 'ptz':
|
||
if(list[0].status === -1){
|
||
return false;
|
||
}
|
||
panelStatus = 1;
|
||
// list[0].status = 1;
|
||
// list[1].status = 0;
|
||
// list[2].status = 0;
|
||
// list[3].status = 0;
|
||
break;
|
||
case 'voice':
|
||
if(list[1].status === -1) {
|
||
return false;
|
||
}
|
||
panelStatus = 2;
|
||
this.getDefaultVoice();
|
||
this.getCustomVoice();
|
||
break;
|
||
case 'mirror':
|
||
if(list[2].status === -1){
|
||
return false;
|
||
}
|
||
if(panelStatus === 3){
|
||
panelStatus = 0;
|
||
// list[0].status = 0;
|
||
// list[1].status = 0;
|
||
list[2].status = 0;
|
||
// list[3].status = 0;
|
||
this.sceneMirror(2);
|
||
}else{
|
||
panelStatus = 3;
|
||
// list[0].status = 0;
|
||
// list[1].status = 0;
|
||
// list[2].status = 1;
|
||
// list[3].status = 0;
|
||
this.sceneMirror(2);
|
||
}
|
||
break;
|
||
case 'cover':
|
||
if(list[3].status === -1){
|
||
return false;
|
||
}
|
||
if (panelStatus === 4){ // 镜头遮蔽中
|
||
// panelStatus = 0;
|
||
// list[0].status = 0;
|
||
// list[1].status = 0;
|
||
// list[2].status = 0;
|
||
// list[3].status = 0;
|
||
// this.getDeviceCapacity();
|
||
this.sceneCover(0);
|
||
}else{
|
||
// panelStatus = 4;
|
||
// list[0].status = 0;
|
||
// list[1].status = 0;
|
||
// list[2].status = 0;
|
||
// list[3].status = 1;
|
||
this.sceneCover(1);
|
||
}
|
||
break;
|
||
default:
|
||
panelStatus = 0;
|
||
}
|
||
this.setData({
|
||
panelStatus: panelStatus,
|
||
list: list
|
||
})
|
||
},
|
||
startRecord(e){
|
||
recorderManager.start(options)
|
||
},
|
||
stopRecord(e){
|
||
recorderManager.stop()
|
||
},
|
||
handleBackPanel(event){
|
||
var tValue = event.currentTarget.dataset.value;
|
||
this.setData({
|
||
panelStatus:0,
|
||
})
|
||
},
|
||
handlePtzTouchStart(event){
|
||
// var { offsetLeft, offsetTop } = event.currentTarget;
|
||
// var {clientX,clientY} = event.touches[0];
|
||
var { ptzStatus,ptzLoading } = this.data;
|
||
// var centerLeft = 104 + offsetLeft;
|
||
// var centerTop = 104 + offsetTop;
|
||
// var left = clientX - centerLeft;
|
||
// var top = clientY - centerTop;
|
||
wx.createSelectorQuery().select('#ptz-img-container').boundingClientRect( (rect) => {
|
||
let { clientX,clientY} = event.touches[0];
|
||
let rectLeft = rect.left;
|
||
let rectTop = rect.top;
|
||
|
||
var centerLeft = 104 + rectLeft;
|
||
var centerTop = 104 + rectTop;
|
||
var left = clientX - centerLeft;
|
||
var top = clientY - centerTop;
|
||
|
||
console.log("点击了页面方位:pageY",clientY);
|
||
console.log("云盘位置:top",rect.top);
|
||
if(ptzLoading){
|
||
wx.showToast({
|
||
title: '操作过于频繁,建议长按转动',
|
||
icon: 'none'
|
||
})
|
||
return false;
|
||
}
|
||
if(Math.abs(left) > Math.abs(top)){
|
||
if(left>0){
|
||
this.handlePtzControl(3);
|
||
ptzStatus = 4;
|
||
}else {
|
||
ptzStatus = 3;
|
||
this.handlePtzControl(2);
|
||
}
|
||
} else {
|
||
if (top > 0) {
|
||
ptzStatus = 2;
|
||
this.handlePtzControl(1);
|
||
|
||
} else {
|
||
ptzStatus = 1;
|
||
this.handlePtzControl(0);
|
||
}
|
||
}
|
||
this.setData({
|
||
ptzStatus: ptzStatus,
|
||
})
|
||
|
||
}).exec();
|
||
},
|
||
handlePtzTouchEnd(event) {
|
||
let { clientX, clientY } = event.changedTouches[0];
|
||
const _this = this;
|
||
wx.createSelectorQuery().select('#ptz-img-container').boundingClientRect( (rect) => {
|
||
let rectLeft = rect.left;
|
||
let rectTop = rect.top;
|
||
|
||
var centerLeft = 104 + rectLeft;
|
||
var centerTop = 104 + rectTop;
|
||
var left = clientX - centerLeft;
|
||
var top = clientY - centerTop;
|
||
if (Math.abs(left) > Math.abs(top)) {
|
||
if (left > 0) {
|
||
_this.handlePtzControl(3,'stop');
|
||
} else {
|
||
_this.handlePtzControl(2, 'stop');
|
||
}
|
||
} else {
|
||
if (top > 0) {
|
||
_this.handlePtzControl(1, 'stop');
|
||
} else {
|
||
_this.handlePtzControl(0,'stop');
|
||
}
|
||
}
|
||
}).exec();
|
||
this.setData({
|
||
ptzStatus: 0,
|
||
})
|
||
},
|
||
handlePtzControl(position,type){
|
||
const { accessToken, deviceSerial, channelNo,ptzLoading } = this.data;
|
||
let ptzLimit = '';
|
||
const ptzTopImgSuccess = './images/yuntai/top.png';
|
||
const ptzTopImgFailed = './images/yuntai/top_limit.png';
|
||
const ptzDownImgSuccess = './images/yuntai/down.png';
|
||
const ptzDownImgFailed = './images/yuntai/down_limit.png';
|
||
const ptzLeftImgSuccess = './images/yuntai/left.png';
|
||
const ptzLeftImgFailed = './images/yuntai/left_limit.png';
|
||
const ptzRightImgSuccess = './images/yuntai/right.png';
|
||
const ptzRightImgFailed = './images/yuntai/right_limit.png';
|
||
const ptzNormalImg = './images/yuntai/normal.png';
|
||
let ptzStatus = this.data.ptzStatus;
|
||
let currentPtzImg = this.data.currentPtzImg;
|
||
var url = 'https://open.ys7.com/api/lapp/device/ptz/start';
|
||
if(type == 'stop'){
|
||
url = 'https://open.ys7.com/api/lapp/device/ptz/stop'
|
||
}
|
||
if(ptzLoading && type === 'start'){
|
||
wx.showToast({
|
||
title: '操作过于频繁,建议长按转动',
|
||
icon: 'none'
|
||
})
|
||
return false;
|
||
}
|
||
|
||
this.setData({
|
||
ptzLoading: true,
|
||
})
|
||
wx.request({
|
||
url: url, //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
"accessToken": accessToken,
|
||
"deviceSerial": deviceSerial,
|
||
"channelNo": channelNo,
|
||
"direction": position,
|
||
speed:1,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success: (res) => {
|
||
const code = res.data.code;
|
||
if(code == 10029){
|
||
wx.showToast({
|
||
title: '个人版接口调用超限,请升级企业版',
|
||
icon: 'none',
|
||
})
|
||
}else if(code != 200){
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon: 'none',
|
||
})
|
||
}
|
||
if(type == 'stop'){
|
||
ptzStatus = 0;
|
||
currentPtzImg = ptzNormalImg;
|
||
}else{
|
||
switch(position){
|
||
case 0:
|
||
ptzStatus = 1;
|
||
currentPtzImg = code == 200 ? ptzTopImgSuccess : ptzTopImgFailed;
|
||
ptzLimit = code == 200 ? '' : 'top';
|
||
break;
|
||
case 1:
|
||
ptzStatus = 2;
|
||
currentPtzImg = code == 200 ? ptzDownImgSuccess : ptzDownImgFailed;
|
||
ptzLimit = code == 200 ? '' : 'down';
|
||
break;
|
||
case 2:
|
||
ptzStatus = 3;
|
||
currentPtzImg = code == 200 ? ptzLeftImgSuccess : ptzLeftImgFailed;
|
||
ptzLimit = code == 200 ? '' : 'left';
|
||
break;
|
||
case 3:
|
||
ptzStatus = 4;
|
||
currentPtzImg = code == 200 ? ptzRightImgSuccess : ptzRightImgFailed;
|
||
ptzLimit = code == 200 ? '' : 'right';
|
||
break;
|
||
default:
|
||
ptzStatus = 0;
|
||
currentPtzImg = ptzTopImgSuccess;
|
||
ptzLimit = '';
|
||
}
|
||
}
|
||
this.setData({
|
||
ptzStatus: ptzStatus,
|
||
currentPtzImg: currentPtzImg,
|
||
ptzLoading: false,
|
||
ptzLimit: ptzLimit,
|
||
});
|
||
},
|
||
error:(err) =>{
|
||
this.setData({
|
||
ptzLoading: false,
|
||
})
|
||
}
|
||
})
|
||
},
|
||
screenShoot(e){
|
||
const { playVideo,videoLoadingStatus } = this.data;
|
||
if(!playVideo || videoLoadingStatus != 100){
|
||
console.log("非播放状态下点击截图");
|
||
return false;
|
||
}
|
||
console.log("开始截图")
|
||
// livePlayerContext.snapshot('raw');
|
||
let that = this
|
||
wx.getSetting({
|
||
success(res) {
|
||
if (res.authSetting['scope.writePhotosAlbum']) {
|
||
that.saveImg();
|
||
}
|
||
else if (res.authSetting['scope.writePhotosAlbum'] === undefined) {
|
||
wx.authorize({
|
||
scope: 'scope.writePhotosAlbum',
|
||
success() {
|
||
that.saveImg();
|
||
},
|
||
fail() {
|
||
that.authConfirm()
|
||
}
|
||
})
|
||
}
|
||
else {
|
||
that.authConfirm()
|
||
}
|
||
}
|
||
})
|
||
|
||
},
|
||
saveImg(){
|
||
livePlayerContext.snapshot('raw')
|
||
.then(data =>{
|
||
console.log("data",data);
|
||
if (data) {
|
||
console.log(data)
|
||
wx.saveImageToPhotosAlbum({
|
||
filePath: data.tempImagePath,
|
||
success(res) {
|
||
console.log("保存成功",res)
|
||
wx.showToast({
|
||
title: '截图已保存至手机相册',
|
||
icon: 'none',
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
.catch(err => {
|
||
console.log("err",err);
|
||
})
|
||
},
|
||
// 授权拒绝后,再次授权提示弹窗
|
||
authConfirm(){
|
||
let that = this
|
||
wx.showModal({
|
||
content: '您没打开保存图片权限,是否去设置打开?',
|
||
confirmText: "确认",
|
||
cancelText: "取消",
|
||
success: function (res) {
|
||
if (res.confirm) {
|
||
wx.openSetting({
|
||
success :(res) => {
|
||
if (res.authSetting['scope.writePhotosAlbum']) {
|
||
that.saveImg();
|
||
}
|
||
else {
|
||
wx.showToast({
|
||
title: '您没有授权,无法保存到相册',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}
|
||
})
|
||
} else {
|
||
wx.showToast({
|
||
title: '您没有授权,无法保存到相册',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}
|
||
});
|
||
},
|
||
// 镜头遮蔽
|
||
sceneCover(enable) {
|
||
var _this = this;
|
||
let { deviceSerial, channelNo,accessToken,coverInterval,list,panelStatus,videoNetWorkError } = this.data;
|
||
if(coverInterval){
|
||
wx.showToast({
|
||
title: '操作过于频繁',
|
||
icon: 'none'
|
||
})
|
||
return false;
|
||
}
|
||
this.setData({
|
||
coverInterval: true,
|
||
})
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/device/scene/switch/set',
|
||
method: 'POST',
|
||
data: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
enable: enable,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res) =>{
|
||
console.log(res.data);
|
||
if(res.data.code == 200){
|
||
if(enable == 0){
|
||
list[3].status = 0;
|
||
panelStatus = 0;
|
||
videoNetWorkError = false;
|
||
this.getDeviceCapacity();
|
||
this.handlePlay();
|
||
}else {
|
||
list[0].status = -1;
|
||
list[1].status = -1;
|
||
list[2].status = -1;
|
||
panelStatus = 4;
|
||
list[3].status = 1;
|
||
// this.handleStop();
|
||
}
|
||
setTimeout(()=>{
|
||
this.setData({
|
||
coverInterval: false,
|
||
});
|
||
},5000)
|
||
this.setData({
|
||
videoNetWorkError: videoNetWorkError,
|
||
list:list,
|
||
panelStatus:panelStatus
|
||
})
|
||
}else {
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon: 'none',
|
||
})
|
||
this.setData({
|
||
coverInterval: false,
|
||
panelStatus: panelStatus,
|
||
});
|
||
}
|
||
},
|
||
fail: (res)=>{
|
||
wx.showToast({
|
||
title: '网络异常',
|
||
icon: 'none'
|
||
})
|
||
this.setData({
|
||
coverInterval: false,
|
||
});
|
||
}
|
||
});
|
||
},
|
||
// 镜象翻转
|
||
sceneMirror(enable) {
|
||
const { deviceSerial, channelNo,accessToken,mirrorInterval } = this.data;
|
||
var _this = this;
|
||
if(mirrorInterval) {
|
||
wx.showToast({
|
||
title: '操作过于频繁',
|
||
icon: 'none'
|
||
})
|
||
return false;
|
||
}
|
||
this.setData({
|
||
mirrorInterval: true,
|
||
});
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/device/ptz/mirror', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
command: enable,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res) => {
|
||
console.log(res.data);
|
||
if(res.data.code == 200){
|
||
setTimeout(()=>{
|
||
this.setData({
|
||
mirrorInterval: false,
|
||
});
|
||
},5000)
|
||
}else {
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon: 'none'
|
||
})
|
||
this.setData({
|
||
mirrorInterval: false,
|
||
});
|
||
}
|
||
},
|
||
fail: (res)=>{
|
||
wx.showToast({
|
||
title: '网络异常',
|
||
icon: 'none'
|
||
})
|
||
this.setData({
|
||
mirrorInterval: false,
|
||
});
|
||
}
|
||
})
|
||
},
|
||
playVoice(event){
|
||
const { accessToken, deviceSerial, channelNo } = this.data;
|
||
var { duration, voiceName,fileUrl } = event.currentTarget.dataset.value;
|
||
var type = event.currentTarget.dataset.type;
|
||
console.log("type",type)
|
||
wx.request({
|
||
url: 'https://open.ys7.com/api/lapp/voice/send', //仅为示例,并非真实的接口地址
|
||
method: 'POST',
|
||
data: {
|
||
accessToken: accessToken,
|
||
deviceSerial: deviceSerial,
|
||
channelNo: channelNo,
|
||
fileUrl: fileUrl,
|
||
},
|
||
header: {
|
||
'content-type': 'application/x-www-form-urlencoded' // 默认值
|
||
},
|
||
success:(res)=> {
|
||
console.log(res.data);
|
||
const { list } = this.data;
|
||
if(res.data.code == 200){
|
||
list[1].status = 1;
|
||
this.setData({
|
||
activeCustomVoiceName: type === 'custom' ? voiceName : '',
|
||
activeDefaultVoiceName: type === 'default' ? voiceName : '',
|
||
list: list,
|
||
});
|
||
setTimeout(()=>{
|
||
list[1].status = 0;
|
||
this.setData({
|
||
activeCustomVoiceName: '',
|
||
activeDefaultVoiceName: '',
|
||
list: list,
|
||
})
|
||
},duration * 1000)
|
||
}else if(res.data.code =='111012') { // 设备正忙
|
||
wx.showToast({
|
||
title: '操作中,请稍后再试',
|
||
icon:'none',
|
||
})
|
||
}else if(res.data.code =='20007') { // 设备正忙
|
||
wx.showToast({
|
||
title: '设备不在线',
|
||
icon:'none',
|
||
})
|
||
}else if(res.data.code =='20008') { // 设备正忙
|
||
wx.showToast({
|
||
title: '设备响应超时',
|
||
icon:'none',
|
||
})
|
||
}else {
|
||
wx.showToast({
|
||
title: res.data.msg,
|
||
icon:'none',
|
||
})
|
||
}
|
||
},
|
||
fail: (res)=>{
|
||
wx.showToast({
|
||
title: '网络异常',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
})
|
||
},
|
||
speakStart(event){
|
||
let recoderTime = this.data.recoderTime;
|
||
this.setData({
|
||
recoderTime: 59,
|
||
})
|
||
recorderManager.start(options);
|
||
wx.showToast({
|
||
icon: 'none',
|
||
duration: 60000,
|
||
image: './images/voice_talk4.png',
|
||
title: '剩余' + recoderTime
|
||
});
|
||
|
||
this.data.recoderTimer = setInterval(()=>{
|
||
// _this.setData({
|
||
// recoderTime: --recoderTime
|
||
// },1000)
|
||
if(recoderTime > 0){
|
||
--recoderTime;
|
||
wx.showToast({
|
||
icon: 'none',
|
||
duration: 60000,
|
||
image: './images/voice_talk4.png',
|
||
title: '剩余' + recoderTime
|
||
});
|
||
this.setData({
|
||
recoderTime: recoderTime
|
||
})
|
||
}else {
|
||
clearInterval(this.data.recoderTimer);
|
||
this.speakEnd();
|
||
}
|
||
// console.log("recoderTime", recoderTime)
|
||
},1000)
|
||
},
|
||
speakEnd(event) {
|
||
wx.hideToast();
|
||
let recoderTime = this.data.recoderTime;
|
||
if(recoderTime >= 59){
|
||
wx.showToast({
|
||
title: '时间太短了',
|
||
icon:'none',
|
||
})
|
||
recorderManager.stop();
|
||
clearInterval(this.data.recoderTimer);
|
||
return false;
|
||
}else {
|
||
wx.hideToast();
|
||
recorderManager.stop();
|
||
clearInterval(this.data.recoderTimer);
|
||
}
|
||
},
|
||
tapDialogButton(e) {
|
||
this.setData({
|
||
dialogShow: false
|
||
});
|
||
this.pageBack();
|
||
},
|
||
pageBack() {
|
||
const { scene } = this.data;
|
||
console.log("scene",scene);
|
||
// wx.showToast({
|
||
// title: `code ${scene}`,
|
||
// })
|
||
if([1007,1008,1036,1037,1038,1044].indexOf(scene) === -1){
|
||
wx.navigateBack({
|
||
delta: 1
|
||
})
|
||
} else {
|
||
wx.reLaunch({
|
||
url: '/pages/home/home',
|
||
})
|
||
}
|
||
},
|
||
/**
|
||
* 用户点击右上角分享
|
||
*/
|
||
onShareAppMessage: function(res) {
|
||
const { accessToken, deviceSerial, channelNo } = this.data;
|
||
if (res.from === 'button') {
|
||
// 来自页面内转发按钮
|
||
console.log(res.target);
|
||
this.setData({
|
||
panelStatus: 0,
|
||
})
|
||
}
|
||
return {
|
||
title: '小程序',
|
||
path: '/pages/live/live?accessToken=' + accessToken + '&deviceSerial='+ deviceSerial + '&channelNo=' + channelNo + '&scene=1007',
|
||
}
|
||
},
|
||
}) |