android MediaPlayer简易播放器
来源:互联网 发布:手机淘宝销量排名 编辑:程序博客网 时间:2024/05/21 22:33
package com.example.jared.mediaplayerstudy;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.SeekBar;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private Button playMusic; private Button pauseMusic; private Button stopMusic; private TextView totalTime_text; private TextView playingTime_text; private SeekBar playingProcess; private int totalTime = 0; private MediaPlayer mediaPlayer; private Handler hangler = new Handler(); private boolean flag = true; private Player player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); playMusic = (Button) findViewById(R.id.play);//开始/暂停 pauseMusic = (Button) findViewById(R.id.pause);//暂停 playingProcess = (SeekBar) findViewById(R.id.seek);//进度条 totalTime_text = (TextView) findViewById(R.id.totalTime);//播放时间和总时长
player = new Player(playingProcess, totalTime_text); //初始化 playingProcess.setOnSeekBarChangeListener(new SeekBarChangeEvent()); new Thread(new Runnable() { @Override public void run() { player.playUrl("http://abv.cn/music/光辉岁月.mp3"); } }).start();
playMusic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (player.mediaPlayer.isPlaying()) { player.mediaPlayer.pause(); } else { player.mediaPlayer.start(); } } }); pauseMusic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (player.mediaPlayer.isPlaying()) { player.mediaPlayer.pause(); } } }); } class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener { int progress; @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 原本是(progress/seekBar.getMax())*player.mediaPlayer.getDuration() this.progress = progress * player.mediaPlayer.getDuration() / seekBar.getMax(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { // seekTo()的参数是相对与影片时间的数字,而不是与seekBar.getMax()相对的数字 player.mediaPlayer.seekTo(progress); } } @Override public void onBackPressed() {//退出并且停止播放 super.onBackPressed(); player.stop(); this.finish(); }}
package com.example.jared.mediaplayerstudy;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnBufferingUpdateListener;import android.media.MediaPlayer.OnCompletionListener;import android.media.MediaPlayer.OnPreparedListener;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.SeekBar;import android.widget.TextView;import java.io.IOException;import java.util.Timer;import java.util.TimerTask;public class Player implements OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener{ public MediaPlayer mediaPlayer; private SeekBar skbProgress; private Timer mTimer=new Timer(); private TextView textView; public Player(SeekBar skbProgress, TextView textView) { this.skbProgress=skbProgress; this.textView = textView; try { mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnBufferingUpdateListener(this); mediaPlayer.setOnPreparedListener(this); } catch (Exception e) { Log.e("mediaPlayer", "error", e); } mTimer.schedule(mTimerTask, 0, 300); } /******************************************************* * 通过定时器和Handler来更新进度条 ******************************************************/ TimerTask mTimerTask = new TimerTask() { @Override public void run() { if(mediaPlayer==null) return; if (mediaPlayer.isPlaying() && skbProgress.isPressed() == false) { handleProgress.sendEmptyMessage(0); } } }; Handler handleProgress = new Handler() { public void handleMessage(Message msg) { int position = getCurrentPositionWhenPlaying(); int duration = 0; if (mediaPlayer!=null) { duration = mediaPlayer.getDuration(); } if (position != 0) textView.setText(JCUtils.stringForTime(position)+"/"+JCUtils.stringForTime(duration)); if (duration > 0) { long pos = skbProgress.getMax() * position / duration; skbProgress.setProgress((int) pos); } }; }; public int getCurrentPositionWhenPlaying() { int position = 0; try { if (mediaPlayer!=null) position = mediaPlayer.getCurrentPosition(); } catch (IllegalStateException e) { e.printStackTrace(); return position; } return position; } //***************************************************** public void play() { mediaPlayer.start(); } public void playUrl(String videoUrl) { try { mediaPlayer.reset(); mediaPlayer.setDataSource(videoUrl); mediaPlayer.prepare();//prepare之后自动播放 //mediaPlayer.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void pause() { mediaPlayer.pause(); } public void stop() { if (mediaPlayer != null) { if (mTimer!=null) { mTimer.cancel(); } if(mTimerTask!=null) { mTimerTask.cancel(); } mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } } @Override /** * 通过onPrepared播放 */ public void onPrepared(MediaPlayer arg0) { arg0.start(); Log.e("mediaPlayer", "onPrepared"); } @Override public void onCompletion(MediaPlayer arg0) { Log.e("mediaPlayer", "onCompletion"); } @Override public void onBufferingUpdate(MediaPlayer arg0, int bufferingProgress) { skbProgress.setSecondaryProgress(bufferingProgress); int currentProgress=skbProgress.getMax()*mediaPlayer.getCurrentPosition()/mediaPlayer.getDuration(); Log.e(currentProgress+"% play", bufferingProgress + "% buffer"); }}
完整项目链接:http://download.csdn.net/detail/cst11041/9812308
0 0
- android MediaPlayer简易播放器
- MediaPlayer android播放器
- 我的Android进阶之旅------>Android MediaPlayer播放mp3的实例--简易mp3播放器
- 对MediaPlayer,简易的音乐播放器
- android MediaPlayer 简易播放器的实现 及类似斗地主音频池实现
- android MediaPlayer 音频播放器
- Android MediaPlayer在线音乐播放器
- Android MediaPlayer在线音乐播放器
- Android MP3播放器MediaPlayer
- Android视频播放器mediaplayer
- 简易Android播放器
- 利用MEDIAPLAYER制作ANDROID播放器
- Android 的 MediaPlayer 多媒体播放器
- Android 的 MediaPlayer 多媒体播放器
- 利用MEDIAPLAYER制作ANDROID播放器 .
- android的MediaPlayer播放器迷你案例
- Android 的 MediaPlayer 多媒体播放器
- Android MediaPlayer本地视频播放器
- Linux(五) 之 bash工作原理
- LQOJ ALGO-156 表达式计算
- Mac下安装iPython
- Android5.0后的ViewGroup添加子View问题
- 对于VS2012的位图无法加载到资源视图“Bitmap”中的解决方案
- android MediaPlayer简易播放器
- C++之lib和dll实例及简单分析
- day30_struts2_valueStack
- STM32使用MCUISP下载程序教程
- Linux-ubuntu 日记( 2 )- 建立一个MySQL数据库
- Android初级知识--自定义任何样式的对话框
- Unity正则表达式账号密码验证
- MYSQL使用正则表达式过滤数据
- Android Studio 插件无缘无故就消失了