安卓开发中播放3gp的代码实例

2020-03-02 13:08:00  人气 502    安卓技术  
import java.io.IOException;
  import android.media.MediaPlayer;
  import android.media.MediaPlayer.OnCompletionListener;
  import android.media.MediaPlayer.OnErrorListener;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnclickListener;
  import android.widget.ImageButton;
  import android.widget.TextView;
  import com.google.Main;
  import com.google.R;
  public class IndexActivity extends Main {
  /** 日志TAG */
  private static final String TAG = ”>>>>>>>> IndexActivity.java <<<<<<<”;
  /** 控制按钮 */
  private ImageButton mBt_play, mBt_pause ,mBt_stop;
  /** 提示消息 */
  private TextView mTextView;
  /** 媒体控制类 */
  private MediaPlayer mMediaPlayer;
  /** 是否是暂停flag */
  private boolean mIsPaused = false;
@Override
  public void on*(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.on*(savedInstanceState);
  setContentView(R.layout.media);
  setUI();
  setAction();
  }
  /** 获取控件 */
  private void setUI(){
  mBt_pause = (ImageButton) findViewById(R.id.myButton3);
  mBt_play = (ImageButton) findViewById(R.id.myButton1);
  mBt_stop = (ImageButton) findViewById(R.id.myButton2);
  mTextView = (TextView) findViewById(R.id.myTextView1);
  setButtonEnabled(true, false, false);
  }
  /** 添加事件处理 */
  private void setAction(){
  mMediaPlayer = new MediaPlayer();
  //读取raw文件夹下的mp3文件
  mMediaPlayer = MediaPlayer.*(this, R.raw.u01_2);
  /* * 读取其他文件夹下的文件使用方式
  * mMediaPlayer.setDataSource(filePath)
  * 来播放远程或uri文件
  */
  setListener();
  }
  /** * 监听按钮事件
  */
  private void setListener(){
  mBt_pause.setOnclickListener(listener);
  mBt_play.setOnclickListener(listener);
  mBt_stop.setOnclickListener(listener);
  setMediaListener(mMediaPlayer);
  }
  /* * 设置media的播放完成时,释放资源
  */
  private void setMediaListener(MediaPlayer mediaPlayer){
  //设置media播放完成时,释放资源
  mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
  @Override
  public void onCompletion(MediaPlayer mp) {
  // TODO Auto-generated method stub
  /** 解除资源与mediaplayer之间的关系,让资源可以被其他程序使用 */
  try {
  mMediaPlayer.release();
  mTextView.setText(R.string.str_OnCompletionListener);
  setButtonEnabled(true, false, false);
  } catch (Exception e) {
  Log.i(TAG, ”str_OnCompletionListener is errror!!!”);
  }
  }
  });
  /** 重写错误事件 */
  mediaPlayer.setOnErrorListener(new OnErrorListener() {
  @Override
  public boolean onError(MediaPlayer mp, int what, int extra) {
  // TODO Auto-generated method stub
  try {
  /** 发生错误是也解除资源与mediaplayer之间的关系,让资源可以被其他程序使用 */
  mMediaPlayer.release();
  mTextView.setText(R.string.str_OnErrorListener);
  } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  return false;
  }
  });
  }
  @Override
  protected void onPause() {
  // TODO Auto-generated method stub
  try {
  /** 在主程序暂停时,解除mediaplayer与资源之间的赋值关系 */
  mMediaPlayer.release();
  } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  super.onPause();
  }
  /** 监听按钮事件 */
  private OnclickListener listener = new OnclickListener() {
  @Override
  public void onclick(View v) {
  switch (v.getId())
  {
  //播放按钮
  case R.id.myButton1:
  try {
  if(mMediaPlayer != null)
  {
  mMediaPlayer.stop();
  }
  else {
  mMediaPlayer = new MediaPlayer();
  mMediaPlayer = MediaPlayer.*(IndexActivity.this,R.raw.u01_2);
  }
  /* * 在mediaPlayer取得播放资源和stop()之后
  * 要准备playback(回放,重放)的状态前一定要mediaPlayer.prepare();
  */
  mMediaPlayer.prepare();
  mMediaPlayer.start();
  mTextView.setText(R.string.str_start);//显示播放信息
  } catch (IllegalStateException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  // mIsPaused = false;
  //设置可以使用的按钮
  setButtonEnabled(false, true, true);
  break;
  //停止按钮
  case R.id.myButton2:
  try {
  if(mMediaPlayer!= null)
  {
  mMediaPlayer.stop();
  mTextView.setText(R.string.str_close);
  }
  } catch (IllegalStateException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  setButtonEnabled(true, false, false);
  break;
  //暂停按钮
  case R.id.myButton3:
  try {
  if(mMediaPlayer != null)
  {
  if(mIsPaused == false)//要暂停当前的音乐
  {
  Log.i(TAG, ”mIsPaused false”);
  mMediaPlayer.pause();
  mIsPaused = true;//设置播放flag为true
  mTextView.setText(R.string.str_pause);
  setButtonEnabled(true, false, true);
  }
  else if( mIsPaused == true)//回放
  {
Log.i(TAG, ”mIsPaused true”);
  mMediaPlayer.seekTo(80000);
  mIsPaused = false;
  mTextView.setText(R.string.str_start);
  setButtonEnabled(false, true, true);
  }
  }
  } catch (IllegalStateException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  break;
  default:
  break;
  }
  }
  };
  /**
  * 设置按钮是否可用
  * @Override enabled1 mBt_play
  * @Override enabled2 mBt_pause
  * @Override enabled3 mBt_stop
  */
  private void setButtonEnabled(boolean enabled1,boolean enabled2,boolean enabled3){
  mBt_play.setEnabled(enabled1);
  mBt_pause.setEnabled(enabled2);
  mBt_stop.setEnabled(enabled3);
  }
  }

发表回复

   


  通知楼主
暂无回复!

猜你喜欢

刷新 换一批