视屏播放器,两种不同的方法
来源:互联网 发布:新编诸子集成知乎 编辑:程序博客网 时间:2024/06/05 07:13
利用不同的技术实现视屏播放器
第一种结果如下:
实现步骤: 第一步在activity_main.xml文件中写布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android_27.MainActivity" android:orientation="vertical" > <SurfaceView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sv_sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <SeekBar android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/sb_projerss"/> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="bf" /> </LinearLayout></RelativeLayout>
第二步:MainActivity类代码
public class MainActivity extends AppCompatActivity { private SeekBar sb_projerss; private MediaPlayer mediaPlayer; private SurfaceView sv_sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取SeekBar的ID sb_projerss =(SeekBar)findViewById(R.id.sb_projerss); sv_sp =(SurfaceView)findViewById(R.id.sv_sp); //设置监听 sb_projerss.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 bf(View view){ //获得ImageButton final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ //播放内存卡中的文件 mediaPlayer=new MediaPlayer(); //设置音源 try { mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/movies/sister.mp4")); mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //将画面展示到SurfaceView中 mediaPlayer.setDisplay(sv_sp.getHolder()); mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐总时间 int duration=mediaPlayer.getDuration(); //i sb_projerss.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_projerss.getProgress()<=sb_projerss.getMax()){ //获取音乐当前播放的位置 int position=mediaPlayer.getCurrentPosition(); //放入SeekBar中 sb_projerss.setProgress(position); } } }
在AndroidManifest.xml中写权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第二种:利用VideoView显示和MediaController媒体控制器
结果如下图:
第一步:activity_videoview.xml布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_videoview" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android_27.VideoviewActivity"><VideoView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vv_vodio" /></LinearLayout>
第二步:VideoviewActivity类
public class VideoviewActivity extends AppCompatActivity { private VideoView vv_vodio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_videoview); //获得VideoView的ID vv_vodio =(VideoView)findViewById(R.id.vv_vodio); //设置播放视频的来源 vv_vodio.setVideoPath("file://mnt/sdcard/movies/sister.mp4"); //实例化媒体控制器 MediaController mediaController=new MediaController(this); mediaController.setMediaPlayer(vv_vodio); vv_vodio.setMediaController(mediaController); }}
0 0
- 视屏播放器,两种不同的方法
- 播放动画的两种方法
- laszlo方法的两种不同写法
- Singleton的两种不同实现方法.
- VC++中播放声音文件的几种不同方法
- AJAX 开发的两种不同的方法[转]
- [NIIT中国] AJAX 开发的两种不同的方法
- 开发框架:AJAX 开发的两种不同的方法
- Random的两种构造方法的不同
- jq bind()的两种不同绑定方法的区别
- jq中的两种不同的 toggle() 方法的区别
- 用VC++5.0播放AVI文件的两种方法
- Android中播放声音的两种方法
- cocos2d-x 播放序列动画的两种方法
- Android中播放声音的两种方法
- Android中播放声音的两种方法
- Android中播放声音的两种方法
- C语言播放声音最简单的两种方法
- Nodejs使用实例——网站登录验证
- Opencv学习_2 (opencv结构&显示图像)
- qt phonon 制作音乐播放器学习(怎样让播放进度条和音乐播放时长同步)
- JDK环境下,bat文件启动Java程序(类似于命令行文件运行java),可用来制作小工具。
- zz_mj_creator
- 视屏播放器,两种不同的方法
- Linux下安装redis
- 样式化加载失败的图片
- 04.JUC 集合
- 使用哈希算法将字符串映射到数组中
- 387. First Unique Character in a String
- Android中的线程和线程池
- JQuery的筛选基础了解
- Opencv学习_3 (Opencv读取视频 &视频进度控制 &写视频)