【蓝牙小程序】如何编程实现发出声音

在微信小程序中,可以通过以下两种主要方式实现发出声音:


1. 使用 wx.playVoice(已废弃)

wx.playVoice 是微信小程序早期提供的 API,用于播放音频文件。但需要注意的是,该 API 已废弃,不建议在新项目中使用。

示例代码:

javascript
复制
wx.playVoice({
  filePath: '/path/to/audio.mp3', // 音频文件路径
  success: function () {
    console.log('播放成功');
  },
  fail: function (err) {
    console.log('播放失败', err);
  }
});

2. 使用 wx.createInnerAudioContext(推荐)

wx.createInnerAudioContext 是微信小程序推荐的音频播放 API,支持更多功能和更灵活的配置。

实现步骤:

  1. 创建音频上下文对象。

  2. 设置音频文件路径。

  3. 调用播放方法。

示例代码:

javascript
复制
// 创建音频上下文对象
const innerAudioContext = wx.createInnerAudioContext();

// 设置音频文件路径(可以是本地路径或网络路径)
innerAudioContext.src = '/path/to/audio.mp3'; // 本地路径
// innerAudioContext.src = 'https://example.com/audio.mp3'; // 网络路径

// 播放音频
innerAudioContext.play();

// 监听播放结束事件
innerAudioContext.onEnded(() => {
  console.log('音频播放结束');
});

// 监听播放错误事件
innerAudioContext.onError((err) => {
  console.log('音频播放失败', err);
});

3. 使用 wx.getBackgroundAudioManager(背景音频)

如果需要实现背景音频播放(即在小程序退到后台后仍能播放),可以使用 wx.getBackgroundAudioManager

示例代码:

javascript
复制
// 获取背景音频管理器
const backgroundAudioManager = wx.getBackgroundAudioManager();

// 设置音频文件路径和标题
backgroundAudioManager.title = '背景音频';
backgroundAudioManager.src = '/path/to/audio.mp3'; // 本地路径
// backgroundAudioManager.src = 'https://example.com/audio.mp3'; // 网络路径

// 播放音频
backgroundAudioManager.play();

// 监听播放结束事件
backgroundAudioManager.onEnded(() => {
  console.log('背景音频播放结束');
});

// 监听播放错误事件
backgroundAudioManager.onError((err) => {
  console.log('背景音频播放失败', err);
});

4. 使用 wx.createAudioContext(已废弃)

wx.createAudioContext 是早期用于控制 <audio> 组件的 API,但已废弃,建议使用 wx.createInnerAudioContext 替代。


5. 使用 <audio> 组件

如果需要在小程序页面中嵌入音频播放器,可以使用 <audio> 组件。

示例代码:

html
复制
<audio id="myAudio" src="/path/to/audio.mp3" controls></audio>
<button bindtap="playAudio">播放</button>
<button bindtap="pauseAudio">暂停</button>
javascript
复制
Page({
  playAudio() {
    const audioContext = wx.createAudioContext('myAudio');
    audioContext.play();
  },
  pauseAudio() {
    const audioContext = wx.createAudioContext('myAudio');
    audioContext.pause();
  }
});

总结

  • 推荐使用 wx.createInnerAudioContext,功能强大且灵活。

  • 如果需要背景音频播放,可以使用 wx.getBackgroundAudioManager

  • 废弃的 API(如 wx.playVoice 和 wx.createAudioContext)不建议使用。

  • 根据需求选择合适的实现方式即可!

posted @ 2025-03-08 16:38  FBshark  阅读(103)  评论(0)    收藏  举报