Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何:在android中使用AudioManager startBluetoothSco()函数_Android_Bluetooth_Audio Recording - Fatal编程技术网

如何:在android中使用AudioManager startBluetoothSco()函数

如何:在android中使用AudioManager startBluetoothSco()函数,android,bluetooth,audio-recording,Android,Bluetooth,Audio Recording,如果我想为AudioManager.startBluetoothSco()函数设置限制,我应该在哪里设置? 从这里开始: 这些限制包括: •流类型必须为流\u语音\u呼叫 •格式必须为单声道 •采样频率必须为16kHz或8kHz 流\u语音\u呼叫可以在以下位置进行: AM.setMode(AudioManager.MODE_IN_CALL); 或 单声道和采样可在以下位置设置: audioRecord = new AudioRecord( android.media.MediaRecord

如果我想为AudioManager.startBluetoothSco()函数设置限制,我应该在哪里设置? 从这里开始:

这些限制包括:

•流类型必须为流\u语音\u呼叫

•格式必须为单声道

•采样频率必须为16kHz或8kHz

流\u语音\u呼叫可以在以下位置进行:

AM.setMode(AudioManager.MODE_IN_CALL);

单声道和采样可在以下位置设置:

audioRecord = new AudioRecord(
android.media.MediaRecorder.AudioSource.MIC, 8000,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersizebytes); 

有人能想出或知道不同的方法吗?

您提供给Android SDK文档的链接如下所示:

“…如果建立了SCO连接,则以下限制适用于音频输出流,以便将其路由到SCO耳机:

  • 流类型必须是流\语音\呼叫
  • 格式必须是mono
  • 采样频率必须为16kHz或8kHz
以下限制适用于输入流:

  • 格式必须是mono
  • 采样频率必须为8kHz“
您对“录音”的使用是一种输入流,不需要考虑语音通话:

对于“AudioTrack”,在SCO模式下,您需要执行以下操作:

AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);
当不处于SCO模式时,应执行以下操作:

AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, //
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, //
minBufferSizeInBytes, //
AudioTrack.MODE_STREAM);

要解决这个问题,你必须像这样使用两者:一个用于输入,另一个用于输出

                    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);

非常抱歉这么晚才回答,我几乎失去了希望,财务上翻了三倍,所以我做了一次短暂的尝试,失败后我变得绝望。但是,我一直想再试一次。你给了我希望,你的建议是使用音频作为输入,我真正需要知道的是,用什么作为输出。非常感谢你