我需要在我的应用程序中复制股票拨号器的功能 - 当接近传感器检测到手机靠近我的脸时,关闭屏幕,然后在我将手机从我脸上拿开时重新打开。
此线程中有一个部分有效的解决方案。它依赖于一个次优的私有 API,但更糟糕的是,它可以在我测试过的三分之一的设备上运行。我的目标是 Android 4.03 及更高版本,我正在测试 Galaxy S3、Galaxy Nexus 和 Nexus 4。我链接到的解决方案适用于 GN。在 Nexus 4 上,它什么都没有(看到官方的 androidnadroid 拨号器使用相同的代码并且它在那里工作,我觉得特别令人费解。在 S3 上,获取 wakeLock 似乎执行与按下电源按钮相同的操作(锁定手机,从而关闭接近传感器)。
由于调用 powerManager.goToSleep 需要需要手机根目录的权限,因此无法设置屏幕亮度(并且在我的 3 部手机中的任何一部上都无法正常工作 - 我可以改变亮度但永远无法转动屏幕)关闭),唯一的另一种方法似乎是另一个私有 API(setScreenState - 在我的情况下,这意味着 Java 互操作,因为我正在使用 Mono4Android),我想知道 - 有没有办法全面完成这项工作,或者是这只是我们不应该做的事情之一?尽管如此,仍然有很多呼叫应用程序需要这种功能,所以世界上的 Skypes、Vibers & Co. 需要以某种方式解决这个问题,我会很感激一些洞察力,因为我的智慧已经走到了尽头.