手机中的传感器之光线传感器(Android实现)

手机中的光线传感器()实现监听

手机中的传感器:

            手机中的大多数传感器的监听实现相差无几,大多数实现方式以下:
                  1.定义传感器管理器,用于获取传感器类型和注册和取消注册监听器。
                  2.定义传感器,用于获取传感器管理器获取的传感器。
                  3.(注意!!)由于一系列安全问题,最好设置一个按钮取消传感器监听器的注册。

具体布局:

                         1.开始、关闭监听为两个按钮
                   2.即将显示光照强度部分为TextView显示文本


实现后的界面:




具体代码实现:

//     
//  手机光线传感器监听的实现Android版    
//  Created by Scarborough_Coral on 2017/3/3.    
//  Copyright © 2017年 Scarborough_Coral. All rights reserved.    
//   
package com.coral.lightsenor;
//须要导入的包
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.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView showLightPower;//用于显示光照强度的文本视图
    private Button start;//按钮,点击开始监听传感器
    private Button stop;//按钮,点击中止监听传感器
    private SensorManager sensorManager;//传感器管理器,用于获取传感器服务,和选择传感器类型
    private Sensor sensor;//传感器对象,储存光线传感器的数据
    private SensorEventListener sensorEventListener;//传感器事件监听器,用于传感器事件的监听

    /**
     * 函数功能:入口函数
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //获取并设置app布局文件
        setContentView(R.layout.activity_main);
        //初始化控件
        InitWidgets();
        //初始化传感器相关,包含传感器管理器和传感器的设定
        InitSensors();
        //设置按钮点击监听器和传感器事件监听器
        setListener();
    }

    /**
     * 函数功能:初始化传感器相关,包括传感器管理器和传感器类型
     */
    private void InitSensors() {
        sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);//初始化传感器管理器
        sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);//给传感器初始化类型
    }

    /**
     * 函数功能:经过匿名内部类的方式实现按钮和传感器监听器接口,实现按钮和传感器的监听
     */
    private void setListener() {
        sensorEventListener=new SensorEventListener() {
            /**
             * 函数功能:重写传感器参数改变时实现的方法
             * @param event
             */
            @Override
            public void onSensorChanged(SensorEvent event) {
                String showInfo="";//用于存储传感器的光强信息
                showInfo="光照强度:"+event.values[0]+"勒克斯";
                showLightPower.setText(showInfo);//设置TextView的显示光线传感器光强信息
            }

            /**
             * 当传感器参数精度改变时,能够经过本方法实现
             * @param sensor
             * @param accuracy
             */
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        };
        //设置开始监听按钮被点击时实现注册传感器事件监听器
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    sensorManager.registerListener(sensorEventListener,sensor,0);//注册传感器
            }
        });
        //设置关闭监听按钮被点击时实现取消注册传感器事件监听器
        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    sensorManager.unregisterListener(sensorEventListener);
            }
        });
    }

    /**
     * 函数功能:初始化控件
     */
    private void InitWidgets() {
        //获取textview和button的实例
        showLightPower= (TextView) findViewById(R.id.showLightPower);
        start= (Button) findViewById(R.id.startListen);
        stop= (Button) findViewById(R.id.stopListen);
    }
}
此次博客文章就到这里了,请多多支持……