安卓系统传感器的使用

    xiaoxiao2021-12-14  37

    传感器的使用 传感器(英文名称: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只能检测轴向的线性动作。但陀螺仪则可以对转动、偏转的动作做很好的测量,这样就可以精确分析判断出使用者的实际动作。而后根据动作,可以对手机做相应的操作 代码 //1. 获取传感器管理器SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE); //2. 获取某个传感器的引用,注册监听 Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT); listener = new MyListnener(); sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL); //3.在监听器的回调事件中进行处理 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(); //给传感器设定一个监听器 /* * 1.监听器 * */ // 一秒钟大约采样多少次 sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } //定义一个监听器 private class MyListnener implements SensorEventListener{ //当传感器数据变化的调用的方法 @Override// 传感器的事件 public void onSensorChanged(SensorEvent event) { //设置光传感器的光线强弱 float light = event.values[0]; // values 传感器的值 代表光线的强弱 System.out.println("光线强度:"+light); } //当传感器精度发生变化的时候调用的方法 @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } @Override protected void onDestroy() { //取消监听器 sm.unregisterListener(listener); listener = null; //将监听器置为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) {//event 当前的事件 //values[0]: 地磁北极和手机y轴的夹角, 0=北, 90=东, 180=南, 270=西 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(); } }
    转载请注明原文地址: https://ju.6miu.com/read-971768.html

    最新回复(0)