为什么总是希望用户点击触摸屏上的按钮? 通过使用当今中端Android手机上可用的一些硬件传感器,您可以创建能够提供更引人入胜的用户体验的应用程序。
传感器框架是Android SDK的一部分,可让您以轻松,一致的方式从大多数传感器(无论是硬件还是软件)读取原始数据。 在本教程中,我将向您展示如何使用该框架从两个非常常见的传感器(接近传感器和陀螺仪)读取数据。 我还将向您介绍旋转矢量传感器,它是一种复合传感器,在大多数情况下,它可以作为陀螺仪的一种更简单,更准确的替代方法。
先决条件
要继续进行,您需要满足以下条件:
- 带有接近传感器和陀螺仪的Android设备
- 最新版本的Android Studio
1.项目设置
如果您的应用无法在没有所需硬件传感器的设备上完全无法使用,则不应将其安装在此类设备上。 您可以通过向Android Studio项目的清单文件中添加一个或多个<uses-feature>
标签来让Google Play和其他应用市场了解您的应用对硬件的要求。
我们将在本教程中创建的应用无法在缺少接近传感器和陀螺仪的设备上运行。 因此,将以下行添加到清单文件中:
<uses-feature
android:name="android.hardware.sensor.proximity"
android:required="true" />
<uses-feature
android:name="android.hardware.sensor.gyroscope"
android:required="true" />
但是请注意,由于<uses-feature>
标记对用户使用其APK文件手动安装您的应用没有帮助,因此您仍必须在使用前以编程方式检查传感器是否可用。
2.使用接近传感器
为了避免意外的触摸事件,电话的触摸屏在靠近耳朵时会变黑。 有没有想过您的手机如何确定它是否靠近您的耳朵? 好吧,它使用了接近传感器,它是一种硬件传感器,可以判断物体是否靠近它。 尽管它们的最大范围通常只有大约5 cm,但一些接近传感器也可以告诉物体有多远。
现在,让我们创建一个活动,每次将手悬停在设备的接近传感器上时,其背景颜色都会变为红色。
步骤1:获取接近传感器
要访问任何硬件传感器,您需要一个SensorManager
对象。 要创建它,请使用Activity
类的getSystemService()
方法并将SENSOR_SERVICE
常量传递给它。
SensorManager sensorManager =
(SensorManager) getSystemService(SENSOR_SERVICE);
现在,您可以通过调用getDefaultSensor()
方法并将TYPE_PROXIMITY
常量传递给它来为接近传感器创建一个Sensor
对象。
Sensor proximitySensor =
sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
在继续之前,请始终确保Sensor
对象不为