2012-06-19 53 views
-1

我從here的Android Mediarecorder

得到Mediarecorder的示例源代碼,但它不運行。調試時顯示強制關閉。

感謝

+1

在這裏發表您的logcat的。 – Praveenkumar

+0

是發佈您的logcat在這裏,並檢查您的清單文件給予權限mediarecorder! – Dinesh

+2

添加了此權限?你可以描述一下「recordAmplitude.cancel(true);」?使用權限android:name =「android.permission.RECORD_AUDIO」> Abhi

回答

1
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Button startBtn = (Button) findViewById(R.id.bgnBtn); 
Button endBtn = (Button) findViewById(R.id.stpBtn); 
Button playRecordingBtn = (Button) findViewById(R.id.playRecordingBtn); 
Button stpPlayingRecordingBtn = (Button) findViewById(R.id.stpPlayingRecordingBtn); 
startBtn.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View view) 
    { 
     try 
     { 
      beginRecording(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
}); 

endBtn.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View view) 
    { 
     try 
     { 
      stopRecording(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     } 
    }); 

playRecordingBtn.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View view) 
    { 
     try 
     { 
      playRecording(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
}); 

stpPlayingRecordingBtn.setOnClickListener(new OnClickListener() 
{ 
@Override 
    public void onClick(View view) 
    { 
     try 
     { 
      stopPlayingRecording(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     } 
}); 
    } 

private void beginRecording() throws Exception 
{ 
    killMediaRecorder(); 
    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    if (file == null) 
    { 
     File rootDir = Environment.getExternalStorageDirectory(); 
     file = File.createTempFile(PREFIX, EXTENSION, rootDir); 
    } 
    recorder.setOutputFile(file.getAbsolutePath()); 
    recorder.prepare(); 
    recorder.start(); 
    isRecording = true; 
} 

private void stopRecording() throws Exception 
{ 
    if (recorder != null) 
    { 
     isRecording = false; 
     recordAmplitude.cancel(true); 
     recorder.stop(); 
    } 
} 

private void killMediaRecorder() 
{ 
    if (recorder != null) 
    { 
     recorder.release(); 
    } 
} 

private void killMediaPlayer() 
{ 
    if (mediaPlayer != null) 
    { 
     try 
     { 
      mediaPlayer.release(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

private void playRecording() throws Exception 
{ 
    killMediaPlayer(); 
    mediaPlayer = new MediaPlayer(); 
    // from sdcard 
    if (file.exists()) 
    { 
     mediaPlayer.setDataSource(file.getAbsolutePath()); 
    } 
    mediaPlayer.prepare(); 
    mediaPlayer.start(); 
} 

private void stopPlayingRecording() throws Exception 
{ 
    if(mediaPlayer!=null) 
    { 
     mediaPlayer.stop(); 
    } 
} 

@Override 
protected void onDestroy() 
{ 
    super.onDestroy(); 
    killMediaRecorder(); 
    killMediaPlayer(); 
} 
} 
+0

。 – NrNazifi

+0

你可以刪除它,我正在測量幅度。請回復或接受,如果答案解決你的問題。 – vineet

相關問題