要实现一个万能播放器需要使用多媒体库,可以使用Android自带的MediaPlayer类以及ExoPlayer库。以下是一个简单的示例代码:

  1. 在XML布局文件中添加一个SurfaceView和几个按钮:
<SurfaceViewandroid:id="@+id/surfaceView"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/buttonPlay"android:text="Play"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/buttonPause"android:text="Pause"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/buttonStop"android:text="Stop"android:layout_width="wrap_content"android:layout_height="wrap_content" />
  1. 在Java代码中实现MediaPlayer或 ExoPlayer 播放多种格式的视频文件。
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {private MediaPlayer mediaPlayer;private SurfaceHolder surfaceHolder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonPlay = findViewById(R.id.buttonPlay);Button buttonPause = findViewById(R.id.buttonPause);Button buttonStop = findViewById(R.id.buttonStop);SurfaceView surfaceView = findViewById(R.id.surfaceView);surfaceHolder = surfaceView.getHolder();surfaceHolder.addCallback(this);buttonPlay.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {try {mediaPlayer.setDataSource("http://example.com/myvideo.mp4");mediaPlayer.prepareAsync();mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mediaPlayer) {mediaPlayer.start();}});} catch (IOException e) {e.printStackTrace();}}});buttonPause.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (mediaPlayer.isPlaying()) {mediaPlayer.pause();}}});buttonStop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;}}});}@Overridepublic void surfaceCreated(SurfaceHolder surfaceHolder) {mediaPlayer = new MediaPlayer();mediaPlayer.setDisplay(surfaceHolder);mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);}@Overridepublic void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {}@Overridepublic void surfaceDestroyed(SurfaceHolder surfaceHolder) {}
}

这个示例代码演示了如何使用MediaPlayer类播放MP4格式视频。如果需要支持其他格式,则需要使用相应的库或解码器。ExoPlayer是一个开源库,可以播放多种格式的媒体文件,包括MP3,MP4和HLS等格式。

用android代码实现一个可以万能播放器相关推荐

  1. Android 超好用的万能播放器——ijkplayer

    前言 ijkplayer是b站开源的超级好用的视频播放器喔,相信大家都早有耳闻.ijkplayer Android和ios都可用,还支持多种视频的硬解码. ijkplayer的github地址 ijk ...

  2. 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放

    前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over1 ...

  3. Vitamio打造自己的Android万能播放器

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  4. 使用Vitamio打造自己的Android万能播放器(1)——准备

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  5. 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)

    前言 本章将实现非常实用的功能--下载在线视频.涉及到多线程.线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术 ...

  6. [转载]使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)...

    前言 本章将实现非常实用的功能--下载在线视频.涉及到多线程.线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术 ...

  7. 使用Vitamio打造自己的Android万能播放器(6)——在线播放(播放列表)

    前言 新版本的VPlayer由设计转入开发阶段,预计开发周期为一个月,这也意味着新版本的Vitamio将随之发布,开发者们可以和本系列文章一样,先开发其他功能.本章内容为"在线视频播放列表& ...

  8. 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)

    前言 为了保证每周一篇的进度,又由于Vitamio新版本没有发布, 决定推迟本地播放的一些功能(截图.视频时间.尺寸等),跳过直接写在线播放部分的章节.从Vitamio的介绍可以看得出,其支持http ...

  9. 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)...

    前言 关键字:Vitamio.VPlayer.Android播放器.Android影音.Android开源播放器 本章节把Android万能播放器本地播放的主要功能(缓存播放列表和A-Z快速查询功能) ...

最新文章

  1. POJ - 1986 Distance Queries 倍增求LCA
  2. webpack打包js文件
  3. 基本的SQL-SELECT语句
  4. Python读取文件中汉字方法:导入codecs,添加encoding='utf-8'
  5. 聊聊Vue(前端Vue面试包过)【面试干货】
  6. 谷歌5款插件推荐:谷歌工具类、翻译类扩展程序
  7. ultraiso虚拟光驱安装linux,ultra_UltraISO怎么添加虚拟光驱啊?
  8. 想学一门技术,学java有前途吗?
  9. ASO优化选词:三种方法教你精准定位关键词
  10. 物联网应用案例,中易云真实搭建项目
  11. 转载至:http://blog.csdn.net/antony9118/article/details/51425581
  12. 区分当前用户SIM卡是移动还是联通
  13. 第一篇博客-Sql排名函数DENSE_RANK
  14. KEIL MDK 查看代码量、RAM使用情况--Code、RO-data、RW-data、ZI-data的解释
  15. 3D Max中布尔运算介绍
  16. rpcs3计算机丢失,【小白必看】关于缺失Vulkan无法打开RPSC3等问题的方案
  17. Unit Test(UT)单元测试
  18. Nginx-虚拟主机
  19. Python入门:制作世界人口地图
  20. matlab植物,matlab分形植物模拟

热门文章

  1. 141.如何使用图标做一个加载特效
  2. 【转】LoadRunner结果分析
  3. Ab3d.PowerToys 9.5.x Crack
  4. 调用百度搜索接口查询
  5. 【C/C++面试必备 | 基础概念】union的用法
  6. Linux之压测工具Siege安装和使用
  7. 01-系统安装-acer台式机使用固态盘重装系统后无法进入BOOT
  8. Android APP签名文件.keystore和.jks的相互转换
  9. python炒股教程_Python股市数据分析教程 学会它,或可以实现半“智能”炒股
  10. 通过路由器来设置WIFI密码