900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 传感器(7)加速传感器 重力传感器 邻近传感器 光线传感器 综合示例

传感器(7)加速传感器 重力传感器 邻近传感器 光线传感器 综合示例

时间:2021-12-28 02:16:38

相关推荐

传感器(7)加速传感器 重力传感器 邻近传感器 光线传感器 综合示例

综合示例,包含://加速传感器 //重力传感器//邻近传感器//光线传感器

1 import android.app.Activity; 2 import android.hardware.Sensor; 3 import android.hardware.SensorEvent; 4 import android.hardware.SensorEventListener; 5 import android.hardware.SensorManager; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.widget.TextView; 9 10 public class MotionSensorActivity extends Activity 11//第1步, 实现传感器事件接口,其中的两个onSensorChanged和onAccuracyChanged 12implements SensorEventListener { 13 14//第2步, 准备相关成员变量 15private TextView tvAccelerometer;//用于显示结果 16private SensorManager mSensorManager;//管理motion senser 17private float gravity_X,gravity_Y,gravity_Z;//重力传感器返回的数据 分别代表x,y,z轴 18 19@Override 20protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_motion_sensor); 23 24 tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); 2526//第3步, 得到SensorManager 27 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 28 29} 30//一般在当前窗口显示时老注意传感器广播接收器 31protected void onResume() { 32 super.onResume(); 3334//第4步, 注册相关传感器 35 //加速传感器 36 Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 37 //registerListener 第三个参数 有4个值,敏感度也不一样,0-3,低最敏感.SENSOR_DELAY_UI是2 38 mSensorManager.registerListener(this,accel,SensorManager.SENSOR_DELAY_UI); 3940 //重力传感器 41 Sensor gravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 42 mSensorManager.registerListener(this,gravity,SensorManager.SENSOR_DELAY_FASTEST); 4344 //邻近传感器 45 Sensor proximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 46 mSensorManager.registerListener(this,proximity,SensorManager.SENSOR_DELAY_UI); 4748 //光线传感器 49 Sensor light = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 50 mSensorManager.registerListener(this,light,SensorManager.SENSOR_DELAY_UI); 51} 52//实现传感器事件接口 传感器感触到精确度变化. 53@Override 54public void onAccuracyChanged(Sensor sensor, int accuracy) { 55 56} 57//实现传感器事件接口 传感器感触到数据变化. 58@Override 59public void onSensorChanged(SensorEvent event) { 60//第5步, 处理传回来的数据 61 switch (event.sensor.getType()) { 62 case Sensor.TYPE_ACCELEROMETER: //加速度传感器 63 final float alpha = 0.8f; 64 gravity_X = alpha * gravity_X + (1 - alpha) * event.values[0]; 65 gravity_Y = alpha * gravity_Y + (1 - alpha) * event.values[1]; 66 gravity_Z = alpha * gravity_Z + (1 - alpha) * event.values[2]; 67 68 String accelerometer = "加速度\n" 69 + "X:" + (event.values[0] - gravity_X) + "\n" 70 + "Y:" + (event.values[1] - gravity_Y) + "\n" 71 + "Z:" + (event.values[2] - gravity_Z); 72 73 Log.d("z", String.valueOf(event.values[2] - gravity_Z)); 74 tvAccelerometer.setText(accelerometer); 75 76 break; 77 case Sensor.TYPE_GRAVITY://重力传感器 78 gravity_X = event.values[0]; 79 gravity_Y = event.values[1]; 80 gravity_Z = event.values[2]; 81 break; 82 case Sensor.TYPE_PROXIMITY://邻近传感器 83 setTitle(String.valueOf(event.values[0])); 84 break; 85 case Sensor.TYPE_LIGHT: 86 tvAccelerometer.append("\n"+event.values[0]+"\n"); 87 break; 88 default: 89 break; 90 } 91 92} 93//一般在当前窗口关闭时取消注册. 94//第6步, 取消注册 95@Override 96protected void onPause() { 97 super.onPause(); 98 mSensorManager.unregisterListener(this); 99}100 }

import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.util.Log;import android.widget.TextView;

public class MotionSensorActivity extends Activity//第1步, 实现传感器事件接口,其中的两个onSensorChanged和onAccuracyChangedimplements SensorEventListener {

//第2步, 准备相关成员变量private TextView tvAccelerometer;//用于显示结果private SensorManager mSensorManager;//管理motion senserprivate float gravity_X,gravity_Y,gravity_Z;//重力传感器返回的数据 分别代表x,y,z轴

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_motion_sensor);

tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);//第3步, 得到SensorManagermSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

}//一般在当前窗口显示时老注意传感器广播接收器protected void onResume() {super.onResume();//第4步, 注册相关传感器//加速传感器Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//registerListener 第三个参数 有4个值,敏感度也不一样,0-3,低最敏感.SENSOR_DELAY_UI是2mSensorManager.registerListener(this,accel,SensorManager.SENSOR_DELAY_UI);//重力传感器Sensor gravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);mSensorManager.registerListener(this,gravity,SensorManager.SENSOR_DELAY_FASTEST);//邻近传感器Sensor proximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);mSensorManager.registerListener(this,proximity,SensorManager.SENSOR_DELAY_UI);//光线传感器Sensor light = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);mSensorManager.registerListener(this,light,SensorManager.SENSOR_DELAY_UI);}//实现传感器事件接口 传感器感触到精确度变化.@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {

}//实现传感器事件接口 传感器感触到数据变化.@Overridepublic void onSensorChanged(SensorEvent event) {//第5步, 处理传回来的数据switch (event.sensor.getType()) {case Sensor.TYPE_ACCELEROMETER: //加速度传感器final float alpha = 0.8f;gravity_X = alpha * gravity_X + (1 - alpha) * event.values[0];gravity_Y = alpha * gravity_Y + (1 - alpha) * event.values[1];gravity_Z = alpha * gravity_Z + (1 - alpha) * event.values[2];

String accelerometer = "加速度\n"+ "X:" + (event.values[0] - gravity_X) + "\n"+ "Y:" + (event.values[1] - gravity_Y) + "\n"+ "Z:" + (event.values[2] - gravity_Z);Log.d("z", String.valueOf(event.values[2] - gravity_Z));tvAccelerometer.setText(accelerometer);break;case Sensor.TYPE_GRAVITY://重力传感器gravity_X = event.values[0];gravity_Y = event.values[1];gravity_Z = event.values[2];break;case Sensor.TYPE_PROXIMITY://邻近传感器setTitle(String.valueOf(event.values[0]));break;case Sensor.TYPE_LIGHT:tvAccelerometer.append("\n"+event.values[0]+"\n");break;default:break;}

}//一般在当前窗口关闭时取消注册.//第6步, 取消注册@Overrideprotected void onPause() {super.onPause();mSensorManager.unregisterListener(this);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。