我有一个语音聊天应用程序,它工作得很好。目前,我正在尝试使该应用程序支持蓝牙耳机,以防任何连接。我需要处理两种情况:
对于第一种情况,应用程序应自动开始使用耳机作为其默认输入/输出音频设备。另一方面,应用程序在耳机连接到设备后,应从当前输入/输出音频设备切换到蓝牙耳机。
我使用以下代码成功地处理了第一个案例:
mAudioManager.setMode(0);
mAudioManager.startBluetoothSco();
mAudioManager.setBluetoothScoOn(true);
mAudioManager.setMode(android.media.AudioManager.MODE_IN_CALL);
至于第二种情况,我创建了一个BroadcastReceiver,当蓝牙耳机连接时,它会监听,如下所示:
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
mAudioManager.setMode(0);
mAudioManager.startBluetoothSco();
mAudioManager.setBluetoothScoOn(true);
mAudioManager.setMode(android.media.AudioManager.MODE_IN_CALL);
} else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
mAudioManager.setMode(0);
mAudioManager.startBluetoothSco();
mAudioManager.setBluetoothScoOn(false);
mAudioManager.setMode(android.media.AudioManager.MODE_IN_CALL);
}
}
};
BroadcastReciever
能够检测耳机连接/断开,并且呼叫将声音引导到耳机而不是手机的听筒。问题是该应用程序一直使用设备的麦克风作为输入音频设备,而不是耳机的。经过长时间的检查,我意识到当BroadcastReciever
收到耳机已连接的通知时,我需要等待一段时间才能调用mAudioManager.startBluetoothSco();
让应用程序使用耳机的麦克风。
问题是,在知道蓝牙耳机已连接后,我应该收听什么样的活动,以便开始从耳机的麦克风捕获声音?
原来我不应该听BluetoothDevice。ACTION_ACL_CONNECTED
,而我应该考虑的是BluetoothHeadset。ACTION_CONNECTION_STATE_CHANGED
。BroadcastReciever
应该初始化如下:
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {
int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, -1);
boolean result = state == BluetoothHeadset.STATE_CONNECTED;
mCallback.onConnected(result);
}
}
};
播放音符 播放声音 录制 文字转语音
我正在使用语音识别应用程序。蓝牙耳机成功连接到我的android设备后,我想在内置麦克风和耳机麦克风之间自由切换音频输入,如何做到?
我正试着用摄像机拍一段视频。然而,摄像机不支持蓝牙麦克风。幸运的是,我想我找到了一个方法来做这件事,但我找不到好的app来做这件事。我的计划是,将手机作为蓝牙接收器,并通过电缆将手机的音频端口连接到摄像机。我需要:一个应用程序,使蓝牙耳机作为系统的默认麦克风。一个应用程序,使声音从蓝牙麦克风能够流到音频端口。
有没有办法通过耳机传送麦克风输入,同时通过智能手机扬声器使用音频输出? 我已经看了几个小时了,我看到这在iOS上显然是不可能的,但是Android呢... 我用的是三星Galaxy S4。 这是我的代码的一部分,即使耳机已插入,也可以通过扬声器路由音频输出: 但当我试图通过耳机的麦克风控制我的应用程序时,什么都没有。所以我试着用智能手机的那一个,它显然起作用了。 它看起来不像其他AudioMana
我想使用扬声器进行音频输出,同时使用耳机插孔进行不同的音频输出/输入。这可能吗?
所需功能: 它有点像iPhone本机手机应用程序。当有蓝牙/耳机连接到iPhone时,扬声器按钮(通常只有扬声器/手机切换)将显示所有可用的音频输出设备。默认使用蓝牙。用户可以选择其他设备播放声音。 问题: > 如何更新路由并将音频输出设置为所选设备? 请注意,AudioSessionGetProperty AND AudioSessionSetProperty的现有解决方案可能并不理想,因为iO