Android4.4KK下遮盖p-sensor拨打电话无法自动灭屏的问题分析

本文分析了Android 4.4KK在MT6732平台下,遮盖P-Sensor拨打电话时90%情况下无法自动灭屏的问题。问题源于Sensor数据流中的中断服务程序在LIGHT sensor打开时未分上下段执行,导致数据顺序错误。解决方案是将中断服务程序的下半部处理移到固定频率的timer中执行。
摘要由CSDN通过智能技术生成


一、问题现象

先遮盖P-Sensor,然后拨打电话,90%的情况下屏幕无法自动关闭背光显示。关闭Settings-》Display-》Brightness-》Auto,然后再执行以上操作则100%能够正常关闭背光显示。


Platform:MT6732

Android版本:4.4KK

BuildType:user

系统软件版本:SWA1H+UM

系统RAM:1GB


参考机行为:参考机1正常,参考机2正常


二、MTK平台Android的Sensor流程框架


整个流程框架主要分为6个部分:

1,APPLICATIONS

这里主要是指Dialer/PhoneApp,他们是用户直接操作的接口,他们使用了P-Sensor来进行亮屏和灭屏的操作(通过向PowerManagerService请求PROXIMITY_SCREEN_OFF_WAKE_LOCK实现)。

2, FRAMEWORKS(JAVA)

主要包括两部分:

一、PowerManager/PowerManagerService,其作用是提供PROXIMITY_SCREEN_OFF_WAKE_LOCK,并与SensorManager/SystemSensorManager交互。

二、SensorManager/ SystemSensorManager,其作用是提供JAVA层控制sensor的接口,并透过JNI与Native的SensorManager通信。

3,FRAMEWORKS(JNI)

这里主要是是指SensorManager JNI,其主要作用是提供接口给SensorManager/SystemSensorManager与NatvieLibs的SensorManager通信。

4,FRAMEWORKS(LIBS/NativeService)

主要包括两部分:

一、SensorManager/SensorEventQueue,其属于NativeLibs,主要作用是为SensorManager JNI提供接口,请求SensorService创建SensorEventQueue(基于Binder的IPC),从而完成SensorEvent从SensorService到SensorManager JNI的传输。

二、Sensorservice/sensordevice,其属于NativeService,主要作用是为上层提供接口createSensorEventConnection,与Sensor的HAL层进行交互,控制sensor以及获取sensorEvent。

5,HAL

这里主要是指Nusensors和Hwmsen,其主要功能是为SensorService提供接口,与Sensor的Driver层进行交互,从而达到控制Sensor和获取SensorEvent的目的。

6,Driver

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值