本文概述
- 传感器类型
- Android传感器API
【android传感器教程】Android提供了传感器api以与不同类型的传感器一起使用。
文章图片
传感器类型Android支持三种类型的传感器:
1)运动传感器这些用于测量加速力和旋转力以及三个轴。
2)位置传感器这些用于测量设备的物理位置。
3)环境传感器这些用于测量环境变化,例如温度,湿度等。
Android传感器APIAndroid传感器api提供了许多类和接口。传感器api的重要类和接口如下:
1)SensorManager类android.hardware.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) | 更改传感器值时调用。 |
让我们看两个传感器示例。
- 输出x、y和z轴值的传感器示例。这里,我们会看到。
- 一个传感器的例子,改变背景颜色时,设备洗牌。点击更改活动传感器背景色的示例
<
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简单图形示例
- android摄像头教程
- android wifi的例子
- android蓝牙列表配对设备的例子
- Android中的selector
- Android 修改默认输入法
- Android 反编译初探 应用是如何被注入广告的
- Android5.1和Android6.0定时编译项目方法 (转)
- Unity3D 实现简单的语音聊天 [Android版本]