自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Flying snow

开始是进步的开始

  • 博客(277)
  • 资源 (4)
  • 问答 (3)
  • 收藏
  • 关注

原创 MTK平台修改为横屏的常规改法

MTK原生代码一般都是为了手机做定制的,所以代码基本上都是竖屏手机使用的,如果现在有一个平台需要做横屏适配使用,如果不做横屏竖用的情况下,会发现相机这方面存在很多问题,比如三方相机会出现各种预览画面旋转,拍照画面旋转,视频通话旋转等。因为平板一般是横屏项目,而其屏幕也是横屏刷新展示的,但是绝大部分的三方Camera基本都是竖屏应用,并且没有做横屏兼容。既然我们无法修改三方应用的横竖屏配置,那我们只能从平台下手,我们可以将平台配置成横屏竖用状态,从而兼容三方应用。

2024-03-05 15:27:56 1124 1

原创 Camera 4Cell(Remosaic)简介

曝光数(EV)是由感光度和光圈大小共同决定的。EV,即Exposure Value,是反映摄影中曝光量的一个参数。在ISO为100、光圈系数为F1、曝光时间为1秒的条件下,曝光量被定义为0。如果曝光量减少一档(快门时间减少一半或者光圈缩小一档),EV值就会增加1;反之,如果曝光量增一档(快门时间增加一倍或者光圈增加一档),EV值就会减少1。当光圈大小保持不变时,ISO值的改变会直接影响到照片的亮度。ISO值越大,感光度越高,照片就会越亮,相应的EV值就越小。

2024-01-02 20:26:03 1213

原创 dumpsys相关解析

在新起的线程中,执行某个service的dump函数,如此我们就只要看某个service的dump函数实现就好了,注意我们这些处理逻辑目前都是在native层,但是我们知道安卓是建立在Binder通信的CS架构,该dump()函数的声明是在Binder类中的,也就是我们需要找到服务端的dump()函数的真正实现哪里,如果是dumpsys activity a,那么真正实现是在java层的ActivityManagerService中,其他服务同理。

2023-11-30 20:16:45 665

原创 MTK平台电池信息查询

Android系统默认可通过dumpsys获取如下的电池信息:adb shell dumpsys battery。以上也可通过节点来查看信息:/sys/class/power_supply/battery,等其他属性值。当以上两者相乘是会得到其充电功率,上层软件以此基础确定当前是否为慢/快速充电。

2023-10-25 17:21:29 632

原创 MTK平台闪光灯相关信息

如下修改为闪光灯校准:vendor/mediatek/proprietary/custom/mt6761/hal/flashlight/flash_tuning_custom_cct.cpp。可通过如上Code中的bStrobeBVTrigger字段来查看当前环境值和打闪阈值。这里我们以普通的mt6761为例,可以查看部分代码的设置。(B)kernel Log查看(3次打闪)(A)main Log查看(3次打闪)打闪几次可通过如下Log判断。另可通过如下源码查看调用过程。

2023-10-11 17:04:01 1174

原创 人脸解锁设备时出现相机报错

那引起发送request失败的原因是什么?从上面的Log可以看到,当超过7 frames之后,P1并不是真正的在出帧了,而是P1在做垫帧,我们在来看一下P2是否有接收到数据。现在问题的现象是:刚亮屏大概在2s以内对着人脸一般是能解锁的,但是超过2s之后在对着人脸,是无法解锁成功的。可以看出,相机的Hal P2流程也是有正常走的,而我们看一下P2是否有接收到数据。可以看出,相机的Hal P1流程是有正常走的,而我们看一下P1是否有接收到数据。从Log来看,相机模组是有正常上电的,表示相机是有正常启动的。

2023-09-21 09:39:58 984

原创 MTK平台关机流程和原因(二)

将TARGET_AAPT_CHARACTERISTICS的值赋予ro.build.characteristics,而这个属性在Android编译完成后最终写入到/system目录下的build.prop文件。从上一篇可以看到,最终会调用此类的shutdown以及reboot等函数,我们来看一下这些函数的实现。而具体是如何区分phone,TV,tablet等平台的,因为会根据系统的如下属性。由于这段代码融合了phone,TV,tablet等平台,所以字符串有不同的区分。

2023-08-01 14:47:52 936

原创 MTK平台关机流程和原因(一)

可以看到调用的是GlobalActionsManager接口的方法,而GlobalActionsManager接口在如下接口中定义。上面通过SystemUI后最终会调用到StatusBar Service这边,接下来看一下Service这边如何调用。长按电源键会弹出如上界面,点击按钮会触发到SystemUI当中的如下逻辑。可以看到,进而就调用到ShutdownThread相关的类中。最终调用到远程服务StatusBarService的方法。并最终调用到了如下实现。

2023-07-04 10:11:40 939

原创 MTK Camera自定义Vendor Tag(二):示例

我们就直接在Common下定义此Tag了。

2023-06-20 20:51:39 955

原创 MTK平台的SWT异常的简单总结(3)——常见SWT/ANR类型

线程状态为"Native",确认callstack中有"Process.zygoteSendArgsAndGetResult",对于Zygote fork进程时卡住的问题,一般是由于底层memory问题引起的,请检查是否有memory不足或者memory leak的问题。线程状态为"Native",根据native方法找到对应模块,进一步确认该native方法为何执行时间过长,例如是否等待硬件返回或者硬件本身存在问题等。无论是通过Tid来查找,还是通过locked锁来定位,都可以最终定位到问题代码的部分。

2023-06-15 10:32:02 1249

原创 MTK平台的SWT异常的简单总结(2)——SWT原理和分析

Android user/userdebug版本因受Security限制,导致在M版本之后打开mtklogger也只能抓到fatal db,不能抓普通的ANR db,O版本开始默认不会抓取第三方APP的ANR db。当SWT的两次有效trace打印的call stack完全一样时,才认为是block issue,重点从call stack来入手分析,常规分析流程如上图。SWT —— (swt_time – swt_timeout – 10s)~ (swt_time + 10s),之间的两次trace。

2023-06-05 16:39:19 1450

原创 MTK平台的SWT异常的简单总结(1)——WatchDog

SWT系列资料很多来源于Google。

2023-05-19 15:22:53 1527

原创 Android跨进程通信(三)——系统服务

本篇文章介绍如何在Framework添加一个系统服务,来完成同Client的跨进程通信。

2023-03-20 19:42:15 1030

原创 Android跨进程通信(二)——应用服务(2)

本篇文章介绍如何通过App添加一个系统服务,服务端的App通过Android.mk编译进系统,来完成同Client端的跨进程通信。

2023-03-20 19:37:19 1449 1

原创 Android跨进程通信(二)——应用服务(1)

本篇文章介绍如何通过App添加一个系统服务,服务端的App作为正常应用使用,来完成同Client的跨进程通信。

2023-03-16 20:58:03 1073

原创 Android跨进程通信(一)——RemoteCallbackList的使用

在做FW时,经常用到RemoteCallbackList,是线程与线程之间交流的的重要工具,他的主要作用就是把多个callback保存到列表里,在合适的时机同时回调,也可以防止重复的调用相同的任务,只保证你需要的一个结果回调。

2023-03-16 20:51:54 1479

原创 Camera/Lens流程(三)——Sensor Driver Check

如上打印的是从sensor driver中query出来的配置信息,sensor index:0代表是main camera,Scenario id:0代表preview mode,grab window size为2096*1552。其中mipi_pixel_rate代表sensor实际的mipi_pixel_rate,请check是否与sensor driver中配置的一致,同时确认sensor吐data的实际Vertical_blanking是否满足平台要求。

2023-03-14 15:54:49 1753

原创 Android事件拦截(3)——系统拦截和应用拦截

本文主要分析触摸事件和按键事件在不同阶段被拦截的流程,总结在不同阶段不同方法中返回值的含义。

2023-03-06 09:39:28 3141

原创 动态隐藏导航栏和状态栏

通过以上属性来隐藏状态栏和导航栏,发现上下拉还是会出现状态栏和导航栏,现在的需求是不要出现状态栏和导航栏。可从如上回调函数位置屏蔽相关滑动事件,从而实现不在出现状态栏和导航栏。

2023-02-23 09:54:36 1776

原创 Framework阻止应用安装

在系统开发中,如果不需要某个应用,最好的情况下就是将应用不参与编译,但是这样修改有时候需要修改的代码较多,这里有一个便捷的方法可以让应用不进行安装。系统在开机时会在PMS当中遍历和解析所有应用并进行安装,此时我们可以对其进行过滤操作。

2023-02-01 14:52:11 1218

原创 Android手势GestureDetector分析(二)——源码

通过不同的MotionEvent类型来触发不同的回调函数操作。

2023-01-16 16:01:23 1112

原创 Android事件拦截(一)——触摸事件MotionEvent分析

MotionEvent相关动作分析

2023-01-09 14:02:17 1239

原创 Android监听UEvent之UEventObserver分析

初始化完之后,进入一个while的死循环,不停的调用native层的nativeWaitForNextEvent()函数来获取Event事件,然后将Event事件转换成message,再通过sendEvent()将message事件传递给外设对应的Observer。

2022-12-13 10:46:47 3082 1

原创 CTS测试中SurfaceViewPreviewTest#testPreviewFpsRange项

本题主要还是sensor曝光时间问题,可调整tuning效果中和曝光相关的参数来进行修正。

2022-12-08 15:14:04 1416

原创 MTK平台如何通过adb动态读写sensor寄存器的值

本篇文章实作环境是:调试效果或debug sensor register时需要动态读写sensor寄存器应该怎样修改代码?目前参考的代码是Kernel-4.19,具体每个kernel版本可能都差不多,这里我们只看Main Sensor。

2022-12-06 16:36:40 1452

原创 MTK平台设置不同的预览Size

这边文章记录的是1280x800=1.6屏幕分辨率预览窗口大小,sensor预览实际出图为4656x3496。

2022-11-24 17:38:10 1611

原创 MTK平台Camera人脸识别算法灵敏度参数

当我们在使用MTK平台的相机时,如果默认使用MTK自带的人脸算法,可能会出现人脸识别不准确或者误识别等情况,这个问题MTK也提供了部分参数可供修改,我们接下来看一下应该如何修改。以上介绍的参数是允许调整的,其它参数一般不建议去调整。

2022-11-22 14:47:46 1615

原创 Camera/Lens流程(二)——异常分析

Camera Sensor / Lens 点亮流程分析

2022-11-09 16:59:02 1848

原创 Camera/Lens流程(一)——点亮

Camera Sensor / Lens 点亮流程

2022-11-09 16:56:08 2581

原创 Camera ITS当中的test_lens_shading_and_color_uniformity测试

Color Shading测试原理:拍摄一张大图,把整幅图像等分成若干区域,然后算出这些区域中R/G和B/G的值,以中间区域为基准,用其他区域的比值和中间区域的比值相比,得到一个比值,这个比值越接近1越好,最大差异不能超过20%,否则判定失败。Lens Shading测试原理:拍摄一张大图,把整幅图像等分成若干区域,然后算出这些区域的亮度值,以中间区域为基准,用其他区域的亮度值和中间区域的亮度值相比,得到一个比值,这个比值越接近1越好,最大差异不能超过20%,否则判定失败。我们先看两种测试失败保存的图片。

2022-11-04 16:30:56 1302 1

原创 MTK平台Metadata的加载(四)—Q版本后

该目录下的文件结构如下所示,除了config_static_metadata_project.h 这支文件,其他文件都是 STATIC_METADATA2_BEGIN(DEVICE,TYPE,COMMON)类型,以 DEVICE 开头的都是 Android P 的Metadata加载方式,只有Android Q的加载方式没有加载到数据时才会使用。impBuildStaticInfo_v1_overwrite()提供强制修改 metadata 的接口,加载的类型是[MOD_OVERWRITE]。

2022-09-29 13:59:00 1983

原创 MTK平台Metadata的加载(三)——其他Static和Request加载

(1)加载其他Static Metadata在 MetadataProvider.cpp 中的 constructStaticMetadata()进行 static metadata 加载。(A)MetadataProvider::onCreate()//vendor/mediatek/proprietary/hardware/mtkcam/utils/metastore/metadataprovider/MetadataProvider.cppstatus_tMetadataProvider:

2022-09-28 20:40:22 1298

原创 MTK平台Metadata的加载(二)——Sensor和3A相关Static加载

Camera static metadata 在 camerahalserver 进程启动时就会进行加载。(1)CameraService的启动camerahalserver: 透过 init service 启动。(A)Android.mk文件ifneq ($(MYKCAM_USE_LEGACY_HAL_API),yes)#-----------------------------------------------------------ifeq ($(MTK_CAM_LAZY_HAL),

2022-09-28 20:00:16 3199

原创 MTK平台Metadata的加载(一)——Metadata介绍

(1)Metadata的分类Camera API2/HAL3 的核心为 per-frame control,为了达成这个目标产生了 metadata 的机制,metadata一共分成三类 constrol、dynamic 以及 static。Control(request):当APK query出static metadata 后,可以从中作自己想要的控制。(每一帧都可以设定,会绑定对应的 image callback)。Dynamic(result):当 Hal层收到 control metad

2022-09-28 17:27:48 1952 8

原创 Android中几种常见的播放声音组件

这里要说到MediaPlayer和AudioTrack之间的联系,MediaPlayer在framework层也实例化了AudioTrack,其实质是MediaPlayer在framework层进行解码后,生成PCM流,然后代理委托给AudioTrack,最后AudioTrack传递给AudioFlinger进行混音,然后才传递给硬件播放。比较常见使用AudioTrack,CPU占用率低,内存消耗也比较少。适合播放比较短的音频片段,比如游戏声音,按键声音,铃声片段等,并且可以同时播放多个音频。...

2022-08-17 20:56:38 2347 1

原创 MTK平台拍照录像如何实现Mirror效果

MTK平台实现Mirror效果

2022-08-02 19:28:56 1076 1

原创 MTK Camera自定义Vendor Tag(一):理论

MTK Camera自定义Vendor Tag

2022-07-30 11:46:34 1568 4

原创 MTK平台Camera Dump Buffer处理

MTK平台如何Dump Buffer

2022-07-27 14:34:56 1858

原创 Mtk平台录像失败的简单分析

Mtk平台录像失败的简单分析

2022-07-06 11:24:39 1344

原创 MTK平台双击Power打开Camera(一)——SystemUI简单流程

双击Power打开Camera流程

2022-07-04 17:35:47 881

Eclipse 反编译插件

一、下载: 下载插件: jadclips插件网站: http://jadclipse.sourceforge.net/ 下载Jad反编译工具: http://www.kpdus.com/jad.html#download,在该页中找到适合自己操作系统平台的jad下载。下载后解压 二、安装: 三、设置参数: 启动eclipse,打开:Window->Preferences->Java->JadClipse. 1、Path to decompiler,这里设置反编译工具jad的全路径名,比如:%JAVA_HOME%\bin\jad.exe. 2、Directory for temporary files,这里设置临时文件路径。 四、安装完成后,eclipse自动将JadClipse Class File Viewer设置成class文件的缺省打开方式。如果没有默认,可以在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”。设置完成后,双击*.class文件,eclipse将自动反编译。 注: 对于存在源代码的类,它不会强行反编译,也就是说它还是会用eclipse自带的Class File Viewer查看class文件。

2013-03-23

java核心技术

本书介绍了java的核心技术,可以让你真正的成为程序员的书籍,本书适合有一定的java基础的学习者使用,那样看会更方便

2013-03-16

java的项目题目

适合有一定java基础的学习者使用!!通过书中的十五道题目,可以锻炼一下独自开发java项目的能力

2013-03-16

java程序员,上班那点事儿

这是一款程序员必看的一部书籍,书中介绍了程序员应该怎么面试,怎样在以后的工作中排除困难等,本书是完整版,值得大家一看

2013-03-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除