收藏
回答

安卓无法使用TWS的MIC录音

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug recorderManager 微信安卓客户端 8.0.3 2.16.0【519】

https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/

const options = {
  duration: 10000,
  sampleRate: 44100,
  numberOfChannels: 1,
  encodeBitRate: 192000,
  format: 'aac',
  frameSize: 50,
  // audioSource: "headsetMic"
  audioSource: "mic"
}
recorderManager.start(options)

audioSource 我每一种都试过了,IPhone可以使用TWS录音,但是安卓不行,试过小米11和华为(HUAWEI_TNY_AL00),录音都只能用手机端的MIC
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-Riven
    社区技术运营专员-Riven
    03-31

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    03-31
    有用
    回复
  • 龙语
    龙语
    04-01
    // index.js
    // 获取应用实例
    const app = getApp()
    var voice = "";
    
    const recorderManager = wx.getRecorderManager()
    
    recorderManager.onStart(() => {
      console.log('recorder start')
    })
    recorderManager.onPause(() => {
      console.log('recorder pause')
    })
    recorderManager.onStop((res) => {
      console.log('recorder stop', res)
      const { tempFilePath } = res
      voice = res.tempFilePath
    })
    recorderManager.onFrameRecorded((res) => {
      const { frameBuffer } = res
      console.log('frameBuffer.byteLength', frameBuffer.byteLength)
    })
    
    const options = {
      duration: 10000,
      sampleRate: 44100,
      numberOfChannels: 1,
      encodeBitRate: 192000,
      format: 'aac',
      frameSize: 50,
      // audioSource: "headsetMic"
      audioSource: "mic"
    }
    
    const innerAudioContext = wx.createInnerAudioContext()
    innerAudioContext.autoplay = false
    
    innerAudioContext.onPlay(() => {
      console.log('开始播放')
    })
    innerAudioContext.onError((res) => {
      console.log(res.errMsg)
      console.log(res.errCode)
    })
    
    
    Page({
      data: {
        motto: 'test',
        userInfo: {},
        hasUserInfo: false,
        canIUse: wx.canIUse('button.open-type.getUserInfo'),
        canIUseGetUserProfile: false,
        canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
      },
      // 事件处理函数
      bindViewTap() {
        wx.navigateTo({
          url: '../logs/logs'
        })
      },
      onLoad() {
        if (wx.getUserProfile) {
          this.setData({
            canIUseGetUserProfile: true
          })
        }
      },
      getUserProfile(e) {
        // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
        wx.getUserProfile({
          desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
          success: (res) => {
            console.log(res)
            this.setData({
              userInfo: res.userInfo,
              hasUserInfo: true
            })
          }
        })
      },
      getUserInfo(e) {
        // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
        console.log(e)
        this.setData({
          userInfo: e.detail.userInfo,
          hasUserInfo: true
        })
      },
      play: function () {
        console.log(voice)
        innerAudioContext.src = voice
        innerAudioContext.play()
      },
      start: function () {
        //开始录音  
        recorderManager.start(options)
      },
      stop: function () {
        //结束录音  
        recorderManager.stop()
      }
    })
    


    上面是整个代码,逻辑很简单,就是录音,然后播放录音。

    测试过安卓手机:小米K30 Ultra . 荣耀 Honor Magic 2,小米11

    微信版本:8.0.3和8.0.2

    基础版本号:2.16.0【519】

    安卓操作系统:Android 10

    测试过蓝牙耳机:HUAWEI Freelace, Airpod pro

    04-01
    有用
    回复
登录 后发表内容
问题标签