距离传感器故障(挂断电话屏幕无法唤醒)

最近我的HTC Desire S 挂断电话有时屏幕无法唤醒。查了一下是proximity sensor的问题。当远离sensor是没有中断,就是只有near的中断,没有far的中断。

这个是硬件问题,我又不想换sensor,所以就查了一下代码。


见下面这段,注释写的很明白,会等到用户把手机从头部拿开后才release wakelock。但sensor并不会发出far 的中断,所以会一直等下去,屏就不亮了。

改也很简单,直接改为0。

但这种改法需要有源码,好在CM的ROM也不错,就先用着了。 以后或许可以尝试下反编译或者用反射看看行不行。

PhoneApp

updateProximitySensorMode

                    if (mProximityWakeLock.isHeld()) {
                        if (DBG) Log.d(LOG_TAG, "updateProximitySensorMode: releasing...");
                        // Wait until user has moved the phone away from his head if we are
                        // releasing due to the phone call ending.
                        // Qtherwise, turn screen on immediately
                        int flags = 0;//hnmsky
                            //(screenOnImmediately ? 0 : PowerManager.WAIT_FOR_PROXIMITY_NEGATIVE);
                        mProximityWakeLock.release(flags);


后面这些是调用流程,做个备份。

PowerManagerSevice

releaseWakeLockLocked

        if (isScreenLock(wl.flags)) {
            if ((wl.flags & LOCK_MASK) == PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK) {
                mProximityWakeLockCount--;
                if (mProximityWakeLockCount == 0) {
                    if (mProximitySensorActive &&
                            ((flags & PowerManager.WAIT_FOR_PROXIMITY_NEGATIVE) != 0)) {
                        // wait for proximity sensor to go negative before disabling sensor
                        if (mDebugProximitySensor) {
                            Slog.d(TAG, "waiting for proximity sensor to go negative");
                        }
                    } else {
                        disableProximityLockLocked();
                    }
                }
            }



SensorManager

unregisterListener

sensors_enable_sensor


android_hardware_SensorManager.cpp

sensors_enable_sensor


SensorDevice

activate



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值