마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 녹음 부분 질문합니다!ㅠㅠ

0 추천

지금 앱개발에 있는데 녹음 부분이 잘 안되네요  녹음은 잘 되는데 제가 원하는 것은 녹음을 할때마다 뒤에 숫자가 붙여져서 각기 다른 파일로 휴대폰에 저장되는 것입니다. 예를들어 audio1.mp3, audio2.mp3, audio3.mp3.... 이렇게 말입니다.

근데 첫번째 파일만 저장이 되고 이후에는 파일이 덮여 쓰여버립니다ㅠㅠㅠ

 public class MainActivity extends Activity implements OnClickListener{

 
int pageNum=0;
 
MediaPlayer mPlayer=null;
MediaRecorder mRecorder=null;
//TextView mStatusTextView;
Button mRecordButton;
Button mPlayButton;
String mFilepath;
 
TextView txt;
Button left, right;
String str;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("ReCoder");
 
txt=(TextView)findViewById(R.id.txt);
txt.setText(Integer.toString(pageNum));
left=(Button)findViewById(R.id.left);
right=(Button)findViewById(R.id.right);
 
left.setOnClickListener(this);
right.setOnClickListener(this);
 
mRecordButton = (Button) findViewById(R.id.recordButton);
mRecordButton.setText("녹음시작");
 
mPlayButton= (Button) findViewById(R.id.playButton);
mPlayButton.setText("재생");
mPlayButton.setEnabled(false);
 
//mStatusTextView=(TextView)findViewById(R.id.statusText);
//mStatusTextView.setText("녹음 대기중....");
 
str="audio"+pageNum + ".mp3";
mFilepath = new File(Environment.getExternalStorageDirectory(),str).toString();
}
 
protected void onDestroy(){
if(mRecorder != null){
mRecorder.stop();
mRecorder.release();
}
if(mPlayer != null){
mPlayer.reset();
mPlayer.release();
}
super.onDestroy();
}
 
public void onClickRecord(View v) throws IllegalStateException, IOException{
if(mRecorder ==null){
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(mFilepath); ///
mRecorder.prepare();
mRecorder.start();
Toast.makeText(this, "녹음을 시작합니다.", Toast.LENGTH_SHORT).show();
 
mRecordButton.setText("녹음중지");
//mStatusTextView.setText("녹음 중");
mPlayButton.setEnabled(false);
}
else{
mRecorder.stop();
Toast.makeText(this, str + "로 저장되었습니다.", Toast.LENGTH_SHORT).show();
mRecorder.release();
mRecorder = null;
 
mRecordButton.setText("녹음 시작");
//mStatusTextView.setText("녹음 대기 중");
mPlayButton.setEnabled(true);
}
}
 
public void onClickPlay(View v) throws IllegalAccessException, IllegalStateException, IOException{
if(mPlayer != null){
mPlayer.reset();
mPlayer.release();
}
mPlayer=new MediaPlayer();
mPlayer.setDataSource(mFilepath); /////
mPlayer.prepare();
mPlayer.start();
Toast.makeText(this, "녹음된 파일을 재생합니다.", Toast.LENGTH_SHORT).show();
}
 
@Override
public void onClick(View v) {
 
txt.setText(Integer.toString(pageNum));
 
if(v.getId()==R.id.left) {
if(pageNum!=1) {
pageNum--;
str="audio"+pageNum + ".mp3";
}
}
 
else if(v.getId()==R.id.right) {
pageNum++;
str="audio"+pageNum + ".mp3";
 
}
}
 
 
 
}
 
 
익명사용자 님이 2014년 9월 15일 질문

2개의 답변

0 추천
onClickRecord <--여기 안에 

저장되었습니다 바로 밑에

pageNum ++ 를 넣어보세요



 

익명사용자 님이 2014년 9월 16일 답변
해봤는데 안되네요ㅠㅠ 그래도 알려주셔서 감사해요!
다시 한번 봐주세요ㅠㅠ (안드로이드 녹음)
0 추천

mFilepath = new File(Environment.getExternalStorageDirectory(),str).toString();

이게 onCreate에 있으니 한번만 설정되겠죠

 

녹음할때마다 새 이름을 주도록 

mRecorder.setOutputFile(mFilepath); 앞에다 새이름을 주는 코드를 넣으세요

alkyne (22,960 포인트) 님이 2014년 9월 17일 답변
...