Android传感器概述(七)

处理不同的传感器器配置

Android不给设备指定标准的传感器配置,这就意味着制造商能够把任何他们想要的传感器配置包含到他们的Android设备中。因此,设备能够包含配置广泛的各种传感器。例如,摩托罗拉的Xoom有一个压力传感器,但是三星的Nexus S却没有。同样Xoom和Nexus S都有陀螺仪,但是HTC的Nexus One却没有。如果你的应用程序依赖特殊类型的传感器,就必须确保传感器存在于设备上,以保证你的应用程序能够成功的运行。有两种方法来确定给定的传感器是否存在于设备上:

1. 在运行时检测传感器,并根据检测结果来启用或禁用应用程序相关的功能;

2. 使用Google Play来过滤目标设备上是否有指定的传感器配置。

在运行时检测传感器

如果你的应用程序使用的是一种特殊的传感器类型,但是不想依赖它,你能够使用传感器框架在运行时来检测该传感器,然后决定禁止或启用应用程序对应的功能。例如,一个导航应用程序可能要使用温度传感器、压力传感器、GPS传感器和地磁场传感器来显示温度、气压、位置和罗盘方位。如果设备没有压力传感器,你能够使用传感器框架在运行时来检测压力传感器的存在性,然后禁用显示压力的应用程序的UI部分。例如,下列代码用来检查设备上是否有压力传感器:

private SensorManager mSensorManager;

  ...

  mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

  if (mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) != null){

  // Success! There's a pressure sensor.

  }

  else {

  // Failure! No pressure sensor.

  }

使用Google Play来过滤目标指定的传感器配置

如果你要把应用程序发布到Google Play上,那么在你的应用程序清单文件中能够使用<uses-feature>元素来过滤那些没有相应传感器配置的设备。<uses-feature>元素有几个硬件描述符,它们会让你基于指定传感器的存在性来过滤应用程序。你能够列出的传感器包括:加速度度、气压、罗盘(地磁场)、陀螺仪、亮度以及距离。下例应用程序清单,会阻止应用程序安装到没有加速度传感器的设备上:

<uses-feature android:name="android.hardware.sensor.accelerometer"

              android:required="true" />

如果你把这个元素添加到应用程序的清单中,在Google Play上,用户只会在有加速度传感器的设备看到你的应用程序。

如果你的应用程序完全依赖一种特定的传感器,那么就应该把描述设置成:android:required=”true”。如果你的应用程序只有某些功能使用该传感器,而在没有传感器时还要依然运行,你应该在<uses-feature>元素中列出该传感器,但要把描述符设置为:android:required=”false”。这样有助于即使在没有指定传感器的设备上也能安装你的应用程序。这也是项目管理的最佳实践,它有助于你跟踪应用程序功能的使用情况。要记住,如果你的应用程序使用一种特殊的传感器,但在没有传感器时还要依然运行,那么应该在运行时检测传感器,并根据检测的结果来禁止或启用应用程序相应的功能。

你可能感兴趣的:(android,框架,Google,service,项目管理,HTC)