麦克风的状态

问题描述:

我写一个使用MediaRecorder录制音频的应用。 (我使用的是Android 2.1)麦克风的状态

  1. 开始录制之前我想知道麦克风的状态(是忙还是不忙)?
  2. 如果麦克风忙,我可以得到它独占访问?

在此先感谢!

+1

以我的经验,如果一个应用程序不释放麦克风,那么你将无法访问它,你将得到一个异常。但是,另一方面是,一旦你锁定了它,其他应用程序就无法从你那里窃取它(除非你的应用程序被操作系统在后台销毁)。 –

+0

谢谢Aaron C!你回答了我的问题的第二部分 – XXX

回答1问题: 阅读很多文章,我意识到,这是不可能的了。

这是一个老问题,但我告诉我解决这个问题的方式。也许有人需要这个帮助。注意:这是一种肮脏的方式,但它对我有用。

您可以try/catch MediaRecorderObject.start()。如果麦克风忙

MediaRecorder myAudioRecorder = new MediaRecorder(); 
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
myAudioRecorder.setOutputFile(outputFile); 

try { 
     myAudioRecorder.prepare(); 
     myAudioRecorder.start(); 

    } 
    catch (Exception exception) { 
     Toast.makeText(getApplicationContext(), "Mic in use", Toast.LENGTH_LONG).show(); 

    }