安卓系统-如何检查麦克风目前正被其他应用程序使用



我有一个录音机应用程序代码,基于麦克风状态。我想像这样显示状态,如果麦克风已经被其他应用程序使用,要像麦克风已经在使用其他录制一样显示状态。。。就像这样,所以我使用下面的代码来获取recorder.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;

Hi i找到部分答案,如果麦克风由电话应用程序(CALL)使用,我们可以获得模式(2=处于通话模式,0=正常模式)。如果麦克风被其他应用程序使用,不知道如何查找。欢呼

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

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

相关内容

  • 没有找到相关文章

最新更新