在活动中包含三个按钮Button-1,Button-2,Button-3。
当我点击Button-1时:它会录制音频并点击Button-2它会停止录制,当点击Button-3时它会播放音频,它工作正常。
但我想通过音乐播放器播放音频。如何在音乐播放器中播放音频。
为了录制和播放音频,我创建了这个::
AudioRecord.Java
public class AudioRecord {
private static MediaRecorder mediaRecorder = new MediaRecorder();
public MediaPlayer mediaPlayer = new MediaPlayer();;
private static String audioFilePath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/myaudio.3gp";
//Button recordButton, stopButton, playButton;
boolean isRecording = false;
public void recordAudio(final Button record,final Button stop,final Button play) throws IOException{
record.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
isRecording = true;
stop.setEnabled(true);
play.setEnabled(false);
record.setEnabled(false);
try {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setOutputFile(audioFilePath);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mediaRecorder.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stop.setEnabled(false);
play.setEnabled(true);
if (isRecording) {
record.setEnabled(false);
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
isRecording = false;
} else {
mediaPlayer.release();
mediaPlayer = null;
record.setEnabled(true);
}
}
});
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
play.setEnabled(false);
record.setEnabled(false);
stop.setEnabled(true);
mediaPlayer = new MediaPlayer();
int i = mediaPlayer.getDuration();
System.out.println("Audio size"+" "+i);
mediaPlayer.setDataSource(audioFilePath);
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
System.out.println("Audio cpmpleted ..............");
stop.setEnabled(false);
play.setEnabled(true);
record.setEnabled(true);
mediaPlayer.release();
mediaPlayer = null;
//Toast.makeText(AudioRecord.this, "Audio Complete", Toast.LENGTH_SHORT).show();
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
我在我的活动课的一侧使用了recordAudio()。它工作正常。但是我想在点击播放按钮时在音乐播放器中播放音频。我想在完成音频时返回到Activity类。
任何一个请求帮助我。
答案 0 :(得分:0)
现在理解你的问题。我假设您的媒体播放器实现工作正常,您只需在音乐播放完毕后回拨原始活动。
您可以使用Media Player类的Completion Listener来执行此操作。
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
Log.i("Completion Listener","Song Complete");
/* Put your code to call back your activity here */
}
});
您可以通过startActivity(intent)
等多种方法回复原始活动。基本上,在完成音轨后,您的听众将被调用,然后您可以决定要做什么。您只需打印一条消息,或者可以拨打任何您想要的活动。
这是完整的DEMO