• Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)


    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)])
                }
            },

  • 相关阅读:
    揭秘MMAdapt:如何利用AI跨领域战胜新兴健康谣言?
    Real-Time Rendering——9.13.1 Filtering Normals and Normal Distributions过滤法线和正态分布
    zabbix内置宏、自动发现与注册
    刷题记录(M. MaratonIME returns home,牛可乐和魔法封印,NC24866 [USACO 2009 Dec S]Music Notes)
    力扣第108题 将有序数组转二叉搜索树 c++
    Linux的文件权限管理
    Flutter: ListView or Column
    Java注解(Java高级)
    香港硬防服务器的防御有什么优缺点?
    HTML学生个人网站作业设计——中华美食(HTML+CSS) 美食静态网页制作 WEB前端美食网站设计与实现
  • 原文地址:https://blog.csdn.net/m0_72603435/article/details/134451808