2011-05-14 5 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は、アクティビティの作成時に1回のみ呼び出します。だから、あなたのコードの中で、あなたの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は1回だけ呼び出されることを思い出します。

したがって、上記のイベントを使用してください。

+0

ありがとうたくさんの人.. – Manikandan