2011-05-14 38 views
3

嗨我使用以下代码在音频播放完成时调用活动。但是我想在当前活动中播放音频,播放完毕后必须跳到下一个活动。但在这里它跳转到下一个活动并播放音频。有什么建议么。当媒体播放器完成播放时调用另一个活动

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

    } 
} 

回答

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

我会试着解释什么是错在你的代码。

onCreate只在活动创建时调用一次。所以,在你的代码中设置一个信号源为您的mplayer:

mPlayer.setDataSource(mFileName); 

然后准备吧:

mPlayer.prepare(); 

,然后开始播放:

mPlayer.start();  

当你刚刚起步的Mplayer的如果陈述将是错误的,并且代码将不会执行:

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

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

所以,如上所述使用事件。

+0

非常感谢。 – Manikandan 2011-05-14 12:15:53