注意:文章中$$符号只有一个,因程序问题提交后变成了两个。

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

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

发表评论

文明评论,重在参与

574楼 中国轩辕网:
专业销售:域名注册、香港机房(免备案)、国内电信机房、移动机房等主机空间、数据库、 vps租用、服务器、稳定,速度好,安全。
另外招优质代理商加盟。

官方平台:http://www.zn95.cn
官方社区:http://xusss.com
联系一QQ: 909489040
联系二QQ:6859662 07-08 15:48
用著作权法来保护软件是否真的有 07-28
杀毒软件:只在搞娱乐,从未杀过 07-28
小谈高通反垄断 07-28
印度将推出百元智能机 山寨厂商 07-28
高通垄断之痛:不是国产手机大而 07-28
一张图读懂阿里巴巴眼花缭乱资本 07-28
滴滴打车副总裁张晶离职 高层换 07-28
小米官网明日首发小米4 预约即 07-28
如何勾引马云马化腾花钱买你公司 07-28
云智慧成为2014 Web性能 07-28
顺丰试水微信扫码支付:发快递无 07-28
从Facebook看百度的移动 07-28
返回Android开发-返回首页
首页 社区 工具 关于 网址
切换:1.0/2.0-电脑-//
2009-2025 版权所有 wap123.cn