手机连接蓝牙耳机(蓝牙耳机能正常SCO通话)的情况下,在iOS上小程序调用录音API时可以从蓝牙耳机录音,但是同样的小程序在Android平台上录音不能从蓝牙耳机录音。以下是代码片段
capture: function () { const recorderManager = wx.getRecorderManager() recorderManager.onStart(() => { console.log( 'recorder start' ) }) recorderManager.onResume(() => { console.log( 'recorder resume' ) }) recorderManager.onPause(() => { console.log( 'recorder pause' ) }) recorderManager.onStop((res) => { console.log( 'recorder stop' , res) const { tempFilePath } = res this .setData( { recordFile: tempFilePath} ) console.log( '开始播放 tempFilePath ' + tempFilePath) }) recorderManager.onFrameRecorded((res) => { const { frameBuffer } = res console.log( 'frameBuffer.byteLength' , frameBuffer.byteLength) }) const options = { duration: 3000, sampleRate: 44100, numberOfChannels: 1, encodeBitRate: 192000, format: 'mp3' , frameSize: 50 } recorderManager.start(options) }, |
更新:
代码片段wechatide://minicode/a33BgPmF6QZB
这里想问一下android 原生app能录音么?
能,且微信语音电话可以走蓝牙耳机。 另外想问一下,这个帖子我无法回复了,怎么回事呢?是不是需要把帖子的状态改变一下
原生App是设置了audiosource么?小程序默认是Mic的(Android侧).
有条件原生app代码关键贴一下?我看看区别.
应该是帖子的状态问题吧...
这里有Android的蓝牙录音的DEMO(含有源码):https://blog.csdn.net/kangear/article/details/38780185
Android要想从蓝牙录音不是设置了audiosource,是将当前模式改成通话模式。这样系统层就自动从蓝牙录音了,这个是我早期总结的文档了,不知新版本有什么变化没有。
AudioManager mAm = ( AudioManager ) getSystemService(Context.AUDIO_SERVICE);
mAm.setMode(AudioManager.MODE_IN_CALL);
mAm.setBluetoothScoOn(
true
);
mAm.startBluetoothSco();
如果是需要修改模式才能改成通话模式的话,现阶段是不能做到的。
小程序Android侧用的是AudioRecorder去录的音。
我们先内部看看这个要怎么支持合适。
我现在也遇到了同样的问题,不知道该问题是否已有解决方案?
麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题
帖子好像不能回复了,怎么才能回复呢?
Demo写好了。
wechatide://minicode/a33BgPmF6QZB
问题可能没有描述清楚,在Android上也想从蓝牙耳机录音,但是只能从手机自带MIC录音,onError没有报任何错误;在iOS上,如果手机连上了蓝牙耳机,小程序里调用录音API时,会自动从蓝牙耳机录音。推测是Android上调用录音API时,微信没有根据连接了蓝牙耳机的情况把音频通道调成AudioManager.MODE_IN_CALL状态,因为原生Android APP设置成了AudioManager.MODE_IN_CALL就可以从蓝牙耳机录音了。
你好,你可以打印onError的回调错误信息,查看是什么报错信息