2011-05-14 52 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