mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
private void openSco(){
if (!mAudioManager.isBluetoothScoAvailableOffCall()) {
Log.d(TAG, "系统不支持蓝牙录音");
return;
}
//mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//蓝牙录音的关键,启动SCO连接,耳机话筒才起作用
mAudioManager.stopBluetoothSco();
mAudioManager.startBluetoothSco();
//蓝牙SCO连接建立需要时间,连接建立后会发出ACTION_SCO_AUDIO_STATE_CHANGED消息,通过接收该消息而进入后续逻辑。
//也有可能此时SCO已经建立,则不会收到上述消息,可以startBluetoothSco()前先
//stopBluetoothSco()
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);
if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state) {
mAudioManager.setBluetoothScoOn(true); //打开SCO
//voiceRecogniton();//开始语音识别
unregisterReceiver(this); //别遗漏
} else {//等待一秒后再尝试启动SCO
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mAudioManager.startBluetoothSco();
}
}
}, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
}
private void closeSco() {
if(mAudioManager.isBluetoothScoOn()){
mAudioManager.setBluetoothScoOn(false);
mAudioManager.stopBluetoothSco();
}
}