您的位置:首页 > 其它

ICS g-sensor,light sensor移植记录

2012-03-22 15:30 344 查看
最近有在移植ICS的sensor,接近传感器主要涉及文件及重要函数移植

1.device/samsung/crespo/libsensors

2.PowerManagerService.java,userActivity()

3.PhoneApp.java,updateProximitySensorMode()

4.Cm3605.c

5.init.rc

G-Sensor主要涉及到的过程

1.首先要了解orientation Sensor设置的入口。

DisplaySettings.java中。

->onPreferenceTreeClick()会启动一个服务。调用PhoneWindowManager.java

在PhoneWindowManager.java中有

SettingsObserver类,会监听settings。当发现状态改变时,会

->updateSettings()->updateOrientationListenerLp()->needSensorRunningLp()(当应用程序禁止旋转时,就不会旋转)

2.当允许开启orientation sensor时。此时,会注册一个MyOrientationListener来监听旋转方向。

在WindowOrientationListener.java中监听java的值。对旋转方向判断。

->onSensorChanged()->onProposedRotationChanged()

3.PhoneWindowManager.java中有MyOrientationListener.onProposedRotationChanged()来监听上面的变化。

->updateRotation(false)

4.WindowManagerService.java中。

->updateRotation()->updateRotationUnchecked()->sendNewConfiguration()

5.ActivityManagerService.java中。

->updateConfiguration()->updateConfigurationLocked()

当操作系统启动后,WindowManagerService.java中ENABLE_SCREEN

->performEnableScreen()->mPolicy.enableScreenAfterBoot()

Light sensor主要涉及文件

framework/base/core/res/res/values/config.xml

<bool name="config_automatic_brightness_available">true</bool>
……
<integer-array name="config_autoBrightnessLevels">
<item>40</item>
<item>300</item>
<item>400</item>
<item>700</item>
</integer-array>
……


<integer-array name="config_autoBrightnessLevels">
<item>50</item>
<item>100</item>
<item>160</item>
<item>200</item>
<item>250</item>
</integer-array>

在framework/base/services/java/com/android/server/PowerManagerService.java

lightSensorChangedLocked()函数中修改

int lcdValue = getAutoBrightnessValue(
(true/*mIsDocked*/ ? value : mHighestLightSensorValue),
mLcdBacklightValues);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: