Android蓝牙耳机录音
使用蓝牙耳机录音都需要开启耳机的SCO连接,这是一种双向语音通信的连接,开启蓝牙耳机的SCO连接有两种方式,一种是startBluetoothSco()的方式,另一种是startVoiceRecognition()的方式。
一、使用startBluetoothSco()的方式开启SCO通道:
蓝牙耳机录音的步骤:
1)初始化音频对象:
audiosource = MediaRecorder.AudioSource.VOICE_COMMUNICATION;
this.bufferSize = AudioRecord.getMinBufferSize(VoiceConfig.SAMPLERATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT) ;
this.audioRecord = new AudioRecord(audiosource,
VoiceConfig.SAMPLERATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
this.bufferSize);
mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
2)启动蓝牙耳机SCO通道:
mAudioManager.startBluetoothSco();
3)读取蓝牙耳机录音数据:
audioRecord.read(buffer, 0, bufferSize);
4)关闭SCO通道:
audioManager.stopBluetoothSco();
二、使用startVoiceRecognition()的方式开启SCO通道:
步骤如下:
1)初始化:
BluetoothAdapter adapter;
if(android.os.Build.VERSION.SDK_INT adapter=BluetoothAdapter.getDefaultAdapter();
} else{
BluetoothManager bm=(BluetoothManager) BaseApplication.getContext().getSystemService(Context.BLUETOOTH_SERVICE);
adapter=bm.getAdapter();
}
BluetoothProfile.ServiceListener blueHeadsetListener = new BlueToothListener();
adapter.getProfileProxy(BaseApplication.getContext(), blueHeadsetListener, BluetoothProfile.HEADSET);
2)获取BluetoothHeadset对象和BluetoothDevice对象:
public class BlueToothListener implements BluetoothProfile.ServiceListener {
@Override
public void onServiceDisconnected(int profile) {// dont care
headset = null;
}
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {// dont care
try {
if (proxy instanceof BluetoothHeadset)
headset = ((BluetoothHeadset) proxy);
for (BluetoothDevice device : connectedDevices) {
LogUtil.e(“BluetoothHeadset”,“BluetoothDevice found :” + device);
bluetoothDevice = device;
}
}
}
3)启动SCO连接:
headset.startVoiceRecognition(device)
4)关闭SCO连接:
headset.stopVoiceRecognition(bluetoothDevice);

**注意事项:**1)蓝牙耳机开启SCO通道后,Android系统无法监听耳机上的按键消息,因此如果想要监听蓝牙耳机上的按键消息,必须在开启SCO通道前或关闭SCO通道后监听按键消息的广播。
2)监听蓝牙耳机SCO通道开启或关闭只需要注册ACTION_AUDIO_STATE_CHANGED或ACTION_SCO_AUDIO_STATE_UPDATED广播

更多相关文章

  1. Android(安卓)中的内容观察者ContentObserver
  2. 酷炫轮播广告
  3. Android(安卓)6.0 监听系统通知(Notification)
  4. android Studio与数据库SQLserver连接实现登录
  5. Android(安卓)9.0 的 recent 键/事件的拦截
  6. Android(安卓)Your content must have a ListView whose id attr
  7. android之activity跳转 窗口跳转
  8. Android实现短信验证码自动填写功能
  9. Android(安卓)4.4 Kitkat Phone工作流程浅析(九)__状态通知流程

随机推荐

  1. SQL2000个人版 应用程序正常初始化失败0
  2. 配置 SQL Server 2005 以允许远程连接的
  3. MSSQL2000安全设置图文教程
  4. 不固定参数的存储过程实现代码
  5. 不同数据库之间导入导出功能介绍
  6. 一个常用的报表统计SQL语句
  7. sqlserver对字段出现NULL值的处理
  8. mssql数据库中的表、字段sql语句
  9. SQL Server的通用分页存储过程 未使用游
  10. Sql function 多行中的列合并为一行一列