android-传感器的简单运用

本文详细介绍如何在Android设备上使用光传感器。从获取传感器管理器实例开始,到注册监听器并处理光照强度变化的过程。通过具体代码示例展示了如何读取当前环境光线水平。

使用传感器的步骤:

1、获得传感器管理器实例

sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
2、获取传感器类型

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3、编辑传感器监听器
SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        //当传感器监测到的数值发生变化时就会调用
        //SensorEvent参数,这个参数里又包含了一个values数组,所有传感器输出的信息都是存放在这里的。
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //当传感器的精度发生变化时就会调用

    }
};
4、调用SensorManagerregisterListener()方法来注册SensorEventListener才能使其生效
//第一个参数就是SensorEventListener的实例,
//第二个参数是Sensor的实例,这两个参数我们在前面都已经成功得到了。
//第三个参数是用于表示传感器输出信息的更新速率

sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
下面是对光传感器的简单应用代码:
package com.adolph.lightsensortest;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    //系统传感器管理器
    private SensorManager sensorManager;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)findViewById(R.id.light_level);
        //获取一个实例
        sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        //getDefaultSensor()获取传感器类型
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

        //调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效
        //第一个参数就是SensorEventListener的实例,
        //第二个参数是Sensor的实例,这两个参数我们在前面都已经成功得到了。
        //第三个参数是用于表示传感器输出信息的更新速率
        sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
    }

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

    SensorEventListener listener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            //当传感器监测到的数值发生变化时就会调用
            //SensorEvent参数,这个参数里又包含了一个values数组,所有传感器输出的信息都是存放在这里的。

            float value = event.values[0];
            textView.setText("Current light level is " + value + " lx");
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            //当传感器的精度发生变化时就会调用

        }
    };
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值