国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android開發(fā)實(shí)現(xiàn)的簡(jiǎn)單媒體播放器功能示例

2019-10-22 18:25:39
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Android開發(fā)實(shí)現(xiàn)的簡(jiǎn)單媒體播放器功能。分享給大家供大家參考,具體如下:

一、概述:

因?yàn)椴シ乓曨l需要很大的內(nèi)存,所以必須使用surfaceview ,

surfaceview 里實(shí)現(xiàn)了雙緩沖的功能,

二、全部代碼:

/** * @描述     使用surfaceview 創(chuàng)建視頻 * @項(xiàng)目名稱   App_Basic * @包名     com.example.basic.media * @類名     MediaPlayerActivity * @author   chenlin * @date    2013-3-25 上午7:36:32 * @version   1.0 */public class MediaPlayerActivity extends BaseActivity {  private MediaPlayer mPlayer;  private Button mBtnPlay;  private Button mBtnPause;  private SurfaceView mSurfaceView;  private int mCurrentPosition;  private SeekBar seekBar;  private boolean isPlaying;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    mSurfaceView = new SurfaceView(this);    seekBar = new SeekBar(this);    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar seekBar) {        int progress = seekBar.getProgress();        if (mPlayer != null && isPlaying) {          mPlayer.seekTo(progress);        }      }      @Override      public void onStartTrackingTouch(SeekBar seekBar) {        // TODO Auto-generated method stub      }      @Override      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {        // TODO Auto-generated method stub      }    });    mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    mSurfaceView.getHolder().addCallback(new Callback() {      @Override      public void surfaceDestroyed(SurfaceHolder holder) {        if (mPlayer!= null && mPlayer.isPlaying()) {          mCurrentPosition = mPlayer.getCurrentPosition();          stop();        }      }      @Override      public void surfaceCreated(SurfaceHolder holder) {        if (mCurrentPosition > 0) {          play(mCurrentPosition);        }      }      @Override      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {        // TODO Auto-generated method stub      }    });  }  public void play(final int currentPosition){    try {      mPlayer = new MediaPlayer();      mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);      Uri myUri = Uri.fromFile(new File("sdcard/mp3/1.mp3"));      mPlayer.setDataSource(getApplicationContext(), myUri);      mPlayer.setLooping(true);      mPlayer.setDisplay(mSurfaceView.getHolder());      mPlayer.prepareAsync();      //mPlayer.prepare();      mBtnPlay.setEnabled(false);      mPlayer.setOnCompletionListener(new OnCompletionListener() {        @Override        public void onCompletion(MediaPlayer mp) {          mBtnPlay.setEnabled(true);          mPlayer.release();        }      });      mPlayer.setOnErrorListener(new OnErrorListener() {        @Override        public boolean onError(MediaPlayer mp, int what, int extra) {          mBtnPlay.setEnabled(true);          mPlayer.release();          isPlaying = false;          return false;        }      });      mPlayer.setOnPreparedListener(new OnPreparedListener() {        public void onPrepared(MediaPlayer mp) {          mPlayer.start();          mPlayer.seekTo(currentPosition);          seekBar.setMax(mPlayer.getDuration());          new Thread(new Runnable() {            @Override            public void run() {              isPlaying = true;              while(isPlaying){                seekBar.setProgress(mPlayer.getCurrentPosition());                SystemClock.sleep(500);              }            }          });        }      });    } catch (Exception e) {      e.printStackTrace();    }  }  public void pause(){    if ("接續(xù)".equals(mBtnPause.getText().toString())) {      mBtnPause.setText("暫停");      mPlayer.start();      return;    }    if (mPlayer != null && mPlayer.isPlaying()) {      mPlayer.pause();      mBtnPause.setText("繼續(xù)");      return;    }  }  public void reset(){    if (mPlayer != null && mPlayer.isPlaying()) {      mPlayer.seekTo(0);      return;    }    play(0);  }  public void stop(){    if (mPlayer != null && mPlayer.isPlaying()) {      mPlayer.stop();      mPlayer.release();      mPlayer = null;      mBtnPlay.setEnabled(true);      isPlaying = false;    }  }}

 

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 同心县| 和田市| 高碑店市| 仁怀市| 新河县| 格尔木市| 襄垣县| 石景山区| 珲春市| 汤原县| 六安市| 岚皋县| 若尔盖县| 瑞昌市| 南阳市| 慈溪市| 乌审旗| 紫阳县| 湖南省| 松桃| 伊吾县| 垣曲县| 昌图县| 保亭| 大洼县| 大英县| 大方县| 黄浦区| 仁化县| 桓台县| 北川| 双辽市| 广灵县| 闵行区| 凉城县| 泸州市| 乐陵市| 定边县| 黑山县| 寻乌县| 莱阳市|