通话期间禁用接近传感器

37

我不小心把手机摔了,接近传感器看起来不再可靠。它一直返回“Near”。问题是,在通话期间显示屏会关闭,我就无法使用数字键盘输入密码或者会议呼叫,甚至无法挂断电话。我在辅助功能设置中找到了电源按钮断开选项,并现在使用它。

我试图创建一个应用程序,当接听电话时尝试获得完整的唤醒锁,希望它可以保持显示屏亮着。

  • 创建了一个广播接收器,在电话状态变为OFFHOOK时调用服务

  • 服务获取完整唤醒锁,只有当电话状态为IDLE时才释放

但是,接近传感器仍然会关闭显示屏。我使用isHeld()方法确保已获得锁。我使用PowerManager的isScreenOn()方法,在通话期间即使屏幕关闭它也返回true。我尝试每两秒循环一次获取唤醒锁进行测试,但显示屏仍无法亮起。

我正在使用Nexus 5 Android 4.4.4版本

有人能提供覆盖接近传感器行为的想法吗?需要root权限也可以。

谢谢!


从 Google Play 商店获取应用程序“硬件禁用器”,请访问 https://play.google.com/store/apps/details?id=com.hatcyl.android.Hardware_Disabler&hl=en - my doubts
你的wakelock中是否设置了ACQUIRE_CAUSES_WAKEUP标志?可能是因为在获取唤醒之前屏幕变暗了。根据文档,它说在屏幕关闭后获取wakelock不会打开屏幕(只会保持打开状态,如果已经打开),除非设置了该标志。 - initramfs
是的,我也设置了这个标志。 - jobinbasani
1
上面“我的疑问”用户提到的应用程序com.hatcyl.android.Hardware_Disabler对我很有帮助,它可以简单地阻止我的Sony Xperia Z设备“/sys/bus/i2c/drivers/apds9702”,现在打电话时屏幕将保持开启状态(上面发布的链接无效,我通过谷歌搜索该名称找到了一个apk -> 大小=99105字节 md5sum=cfdf0eaec8c259a8c43ce3cfcb3771f2)。 - kaefert
1
我在辅助功能设置中找到了电源按钮断开选项,并现在使用它。谢谢!我遇到了完全相同的问题,虽然看起来你的解决方案对于Android 5.x无效,但对我来说已经足够好用了。 - Tobias J
9个回答

8
尝试了很多方法后,包括:
  • 手机应用程序菜单选项(我的手机没有禁用选项)
  • Proximity Screen Off Lite(无效)
  • 使用传感器禁用程序的Xposed框架(在手机重新启动或应用更新后就无效了)
  • Macrodroid宏程序(由于某种原因,Macrodroid在我的手机上无法运行)
  • 在传感器前面放一些锡箔纸?(我不知道当时在想什么)
这是我的解决方案: 我认为你不能让它更糟,所以我打开了我的手机并从主板上彻底删除了距离传感器。传感器测试应用现在显示“no_value”,而不是先前的“距离:0”,我的屏幕不再在拨号后变黑。请注意,我只能确认在CM MOD 5.1.1上的三星I8190 Galaxy S III mini上有效。下面是我拆下的设备图片: prox sensor 我使用了SMD焊接站的热风枪、镊子和助焊剂将其拆下。但是,也可以使用锋利的手工刀。

3
终极解决方案加一。 - maxisam
3
更新:我现在正在运行 LineageOS,接近传感器没有问题。唯一的异常是我可能有几次面部拨号。是 bug 还是功能?由你决定。 - DarkPh03n1X

7
我在我的Nexus 6上(Android Marshmallow系统)遇到了接近传感器的问题,因为屏幕在该区域破碎了。当我尝试禁用接近传感器时,没有提出的解决方案/第三方应用程序起作用。对我有用的是使用Proximity Sensor Reset/Repair校准传感器。您必须按照应用程序中的说明(覆盖传感器并将其揭开),然后重新启动手机。尽管我的传感器不再位于玻璃后面,但在覆盖/未覆盖时仍显示略微不同的结果,重新校准就可以解决问题。
我尝试了什么但没有起作用?Proximity Screen Off Lite,Macrodroid和KinScreen。
如果还没有起作用,我会尝试[XPOSED] Sensor Disabler,但它需要您进行root并拥有Xposed Framework,所以我很高兴我找到了更简单的方法。

1
现在通过接近度重新校准,一切都正常了。谢谢! - user3589887
1
谢谢,校准在搭载Android 5的Nexus 4上正常工作。之前尝试过Xposed,但它们与Lolipop不兼容,所以这个解决方案真是救了我一天。 - hoonzis

6

我在这里找到了解决方案 基本上使用一个叫做Proximity Screen Off Lite的应用程序, 并按照以下方式设置:

  1. 屏幕开/关模式 勾选“覆盖并保持打开屏幕” 超时时间:1秒 勾选“禁用意外锁定” 超时时间:4秒

  2. 所有设置 勾选“横向禁用” 勾选“屏幕开启时锁定手机”

  3. [高级]配置传感器 选择传感器:接近传感器 传感器被覆盖时的值:0 传感器未被覆盖时的值:1


Nexus5 Android 6不工作。接近传感器始终显示0.0。是否需要进行硬件维修? - Ricardo stands with Ukraine

5

我已经研究了一段时间,并测试和编写了应用程序。

如果您在“设置→电话→使用近距离传感器”中没有选项,则似乎唯一的选择是在已root的设备上禁用或修改其设置。

还要考虑,如果插入耳机,屏幕将保持开启:D


@WaiHaLee,您可以编辑答案并添加任何您想要的内容。 - ncomputers
@gio,您可以使用上面的链接进入Google Play,复制并粘贴描述,然后编辑答案评判! - ncomputers

3
如果你有LineageOS 7.1.2(并且已经root),可以尝试来自XDA的此解决方案
在尝试了所有在这里提出的解决方案后,我的Nexus 4(mako)都没有解决问题,我在XDA上找到了一个。这个方案可以解决Android拨号器的问题(但不适用于其他应用程序)。基本上,我下载了一个重新编译过的Dialer.apk文件,它简单地忽略了距离传感器,与原生拨号器应用程序以相同的方式工作。
将/system/priv-app/Dialer/Dialer.apk重命名为其他名称,然后将下载的文件放入该文件夹中。重启后,我需要手动安装新的拨号器(只需点击即可)。因此现在原始应用已被替换,通话应该由这个新应用程序处理。
[缺点:新的接听电话方式是下拉状态栏并点击“Answer”(或“Dismiss”),常规滑块功能丢失。另外,每次Android更新到新版本时,您都需要重复此操作。]

或者“如果你真的很绝望,先安装Lineage然后……” :) - rogerdpack
你有重新编译的Dialer.apk的链接吗? - Meyer Denney

2

很遗憾我的距离传感器也无法正常工作(始终返回0.0厘米)。我找到了一种方法,但不是很简单:您需要root您的手机,安装XPOSED框架和Sensor Disabler (https://play.google.com/store/apps/details?id=com.mrchandler.disableprox)。您可以在该应用程序中模拟距离传感器返回值(例如始终返回2.0厘米)。然后,在通话期间您的显示屏将始终处于开启状态。


1

如果在/system文件夹中存在以下行,则编辑build.prop并更改其值;如果不存在,请添加此行并保存。(设备必须已经root)

ro.lge.proximity.delay=25
mot.proximity.delay=25  

这会改变延迟时间,对吗?在通话期间,我正在尝试禁用传感器。 - jobinbasani
是的,这是改变延迟。我将延迟设置为1,所以到目前为止我没有任何问题。 - Meysam
在我的运行Pacman ROM Android 4.4的Xperia Z上,导致了一个启动循环。 - kaefert
2
这在我的Nexus 6 (shamu) Android 6.0.1上没有起作用。 - Robin Winslow
1 是什么意思?25 是什么意思? - Michael Altfield

1
接近传感器
拨号盘
*#*#7378423#*#*

1) 服务测试 - (如果存在)

2) 接近开关

3) 对传感器进行测试(位于手机顶部标志旁边)

4) 如果可以工作,则可以一直保持接近开关,它会一直发出哔哔声并消耗大量电池电量

或者

4) 不起作用-然后只需清洁手机屏幕或屏幕保护层,并清除阻塞传感器的屏幕即可。 它的效果很好。

从技术上讲,这不是任何软件解决方案,而是硬件解决方案。


4
我最终采用的方法是使用压缩气喷壶,向传感器内喷气。这样清除了杂质,手机恢复正常。 - jobinbasani

1

以下是一些来自网络的答案:"修复"传感器(将屏幕胶水固定on,或用酒精清洁,或通过耳机插孔吹气,轻敲一下,清洁屏幕等)。

在“电话”应用程序中进行调整(经过一些查找),以禁用近距离传感器使用。 我的手机中没有这样的设置,我也找不到Proximity Screen Off Litemacrodroid也无法使用。

另一个选择:对您的手机进行root,并删除some files

From root explorer or similar program delete these folders and file
/data/system/sensors
/data/misc/sensors
/persist/sensors/sns.reg

如果您真的非常绝望,我想可以尝试使用完全不同的拨号系统,例如TextNow或Google Hangouts拨号器:|

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接