传感器(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 12 implements SensorEventListener { 13 14 //第2步, 準備相關成員變量 15 private TextView tvAccelerometer;//用于顯示結果 16 private SensorManager mSensorManager;//管理motion senser 17 private float gravity_X,gravity_Y,gravity_Z;//重力傳感器返回的數據 分別代表x,y,z軸 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_motion_sensor); 23 24 tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); 25 26 //第3步, 得到SensorManager 27 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 28 29 } 30 //一般在當前窗口顯示時老注意傳感器廣播接收器 31 protected void onResume() { 32 super.onResume(); 33 34 //第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); 39 40 //重力傳感器 41 Sensor gravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 42 mSensorManager.registerListener(this,gravity,SensorManager.SENSOR_DELAY_FASTEST); 43 44 //鄰近傳感器 45 Sensor proximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 46 mSensorManager.registerListener(this,proximity,SensorManager.SENSOR_DELAY_UI); 47 48 //光線傳感器 49 Sensor light = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 50 mSensorManager.registerListener(this,light,SensorManager.SENSOR_DELAY_UI); 51 } 52 //實現傳感器事件接口 傳感器感觸到精確度變化. 53 @Override 54 public void onAccuracyChanged(Sensor sensor, int accuracy) { 55 56 } 57 //實現傳感器事件接口 傳感器感觸到數據變化. 58 @Override 59 public 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 96 protected 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);}}
轉載于:https://www.cnblogs.com/sjjg/p/4780439.html
總結
以上是生活随笔為你收集整理的传感器(7)加速传感器,重力传感器,邻近传感器,光线传感器 综合示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 传输媒体 光缆,软考网络管理
- 下一篇: bzoj 1718: [Usaco20