手把手教你做视频播放器(一)-设计方案

前言

通过“计算器”应用我们已经熟悉了安卓应用开发的大致流程,具备了开发的初步知识。

接下来,我们将开始制作一个“视频播放器”应用,进一步加深对程序开发的学习。

当完成这个“视频播放器”应用后,大家就能够独立开发一类稍微复杂点的安卓应用了。

本文针对的读者是:

  1. 对安卓开发有了初步认识,但还没有什么经验的新人;
  2. 对已有的安卓开发经验没有系统化整理的开发者;

在开始以前,假设各位已经做好了如下准备:

  • 一台开发用笔记本电脑,并搭建好了开发环境;
  • 一部安卓系统设备(手机或平板电脑);
  • 设备上存放了可以播放的视频文件;
  • 一根连接电脑和安卓设备的数据线(通常是micro usb数据线);
  • 一到两天时间;
  • 耐心与求知欲;

本文的代码,可以从安豆网示例代码中下载。


/*******************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。
/*******************************************************************/

第1节 设计方案

1.1 可能的功能点

虽然是一个简单视频播放器,但是麻雀虽小五脏俱全,可能需要备以下功能:

  1. 将设备上存在的视频展现出来;
  2. 能显示某个视频详细的信息,例如视频文件大小、视频分辨率等等;
  3. 选择某个视频后,能够播放视频;
  4. 播放视频时能够控制视频的暂停、继续、快进、快退;
  5. 可以全屏幕的播放视频;
  6. 可以提供给系统使用,作为播放视频文件的可选播放器;
  7. 如果有电话接入,播放器能够自动暂停播放;
  8. 可以管理视频文件,例如删除某个或者多个视频;
  9. 视频可以悬浮于其它应用之上播放,一边刷微信,一边看视频;

1.2 功能广度与功能深度的权衡

每个功能看上去一句话就说完了,但是仔细分析起来,却有很多细节需要考虑。
例如功能1,如果将设备上所有的视频都展现出来,那么,

  1. 可能会消耗很长的时间;
  2. 每个视频都要有缩略图,如果搜寻这些视频文件的时候,同时为它们创建缩略图,也许会非常消耗内存,假如视频非常多,那么有可能会耗尽安卓系统分配给一个应用最大的内存使用量,导致程序崩溃;
  3. 播放器在查找视频文件并显示出来的过程中,如果用户通过别的工具把这个已经显示到列表的文件删除了,例如播放器正在刷新列表,把文件1.mp4显示到了列表中,这时用户通过PC端的手机管理软件,把1.mp4这个文件从设备上删除了(播放器刷新视频文件的过程还没有结束),那么手机的显示列表上要能马上发现这个意外,再次更新;
  4. 也可能设备上有很多短小的视频文件,可能只有几十K或者几百K,根本就不是用户关心的视频,例如微信上接受的短小视频,用户就不会使用我们的视频播放器进行播放;
  5. 也可能用户根本不愿意播放器找出某些“敏感”的视频文件;

这都是我们在开发中需要去实实在在解决的问题。功能1遇到的这些问题,我们都可以通过良好的设计来解决它。不过代价也许就是,

  1. 增加了程序的复杂度,花费更多的开发时间;
  2. 为了解决一个问题,而引入另外一个更佳不易解决的问题、引入另外一个潜在的bug;
  3. 开发钻进了死胡同,到处都是要解决的问题,不知如何开始了;

要知道,这还只是功能1中提出的问题,不知道别的功能点还会将一个应用的复杂度增加到什么样的地步。

所以,对项目规划的设计师和程序的开发者来说,需要在单个功能完备的深度与多个功能的实现广度上,作出智慧的取舍。

好在软件的发布并不是一锤子买卖,可以在发布以后,再对它进行升级。所以我们通常先把最为重要的功能做出来,而对于这些最重要的功能则采用最容易实现的方案。

以后再对功能做出扩充,对实现的方案加以修改,逐步变的越来越完美。这个过程也更适合初学者一步一步的掌握程序设计的思路、积累开发的经验,知道同样一个功能,怎么设计更加合适,为什么要这样设计。

于是,对于我们第一个版本的视频播放器,我们将尽量采用最简单的设计,不去太多的考虑它的程序结构和执行效果,重点是用简单而正确的方式把功能做出来,以后再在新的版本中迭代优化。

1.3 现阶段的功能

为了简化问题,我们先对视频播放器允许的环境和功能做出这样的假设:

  1. 只读取特定目录下的视频文件,例如名称叫做Video的目录;
  2. 假设用户没有那么BT:在展示视频列表的时候,用别的工具,把已经展示上去的文件给删除了;
  3. 在列举视频文件的时候,因为耗时可能很长,所以可以选择暂停;
  4. 视频文件的数量不会多的特别离谱,上千上万个视频是不会遇到的;
  5. 只播放系统原生支持的视频格式;
  6. 播放器在横屏的时候,自动切换成全屏;在竖屏的时候,占用部分区域,剩下的区域显示视频详细信息;
  7. 没有视频的播放记录,用户主动退出的情况下,下次再播放同样的视频会从头开始;
  8. 没有视频的管理功能,不能改变视频文件的位置,不能删除它,不能修改文件名字;
  9. 没有悬浮播放的功能;

因此,对视频播放器的界面进行了如下的设计:

1.4 关于遗憾

对于那些没有在这个阶段加入的功能,期待以后加入吧;

对于那些为了简化开发难度、减少开发时间而采用的简单设计,期待在下一版程序中优化和完善吧;

当然,别忘了这个应用的目标是:教会大家更多的安卓开发技能。所以在选择实现方案的时候,着重于原理的展示,而不一定采用执行效率最优的方案。


/*******************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。

*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。

*最后再次感谢各位读者对安豆的支持,谢谢:)
/*******************************************************************/

  • 15
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 很高兴听到您对RISC-V处理器的设计感兴趣。以下是一些基本步骤,可以帮助您开始设计自己的RISC-V处理器: 1. 确定处理器的需求和规格:在设计处理器之前,您需要确定处理器的需求和规格。这包括处理器的性能、功耗、指令集等方面。 2. 学习RISC-V指令集架构:RISC-V是一种开放的指令集架构,您需要学习它的指令集和编码方式。您可以在RISC-V官方网站上找到相关的文档和教程。 3. 设计处理器的微架构:微架构是处理器的实现细节,包括指令流水线、寄存器文件、ALU等。您需要设计一个合适的微架构来实现RISC-V指令集。 4. 编写Verilog代码:Verilog是一种硬件描述语言,您需要使用Verilog编写处理器的代码。您可以使用Verilog模拟器来验证您的代码是否正确。 5. 进行综合和布局布线:综合是将Verilog代码转换为门级电路的过程,布局布线是将门级电路布置在芯片上的过程。您可以使用EDA工具来完成这些步骤。 6. 进行仿真和验证:最后,您需要对处理器进行仿真和验证,以确保它能够正确地执行RISC-V指令集。 希望这些步骤可以帮助您开始设计自己的RISC-V处理器。祝您好运! ### 回答2: 随着计算机技术的不断发展,处理器作为计算机的中央处理单元,一直处于不断更新和迭代的状态。在这个过程中,越来越多的人开始将目光投向自己动手设计处理器的领域,以提高对计算机结构的理解和掌握能力。而RISC-V处理器则成为了越来越受欢迎的处理器设计体系结构之一。下面,我们就来手把手教你设计RISC-V处理器。 首先,需要了解RISC-V处理器的体系结构和指令集,掌握其特点,以便更好地进行设计。RISC-V架构采用精简指令集(Reduced Instruction Set Computing,RISC)的思想,指令集清晰简单,易于扩展和实现,同时提供了不同的指令长度和地址宽度,满足多种应用场景的需求。 其次,需要明确设计RISC-V处理器的目的和需求。例如,设计一款高性能处理器,需要考虑运算速度、处理带宽、低功耗等方面的需求,而设计一款嵌入式处理器,则需要考虑尺寸、功耗、集成度等方面的需求。在确定需求后,可以选择适合的设计方法和实现方式。 接着,需要进行设计和仿真。采用硬件描述语言(如Verilog或VHDL)进行设计,利用仿真软件进行仿真调试,逐步完善处理器的各项功能。需要注意的是,设计时需要清晰明确每一阶段的功能和相应的接口,保证设计的可扩展性。 最后,进行硬件实现和验证。将设计好的RTL电路转换为FPGA或ASIC中的物理实现,进行性能测试和功能验证,发布仿真测试结果和设计文档,确保设计能够满足预期的性能和功能要求,并能够进一步优化和升级。 在以上步骤中,需要掌握的知识包括计算机体系结构、数字电路设计、硬件描述语言的使用等。需要长期的学习和实践,才能够熟练掌握处理器设计的各个环节,并能够设计出具备高性能、低功耗、灵活可扩展等特点的处理器。 ### 回答3: RISC-V是一个由加州大学伯克利分校推出的开源指令集架构,它的设计理念是简化指令集,更加注重可扩展性、可定制性和易于实现。设计RISC-V处理器需要了解计算机体系结构以及数字电路原理,下面将手把手教你设计CPU。 第一步,需要确定处理器的架构。RISC-V处理器一般采用五级流水线结构,包括取指、译码、执行、访存和写回。在这个流水线结构中,每个阶段都有对应的功能,可以保证指令的按序执行。 第二步,需要确定指令集架构。RISC-V有基础指令集和标准扩展指令集,需要根据使用需求选择相应的扩展指令集并实现相应的操作。 第三步,需要进行处理器的逻辑设计。包括指令寄存器(IR)、程序计数器(PC)、指令存储器(IM)、寄存器堆、ALU(算数逻辑单元)、数据存储器(DM)等,这些模块通过总线相互连接构成处理器的基本结构。 第四步,需要进行数字电路的设计。处理器逻辑的实现需要用到器件和电路,需要根据设计的结构和功能实现相应的数字电路。 第五步,进行验证和调试。在设计完成后,需要进行仿真验证和调试工作,以保证设计的正确性和稳定性。 总的来说,设计RISC-V处理器需要掌握计算机体系结构、数字电路原理和基础编程知识,需要进行详细、全面的规划和设计。设计过程中需要不断地验证和调整,确保设计的正确性和稳定性,最终完成一个高质量且符合需求的处理器设计。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值