Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 安卓開發中播放3gp的代碼實例

安卓開發中播放3gp的代碼實例

編輯:Android開發實例

  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 onCreate(Bundle savedInstanceState) {

  // TODO Auto-generated method stub

  super.onCreate(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.create(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.create(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;

  }

  }

  };

  /**

  * 設置按鈕是否可用

  * @param enabled1 mBt_play

  * @param enabled2 mBt_pause

  * @param enabled3 mBt_stop

  */

  private void setButtonEnabled(boolean enabled1,boolean enabled2,boolean enabled3){

  mBt_play.setEnabled(enabled1);

  mBt_pause.setEnabled(enabled2);

  mBt_stop.setEnabled(enabled3);

  }

  }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved