一转眼一天就过去了,不过我今天是全神贯注的努力了一天,收获只能说颇丰
先回顾下昨天的目标:10:53关手机睡觉(甚至还关了11点的闹钟)
尝试改毕设bug,gradle有问题,没有正常运行,就没改
Camera只是看了看,只能说看了一点点
不管怎么说,昨天也仅仅是序言,今天确实是正儿八经的努力了一天
首先总结下成果:
1.解决了CameraX进入后台相机就会自动关闭的bug
2.实现了前台Camera监听按键,后台Camera监听音量进行拍摄
3.找老大展示了一下成果,制定了一下下阶段目标
当然这是成果,接下来是学习到的知识
首先是早上,看了CameraX文档和Camera2的文档(就是官方文档),以及理解了两张图:
(图来自:Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能 - 简书)
核心是CameraX文档,第一点就是知道了进入后台相机会关掉的原因:
还有就是知道了官方的引导文档的实现逻辑:
官方教程:https://developers.google.com/codelabs/camerax-getting-started?hl=zh-cn#3
也就是CameraX可以通过Provider和Controller来实现:
(这俩图来自谷歌官方文档的截图:https://developer.android.com/media/camera/camerax/architecture)
我向来是上午搞理论和理解,下午搞实践
下午首先根据需要LifeCycleOwner的bindToLifeCycle来研究
首先搞懂了bind方法的usercase参数的含义以及如何使用:
核心就是单个功能可以单独使用,组合功能需要实现满足要求:
(图片来自与上文一致的Google文档)
还理解了一下Camera2与CameraX的区别(我的理解是,X是2的儿子,从2封装出来,比他爹更优秀,他爹实现的他也可以实现(不敢打包票,只是我这样理解)):
上面都是根据文档看懂学会了啥(其实感觉我说的这些就是架构这里的东西,你看完我说的就看完了这篇文档(我这是不是改名带你一天看一篇Google文档好一点哈哈哈))
接下来来点硬货,也就是今天核心,bindToLifeCycle的lifecycle如何实现Camera退到后台却不死亡
首先我采用了文档中的自定义LifeCycle:
当然,肯定是没用的,然后我去看了LifecycleOwner,参照下面这个写的:
https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco
还是没用,我就请教前辈,前辈认真听了我的问题,然后问我为什么控制LifeCycle可以实现后台就不挂掉照相机
我只能说,还好我好好看文档了,我巨自豪的向他展示了CameraX的文档,他成功被我说服,我只能说直接特别激动,有种自豪感
接着前辈带我看了相关的源码(我早上已经自己看过啦),然后也没有发现什么问题
但是,前辈不愧是前辈,一眼指出他继承的是Activity,并且解释AppcompatActivity自己处理了LifeCycle,让我换下试试
果然换成继承Activity就成功实现了,但是,MaterialDesign的Button就g了,所以我就求助另一位前辈,果然,这位前辈帮我分析了一下,告诉我不需要自己重写LifeCycle,只需要自定义一个lifeCycleOwner就行了,但是这个方案我尝试过没有成功,于是我复现了一下让他帮我看
果然一出手直击要害(其实我最开始以为他说的不对哈哈哈),前辈指出(其实是我问的),如何实现各种生命周期下控制Camera的自定义LifeCycle生命周期,用这个:
activity.registerActivityLifecycleCallbacks
但是这个爆Q以上才能用,于是加个else:
activity.lifecycle.addObserver(object : LifecycleEventObserver
然后我加上完并没有打日志,看了半天不知道问题在哪,结果我退了一下后台,预期的日志成功打印,终于把我心头之患解决了
上面这些搞懂了,剩下来就是洒洒水了(其实还是很难)
接下来我解决了Camera前台退出直接关闭,之前做好的音量监听没法正常回调,还有第一次权限异常等bug,但是我通过注解之前代码,问gpt等方法自己解决了,真是收获满满的一天
那么今天的收获就分享到这里,预定下明天计划:
1.尝试修复二次进入前台黑屏的bug
2.看前台服务如何实现(这个估计要很久时间,毕竟之前没搞懂算是)
3.给前辈帮点能帮的忙
4.上面几个进行完了或者写吐了就去看下之前毕设遗留的bug(快要去见老师咯)
此外常驻项目11点睡觉,8点下班和每天锻炼,我甚至中午还冥想了(应该算是放空脑袋,冥想到睡着了)
现在是19:32,写完文章再学会就下班啦文章来源:https://www.toymoban.com/news/detail-832682.html
那么明天见,祝大家也能收获满满!文章来源地址https://www.toymoban.com/news/detail-832682.html
到了这里,关于Android进阶之旅(第1天:后台相机)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!