【问题标题】:Top Microphone & Bottom Microphone on android how to select?Android上的顶部麦克风和底部麦克风如何选择?
【发布时间】:2026-01-10 05:25:02
【问题描述】:

我正在构建可以录制音频的应用程序。但我想知道如何在我的设备上选择顶部或底部麦克风。 我在https://developer.android.com/ 上阅读了文档,我知道我们可以使用 MediaRecorder 类 来录制音频,它有 2 个定义的 MIC 和 CAMCORDER。 如果我们使用 MIC 定义,那么电话将使用底部麦克风 否则我们使用 CAMCORDER 然后电话将使用顶部麦克风。对吗?

            mFileName = FunctionIndex.PATH + "/" + this.functionKey +".3gp";
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mRecorder.setAudioChannels(1);
            mRecorder.setOutputFile(mFileName);
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            try {
                mRecorder.prepare();
            } catch (IOException e) {
                MyLog.e("Microphone prepare() failed" + e.getMessage().toString());
            }
            mRecorder.start();

【问题讨论】:

  • 不要考虑顶部和底部。这将因型号而异。一种将使用为电话定义的一种,一种将使用为摄像机定义的一种。这就是你所能知道的。据您所知,CAMCORDER 可能位于设备的另一侧,位于摄像头旁边。
  • 当我们使用define时是CAMCORDER。如果是前置视频,则使用顶部麦克风,否则为后置视频,则使用底部麦克风。我在这里读到了developer.android.com/reference/android/media/…
  • 你仍然在用错误的方式思考。麦克风不称为顶部和底部,因为它们可能不是顶部和底部。可能只有一个。顶部可能有一个前一个后。或者在中间。他们使用不同的术语,因为您不应该假设麦克风的位置,因为您的假设在某些模型上是正确的,而在其他模型上是错误的。
  • 嗨@GabeSechan,我明白了。我可以定义两个麦克风是主麦克风和辅助麦克风。问题是如何选择两个麦克风之一?你可以参考这个链接gadgetguideonline.com/s9/…。如果我想同时使用它们。我该怎么办?
  • 您在将媒体播放器设置为 CAMCORDER 或 MIC 时设置音频源,无论您喜欢哪个。

标签: android audio


【解决方案1】:

这是我的代码

                mFileName = FunctionIndex.PATH + "/" + this.functionKey +".3gp";
                mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                mRecorder.setAudioChannels(1);
                mRecorder.setOutputFile(mFileName);
                mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                try {
                    mRecorder.prepare();
                } catch (IOException e) {
                    MyLog.e("Microphone prepare() failed" + e.getMessage().toString());
                }
                mRecorder.start();

MIC 和 CAMCORDER 有什么不同?

【讨论】:

  • 不要发布更新您的问题作为答案。改为编辑您的问题。