0

可能重複:
MediaRecorder: setCamera() - error camera is not aviable的Android MediaRecorder導致強制停止錯誤

我在做一個應用程序,允許用戶記錄音頻和地方保存在SD卡。我正在使用MediaRecorder來錄製音頻。

我重複使用了一些來自androiddevblog網站的代碼,因爲它是由另一位用戶在stackoverflow上推薦的,以檢查這些教程。

我的問題是每當我點擊按鈕記錄音頻時,我收到一個錯誤,說「你的應用程序已被迫停止」。我已經發布了下面的錄製功能的代碼。

編輯:我解決了我原來的問題。現在,當我將recorder.stop()添加到我的代碼中時,我得到了一個illegalStateException。我也更新了下面的代碼(唯一的變化是在startRecorder方法中)。有任何想法嗎 ?

我知道沒有什麼會根據我的代碼得到記錄。我想首先確保文件被創建並保存。

public class MyRecorderActivity extends Activity{ 

private Button audio; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.questionandanswer); 
.... 
.... 

audio = (Button) findViewById(R.id.audio_recordactivity); 
    audio.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

     startRecording(); 


     } 
    }); 

} 

    private String getFilename(){ 
     String filepath = Environment.getExternalStorageDirectory().getPath(); 
     File file = new File(filepath,AUDIO_RECORDER_FOLDER); 

     if(!file.exists()){ 
       file.mkdirs(); 
     } 

     return (file.getAbsolutePath() + "/"); 
    } 

private void startRecording(){ 
     MediaRecorder recorder = new MediaRecorder(); 

     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     recorder.setOutputFile(getFilename()); 

     try { 
       recorder.prepare(); 
       recorder.start(); 
     } catch (IllegalStateException e) { 
       e.printStackTrace(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 

     recorder.stop(); 
     recorder.reset(); 
     recorder.release(); 
    } 

} 
+0

什麼是使用模擬器或Android設備? –

+0

我認爲如果帖子中包含單詞「強制」和「關閉」,那麼需要自動提醒發佈LogCat。 @ AndroidDev93,檢查你的LogCat,看看*拋出了什麼*異常以及在哪裏。如果這不能幫助您找出問題,請將日誌編輯到您的問題中。 – kcoppock

+0

@K_Anas - 我正在使用華碩Transformer平板電腦。不是模擬器。 – AndroidDev93

回答

0

我解決了我的問題。我忘了添加權限!