【问题标题】:Calling another activity when mediaplayer get finished playing当媒体播放器完成播放时调用另一个活动
【发布时间】:2013-06-18 00:10:49
【问题描述】:

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

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

    }
}

【问题讨论】:

    标签: android media-player


    【解决方案1】:
    mPlayer.setOnCompletionListener(new
        OnCompletionListener() {        
            @Override
            public void onCompletion(MediaPlayer arg0) {
            Intent stopplay= new Intent(MyRecording.this,Recorded_Message.class);
            startActivity(stopplay);                
        }
    });
    

    【讨论】:

      【解决方案2】:

      我会尝试解释你的代码有什么问题。

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

      mPlayer.setDataSource(mFileName);
      

      然后准备:

      mPlayer.prepare();
      

      然后开始播放:

      mPlayer.start();    
      

      当您刚刚启动 mPlayer 时,当然 if 语句将为 false,并且 if 中的代码将永远不会执行:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        相关资源
        最近更新 更多