android 气压传感器
我认为最有趣的主题之一是如何在Android中使用Sensor。 如今,我们的智能手机充满了传感器,我们可以用它来控制我们的应用程序。 最常见的传感器是:
全球定位系统 接近传感器 光传感器 温度感应器 气压计传感器 NFC
仅提及其中一些。 在这篇文章中,我们将解释如何获取传感器列表以及如何使用其中一个传感器(即Barometer sensor)。 我们想要创建一个显示当前压力的应用程序:
在Android中使用传感器
当我们开发一个android应用程序时,我们需要一个特定的传感器,以便我们的应用程序可以运行,我们有两种不同的选择:
在AndroidManifest.xml中将其指定为传感器检测传感器列表并检查我们感兴趣的传感器列表是否可用
如果我们在AndroidManifest.xml中指定它,则只需添加以下行:
选择“用户功能”后,我们将:
我们也可以检索传感器列表,我们需要一些代码。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Get the reference to the sensor managersensorManager = (SensorManager) getSystemService(Service.SENSOR_SERVICE);// Get the list of sensor List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);List<Map<String, String>> sensorData = new ArrayList<Map<String,String>>();for (Sensor sensor: sensorList) {Map<String, String> data = new HashMap<String, String>();data.put("name", sensor.getName());data.put("vendor", sensor.getVendor());sensorData.add(data);}}
在第7行,我们获得用于处理传感器的SensorManager的引用,然后在第10行,我们获得传感器列表。 在这种情况下,我们希望智能手机中包含所有传感器,因此我们使用Sensor.TYPE_ALL。 如果只想一次,我们可以过滤列表,使其通过我们要寻找的传感器类型。 例如,如果我们要拥有所有的气压计传感器,则可以使用:
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
有了列表后,我们可以简单地使用ListView和SimpleAdapter来显示它。 结果(在我的智能手机中)是
现在做什么? 我们可以从Sensor类中获取一些信息,例如供应商传感器分辨率,最小和最大范围。 您必须谨记,不同传感器之间的传感器范围会有所不同。 获得列表后,我们可以检查智能手机是否支持我们的传感器。 现在我们有了传感器,我们希望从传感器获取信息。
传感器事件
要从传感器获取信息,有一个简单的方法:注册一个侦听器。 首先,我们必须选择我们感兴趣的传感器,然后注册我们的侦听器。 在我们的案例中,我们对气压计传感器很感兴趣,因此我们有:
// Look for barometer sensorSensorManager snsMgr = (SensorManager) getSystemService(Service.SENSOR_SERVICE);Sensor pS = snsMgr.getDefaultSensor(Sensor.TYPE_PRESSURE);snsMgr.registerListener(this, pS, SensorManager.SENSOR_DELAY_UI);
在第4行,我们注册了侦听器。 请注意,最后一个参数表示当传感器测量的值更改时,我们希望多快收到通知。 有多个值,但请注意,通知速度过快可能会对您的应用产生一些副作用。 要将一个类注册为侦听器,我们只需实现一个接口SensorEventListener例如:
public class PressActivity extends Activity implements SensorEventListener {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {float[] values = event.values;pressView.setText("" + values[0]);}}
在第3行中,我们重写了精度更改时调用的方法。 此参数表示我们从传感器获得的值的置信度。 另一个方法(更有趣)是onSensorChanged,当值更改时将调用它。 在这种情况下,我们只需获取第一个值e即可在TextVIew中显示它。 结果如下所示:
例如,典型的应用程序可以显示压力趋势,以了解太阳是否会避开或我们是否会出现云。
源代码即将发布。
参考:Android传感器教程:来自我们JCG合作伙伴 Francesco Azzola的气压计传感器 ,位于Surviving w / Android博客上。
翻译自: //09/android-sensor-tutorial-barometer-sensor.html
android 气压传感器