• 微信小程序获取蓝牙信标


    1. /**
    2. * 搜索设备界面
    3. */
    4. import Dialog from '@vant/weapp/dialog/dialog';
    5. Page({
    6. data: {
    7. list: []
    8. },
    9. onPullDownRefresh: function () {
    10. wx.request({
    11. url: 'https://wwz.jingyi.icu/app/Explain/index',
    12. data: {
    13. scenic_id: 3
    14. },
    15. method: 'POST',
    16. success: (res) => {
    17. console.log(res);
    18. let that = this
    19. let BeaconData = res.data.data
    20. that.setData({
    21. list: BeaconData
    22. })
    23. let seach = {}
    24. let uuids = []
    25. for (let i = 0; i < res.data.data.length; i++) {
    26. uuids.push(res.data.data[i].deviceid)
    27. }
    28. console.log(uuids);
    29. // 初始化蓝牙设备
    30. wx.openBluetoothAdapter({
    31. success: function (blueres) {
    32. console.log('蓝牙适配器初始化成功', blueres)
    33. wx.startBeaconDiscovery({
    34. uuids: uuids, //多个uuid数组
    35. success: function (res) {
    36. console.log(res);
    37. wx.onBeaconUpdate(function () {
    38. //设置监听事件
    39. wx.getBeacons({
    40. //在监听事件中获取数据
    41. success: res => {
    42. console.log(res.beacons) //res.beacons 为搜索到的iBeacon数据数组
    43. //业务代码
    44. for (let i = 0; i < BeaconData.length; i++) {
    45. console.log(res.beacons[0].uuid);
    46. console.log(BeaconData[i].deviceid);
    47. if (res.beacons[0].uuid.toUpperCase() == BeaconData[i].deviceid.toUpperCase()) {
    48. console.log(123);
    49. that.setData({
    50. list: BeaconData
    51. })
    52. }
    53. }
    54. console.log(seach);
    55. wx.stopBeaconDiscovery({
    56. success(res) {
    57. console.log("已暂停搜索", res);
    58. }
    59. })
    60. }
    61. })
    62. })
    63. }
    64. })
    65. },
    66. fail: function (res) {
    67. console.log(res);
    68. wx.showModal({
    69. title: '提醒',
    70. content: '系统监测未打开蓝牙,请打开后下拉刷新',
    71. })
    72. console.log(uuids);
    73. }
    74. })
    75. }
    76. })
    77. wx.stopPullDownRefresh() //自动关闭下拉刷新
    78. },
    79. onLoad: function () {
    80. if (wx.getStorageSync('info')) {
    81. wx.request({
    82. url: 'https://wwz.jingyi.icu/app/Explain/index',
    83. data: {
    84. scenic_id: 3
    85. },
    86. method: 'POST',
    87. success: (res) => {
    88. console.log(res);
    89. let that = this
    90. let BeaconData = res.data.data
    91. let seach = {}
    92. let uuids = []
    93. for (let i = 0; i < res.data.data.length; i++) {
    94. uuids.push(res.data.data[i].deviceid)
    95. }
    96. console.log(uuids);
    97. // 初始化蓝牙设备
    98. wx.openBluetoothAdapter({
    99. success: function (blueres) {
    100. console.log('蓝牙适配器初始化成功', blueres)
    101. wx.startBeaconDiscovery({
    102. uuids: uuids, //多个uuid数组
    103. success: function (res) {
    104. console.log(res);
    105. wx.onBeaconUpdate(function () {
    106. //设置监听事件
    107. wx.getBeacons({
    108. //在监听事件中获取数据
    109. success: res => {
    110. console.log(res.beacons) //res.beacons 为搜索到的iBeacon数据数组
    111. //业务代码
    112. for (let i = 0; i < BeaconData.length; i++) {
    113. console.log(res.beacons[0].uuid);
    114. console.log(BeaconData[i].deviceid);
    115. if (res.beacons[0].uuid.toUpperCase() == BeaconData[i].deviceid.toUpperCase()) {
    116. console.log(123);
    117. that.setData({
    118. list: BeaconData
    119. })
    120. }
    121. }
    122. console.log(seach);
    123. wx.stopBeaconDiscovery({
    124. success(res) {
    125. console.log("已暂停搜索", res);
    126. }
    127. })
    128. }
    129. })
    130. })
    131. }
    132. })
    133. },
    134. fail: function (res) {
    135. console.log(res);
    136. wx.showModal({
    137. title: '提醒',
    138. content: '系统监测未打开蓝牙,请打开后下拉刷新',
    139. })
    140. console.log(uuids);
    141. }
    142. })
    143. }
    144. })
    145. } else {
    146. Dialog.confirm({
    147. title: '温馨提示',
    148. message: '系统监测到您当前还未登录,暂时无法进行后续操作,需要先行登录',
    149. })
    150. .then(() => {
    151. wx.navigateTo({
    152. url: '../login/login'
    153. })
    154. })
    155. .catch(() => {
    156. // on cancel
    157. });
    158. }
    159. }
    160. })

    如果需要配合音频使用的话 可以加一个背景音频 微信小程序自带的audio已经不能用了 这里要用的是微信的背景音频

    蓝牙获取成功以后将这穿代码塞进去 src需要自己调配

    1. const backgroundAudioManager = wx.getBackgroundAudioManager()
    2. // 1、getBackgroundAudioManager的属性
    3. // 1.1歌曲歌名
    4. backgroundAudioManager.title = '景区讲解'
    5. // 1.2歌曲专辑名称
    6. // 1.3歌曲作者
    7. // 1.4设置了 src 之后会自动播放
    8. backgroundAudioManager.src = 'https://wwz.jingyi.icu/uploads/20240121/2732c2e6d29a551cb1d441d1d99706ae.mp3'
    9. this.setData({ musicId: options.musicId })
    10. // 获取音乐详情
    11. this.getMusicInfo(options.musicId);
    12. // 创建控制音乐播放的实例
    13. this.backgroundAudioManager = wx.getBackgroundAudioManager();
    14. // 监视音乐播放/暂停/停止
    15. this.backgroundAudioManager.onPlay(() => {
    16. this.changePlayState(true);
    17. });
    18. this.backgroundAudioManager.onPause(() => {
    19. this.changePlayState(false);
    20. });
    21. this.backgroundAudioManager.onStop(() => {
    22. this.changePlayState(false);
    23. });
    24. }

    1. // 修改播放状态的功能函数
    2. changePlayState(isPlay) {
    3. // 修改音乐是否的状态
    4. this.setData({ isPlay })
    5. },
    6. // 获取音乐详情的功能函数
    7. async getMusicInfo(musicId) {
    8. let songData = await request('/song/detail', { ids: musicId });
    9. this.setData({
    10. song: songData.songs,
    11. })
    12. },
    13. // 点击播放/暂停的回调
    14. handleMusicPlay() {
    15. let isPlay = !this.data.isPlay;
    16. let { musicId } = this.data;
    17. this.musicControl(isPlay, musicId);
    18. },
    19. // 控制音乐播放/暂停的功能函数
    20. async musicControl(isPlay, musicId) {
    21. if (isPlay) { // 音乐播放
    22. // 获取音乐播放链接
    23. let musicLinkData = await request('/song/url', { id: musicId });
    24. let musicLink = musicLinkData.data[0].url;
    25. this.backgroundAudioManager.title = this.data.song.name;
    26. this.backgroundAudioManager.epname = this.data.song.al.name
    27. this.backgroundAudioManager.singer = this.data.song.aralosongName
    28. this.backgroundAudioManager.src = musicLink;
    29. } else { // 暂停音乐
    30. this.backgroundAudioManager.pause();
    31. }
    32. },

     再配合一下这写就可以实现进入页面播放音频啦

  • 相关阅读:
    Apache IoTDB v1.2.2 发布|增加 flink-sql-connector、tsfile 文件级级联传输等功能
    基于.NetCore开发博客项目 StarBlog - (9) 图片批量导入
    javaEE进阶
    彻底解决全局安装权限问题
    python--selenium:元素点击不到,你需要的点击方法都在这
    修复国产电脑麒麟系统开机出现initramfs 问题
    java培训技术数据绑定流程原理
    JAVA开发(nginx)
    如何利用 Seaborn 实现高级统计图表
    mybatis使用双层<foreach> 循环嵌套
  • 原文地址:https://blog.csdn.net/Mxy18851251178/article/details/137861749