录制,播放(recorder&playback)

本文探讨了Android多媒体录制和播放的详细流程,从硬件层面到上层服务的交互,涉及ALSA、audio HAL、audioFlinger、camera HAL、编码解码等多个关键模块。通过分析数据流方向,阐述了如何从摄像头和麦克风获取数据,到编码、存储和回放的过程。同时,文章提出了学习模块的三个层次,并结合实际工作场景讨论了相关挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


android 是一个很大的世界,凭借个人的能力想要把它全部弄懂,不太现实。花了很多的时间看了一些(谦虚点)android的源码,去了解它的流程,每次看完一个模块的代码(只是浏览完代码,具体细节并不一定知道),总觉得也就那样,感觉跟搭不上关系,这也就是很多人都有的心理(学那个有什么用,你又不弄那个等等之类)。当然,我不是这样的心理。

如果是分散的,单独的看某个模块的源码,发现有很多流程都串不起来,很难想象到底是不是这样实现的。我有时候也觉得自己对android了解得挺多的,意思是范围很广,但是并没有用,因为不清楚里面的细节,所以还是外行人,于是我改变了学习的方向,今后有时间的话基本上就会认真研究一下android的录制和播放这两个大头。当然不仅仅只是录制或播放这个模块本身的流程,而是把与之相关的模块也要掌握。重点是数据流,数据在各个模块的结构,各个模块对数据做了那些处理。

关于模块的学习,我想分享一下我的看法,就我目前所在的公司要求而言,可以分成三个层次。

1、了解了这个模块的流程,也就是说这个模块的代码你基本看不不止两三遍,对里面的很多细节和流程都知道了,即使忘记了或者记不太清楚了,仍然可以快速找到代码的位置,再认真看看,然后就懂了。

2、能够找到模块里面的bug,不要认为android 的代码就是完美的,没有bug,公司提供的是android系统的技术支持,所以经常会有各种各样的问题,当然android原生的问题比较少,很多都是我们修改了一些需求,或者做了客制化而引入,找bug也是一件比较困难的事,如果没有一定的经验,即使你对这个模块再熟悉,也很难快速找到问题的原因,因为有可能是这个模块的上游或者下游的问题。

3、为了新的需求而修改模块的代码,为什么说这个更难做,更具有挑战性呢?主要是这个要考虑的太多了,比如是否会影响原先的功能,会不会引入新的问题,修改之后能否满足需求。一般新手是没有机会做这件事的,都是需要更有经验的人来做。不得不吐槽一下,有些客户的需求这是奇怪,android原生就不支持,但是他们硬是要你修改,把原来的代码改得乱七八糟。

关于上面三个层次,我个人的理解是 第一个对应的是技术支持,第二个对应的是开发维护,第三个对应的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值