gpt4 book ai didi

android - 禁用安卓内置麦克风

转载 作者:行者123 更新时间:2023-12-05 07:53:16 29 4
gpt4 key购买 nike

我正在开发一个使用语音识别的应用程序,我想在使用蓝牙耳机时禁用内部麦克风。问题是内置的 android 麦克风一直在听,识别引擎识别出我不想要的词(其他人在电话附近说话,或者环境噪音使识别有用)。谢谢!


public class BluetoothHelper extends BluetoothHeadsetUtils {

private Context _mContext;
private AudioManager audioManager;
private int audioModeBackup;

public BluetoothHelper(Context context) {
super(context);
this._mContext = context;
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}

@Override
public void onScoAudioDisconnected() {
// Cancel speech recognizer if desired
AudioManager audioManager = (AudioManager) _mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamSolo(AudioManager.USE_DEFAULT_STREAM_TYPE, true);


Log.d(BluetoothHelper.class.getSimpleName(), "A2DP: " + audioManager.isBluetoothA2dpOn() + ". SCO: "
+ audioManager.isBluetoothScoAvailableOffCall());
Toast.makeText(_mContext, "SCO Audio disconnected", Toast.LENGTH_SHORT).show();
}

@Override
public void onScoAudioConnected() {
// Should start speech recognition here if not already started
AudioManager audioManager = (AudioManager) _mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
Log.d(BluetoothHelper.class.getSimpleName(), "Is bluetooth sco on: "+audioManager.isBluetoothScoOn());

Log.d(BluetoothHelper.class.getSimpleName(), "A2DP: " + audioManager.isBluetoothA2dpOn() + ". SCO: "
+ audioManager.isBluetoothScoAvailableOffCall()+" SCO ON: ");
Toast.makeText(_mContext, "SCO Audio connected. Audio is on headset SCO: " + this.isOnHeadsetSco(),
Toast.LENGTH_SHORT).show();
}

@Override
public void onHeadsetDisconnected() {
AudioManager audioManager = (AudioManager) _mContext.getSystemService(Context.AUDIO_SERVICE);

Log.i(BluetoothHelper.class.getSimpleName(), "A2DP: " + audioManager.isBluetoothA2dpOn() + ". SCO: "
+ audioManager.isBluetoothScoAvailableOffCall());
Toast.makeText(_mContext, "Bluetooth Headset Off", Toast.LENGTH_SHORT).show();
/* Unmute the external microphone */
setInternalMicMute(false);
}

@Override
public void onHeadsetConnected() {
AudioManager audioManager = (AudioManager) _mContext.getSystemService(Context.AUDIO_SERVICE);

if(!audioManager.isBluetoothA2dpOn()){
Log.d("BluetoothHelper", "Reset connection with bluetooth");
this.setStarted(false);
this.start();
}
else{
this.mIsCountDownOn = true;
Log.i(BluetoothHelper.class.getSimpleName(), "A2DP: " + audioManager.isBluetoothA2dpOn() + ". SCO: "
+ audioManager.isBluetoothScoAvailableOffCall());
Toast.makeText(_mContext, "Bluetooth Headset On.", Toast.LENGTH_SHORT).show();
/* Mute the external microphone */
setInternalMicMute(true);
this.mCountDown11.start();
}

}


private void setInternalMicMute(boolean mute) {

}
}

更新问题!我正在使用这些辅助类来检测蓝牙耳机何时连接,之后我从 BluetoothHeadset 类调用 startVoiceRecognition()

最佳答案

Android 应该设法在可用时使用头戴式麦克风是否可以使用:

setAudioSource(AudioSource.DEFAULT);

更多信息 here .

希望这对您有所帮助。

关于android - 禁用安卓内置麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821221/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com