android - 当用户将手机放在他/她的耳朵附近时,在我的 Activity 中禁用 UI?

标签 android

当用户将手机放在耳朵附近时,如何禁用我的 Activity UI?

我知道有一个 API 可以在有传感器测试接近度时得到回调:

http://developer.android.com/reference/android/hardware/Sensor.html

http://developer.android.com/reference/android/hardware/SensorManager.html

但是我怎样才能禁用 UI(比如用户的脸不会被误认为是 UI 触摸),然后当手机离用户的脸更远时重新启用?

谢谢。

最佳答案

你可以看看 PhoneApp InCallScreen 来自 AOSP 的源代码,了解如何做你想做的事情的一些想法。以下是要点:

  • 在支持它的设备上,AOSP 代码利用隐藏的 PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK根据需要关闭触摸屏(参见 PhoneApp.updateProximitySensorMode() 方法)。
  • 在其他设备上,方法是使用“触摸锁定”叠加层(简单地显示/隐藏覆盖整个屏幕的 View ,这将消耗触摸事件)。参见 initTouchLock() , enableTouchLock()onTouch() InCallScreen 中的方法源代码(主要处理 mTouchLockOverlay 的代码)。

我建议使用覆盖方法,因为它适用于所有设备。

根据您的 UI 层次结构,与切换普通 UI 的触摸和可见性状态相比,使用覆盖可能更好,因为它更易于实现,并且您可以非常轻松地添加一些视觉反馈(也许是调光/动画?)在显示叠加层时。

关于android - 当用户将手机放在他/她的耳朵附近时,在我的 Activity 中禁用 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002849/

相关文章:

java - 我正在使用线程,当我离开 fragment 时,应用程序关闭

安卓布局。权重、 ScrollView 、 ListView

android - 如何在 Kotlin 中使用 "android.text.format.DateFormat"?

android - EditText maxLines 不起作用 - 用户仍然可以输入比设置更多的行

android - 下载用于将文本转换为 QR 图像的 api

java - URLEncode处理后如何加载图像

java - 以编程方式更改启动 Activity 样式

java - 安卓安装异常 : EOF Google MapsView "Hello Maps"

android - CustomView 的这种技巧安全吗?

android - 在 Android 设备中使用 sklearn