当媒体播放器完成播放时调用另一个活动

时间:2011-05-14 11:22:33

标签: android media-player

嗨我使用以下代码在音频播放结束时调用活动。但是我想在当前活动中播放音频,当播放结束时,它必须跳转到下一个活动。但是在这里它跳转到下一个活动并播放音频。任何建议。

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 (IllegalArgumentException 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); 
       }

    }
}

2 个答案:

答案 0 :(得分:15)

mPlayer.setOnCompletionListener(new
    OnCompletionListener() {        
        @Override
        public void onCompletion(MediaPlayer arg0) {
        Intent stopplay= new Intent(MyRecording.this,Recorded_Message.class);
        startActivity(stopplay);                
    }
});

答案 1 :(得分:1)

我会尝试解释代码中的错误。

onCreate只在Activity创建时调用一次。因此,在您的代码中,您为mPlayer设置了一个源:

mPlayer.setDataSource(mFileName);

然后准备它:

mPlayer.prepare();

然后开始播放:

mPlayer.start();    

当你刚刚启动mPlayer时,如果statment将为false,那么cource中的代码将永远不会执行:

if(mPlayer.getCurrentPosition()== mPlayer.getDuration())
{
    Intent stopplay=new Intent(MyRecording.this,Recorded_Message.class);
    startActivity(stopplay); 
}

我提醒你,onCreate只被调用一次。

所以,使用上述事件。