2011-05-14 6 views
3

안녕하세요 저는 오디오 재생이 끝났을 때 다음 코드를 사용하여 활동을 호출했습니다. 그러나 현재 활동에서 오디오를 재생하고 싶습니다. 재생이 끝나면 다음 활동을 위해 뛰어야합니다. 그러나 여기서는 다음 활동으로 넘어 가서 오디오를 재생합니다. 어떤 제안.mediaplayer가 끝날 때 다른 활동 호출하기

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.prepare(); 

을하고 재생을 시작합니다 :

mPlayer.setDataSource(mFileName); 

를 다음을 준비

mPlayer.start();  

그냥 MPlayer는을 시작으로,의 만약 statment가 false이고 if의 코드가 결코 수행되지 않으면 cource :

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

onCreate는 한 번만 호출됩니다.

그래서 위에서 설명한 이벤트를 사용하십시오.

+0

감사합니다. 많은 사람들 .. – Manikandan

관련 문제