2011-11-01 5 views
0
package com.Project_recording; 

import java.io.File; 
import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class Project_recordingActivity extends Activity { 
    private static final String APP_TAG = "com.hascode.android.soundrecorder"; 

    private MediaRecorder recorder = new MediaRecorder(); 
    private MediaPlayer player = new MediaPlayer(); 

    private Button btRecord; 
    private Button btPlay; 
    private TextView resultView; 

    private boolean recording = false; 
    private boolean playing = false; 
    private File outfile = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     resultView = (TextView) findViewById(R.id.output); 

     try { 
      // the soundfile 
      File storageDir = new File(Environment 
        .getExternalStorageDirectory(), "com.hascode.recorder"); 
      storageDir.mkdir(); 
      Log.d(APP_TAG, "Storage directory set to " + storageDir); 
      outfile = File.createTempFile("hascode", ".3gp", storageDir); 

      // init recorder 
      recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      recorder.setOutputFile(outfile.getAbsolutePath()); 

      // init player 
      player.setDataSource(outfile.getAbsolutePath()); 
     } catch (IOException e) { 
      Log.w(APP_TAG, "File not accessible ", e); 
     } catch (IllegalArgumentException e) { 
      Log.w(APP_TAG, "Illegal argument ", e); 
     } catch (IllegalStateException e) { 
      Log.w(APP_TAG, "Illegal state, call reset/restore", e); 
     } 

     btRecord = (Button) findViewById(R.id.btRecord); 
     btRecord.setOnClickListener(handleRecordClick); 

     btPlay = (Button) findViewById(R.id.btPlay); 
     btPlay.setOnClickListener(handlePlayClick); 

    } 

    private final OnClickListener handleRecordClick = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (!recording) { 
       startRecord(); 
      } else { 
       stopRecord(); 
      } 
     } 
    }; 

    private final OnClickListener handlePlayClick = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (!playing) { 
       startPlay(); 
      } else { 
       stopPlay(); 
      } 
     } 
    }; 

    private void startRecord() { 
     Log.d(APP_TAG, "start recording.."); 
     printResult("start recording.."); 
     try { 
      recorder.prepare(); 
      recorder.start(); 
      recording = true; 
     } catch (IllegalStateException e) { 
      Log 
        .w(APP_TAG, 
          "Invalid recorder state .. reset/release should have been called"); 
     } catch (IOException e) { 
      Log.w(APP_TAG, "Could not write to sd card"); 
     } 
    } 

    private void stopRecord() { 
     Log.d(APP_TAG, "stop recording.."); 
     printResult("stop recording.."); 
     recorder.stop(); 
     recorder.reset(); 
     recorder.release(); 
     recording = false; 
    } 

    private void startPlay() { 
     Log.d(APP_TAG, "starting playback.."); 
     printResult("start playing.."); 
     try { 
      playing = true; 
      player.prepare(); 
      player.start(); 
     } catch (IllegalStateException e) { 
      Log.w(APP_TAG, "illegal state .. player should be reset"); 
     } catch (IOException e) { 
      Log.w(APP_TAG, "Could not write to sd card"); 
     } 
    } 

    private void stopPlay() { 
     Log.d(APP_TAG, "stopping playback.."); 
     printResult("stop playing.."); 
     player.stop(); 
     player.reset(); 
     player.release(); 
     playing = false; 
    } 

    private void printResult(String result) { 
     resultView.setText(result); 
    } 
} 

녹음 버튼을 누르면 녹음이 시작됩니다. 재생 버튼을 누르면 재생이 시작됩니다. 재생 버튼을 다시 누르면 재생이 중지됩니다. 내가 직면하고있는 중요한 문제는 소리가 들리지 않는다는 것입니다 ..? 도움이 필요해. 나는 안드로이드를 처음 사용하고 있습니다.녹음 및 재생 중이지만 소리가 들리지 않습니까?

+0

제발 도와주세요 ... 지난 3 주간 이걸로 고민 중입니다 ... – Yasir

+0

.mp3 확장자로 시도했습니다 – Karthi

+0

말했듯이, 방금 시도했지만 사용하지 않았습니까 .... 감사합니다. ur 즉각적인 반응 ...! – Yasir

답변

0

녹음 직후 레코더 개체를 재설정하는 이유는 무엇입니까?

+0

귀하의 즉각적인 답변을 보내 주셔서 감사합니다. 그리고 prepare.reset()을 제거했지만 여전히 지금 같은 문제에 직면하고 있습니다 ... – Yasir

+0

아마도이 링크가 도움이 될 것입니다. http://www.benmccann.com/dev-blog/android-audio-recording- 튜토리얼/ –

+0

불편을 끼쳐 드려 죄송합니다. 사실 저는 지금 사무실에 있습니다 .. 지정한 링크가 작동하지 않습니다 .. 제발 .. 절실히 해주세요 :-) – Yasir

관련 문제