三星S4距离感应器失效怎么办?
我的手机黑屏后无法自动点亮屏幕了,怎么办?要如何解决呢?
0
楼主你好,感应器是通过测量距离、返回数值来命令手机黑屏或点亮的。理论上距离感应器测量返回的数值是0——255,即毫无遮挡的理想数值是0,全部遮挡返回数值255。此刻我简单的猜测其原理,三星设定了一个临界数值,例如45:
1、 当数值低于45时(0——45),认为屏幕附近没有遮挡,此刻屏幕远离面部,于是屏幕点亮。
2、 当数值高于45时(46——255),认为屏幕附近有遮挡,此刻屏幕靠近面部,于是屏幕熄灭。
在手机使用一段时间后,因为油污,灰尘等原因,使得感应器被污物部分遮挡,于是感应器变得只能测到51——255(假定)的范围。因为51>45,所以屏幕一旦熄灭就再也不会点亮。
此时我们只需提高这个三星设定的临界数值(例如将45改为58),使之处在感应器能测到的范围(51——255)中,即将屏幕点亮的范围扩大,就能简单、无损,彻底的,通过设置参数来解决问题。
【解决办法】
步骤1:手机端安装超级终端或者手机连接adb,并且具有root权限。
步骤2:打开adb shell ,输入命令:
su回车
echo空格0空格>空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
echo空格1空格>空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
如果没有返回任何错误信息,则继续
步骤3:用手完全遮挡距离传感器
输入
cat空格/sys/devices/virtual/sensors/proximity_sensor/state一只手完全遮挡距离传感器,一只手回车
返回 255或其他数,无所谓
步骤4:把手拿开再次输入上面命令
返回51(我的是23),也可能是其他数据,只要小于上次数据就ok,记下这个数
步骤5:输入
cat空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
返回0,60,44三组数字,记下0,也就是第一组(我返回的第一组居然是45,可见感应器的问题)
步骤6:将步骤4和步骤5记下的数字相加,51+0=51(我的是23+45=68),将51(我的是68)转为16进制数结果为33(我转换为44),如果你觉得51不靠谱也可以适当增大,我取的是55,十六进制就是37(我最终取的是47)。
步骤7:输入
echo空格-en空格$'\x37'空格>空格/efs/prox_cal回车
\x后面是你计算出的十六进制数字(我最终取的是47),注意en前面有一个“-”
继续输入
chown空格system:system空格/efs/prox_cal回车
chmod空格644空格/efs/prox_cal回车
sync回车
reboot回车
等待重启完成,再试试距离传感器,是不是好了。
1、 当数值低于45时(0——45),认为屏幕附近没有遮挡,此刻屏幕远离面部,于是屏幕点亮。
2、 当数值高于45时(46——255),认为屏幕附近有遮挡,此刻屏幕靠近面部,于是屏幕熄灭。
在手机使用一段时间后,因为油污,灰尘等原因,使得感应器被污物部分遮挡,于是感应器变得只能测到51——255(假定)的范围。因为51>45,所以屏幕一旦熄灭就再也不会点亮。
此时我们只需提高这个三星设定的临界数值(例如将45改为58),使之处在感应器能测到的范围(51——255)中,即将屏幕点亮的范围扩大,就能简单、无损,彻底的,通过设置参数来解决问题。
【解决办法】
步骤1:手机端安装超级终端或者手机连接adb,并且具有root权限。
步骤2:打开adb shell ,输入命令:
su回车
echo空格0空格>空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
echo空格1空格>空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
如果没有返回任何错误信息,则继续
步骤3:用手完全遮挡距离传感器
输入
cat空格/sys/devices/virtual/sensors/proximity_sensor/state一只手完全遮挡距离传感器,一只手回车
返回 255或其他数,无所谓
步骤4:把手拿开再次输入上面命令
返回51(我的是23),也可能是其他数据,只要小于上次数据就ok,记下这个数
步骤5:输入
cat空格/sys/devices/virtual/sensors/proximity_sensor/prox_cal回车
返回0,60,44三组数字,记下0,也就是第一组(我返回的第一组居然是45,可见感应器的问题)
步骤6:将步骤4和步骤5记下的数字相加,51+0=51(我的是23+45=68),将51(我的是68)转为16进制数结果为33(我转换为44),如果你觉得51不靠谱也可以适当增大,我取的是55,十六进制就是37(我最终取的是47)。
步骤7:输入
echo空格-en空格$'\x37'空格>空格/efs/prox_cal回车
\x后面是你计算出的十六进制数字(我最终取的是47),注意en前面有一个“-”
继续输入
chown空格system:system空格/efs/prox_cal回车
chmod空格644空格/efs/prox_cal回车
sync回车
reboot回车
等待重启完成,再试试距离传感器,是不是好了。



