【问题标题】:Android - How to check Microphone is currently being used by some other applicationAndroid - 如何检查麦克风当前是否被其他应用程序使用
【发布时间】:2015-11-26 10:48:25
【问题描述】:

我有一个录音机应用程序代码,基于麦克风状态。我想显示状态,例如,如果麦克风已被其他应用程序使用,则显示状态如麦克风已在使用,否则正在录制......就像那样,所以我使用下面的代码在录音机中获取麦克风状态。 getRecordingState() 但它总是返回 1,即使我正在通话或空闲。帮我一些代码来获取麦克风状态。提前致谢。

 int[] mSampleRates = new int[]{8000, 11025, 22050, 44100};

    for (int rate : mSampleRates) {
        for (short audioFormat : new short[]{AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT}) {
            for (short channelConfig : new short[]{AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {
                try {
                    Log.d(TAG, "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: "
                            + channelConfig);
                    int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);
        if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                        // check if we can instantiate and have a success
                        AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);

                        if (recorder.getState() == AudioRecord.STATE_INITIALIZED) {

                            Log.i("", "Recorder intialised " + recorder.getRecordingState() + "  " + recorder.getState() + "   ");
                            return recorder;
                        }
                    }
                } catch (Exception e) {
                    Log.e(TAG, rate + "Exception, keep trying.", e);
                }
            }
        }
    }

        return null;

【问题讨论】:

标签: android android-audiomanager android-audiorecord


【解决方案1】:

嗨,我找到了部分答案,如果电话应用程序(CALL)使用麦克风,我们可以获得模式(2 = 通话模式,0 = 正常模式)。如果麦克风被其他应用程序使用,不知道如何找到。干杯

AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.getMode();

【讨论】:

  • 这是完整的答案。检查其他应用程序使用 AudioManager.MODE_IN_COMMUNICATION
【解决方案2】:

getRecordingState 中所述,此方法仅检查您当前实例的状态是否已初始化。如果您想知道麦克风当前是否用于通话,您应该使用AudioManager

【讨论】:

  • 感谢 valentin,您能否分享一些示例代码以获取它。
  • 我没有为此准备好示例代码,因为这只是来自对参考的研究。对不起。
猜你喜欢
  • 2019-03-11
  • 1970-01-01
  • 2016-06-08
  • 2022-06-14
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多