传感器的使用
传感器(英文名称:sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出
#define SENSOR_TYPE_ACCELEROMETER 1 //加速度
#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
#define SENSOR_TYPE_ORIENTATION 3 //方向
#define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
#define SENSOR_TYPE_LIGHT 5 //光线感应
#define SENSOR_TYPE_PRESSURE 6 //压力
#define SENSOR_TYPE_TEMPERATURE 7 //温度
#define SENSOR_TYPE_PROXIMITY 8 //接近
#define SENSOR_TYPE_GRAVITY 9 //重力
#define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
陀螺仪又叫角速度传感器,是不同于加速度计(G-sensor)的,他的测量物理量是偏转、倾斜时的转动角速度。在手机上,仅用加速度计没办法测量或重构出完整的3D动作,测不到转动的动作的,G-sensor只能检测轴向的线性动作。但陀螺仪则可以对转动、偏转的动作做很好的测量,这样就可以精确分析判断出使用者的实际动作。而后根据动作,可以对手机做相应的操作
代码
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
listener = new MyListnener();
sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
private class MyListnener implements SensorEventListener{
@Override
public void onSensorChanged(SensorEvent event) {
float light = event.values[0];
System.out.println("光线强度:"+light);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
光传感器
public class MainActivity extends Activity {
SensorManager sm ;
private MyListnener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
listener = new MyListnener();
sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
private class MyListnener implements SensorEventListener{
@Override
public void onSensorChanged(SensorEvent event) {
float light = event.values[0];
System.out.println("光线强度:"+light);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
@Override
protected void onDestroy() {
sm.unregisterListener(listener);
listener = null;
super.onDestroy();
}
}
方向传感器_指南针
public class MainActivity extends Activity {
SensorManager sm ;
private MyListnener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sm.getDefaultSensor(3);
listener = new MyListnener();
sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
private class MyListnener implements SensorEventListener{
@Override
public void onSensorChanged(SensorEvent event) {
int angle = (int) event.values[0];
if(angle>0&&angle<90){
System.out.println("东北");
}else if (angle>90&&angle<180){
System.out.println("东南");
}else if(angle>180&&angle<270){
System.out.println("西南");
}else if(angle>270&&angle<360){
System.out.println("西北");
}else if(angle==0){
System.out.println("北");
}else if(angle==90){
System.out.println("东");
}else if(angle==180){
System.out.println("南");
}else if(angle==270){
System.out.println("西");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
@Override
protected void onDestroy() {
sm.unregisterListener(listener);
listener = null;
super.onDestroy();
}
}