如何在android的musicplayer中播放录制的音频文件?
在“活动”中包含三个按钮:按钮1、按钮2、按钮3 当我点击按钮-1:它会录制音频,点击按钮-2它会停止录制,当点击按钮-3它会播放音频它工作正常 但是我想通过音乐播放器播放音频。如何在音乐播放器中播放音频 为了录制和播放音频,我创建了以下内容: Java如何在android的musicplayer中播放录制的音频文件?,android,audio-recording,android-music-player,Android,Audio Recording,Android Music Player,在“活动”中包含三个按钮:按钮1、按钮2、按钮3 当我点击按钮-1:它会录制音频,点击按钮-2它会停止录制,当点击按钮-3它会播放音频它工作正常 但是我想通过音乐播放器播放音频。如何在音乐播放器中播放音频 为了录制和播放音频,我创建了以下内容: Java public class AudioRecord { private static MediaRecorder mediaRecorder = new MediaRecorder(); public MediaPlayer mediaPl
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()。它工作正常。但我希望在单击“播放”按钮时在musicplayer中播放音频。完成音频后,我希望返回到活动类
任何人都请帮助我 现在明白你的问题了。我假设您的媒体播放器实现工作正常,您只需在音乐结束后调用原始活动即可 您可以使用Media Player类的来执行此操作
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)
。基本上,在完成音轨后,您的听众将被呼叫,然后您可以决定做什么。您可以只打印一条消息,也可以调用任何您想要的活动
以下是完整的为什么要制作自己的媒体播放器?为什么不直接从设备上打开一个已安装的音乐应用程序呢?。当用户从那里按back时,他将返回到您的应用程序。是的,Sanjeev您的回答正确。但是,我想在完成音乐时返回应用程序,而不需要用户输入。上面的答案对我来说就像chamm一样有效。但在这里,我想在完成音乐时返回到我的应用程序。音乐结束时,它应该自动返回到您的应用程序?否,它不会返回到我的应用程序。在我单击“返回”按钮之前,它显示的是我。@user2931067理解您的问题。答案已更新。使用MediaPlayer.OnCompletionListener