android传感器教程

本文概述

  • 传感器类型
  • Android传感器API
传感器可用于监视三维设备的移动或设备环境的变化。
【android传感器教程】Android提供了传感器api以与不同类型的传感器一起使用。
android传感器教程

文章图片
传感器类型Android支持三种类型的传感器:
1)运动传感器这些用于测量加速力和旋转力以及三个轴。
2)位置传感器这些用于测量设备的物理位置。
3)环境传感器这些用于测量环境变化,例如温度,湿度等。
Android传感器APIAndroid传感器api提供了许多类和接口。传感器api的重要类和接口如下:
1)SensorManager类android.hardware.SensorManager类提供以下方法:
  • 获取传感器实例,
  • 访问并列出传感器,
  • 注册和取消注册传感器侦听器等
你可以通过调用方法getSystemService()并在其中传递SENSOR_SERVICE常量来获取SensorManager的实例。
SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);

2)传感器等级android.hardware.Sensor类提供了获取传感器信息的方法,例如传感器名称,传感器类型,传感器分辨率,传感器类型等。
3)SensorEvent类其实例由系统创建。它提供有关传感器的信息。
4)SensorEventListener接口当传感器值(x,y和z)改变或传感器精度改变时,它提供了两种回调方法来获取信息。
公共和抽象方法描述
void onAccuracyChanged(Sensor sensor, int accuracy)更改传感器精度时调用。
void onSensorChanged(SensorEvent event)更改传感器值时调用。
Android简单传感器应用程序示例
让我们看两个传感器示例。
  1. 输出x、y和z轴值的传感器示例。这里,我们会看到。
  2. 一个传感器的例子,改变背景颜色时,设备洗牌。点击更改活动传感器背景色的示例
activity_main.xml该文件中只有一个textview。
< RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >< TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="92dp" android:layout_marginTop="114dp" android:text="TextView" />< /RelativeLayout>

活动类让我们编写代码来打印x轴,y轴和z轴的值。
package com.example.sensorsimple; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import android.hardware.SensorManager; import android.hardware.SensorEventListener; import android.hardware.SensorEvent; import android.hardware.Sensor; import java.util.List; public class MainActivity extends Activity { SensorManager sm = null; TextView textView1 = null; List list; SensorEventListener sel = new SensorEventListener(){ public void onAccuracyChanged(Sensor sensor, int accuracy) {} public void onSensorChanged(SensorEvent event) { float[] values = event.values; textView1.setText("x: "+values[0]+"\ny: "+values[1]+"\nz: "+values[2]); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* Get a SensorManager instance */ sm = (SensorManager)getSystemService(SENSOR_SERVICE); textView1 = (TextView)findViewById(R.id.textView1); list = sm.getSensorList(Sensor.TYPE_ACCELEROMETER); if(list.size()>0){ sm.registerListener(sel, (Sensor) list.get(0), SensorManager.SENSOR_DELAY_NORMAL); }else{ Toast.makeText(getBaseContext(), "Error: No Accelerometer.", Toast.LENGTH_LONG).show(); } } @Override protected void onStop() { if(list.size()>0){ sm.unregisterListener(sel); } super.onStop(); } }

输出:
android传感器教程

文章图片

    推荐阅读