传感器的应用/SurfaceView/制作简单的指南针

本文介绍了传感器在安卓设备中的应用,包括光照传感器和加速度传感器的使用步骤。重点讲解如何结合加速度传感器和地磁传感器的数据,通过SurfaceView绘制一个简单的指南针。在SurfaceView中,利用线程和Handler进行通讯,实现在不同方法中进行绘制操作。
摘要由CSDN通过智能技术生成

传感器的简单应用之光照传感器

1.手机上传感器的使用首先需要得到系统服务

private SensorManager mSensorManager;
mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);

2.然后得到在得到服务的类型,即选用哪种传感器

 Sensor sensor=mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

3.需要注册监听传感器的使用

//注册监听事件,第一个参数是SensorEventListener,第二个参数是传感器的类型,第三个参数是刷新频率,
        mSensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);

4.注册监听事件是:

//当传感器精度发生变化时,会调用onAccuracyChanged方法,当传感器检测到的数值发生变化时,就会调用onSensorChanged方法
    //在光照强度监听住event数组中目前只有一个值,即光照强度
    private SensorEventListener listener=new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            float values=event.values[0];
            mTextView.setText("当前关照强度为"+values+"lx");
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

5.最后在onDestory中注销该监听事件,释放资源

 if (mSensorManager!=null){
            mSensorManager.unregisterListener(listener);//注销监听事件,释放资源
        }

传感器的简单应用之加速度传感器

1.加速度传感器的使用基本和光照传感器类似,只不过是将得到的传感器的类型改变为TYPE_ACCELEROMETER

 private SensorManager mSensorManager;
mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Sensor sensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mSensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);

2.在注册监听事件中SensorEvent的values数组存放了3个值

//加速度传感器的监听事件,在values数组中会存放3个值,分别代表手机在X轴Y轴Z轴方向上的加速度信息
    //由于地心引力的存在,初始的加速度的值大约为9.8m/s*s,当手机平放的时候这个加速度是在Z轴方向上的
    //当手机竖起来的时候这个加速度是在Y轴上的,当手机横立起来的时候这个加速度方向是在X轴上的
    private SensorEventListener listener=new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            float xValues=event.values[0];
            float yValues=event.values[1];
            float zValues=event.values[2];
            //模仿微信摇一摇功能
            if(xValues>15.0||yValues>15.0||zValues>15.0){
  //如果某一个方向上的加速度值大于15.0就弹出一个Toast
                Toast.makeText(AccelerometerActivity.this, "恭喜获奖", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

3.最后在onDestroy()方法中注销监听事件,释放资源

 @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mSensorManager!=null){
            mSensorManager.unregisterListener(listener);
        }
    }

传感器的综合引用,加速度传感器和地磁传感器的结合,以及SurfaceView绘画来制作一个简单的指南针

1.首先是得到这两个传感器,然后进行注册监听。

  private SensorManager mSensorManager;
  mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);//得到传感器服务
        Sensor sensorAcc=mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//得到加速度传感器
        Sensor sensorMagn=mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);//得到地磁传感器
        mSensorManager.registerListener(listener,sensorAcc,SensorManager.SENSOR_DELAY_GAME);//注册加速度传感器监听事件
        mSensorManager
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值