Android_Camera一些调试技巧
参考学习
https://www.jianshu.com/p/6fe64cf0340c
更多高通camera相关 进去 博主
https://www.jianshu.com/u/4956569f5f07
把之前开发遇到的一些问题总结一下, 由于很多东西都是和具体平台(高通/MKT)相关的, 本来有更多的内容可以总结, 但由于不在之前公司了,一些源码和环境都没了, 只能写一下记得比较清楚的东西了.
dumpsys
dumpsys是Android系统中一个调试神器, 可以看内存信息, 电池信息, 相机参数等等, 基本Android中每一个大的模块, 都能通过dumpsys来查看. 调试Camera我们通常需要知道一些参数信息, 默认参数, 实际设置参数, 支持的参数, 这些信息都可以通过dumpsys media.camera来查看, 具体用法如下:
//执行这个adb命令会打印所有默认参数和当前使用参数
adb shell dumpsys media.camera//查看某一项参数,使用过滤命令grep(linux), windows下可使用findstr来过滤
adb shell dumpsys media.camera |grep picture-size//输出
picture-size: 3264x2448
picture-size-values:5520x4140,5984x3366,3840x2160,3264x2448,2048x1536,1920x1080,1280x720,640x480,480x320,320x240
其中参数后面带values(比如上面picture-size-values)表示这个参数可设置的值,需要注意的是, 如果当前没有打开Camera, 执行命令也会有相应输出, 此时输出的值是默认值(打开camera不设置任何参数).
上面说的是针对HAL1的参数, 如果是HAL3参数, 输出内容就不一样了,如下:
adb shell dumpsys media.camera // HAL3部分参数输出
android.control.aeLockAvailable (10024): byte[1]
[TRUE ]
android.control.awbLockAvailable (10025): byte[1]
[TRUE ]
android.control.availableModes (10026): byte[2]
[1 2 ]
android.shading.availableModes (100002): byte[2]
[1 2 ]
android.statistics.info.availableLensShadingMapModes (120007): byte[1]
[0 ]
android.sensor.info.preCorrectionActiveArraySize (f000a): int32[4]
可以看到, HAL1和HAL3差别很大, HAL3参数格式和Android Camera API2是对应的,如果要看HAL3的相关参数, 直接使用grep命令存在问题, 因为grep只会输出有关键字的那一行,但HAL3参数的Key和Values一般都不在一行, 所以要把输出保存到文件中,然后搜索关键字
adb shell dumpsys media.camera > camera.txt
No Display Mode
通常情况下,正常使用Camera的流程是:
1.打开Camera
2.设置参数
3.设置预览Surface
4.开启预览:startPreview()
5.拍照:takePicture()
但有些情况下, 我们希望不设