使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器
来源:互联网 发布:caj什么软件打开 编辑:程序博客网 时间:2024/05/30 05:16
使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器
- 1.界面设计
- 2.实现代码
- 3.播放权限
1.界面设计代码块(activity_main.xml)
如图:
<SurfaceView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/sv_main_surface" /><!-- 播放屏幕--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <SeekBar android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:id="@+id/sb_main_bar" /><!-- 进度条--> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="isPlayOrPause" /><!-- 按钮--> </LinearLayout>
2.实现代码(MainActivity)
public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar sb_main_bar; private SurfaceView sv_main_surface;/* 使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);//获取SeekBar的id sv_main_surface = (SurfaceView) findViewById(R.id.sv_main_surface);//获取SurfaceView的id //给进度条设置滑动的监听 sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress=seekBar.getProgress(); //进度条在当前位置播放 mediaPlayer.seekTo(progress); } }); } //播放按钮 public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ mediaPlayer=new MediaPlayer(); //设置音源 try { mediaPlayer.setDataSource(this, Uri.parse("file://手机存储/DCIM/Camera/lala.mp4")); //准备 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //将媒体播放器捕捉的画面展示到SurfaceView mediaPlayer.setDisplay(sv_main_surface.getHolder()); mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaPlayer.getDuration(); //将进度条设置最大值为:音乐的总时长 sb_main_bar.setMax(duration); new MyThread().start(); }else if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class MyThread extends Thread{ @Override public void run() { super.run(); while(sb_main_bar.getProgress()<=sb_main_bar.getMax()){ //获取音乐当前播放的位置 int position=mediaPlayer.getCurrentPosition(); sb_main_bar.setProgress(position); } } }}
3.播放权限(AndroidManifest.xml)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器权限-->
0 0
- 使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器
- 使用SurfaceView+MediaPlayer+SeekBar实现视频播放
- 使用SurfaceView+MediaPlayer播放视
- 多媒体(视频播放器)Mediaplayer+SurfaceView+Seekbar
- 视频播放器(SurfaceView+MediaPlayer+SeekBar,VideoView+MediaController)
- MediaPlayer+surfaceView实现视频播放器
- Android SurfaceView + MediaPlayer实现视频播放器
- SurfaceView+MediaPlayer实现视频播放
- MediaPlayer、SurfaceView实现视频播放
- 使用SurfaceView&MediaPlayer播放视频
- 使用SurfaceView+MediaPlayer视频播放
- 简单的MediaPlayer+SurfaceView实现视频横竖屏播放
- MediaPlayer + SurfaceView 来实现 视频播放
- SurfaceView + MediaPlayer 实现视频播放功能
- Android MediaPlayer+SurfaceView实现视频播放
- Android SurfaceView+MediaPlayer实现视频播放
- 使用mediaplayer + surfaceview来播放视频
- 使用MediaPlayer和SurfaceView播放视频
- JQuery Mobile 学习
- 进程间通信--IPC
- 线性表基本功能的c语言实现
- & | 布尔
- python 多线程就这么简单
- 使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器
- TimesTen与Redis的对比
- ScheduledExecutorService执行周期性或定时任务
- PAT 乙级 1029. 旧键盘(20) Java版
- vue.js总结学习
- ruby 数组的使用
- jdbc连接数据库
- JS中const、let、var之间的区别
- PAT 乙级 1027. 打印沙漏(20) Java版