相机启动,切换,拍照,人脸解锁等systrace拆解分析总结

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、Camera 启动流程trace关键字
二、相机 模式切换流程trace 关键字
三、退出相机Trace 关键字
四、相机拍照 Trace 关键字
五、人脸解锁Trace 关键字拆解
六、Camx trace 开关
七、手机自带抓去systrace 方法

一、Camera 启动流程trace关键字

S1 . deliverInputEvent(AppLaunch_dispatchPtr:Up ) ⇒ activityStart
S2 . activityStart ⇒ CameraHal::openSession
S3 . CameraHal::openSession
S4 . CameraHal::openSession end ⇒ CameraHal::configureStreams start
S5 . CameraHal::configureStreams
S6 . CameraHal::configureStreams end ⇒ setRepeatingRequest start
S7 . setRepeatingRequest start ⇒ first full buffer
S8 . first full buffer ⇒ 第一帧显示(onPreviewOk)

二、相机 模式切换流程trace 关键字

S1 . deliverInputEvent ⇒ abortCaptures start
S2 . abortCaptures( FWK : CameraHal::flush)
S3 . abortCaptures end ⇒ CameraHal::close start
S4 . CameraHal::close
S5 . CameraHal::close end ⇒ CameraHal::openSession start
S6 . CameraHal::openSession
S7 . CameraHal::openSession end ⇒ CameraHal::configureStreams start
S8 . CameraHal::configureStreams
S9 . CameraHal::configureStreams end ⇒ setRepeatingRequest start
S10 . setRepeatingRequest start ⇒ first full buffer
S11 . first full buffer ⇒ 第一帧显示(onPreviewOk)

三、 退出相机Trace 关键字

S1 . deliverInputEvent ⇒ abortCaptures start
S2 . abortCaptures( FWK : CameraHal::flush)
S3 . abortCaptures end ⇒ CameraHal::close start
S4 . CameraHal::close
S5 . CameraHal::close end ⇒ launher 显示

四、相机拍照 Trace 关键字

S1 . deliverInputEvent ⇒ submitRequestList start
S2 . submitRequestList start ⇒ processCaptureRequest_3_4 start
S3 . processCaptureRequest_3_4 start ⇒ P2_Capture:enque start
S4 . P2_Capture:enque start ⇒ p2a:finish end
S5 . mf:process
S6 . mdp:process
S7 . hardwareOps_encode (onProcessRequest)
S8 . hardwareOps_encode end ⇒ 大图显示

五、 人脸解锁Trace 关键字拆解

S1 . mPowerKeyWakeLock start ⇒ Biometric.Face.openCamera start Power 键
S2 . Biometric.Face.openCamera start ⇒ CameraHal::openSession start准备开相机
S3 . CameraHal::openSession开相机
S4 . CameraHal::openSession end ⇒ CameraHal::configureStreams start 准备配流
S5 . CameraHal::configureStreams 实施配流
S6 . CameraHal::configureStreams end ⇒ setRepeatingRequest start 准备请求获图
S7 . setRepeatingRequest start ⇒ Camera2-CallbackConsumer:0 end(processNewCallback end) 返回请求图
S8 . Camera2-CallbackConsumer:0 end ⇒ TetrasEngine start 准备算法比对
S9 . TetrasEngine start ⇒ IBiometricsFaceClientCallback::onFilterFailedAcquired::client 算法比对失败
S10 . IBiometricsFaceClientCallback::onFilterFailedAcquired::client ⇒ processNewCallback end 重新请求并获图
S11 . processNewCallback end ⇒ TetrasEngine start 准备算法比对
S12 . TetrasEngine start ⇒ Biometric.Face.onAuthenticated_Success 算法比对成功
S13 . Biometric.Face.onAuthenticated_Success ⇒
KeyguardViewMediator.mViewMediatorCallback#keyguardGone
或者 (KeyguardViewMediator#handleStartKeyguardExitAnimation ) 锁屏动画消失

六、 Camx trace 开关

抓取方法必读

1.如果手机已经解锁,请跳过 1,2,3 这3个步骤,直接执行 4,5 两个步骤。
2.camx trace 开关参考 高通文档

    1. 打开开发者模式中的oem unlock
      操作步骤:
      设置,多次点击 版本信息 打开隐藏的开发者模式item,进入打开开发者模式,然后找到oem unlock,打开oem unlock
    1. fastboot 手机解锁(最好使用userdebug 版本,user版本自测没有成功)
      操作步骤:
      执行adb reboot bootloader ,fastboot flashing unlock 然后按照提示按音量键进行解锁。
C:\Users\>adb reboot bootloader
        C:\Users\>fastboot  flashing unlock
                                                       OKAY [  0.036s]
        Finished. Total time: 0.049s
        C:\Users\>
    1. 执行脚本挂载手机

    操作步骤:
    解锁完之后执行adb root ,adb remount,adb disable-verity,adb reboot ,命令为创建camxoverridesettings.txt 做准备。

C:\Users\>adb root
        adbd is already running as root

        C:\Users\>adb remount
         ... ...
        Now reboot your device for settings to take effect

        C:\Users\>adb disable-verity
        verity is already disabled

        C:\Users\>adb reboot
    1. 打开hal 层 camx log tag
      操作步骤:
      执行以下命令,打开camx trace log tag
adb root
     adb remount
     adb shell mkdir /vendor/etc/camera
     adb shell rm -rf  /vendor/etc/camera/camxoverridesettings.txt
     adb shell touch  /vendor/etc/camera/camxoverridesettings.txt
     adb shell "echo traceGroupsEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
     adb shell "echo traceErrorEnable=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"
     adb shell "echo traceOutputEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
     adb shell cat /vendor/etc/camera/camxoverridesettings.txt
     adb reboot
    1. 重启手机后打开kernel 的trace开关
      操作步骤:
      重启后打开kernel trace 开关
adb root
       adb remount
       adb shell "echo 1 > /sys/kernel/tracing/events/camera/enable"
  1. 抓取trace
    操作步骤:
    可以使用命令或者 trace 工具抓取
python systrace.py --time=10 camera sched hal freq video gfx -b 20480 -o filename.html

七、手机自带抓去systrace 方法

手机自带抓取Systrace 方法如下:

  • 1.打开开发者模式
    设置开发者选项-->系统跟踪-->开启显示系统跟踪“快捷设置”功能块(开启后下拉状态栏会有录制轨迹的图标)
系统跟踪最下面的显示快捷设置图块
  • 2.复现问题
    下拉状态栏点击 “录制轨迹“,复现问题, 下拉状态栏关闭“录制轨迹”,然后关闭 log

  • 3.Systrace 保存路径
    adb pull /data/local/traces .

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,比如:文章底部留言,12小时内必删,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点个在看,为大佬点赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值