我有蓝牙耳机(BTC6White) . 我想谈谈麦克风和Android设备播放声音 .
那么,我怎么能这样做?首先,我可以 Build 套接字连接
socket = mDevice.createRfcommSocketToServiceRecord(UUID.fromString("0000111e-0000-1000-8000-00805f9b34fb"));
socket.connect();
然后,我如何获得音频?这个方法有什么用:startBuetoothSco?要将音频放入扬声器,我应该使用Auditrack吗?
int buffersize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT);
soundData = new byte [buffersize*5];
audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT,
soundData.length,AudioTrack.MODE_STREAM);
但是,那么,我应该填充缓冲区soundData吗?怎么样?使用套接字(进入线程)?
mmInStream = socket.getInputStream();
public void run() {
byte[] buffer = new byte[8000*2];
while (true) {
bytes = mmInStream.read(buffer);
audioTrack.write(buffer, 0, bytes); //write directly?
}}
和startBuetoothSco()为什么?要知道sco状态吗? SCO_AUDIO_STATE_CONNECTED ...或发送/接收数据?我不明白如何从de耳机获取音频数据,然后如何流式传输到扬声器 . 有必要 Build SCO连接(使用AudioManager)来获取蓝牙耳机的数据吗?
很难找到有关此问题的信息,并且android文档很差(本主题) .
1 回答
要检索音频数据,您可以设置流源 . 例如,如果您想通过蓝牙耳机录制声音,可以按如下方式初始化AudioRecord和AudioManager:
并打电话
然后,您可以定义一个用于读取音频数据的线程,您可以在其中编写以下代码:
我希望我能清楚地解释清楚 .