2017-03-01 44 views
0

我只是試圖創建一個麥克風類,這是一個門面,允許其他代碼啓動和停止錄製。然而,我總是得到以下錯誤:Android:MediaRecorder.start()runetimException模糊錯誤

Caused by: java.lang.RuntimeException: start failed. 
        at android.media.MediaRecorder.start(Native Method) 
        at kwedt.afasie_app.service.Microphone.Record(Microphone.java:41) 
        at kwedt.afasie_app.NamingActivity.recordAudio(NamingActivity.java:69) 
        at kwedt.afasie_app.NamingActivity.commence(NamingActivity.java:51) 
        at kwedt.afasie_app.AphasiaTestActivity.setSubtest(AphasiaTestActivity.java:143) 
        at kwedt.afasie_app.AphasiaTestActivity.menuSelect(AphasiaTestActivity.java:251) 
        at java.lang.reflect.Method.invoke(Native Method)  
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
        at android.view.View.performClick(View.java:5637)  
        at android.view.View$PerformClick.run(View.java:22429)  
        at android.os.Handler.handleCallback(Handler.java:751)  
        at android.os.Handler.dispatchMessage(Handler.java:95)  
        at android.os.Looper.loop(Looper.java:154)  
        at android.app.ActivityThread.main(ActivityThread.java:6119)  

這是我的課:

public class Microphone 
{ 
private MediaRecorder recorder; 

public Microphone() 
{ 
    recorder = new MediaRecorder(); 
    init(); 
} 

private void init() 
{ 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);; 
} 

public void Record(Context context, String path) throws DomainException 
{ 
    File file = new File(context.getFilesDir(), path + Calendar.getInstance() 
      .get(Calendar.SECOND)); //save recording under current time 
    recorder.setOutputFile(file.getAbsolutePath()); 
    try 
    { 
     recorder.prepare(); 
    } 
    catch (IOException e) 
    { 
     throw new DomainException(e,"Could not prepare microphone." + e.toString()); 
    } 
    recorder.start(); 
} 

public void Stop() 
{ 
    recorder.stop(); 
    recorder.reset(); 
    recorder.release(); 
} 
} 

我幾乎找遍了整個萬維網的答案,但無法找到它。 我還要求記錄音頻的權限,並在我的模擬器中看到應用程序有權使用麥克風。

回答

2

模擬器沒有麥克風...您必須在真實設備上使用它。

+0

原來的確如此。我使用了另一個在我的筆記本電腦上工作的項目中的相同代碼,但我購買了一個新筆記本(筆記本電腦),但沒有考慮到這一點。 –