当前位置: 首页 > 知识库问答 >
问题:

使用蓝牙连接的Continuos Android语音识别

舒俊雄
2023-03-14

我正在使用Google语音识别实现一个离线Continuos语音识别Android应用程序,以管理通过蓝牙连接到smartphpone的Arduino设备。当我使用蓝牙耳机时,我想使用蓝牙麦克风而不是电话麦克风。我指定了以下代码:

private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
    public void onServiceConnected(int profile, BluetoothProfile proxy) {
        if (profile == BluetoothProfile.HEADSET) {
            mBluetoothHeadset = (BluetoothHeadset) proxy;
        }
    }
    @Override
    public void onServiceDisconnected(int profile) {
        if (profile == BluetoothProfile.HEADSET) {
            mBluetoothHeadset = null;
        }
    }
};

和蓝牙耳机接收器:

public class BluetoothHeadsetReceiver extends BroadcastReceiver {

    public BluetoothHeadsetReceiver(Context context) {
        IntentFilter intentFilter = new IntentFilter(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED);        intentFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);         intentFilter.addAction(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT);
        context.registerReceiver(this, intentFilter);
        mBluetoothHeadsetReceiver = true;
    }
    public void onReceive(Context context, Intent intent) {
        int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
        if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) {
            deviceBTName = mBluetoothHeadset.getConnectedDevices().get(0).getName();
            deviceBT = mBluetoothHeadset.getConnectedDevices().get(0);
            audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
            audioManager.startBluetoothSco();
            audioManager.setBluetoothScoOn(true);
            audioManager.setMicrophoneMute(true);
          }
        }
        else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED)
        {
            audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
            audioManager.startBluetoothSco();
            audioManager.setBluetoothScoOn(true);
            mBluetoothConnected = false;
        }
    }
}

但该应用程序始终使用电话麦克风。

如何通过Bluettoth麦克风路由语音输入?谢谢

共有1个答案

曹疏珂
2023-03-14

使用解决:audioManager.setSpeakerphoneOn(false);

 类似资料:
  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

  • 我听一个热门单词,并使用MediaPlayer播放一些音乐。 在播放音乐的同时继续收听下一个命令,并做出相应的反应。 该应用程序运行良好,音乐可以通过蓝牙耳机播放,语音也可以同时识别,但它总是使用手机的麦克风。即使蓝牙耳机连接或没有连接,它仍然使用手机的麦克风。 我试着用: 这让我觉得这是可能的但我不知道怎么做。 请帮帮我。提前谢了。

  • Hy,我们正在通过蓝牙开发android多人游戏。这是一款多人LUDO游戏,其中4名玩家相互连接并进行游戏。 我们被困在第三和第四名球员的连接。 上面是建立连接的示例代码。但是在连接服务类中,我们有以下代码 当移动设备连接到第三个或第四个设备时,它返回myBSock==null。但是如果代码正常工作,它必须返回设备的地址,并且应该将mBtDeviceAddresses.add(设备);添加到服务器

  • 问题内容: 我正在开发一个使用蓝牙连接到设备并发送/接收数据的应用程序。我正在使用Nexus One手机进行所有测试。 我从手机到任何设备都无法建立SPP(串行端口)连接。不过,我 已经 能够从一个设备(我的笔记本电脑)连接到使用Mac相当于腻子我的手机(唯一的例外是从市场上的“蓝牙文件传输”应用程序似乎是工作,但我不认为使用RFCOM / SPP …)。 我在LogCat日志中始终看到此消息:

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。