首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android:在JB上根据接近sendor关闭屏幕

android:在JB上根据接近sendor关闭屏幕
EN

Stack Overflow用户
提问于 2013-01-22 04:15:03
回答 1查看 762关注 0票数 2

我需要在我的应用程序中复制股票拨号器的功能-当接近感应器检测到手机靠近我的脸时,关闭屏幕,并在我将手机从我脸上移开时重新打开它。

this thread中有一个部分有效的解决方案。它依赖于一个私有的API,这是次优的,但更糟糕的是,在我测试过的3台设备中就有1台可以工作。我的目标是安卓4.03及以上版本,我正在测试Galaxy S3,Galaxy Nexus和Nexus4,我链接的解决方案在GN上运行。在Nexus4上,它什么也不做(我发现这一点特别令人费解,因为official androidnadroid dialer使用相同的代码,而且它在那里工作。在S3上,获取wakeLock似乎与按下电源按钮执行相同的操作(锁定电话,从而关闭接近传感器)。

由于调用powerManager.goToSleep需要权限,这是不可能的,设置屏幕亮度似乎是偶然的(而且在我的3部手机上都不能正常工作-我可以改变亮度,但永远不能设法关闭屏幕),唯一的另一种方法似乎是另一个私有API (setScreenState -在我使用Mono4Android的情况下,这意味着Java interop ),我想知道-有什么方法可以全面地完成这件事,或者这只是我们不应该做的事情之一?尽管如此,仍然有很多呼叫应用需要这样的功能,所以世界上的Skypes,Vibers & Co.需要以某种方式解决这个问题,我希望能有一些见解,因为我已经到了我的智慧的尽头。

EN

回答 1

Stack Overflow用户

发布于 2013-01-26 02:52:55

这是我在此期间学到的--不要尝试获取那个特殊的wakeLock,除非呼叫状态不是idle。如果有来电,锁就会起作用,但有一个问题:在谷歌手机上(尝试过GN和G4),即使屏幕关闭,该活动也会保持活动。在我的S3上,一旦我获得了锁,活动就会停止(而不是暂停...停止!)。因此,你需要以某种方式来写你的代码来保持接近传感器处于活动状态(我在onPause之后取消了它的注册,这让我相信它在S3上不工作)-必须保持传感器的停止活动肯定会让事情变得更加困难,但它仍然是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14446460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档