html
<slider :value="num" :max="duration" @change="change" width="100%" :disabled="isSliderDisabled">
</slider>
js
import {
explain
} from '@/api/api.js';
export default {
data() {
return {
iBeaconDevices: [], // 存储搜索到的iBeacon设备
deviceId: [],
data: [],
url: getApp().globalData.url,
innerAudioContext: null,
num: 0, //秒
int: null, //定时器
duration: '111', //总时长
isSliderDisabled: false,
status: false,
audio_status: false,
type: 2
}
},
// 下拉刷新
onPullDownRefresh() {
try {
this.explain()
uni.stopPullDownRefresh(); //停止刷新
} catch (e) {}
},
onLoad() {
this.explain()
},
methods: {
play() {
if (!this.status) {
this.int = setInterval(() => {
this.num++
}, 1000)
this.status = true
this.change({
detail: {
value: this.num
}
})
} else {
this.status = false
clearInterval(this.int)
this.innerAudioContext.pause()
}
},
change(e) {
if (this.status) {
this.isSliderDisabled = true;
this.num = e.detail.value;
this.innerAudioContext.seek(e.detail.value)
setTimeout(() => {
this.innerAudioContext.play()
this.isSliderDisabled = false;
}, 500)
}
},
box(deviceid) {
console.log(deviceid, 99909);
let that = this
uni.openBluetoothAdapter({ //蓝牙初始化
success(res) {
uni.getLocation({
success(res) {
uni.startBeaconDiscovery({ //搜索蓝牙设备
uuids: deviceid,
success(res) {
console.log(res, 888);
uni.onBeaconUpdate((res) => { //监听蓝牙搜索到的设备
console.log(res, 999);
uni.hideLoading()
that.type = 1
})
},
fail(res) {
console.log('暂未搜索到蓝牙设备', res);
uni.showToast({
title: '暂未搜索到蓝牙设备,请下拉刷新',
icon: 'none'
})
}
})
},
fail(res) {
uni.showToast({
title: '请打开位置信息,并下拉刷新',
icon: 'none'
})
}
})
},
fail(res) {
console.log('蓝牙未打开', res);
uni.showToast({
title: '请打开蓝牙,并下拉刷新',
icon: 'none'
})
}
})
},
async explain() {
uni.showLoading({
title: '加载中...'
})
const res = await explain({
scenic_id: 3
})
this.data = res.data
if (!this.audio_status) {
this.innerAudioContext = uni.createInnerAudioContext()
this.innerAudioContext.src = this.url + this.data[0].audio;
this.innerAudioContext.onCanplay(() => {
// 获取音频总时长,单位为秒
this.duration = this.innerAudioContext.duration
console.log('音频总时长:', this.innerAudioContext.duration, 9)
})
}
this.audio_status = true
this.box([(res.data[0].deviceid)])
}
},
}