文章目录

  • Android 播放器框架
    • 1、背景
    • 2、API简单使用
    • 3、需求分析
    • 4、结构设计(java语言)
      • 1、IPodPlayer 播放职位描述
      • 2、PodPlayer 播放组高管
      • 3、PodMediaPlayer 播放员工(播音频)
      • 4、IPod 播放信息描述
      • 5、Playlist 播放实施负责人
      • 6、开工
      • 7、感想

Android 播放器框架

1、背景

平常开发中经常会遇到一些音视频播放的一些基础需求,做了这个框架目的是解决这一类需求,提高开发效率

2、API简单使用

3、需求分析

音频播放,视频播放,文本播放

以音频播放为例(听歌)

小明想听歌了,于是拿出手机打开简单听app点了一首听妈妈的话,(听妈妈的话,别让她受伤)好听的音乐响起了,小明沉浸其中。刚听了1分钟,突然有人找小明,小明这时将音乐暂停去处理事情。做完事情之后,小明把手机拿出来点击继续播放 音乐从暂停的地方继续播放,音乐结束了小明换了一首歌 《死了都要爱》 小明想听高潮部分,于是滑动进度,一次一次试终于找到高潮部分 (死了都要爱,不淋漓尽致不痛快,感情多深 只有这样 才足够表白)哒哒哒电话来了,音频暂停了 挂断电话 音乐继续播放

操作行为:

  • 播放
  • 暂停
  • 停止
  • 上一首
  • 下一首
  • 进度改变

状态:

  • 空闲
  • 加载中
  • 播放中
  • 已暂停
  • 已停止

涉及到UI的部分

  • 播放状态
  • 进度更新
  • 通知栏

4、结构设计(java语言)

接口|类组成

  1. PodPlayer 负责控制播放
  2. IPodPlayer 播放接口,定义播放的一些行为
  3. PodMediaPlayer 具体播放实现类
  4. IPod播放信息接口 音频|描述接口
  5. Playlist 播放总负责人

1、IPodPlayer 播放职位描述

public interface IPodPlayer {void play(String content);void seekTo(int position);void pause();void resume();void release();void stop();int getState();void registerListener(PlayListener listener);void unregisterListener();interface PlayListener {void onPlayProgress(long cur, long total);void onPlayStart();void onPlayStateChanged(int state);void onPlayCompleted();void onPlayError(int code, String message);void onPlayBufferingUpdate(int percent);}
}

2、PodPlayer 播放组高管

public class PodPlayer {private IPodPlayer mediaPlay;private int mStreamType;public PodPlayer(Context context) {mediaPlay = PodMediaPlayer.getInstance(context);}public void start(int stream_type, String content) {}public void seekTo(int position) {}public void stop() {}public void pause() { }public void resume() { }public int getState() { }public void registerListener(IPodPlayer.PlayListener listener) { }public void unRegisterListener() { }public void release() { }
}

PodPlayer这里作为代理人角色只负责指派任务,目前代理人手里只有一个mediaPlay可以用

这样做的一个好处是:代理人只需要学习stream_type该应该交给谁来执行,后期如果有新的stream_type,代理只需要到市场招聘会这个stream_type人即可,自己不需要去学习stream_type的content如何执行

3、PodMediaPlayer 播放员工(播音频)

public class PodMediaPlayer implements IPodPlayer {private MediaPlayer mMediaPlayer;
}

PodMediaPlayer实现了IPodPlayer接口(有播放的能力)说明PodMediaPlayer可以到PodPlayer代理人应聘工作了

PodMediaPlayer最近失业了,去了一家公司 面试 PodPlayer(面试官)说我这里差一个播放音频的活 问道PodMediaPlayer:“你会做stream_type(音频类型),content播放工作吗” ,PodMediaPlayer说到:我当然会呀,我做的很好,从来没出现意外。PodMediaPlayer大喜

Android 播放器框架相关推荐

  1. android 播放器架构,Android播放器框架设计系列-1

    视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...

  2. android 视频播放器通用的编码框架,Android播放器框架设计系列-1

    视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...

  3. Android播放器框架分析之AwesomePlaye

    详见:http://blog.csdn.net/mirkerson/article/details/40184479</> 转载于:https://www.cnblogs.com/1995 ...

  4. 高德智慧景区随身听播放器框架设计与实现

    简介:我们开发选型并没有采用传统的TTS技术(由文本内容生成机器语音),而是采用了更加通用音频格式(比如mp3),作为讲解的音频输入源,方便讲解者进行二次创作.本文将简单回顾高德智慧景区随身听播放器的 ...

  5. java 视频边下边播,VideoViewDemo android 播放器,支持边下边播 238万源代码下载- www.pudn.com...

    文件名称: VideoViewDemo下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 194 KB 上传时间: 2014-09-19 下载次数: 5 详细说明:a ...

  6. ijk基于exo_github上十二款最著名的Android播放器开源项目

    1.ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Android/iOS 视频播放器.实现了跨平台功能,API 易于集成:编译配置可裁剪,方便控制 ...

  7. github上十二款最著名的Android播放器开源项目

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

  8. android 音乐视频播放器(github上十二款最著名的Android播放器开源项目)

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

  9. 直播页面5:项目中的直播播放器框架GSYVideoPlayer

    直播页面5:项目中的直播播放器框架GSYVideoPlayer 一.github地址 二.代码 0.快手官网获得直播地址 1.xml布局 2.java代码 一.github地址 https://git ...

  10. android 著名播放器,【精华】十二大最著名的Android播放器开源项目

    1.ExoPlayer https://github.com/google/ExoPlayer ExpPlayer是一个开源的,App等级的媒体API,它的开源项目包含了library和示例: Dem ...

最新文章

  1. MySQL中的CURRENT_TIMESTAMP
  2. Windos7下VirtualBox的几项误操作恢复
  3. 简单介绍:什么是Python?Python好学吗?
  4. kubernetes1.8.4 安装指南 -- 8. 安装Kube DNS
  5. JVM调优总结(八)-典型配置举例2
  6. 数据结构与算法-- 数组中出现次数超过一半的数字(时间复杂度的讨论)
  7. 关于php的函数,总结关于PHP文件函数有哪些
  8. 单片机学校实训老师上课需要的工具以及源码分享
  9. WebSocket(伍) 断开连接
  10. 思科软件服务器怎么作用,TFTP 服务器的选择和使用
  11. 腾达AC15改内存闪存刷AC68U梅林
  12. 微信小程序中使用video组件
  13. java计算机毕业设计学生宿舍信息管理源程序+mysql+系统+lw文档+远程调试
  14. android xposed软重启,Xposed插件安装更新免重启手机方案
  15. 2017下半年软件测评师上午考试试题
  16. 我的学习笔记005--常见web前台技术之间的关系html,css,javascript...mxx
  17. 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMI
  18. 应试教育与理想教育之间
  19. 一份好的简历需要包含的内容(程序员)
  20. 尚硅谷-Linux学习

热门文章

  1. 技术小咖之基于SDK的第一个windows图形界面程序
  2. ICX285 ICX205 ICX414 3CCD共用驱动板电路设计
  3. 工具推荐:最好用的pCap工具
  4. 计算机进入安全模式,电脑无法进入安全模式如何解决
  5. 惠普电脑u盘重装系统步骤_惠普笔记本u盘系统安装步骤 惠普u盘启动系统安装...
  6. 2021年7月20日我国暴雨趋势遥感监测与评估
  7. AutoLine源码之RobotFramework运行器
  8. java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
  9. c语言某年某月某日的天数,输入某年某月某日,判断这一天是这一年的第几天...
  10. c语言奖学金评定系统课设报告,C语言编程奖学金评定系统太原理工大学.pdf