为啥那些“辣鸡” Android App 对不上焦?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥那些“辣鸡” Android App 对不上焦?相关的知识,希望对你有一定的参考价值。

参考技术A

众所周知很多国产 App ios 版本的表现显著好于 android 版本,其中除了 Android 本身的原因之外,究竟还有什么原因导致了这些体验差异?本文将以相机部分为例分析那些“辣鸡” Android App 的问题以及影响,希望这些 App 能尽早按规范使用 API,达成更好的体验。
尽管 Android Camera 2 API 推出已久,但由于底层软件等各种原因支持不完善,所以目前大多 App 仍然使用 Camera 1 API,本文也仅以 Camera 1 API App 为例。

Focus mode :对焦模式,App 可根据需要设定不同的对焦模式。对于 App 开发者而言有以下几种比较容易混淆的对焦模式:AUTO、CONTINUOUS_PICTURE、CONTINUOUS_VIDEO
AUTO:非常具有迷惑性的选项,看起来是自动对焦,实则设置为该模式后,只有当 App 主动要求对焦,相机才会对焦一次,对焦完成后不会再自动重新触发对焦
CONTINUOUS_PICTURE:连续自动对焦,当相机算法检测到场景发生变化需要重新对焦时,就会自动触发对焦,不需要 App 控制,系统自带相机通常使用这种模式
CONTINUOUS_VIDEO:同上,只是触发对焦和对焦过程都较为缓和,通常用于录像

Focus area(region):对焦区域,默认为中心对焦,App 也可根据需要设定对焦区域(就和你在系统自带相机里点击对焦一样啦)。根据 Android 官方文档介绍,对焦区域坐标基于 CMOS 方向的左上角

即当整个坐标体系应该是如下图所示

即使是竖屏 App,设定对焦、测光等坐标时,仍然是以传感器方向的坐标系为准,而不是屏幕方向不是屏幕方向不是屏幕方向不是屏幕方向不是屏幕方向

首先我要给所有第三方 App 一个建议
非必要情况下,使用 CONTINUOUS_PICTURE 或 CONTINUOUS_VIDEO,不要设置 Focus area ,才能得到最快速且体验良好的对焦(这其中涉及到 PDAF 、激光辅助对焦等限制),尤其是扫码类 App!
必须设置 Focus area 时,仔细认真阅读 Android 官方文档!

先来看一个没问题的App,随手翻了下手机来看下百度搜索那个拍照功能
首先是正确设定AF模式(这里的3 = ControlAFModeContinuousVideo):
camxcafioutil.cpp:1411 ReadFocusMode() HALFocusMode = 3, AlgoFocusMode = 2, SceneMode = 1
然后是用户不点击画面对焦时没有设置任何 Focus area
当用户点击画面对焦时,设置的 Focus area 坐标也比较正确,对焦框大小设置也相对合理
以下是点击竖持手机的右上角,即CMOS方向的左上角,传感器分辨率为4000x3000
camxcafioutil.cpp:834 RetrieveFocusRegions() ROI type 2 ROIWeight 1000 (L:122,T:574,W:600,H:300)
以下是点击竖持手机的右下角,即CMOS方向的右上角
camxcafioutil.cpp:834 RetrieveFocusRegions() ROI type 2 ROIWeight 1000 (L:2568,T:500,W:600,H:273)

那么说完这些,问题就来了,我们逐一来看热门 App 的行为到底是什么样的呢?为什么体验不好呢?
微信(7.0.3):
扫一扫
首先是扫一扫功能非常热衷于设定 Focus Area ,而且设定的对焦区域大小非常神奇,几乎相当于整个画面大小
camxcafioutil.cpp:834 RetrieveFocusRegions() ROI type 2 ROIWeight 1000 (L:300,T:987,W:3400,H:1026)
而且当进入扫一扫2秒之后,连对焦模式都会从刚进入时的CONTINUOUS_VIDEO变为AUTO
03-27 10:46:07.619 733 1151 V CamX : [ VERB][STATS_AF] camxcafioutil.cpp:1411 ReadFocusMode() HALFocusMode = 3, AlgoFocusMode = 2, SceneMode = 1

03-27 10:46:09.877 733 1146 V CamX : [ VERB][STATS_AF] camxcafioutil.cpp:1411 ReadFocusMode() HALFocusMode = 1, AlgoFocusMode = 0, SceneMode = 1

上面提到设定为 AUTO 后,除非 App要求对焦,相机算法是不会再根据场景变化自动重新对焦的了,所以微信又做了个神操作,每2秒由 App 重新触发一次对焦

03-27 10:50:01.010 733 1147 V CamX : [ VERB][STATS_AF] camxcafstatsprocessor.cpp:1132 MapControlAFTriggerToAFStateTransition() [NightCoffee] Trigger AF
03-27 10:50:03.009 733 1149 V CamX : [ VERB][STATS_AF] camxcafstatsprocessor.cpp:1132 MapControlAFTriggerToAFStateTransition() [NightCoffee] Trigger AF

03-27 10:50:04.875 733 1147 V CamX : [ VERB][STATS_AF] camxcafstatsprocessor.cpp:1132 MapControlAFTriggerToAFStateTransition() [NightCoffee] Trigger AF

于是扫一扫就产生了N个问题

支付宝(10.1.59.231):

扫码
AF mode设置上没有问题,但是设置了一个Focus area
ReadFocusMode() HALFocusMode = 4, AlgoFocusMode = 1, SceneMode = 1
RetrieveFocusRegions() ROI type 2 ROIWeight 1000 (L:1124,T:691,W:1616,H:1617)
这个 Focus area 也过分的大了……对于部分手机来说各种辅助对焦手段也会失效

微博(9.3.2):
微博故事、发围脖时调用拍照、拍视频
和微信小视频一样的坐标问题,而且对焦框大小更过分……
camxcafioutil.cpp:834 RetrieveFocusRegions() ROI type 2 ROIWeight 1000 (L:1958,T:1707,W:222,H:61)

扫一扫
AF mode设置为了AUTO,但是好在没设置 Focus area,而且强制触发对焦的机制比微信智能且快速一些,最长4秒强制触发一次,但如果画面内容有变化时能很快触发,体验上要比微信好不少但不是最佳
camxcafioutil.cpp:1411 ReadFocusMode() HALFocusMode = 1, AlgoFocusMode = 0, SceneMode = 1

京东:
扫一扫
和围脖的扫一扫一个样,但没围脖触发频繁

淘宝:
扫一扫
嘿,淘宝也是完全OJBK的,正确的AF mode,未设置AF area
camxcafioutil.cpp:1411 ReadFocusMode() HALFocusMode = 4, AlgoFocusMode = 1, SceneMode = 1

综上所述,如果你不知道正常的相机扫码对焦体验应该是什么样的,可以打开淘宝或百度内的相机看看,再与其他 App 对比一下,应该都能感受出来。
由于上述这些 App 在国内过于流行,用户遇到问题时投诉基本都汇集到了手机厂商而不是 App 开发者,部分手机厂商为了降低用户投诉量,不得已根据这些 App 的错误行为去修改系统行为,但这显然无益于推进 App 厂商自身改进,甚至为 App 开发者提供了充足的借口:“你看那个大厂的品牌都没问题,肯定是你自己问题啦 反正我没问题”

那些十辈子追不上的大佬

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

这真是大佬,口里巨人千百个,独缺此般技术人。

那么问题来了,我能追上大佬的脚步吗

2018.6.7

以上是关于为啥那些“辣鸡” Android App 对不上焦?的主要内容,如果未能解决你的问题,请参考以下文章

为啥能ping通 但是连不上 app

解决安卓收起键盘无法触发失焦事件的问题

一名非典型二流大学生的自述 | 我是如何从菜鸟进化到辣鸡的

怎么知道连着wifi的时候哪些app要用流量呢

android framework之priv-app,系统特权app权限那些坑

android framework之priv-app,系统特权app权限那些坑