如果我想设置AudioManager.startBluetoothSco()函数的限制,我该怎么做? 从这里: http://developer.android.com/reference/android/media/AudioManager.html#startBluetoothSco()
限制是:
•流类型必须为STREAM_VOICE_CALL
•格式必须是单声道
•采样必须为16kHz或8kHz
STREAM_VOICE_CALL可以是stetup:
AM.setMode(AudioManager.MODE_IN_CALL);
或
AM.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
单声道和采样可以设置为:
audioRecord = new AudioRecord(
android.media.MediaRecorder.AudioSource.MIC, 8000,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersizebytes);
任何人都可以想到或知道狡猾的方式吗?
答案 0 :(得分:1)
您提供给Android SDK文档的链接说明如下:
" ...如果建立了SCO连接,则以下限制适用于音频输出流,以便它们可以路由到SCO耳机:
以下限制适用于输入流:
您对" AudioRecord"的使用是一个输入流,不需要关注STREAM_VOICE_CALL:
对于" AudioTrack"在SCO模式下,您需要执行以下操作:
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);
在SCO模式下 NOT 时的以下内容:
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);
答案 1 :(得分:0)
要解决这个问题,你必须使用这两个:一个用于输入,另一个用于输出
audioRecord = new AudioRecord(
android.media.MediaRecorder.AudioSource.MIC , SAMPPERSEC,
channelConfiguration, audioEncoding, buffersizebytes);
Atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
SAMPPERSEC,
AudioFormat.CHANNEL_OUT_MONO,
audioEncoding,
buffersizebytes,
AudioTrack.MODE_STREAM);