【问题标题】:sharing audio input on Android在 Android 上共享音频输入
【发布时间】:2010-12-20 23:54:52
【问题描述】:

我正在为一个 Android 手机应用做一些准备研究,该应用会在用户同时接听电话时涉及语音搜索或语音识别。我发现,当我在通话中并尝试调用语音搜索或类似的操作时,我会收到一条“音频错误”消息。手机应用是否对手机的麦克风输入进行独占控制,导致其他应用无法访问音频输入?

【问题讨论】:

    标签: android audio


    【解决方案1】:

    在回答直接问题时,是的。手机应用程序完全独占控制麦克风输入。这与所有使用麦克风的应用程序相同。一次只有一个应用程序可以访问麦克风。但是,希望您的应用可以访问语音上行链路流,这是同一件事(它是通过麦克风说出并上传到服务塔的内容),而且它不会完全干扰通话。你可以这样做:

    MediaRecorder mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_UPLINK);

    您必须添加权限以记录到清单等,但仅此而已。幸运的是,语音识别的东西都是内置的,所以你应该能够很容易地找到如何做到这一点,只需在这里浏览一下或用谷歌搜索一下。不幸的是,我自己在那个领域没有什么可以提供给你的。 希望这会有所帮助!

    【讨论】:

    • 非常感谢您的建议。如果通话正在进行中,然后我尝试使用 VOICE_UPLINK 参数进行录制,它会失败。 Logcat 显示; 01-11 11:27:07.710:错误/AudioHardwareMot(1007):AudioMgr 错误:AudioStreamInMot::openFd()失败:呼叫已连接 01-11 11:27:07.710:错误/AudioRecord(1007):无法获取音频输入对于记录源 2,“源 2”是上行链路。所以这意味着,至少在我的手机上,当通话发生时,您无法访问来自麦克风的任何内容。
    • 这很奇怪......因为这就是它的目的,但我不能说它让我感到惊讶。在摩托罗拉安卓手机上,您可以访问上行链路(通常),但摩托罗拉硬件不允许您访问下行链路。 Android“支持”但受硬件限制的另一件事。 :( 哦!你确实有 try/catch 块吗?
    • 摩托罗拉 XT720 我怀疑?旧的摩托罗拉软件在 IN_CALL_MODE 中破坏了录音输入
    • 谁能帮我写这篇文章stackoverflow.com/questions/59339328/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多