安卓系统传感器的使用

来源:互联网 发布:mac系统截屏快捷键 编辑:程序博客网 时间:2024/06/05 22:56
传感器的使用传感器(英文名称: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. 获取传感器管理器SensorManagersm = (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();    }}
0 0
原创粉丝点击