Calling another activity when mediaplayer get finished playing
Hi I used the following code to call an activity when audio play get finished. But I want to play the audio in current activity, when play get finished it has to jump for the next activity. But here it jumps to the next activity and play the audio. Any suggestions.
package com.fsp.mus;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;
public class MyRecording extends Activity{
String mFileName;
MediaPlayer mPlayer;
Boolean stopplay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myrecording);
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(mFileName);
} catch (Ille开发者_StackOverflowgalArgumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
mPlayer.prepare();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mPlayer.start();
if(mPlayer.getCurrentPosition()== mPlayer.getDuration())
{
Intent stopplay=new Intent(MyRecording.this,Recorded_Message.class);
startActivity(stopplay);
}
}
}
mPlayer.setOnCompletionListener(new
OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
Intent stopplay= new Intent(MyRecording.this,Recorded_Message.class);
startActivity(stopplay);
}
});
I'll try to explain what is wrong in your code.
onCreate calls only one time when an Activity creates. So, in your code you set a source for your mPlayer:
mPlayer.setDataSource(mFileName);
then prepare it:
mPlayer.prepare();
and then starts playing:
mPlayer.start();
As you just started mPlayer, of cource if statment will be false and the code in if will never be performed:
if(mPlayer.getCurrentPosition()== mPlayer.getDuration())
{
Intent stopplay=new Intent(MyRecording.this,Recorded_Message.class);
startActivity(stopplay);
}
I remind you that onCreate is called only once.
So, use event as described above.
精彩评论