在通话期间禁用接近传感器

Posted

技术标签:

【中文标题】在通话期间禁用接近传感器【英文标题】:Disable Proximity Sensor during call 【发布时间】:2014-09-18 21:25:20 【问题描述】:

我的手机掉了,看起来我的接近传感器不再可靠工作。它一直返回Near。问题是,通话过程中显示屏会关闭,我将无法使用数字键盘输入密码或与另一个通话进行会议,甚至无法断开通话。我在辅助功能设置中找到了电源按钮断开连接选项并立即使用。

我尝试创建一个应用程序,该应用程序会在收到呼叫时尝试获取完整的唤醒锁,希望它能够保持显示屏开启。

创建了一个广播接收器,当手机状态变为 OFFHOOK 时调用服务

服务获取完整的唤醒锁,并仅在手机状态为 IDLE 时释放。

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

我使用的是 Nexus 5 android 版本 4.4.4

任何人都可以提出一个想法来覆盖接近传感器的行为吗?需要 root 的选项也可以。

谢谢!

【问题讨论】:

从 Google Play 商店获取应用 Hardware Disabler 访问play.google.com/store/apps/… 您的唤醒锁中是否设置了ACQUIRE_CAUSES_WAKEUP 标志?可能是在获取唤醒之前屏幕变暗。根据文档,它说除非设置了该标志,否则在屏幕关闭后获取唤醒锁不会打开屏幕(如果它已经打开,它只会保持打开状态)。 是的,我也设置了这个标志 用户“我的疑问”提到的应用程序 com.hatcyl.android.Hardware_Disabler 对我来说成功了 2 cmets,只是阻止了设备“/sys/bus/i2c/drivers/apds9702”它在我的索尼 xperia z 上,现在开始通话将使屏幕保持打开状态(上面发布的链接不起作用,我通过谷歌搜索名称找到了一个 apk -> size=99105bytes md5sum=cfdf0eaec8c259a8c43ce3cfcb3771f2) “我在辅助功能设置中找到了电源按钮断开连接选项,现在就使用它。”...谢谢!我有完全相同的问题,虽然看起来你的解决方案不适用于 Android 5.x,但这对我来说已经足够好了...... 【参考方案1】:

我也遇到了接近传感器的问题(我在我的 Nexus 6、Android Marshmallow 上的那个区域打碎了屏幕),当我尝试禁用接近传感器时,没有任何建议的解决方案/第三方应用程序起作用。对我有用的是使用Proximity Sensor Reset/Repair校准传感器。您必须按照应用程序中的说明(盖住传感器并揭开它),然后重新启动手机。虽然我的传感器不再位于玻璃后面,但在覆盖/未覆盖和重新校准时,它仍然显示出略有不同的结果。

我尝试了什么但没有奏效? Proximity Screen Off Lite、Macrodroid 和 KinScreen。

如果它仍然不起作用,我会尝试什么?[XPOSED] Sensor Disabler,但它需要你有根并且有 Xposed 框架,所以我很高兴我找到了更简单的方法。

【讨论】:

近程重新校准现在一切正常。谢谢! 谢谢,在 Nexus 4 和 Android 5 上校准工作正常。之前尝试过 Xposed,但它们与棒棒糖不兼容,所以这节省了我的时间【参考方案2】:

在尝试了一大堆修复后,包括:

电话应用的菜单选项(我的手机没有禁用选项) Proximity Screen Off Lite(无效) 带传感器禁用器的 Xposed 框架(在手机重新启动前工作 或应用更新) Macrodroid 宏(Macrodroid 有时无法在我的手机上运行 原因) 在它前面放一些锡纸?(我不知道我在想什么)

这是我的解决方法: 我想你不能再把它弄坏了,所以我打开手机,把接近传感器从主板上全部拆下来。传感器测试器应用程序现在显示“no_value”,它用于提供“Distance: 0”,并且我的屏幕在拨号后不再变黑。请注意,我只能在配备 CM MOD 5.1.1 的三星 I8190 Galaxy S III mini 上确认这一点。这是我删除的设备的图片: 我已经使用 SMD 焊台的 400 度热风枪、一些镊子和助焊剂将其移除。但是一把锋利的爱好刀也可能有用。

【讨论】:

加一为终极解决方案 更新:我现在运行 LineageOS,接近传感器没有问题。唯一的例外是我可能已经拨打了几次。错误或功能?由你决定。【参考方案3】:

我找到了我的解决方案here。 基本上使用一个名为Proximity Screen Off Lite的应用程序 并设置如下:

    屏幕开/关模式 勾选“覆盖并按住以打开屏幕” 超时:1 秒 勾选“禁用意外锁” 超时:4 秒

    所有设置 选中“在 Lanscape 中禁用” 勾选“在屏幕上锁定手机”

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

【讨论】:

不适用于 Nexus5 Android 6。接近传感器始终显示 0.0。假设需要硬件维修?【参考方案4】:

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

如果您在Settings → Phone → Use proximity sensor 中没有选项,那么唯一的选择似乎是在有根设备中禁用或修改其设置。

还要考虑,如果您插入耳机,屏幕将保持打开状态:D

【讨论】:

@WaiHaLee 您可以编辑答案并添加您想要的任何内容。 @gio 你可以使用上面的链接进入google play,复制并粘贴描述,然后编辑答案判断!【参考方案5】:

如果您有 LineageOS 7.1.2(并且有 root),请尝试来自 XDA 的 this 解决方案。


在尝试了这里提出的所有解决方案后,其中没有一个适用于我的 Nexus 4 (mako),我在 XDA 上找到了一个解决了 Android 拨号器问题的解决方案(但不适用于其他应用程序)。基本上,我下载了 Dialer.apk 文件的重新编译版本,它只是忽略了接近传感器,其行为方式与股票拨号器应用程序相同。

将 /system/priv-app/Dialer/Dialer.apk 重命名为某个名称,然后将下载的文件放入该文件夹。重新启动后,我必须手动安装新的拨号程序(只需单击它)。所以现在原来的应用被替换了,调用应该由这个新的来处理。

[缺点:接听电话的新方法是拉下状态栏并单击“接听”(或“关闭”),通常的滑块不见了。此外,每次您的 Android 更新到较新版本时,您都需要重复此操作。]

【讨论】:

或者“如果你真的绝望了,先安装 lineage 然后......” :) 你有那个重新编译的 Dialer.apk 的链接吗?【参考方案6】:

很遗憾,我的接近传感器也不起作用(总是返回 0.0 厘米)。我找到了方法,但并不容易:你需要 root 手机,安装 XPOSED 框架和 Sensor Disabler (https://play.google.com/store/apps/details?id=com.mrchandler.disableprox)。您可以在应用程序中模拟接近传感器返回值。 (例如,总是返回 2.0 厘米)。那么您的显示屏将在通话期间始终开启。

【讨论】:

【参考方案7】:

接近传感器 拨号

*#*#7378423#*#*

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

2) 接近开关

3) 传感器测试(在手机徽标(顶部)旁边)

4) 是的,如果工作正常,那么您可以永远保持开启和接近开关,这会一直发出哔哔声并消耗大量电池

4) 不,它不起作用 - 然后只需清洁手机屏幕或屏幕保护罩,并从传感器清除阻塞的屏幕。它很有魅力。

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

【讨论】:

最后一个解决方案是我最终的解决方案 - 使用压缩气体除尘器并喷洒到传感器中。这清除了碎片,手机开始正常工作。【参考方案8】:

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

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

【讨论】:

这改变了延迟,对吧?我正在尝试在通话期间禁用传感器。 是的,它的更改延迟。我在我的设备中将此延迟设置为 1,所以我还没有任何问题。 在我的运行 pacman rom android 4.4 的 xperia z 上导致启动循环 这对我在 Nexus 6 (shamu) Android 6.0.1 上不起作用。 1 是什么意思? 25 是什么意思?【参考方案9】:

来自互联网的更多答案:“修复”传感器(将屏幕背面粘上on 更多,或者用酒精清洁它,或者用通过耳机插孔送来的空气吹掉它,点击它,清洁屏幕,等等)。

在“手机”应用中调整(经过一些发现)设置以禁用接近传感器。我找不到这样的设置。 Proximity Screen Off Lite 也不起作用,macrodroid 也不起作用。

另一种选择: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 dialer :|

【讨论】:

以上是关于在通话期间禁用接近传感器的主要内容,如果未能解决你的问题,请参考以下文章

在 Unity 中触发接近传感器时出现问题

如何检测接近传感器?

覆盖接近传感器时,音频单元增加渲染回调 inNumberFrames

如何在 iOS 开发中以编程方式使用接近传感器?

iPhone 屏幕睡眠 - 内置接近传感器

接近传感器精度