Files
medicine_app/mixins/tv.js
2024-06-19 16:12:23 +08:00

146 lines
3.1 KiB
JavaScript

import { mapState, mapMutations } from 'vuex';
const { platform } = uni.getSystemInfoSync()
const tv = {
data () {
return {
wifiName: '', // 当前wifi名称
currentTvVolume: 0,
setScreenClicked: false
}
},
computed: {
...mapState({
devices: state => state.devices,
isPushing: state => state.isPushing,
playUrl: state => state.playUrl,
searchStatus: state => state.searchStatus,
pushStatus: state => state.pushStatus
})
},
methods: {
...mapMutations(['setIsPushingStatus', 'setSearchStatus', 'setCurrentTvVolume']),
getCurrentWifiName () {
uni.$emit('getCurrentWifiName',(name) => {
console.log('当前wifi名称:', name);
this.wifiName = name;
})
// try {
// Projection.getConnectWifiName((name) => {
// console.log('当前wifi名称:', name);
// this.setCurrentWifiName(name);
// })
// } catch (e) {
// console.log(e);
// }
},
refreshDevices () {
uni.$emit('refreshDevices');
this.searchStatus = true;
},
setScreen (item) {
if (this.setScreenClicked) return;
this.setScreenClicked = true;
try {
if ( platform === 'ios' && this.playUrl.includes('.pcm')) {
uni.showToast({
title: '请使用airplay播放',
icon: 'none'
})
return;
}
let params;
if (platform === 'ios') {
params = {
playUrl: this.playUrl,
device: item
}
} else {
params = Object.assign(item, {
playUrl: this.playUrl
})
}
console.log('set Screen params', params);
uni.$emit('startPush', params);
uni.$once('onProjectionPlay', () => {
// 投屏成功后
uni.showToast({
title: '投屏成功',
icon: 'none'
});
setTimeout(()=> {
uni.navigateBack({
success: () => {
this.setIsPushingStatus(true);
}
});
}, 1500);
})
setTimeout(() => {
this.setScreenClicked = false
}, 3000)
} catch (e) {
console.log(e)
}
},
stopPush () {
this.setIsPushingStatus(false);
uni.$emit('stopPush');
},
pausePush () {
uni.$emit('pausePush',() => {
this.isPlaying = false;
})
},
resumePush () {
this.isPlaying = true;
uni.$emit('resumePush');
},
tvVolumePlus () {
this.currentTvVolume++;
this.setTvVolume(this.currentTvVolume);
},
tvVolumeReduce () {
if (this.currentTvVolume === 0) return;
this.currentTvVolume--;
this.setTvVolume(this.currentTvVolume);
},
setTvVolume (value) {
try {
let volume;
if (platform === 'android') {
volume = {
volume: parseInt(value * 2)
}
} else {
volume = value * 2;
}
console.log('setTvVolume params', volume);
uni.$emit('setVolume', volume);
// this.setCurrentTvVolume(volume);
console.log('currentTvVolum',this.currentTvVolume);
} catch (e) {
console.error(e);
}
},
tvSeek (value) {
try {
let position;
if (platform === 'android') {
position = {
position: parseInt(value * 1000)
}
} else {
position = value
}
console.log('seek params:', position)
uni.$emit('seek', position);
} catch (e) {
console.error(e);
}
},
}
}
export default tv