关闭

Android之光线传感器

标签: android传感器
4181人阅读 评论(0) 收藏 举报
分类:

Android手机自带光线传感器,通常我们手机的屏幕自动亮度都是用光线传感器来实现的。该传感器在前置摄像头附近,此外,还有一个距离传感器。本文主要讲解如何使用Android手机的光线传感器。


获得感应器服务

Android开发中要使用光线传感器,需要先获得系统传感器服务Context.SENSOR_SERVICE,获得方法如下:

SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

获得光线传感器

SensorManager是系统传感器服务,是系统所有传感器的管理器。通过它,我们获得制定类型的传感器,获得光线传感器的方法如下:

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

代码中Sensor.TYPE_LIGHT是指光线传感器。
Sensor中还有许多其他的传感器,这里暂不讨论。


编写监听器

有了sensor对象之后,我们需要对该感应器进行监听,使用 SensorEventListener 接口,主要有onSensorChanged()和onAccuracyChanged()这两个方法,代码如下:

SensorEventListener listener = new SensorEventListener() {

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

    @Override
    public void onSensorChanged(SensorEvent event) {
        //当传感器监测到的数值发生变化时
    }

};

注册监听器

接下来我们还需要调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效,registerListener()方法包含三个参数:SensorEventListener实例,Sensor的实例和传感器输出信息更新速率。

传感器输出信息更新速率有:

  • SENSOR_DELAY_UI
  • SENSOR_DELAY_NORMAL
  • SENSOR_DELAY_GAME
  • SENSOR_DELAY_FASTEST

总共四种值可选,它们的更新速率是依次递增的。

注册SensorEventListener的代码如下:

senserManager.registerListener(listener, senser, SensorManager.SENSOR_ DELAY_NORMAL);

注销监听器

最后,当程序退出或传感器使用完毕时,一定要调用unregisterListener()方法将使用的资源释放掉,如下所示:

sensorManager.unregisterListener(listener);


DEMO

package com.test.sensor.light;  

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


public class MainActivity extends Activity {  
    //感应器管理器
    private SensorManager sensorManager;  
    //光线亮度
    private TextView light;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        //当前Activity的内容是一个TextView
        light = new TextView(this);  
        setContentView(light); 
        //获得感应器服务 
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);  
        //获得光线感应器
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);  
        //注册监听器
        sensorManager.registerListener(listener, sensor, SensorManager. SENSOR_DELAY_NORMAL);  
    }  

    //Activity被销毁
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //注销监听器
        if (sensorManager != null) {  
            sensorManager.unregisterListener(listener);  
        }  
    }  

    //感应器事件监听器
    private SensorEventListener listener = new SensorEventListener() {  

        //当感应器精度发生变化
        @Override  
        public void onAccuracyChanged(Sensor sensor, int accuracy) {  
        }  

        //当传感器监测到的数值发生变化时
        @Override  
        public void onSensorChanged(SensorEvent event) {  
            // values数组中第一个值就是当前的光照强度  
            float value = event.values[0];  
            light.setText("当前亮度 " + value + " lx(勒克斯)");  
        }  

    };  

}  

备注:开发使用光线传感器无需声明权限

2
0
查看评论

Android 传感器开发详解

> 转载请标明出处: [http://blog.csdn.net/airsaid/article/details/52902299](http://blog.csdn.net/airsaid/article/details/52902299) > 本文出自:[周游的博客](http:/...
  • Airsaid
  • Airsaid
  • 2016-10-23 15:59
  • 10843

安卓开发中光线传感器的运用步骤

public class MainActivity extends AppCompatActivity implements SensorEventListener{ private TextView tv_content; private Sensor sensor_light; ...
  • ytfunnysite
  • ytfunnysite
  • 2017-03-15 17:37
  • 718

Android传感器 - 光强度传感器

Android手机内部添加了光照强度传感器,可以实时监测手机周边环境的亮度,根据周边环境的亮度可以自动调节屏幕的亮度。下面通过一个实例看一下如何监测周边环境的亮度值。主布局文件代码如下:    android:layout_width="match_...
  • yayun0516
  • yayun0516
  • 2017-03-18 11:21
  • 1317

[Android实例] Android 深入解析光传感器(一)

[Android实例] Android 深入解析光传感器(一) http://www.eoeandroid.com/thread-79733-1-1.html   (1)我介绍的是光线感应器(Light Sensor),所谓的光线感应器就是可以感应光线强度的一个...
  • JOHNSONHUANG
  • JOHNSONHUANG
  • 2012-05-05 11:24
  • 2620

Android 光传感器Light

光传感器Light        光传感器主要用来检测手机周围光的强度,与其他传感器不同的是,该传感器只读取一个数值即手机周围光的强度,且单位为勒克斯(lux)。      &#...
  • zhangfei2018
  • zhangfei2018
  • 2013-08-30 10:39
  • 981

Android 传感器概述

Android官方文档大多数Android设备都内置有测量运动,方向和各种环境情况的传感器,这些传感器能够提供多种高精度的原始数据。如果你想监控三维的设备运动或位置,或者是监控周围环境的变化,这些数据都是非常有用的。举个例子,我们玩一款游戏,它可能需要读取中立传感器的数据,以便去推断我们复杂的姿势和...
  • moonshine2016
  • moonshine2016
  • 2016-09-13 12:13
  • 1303

Spring 架构篇——Spring Boot 整合 Solr

Solr 是基于 Lucene 的全文检索服务器,可配置、可扩展,并对索引和搜索性能进行了优化。Solr 多用于电子商务网站、门户、论坛这类网站的站内搜索。Solr 可以独立运行在 Jetty、Tomcat 等这些 Servlet 容器中。Solr 索引的实现非常简单,用 POST 方法去向 Sol...
  • smartbetter
  • smartbetter
  • 2016-11-15 16:49
  • 16842

Android光线传感器获取光线强弱。LightSensorManager封装类

Android传感器的使用,通过光线传感器获取光线强度
  • afei__
  • afei__
  • 2016-07-26 17:47
  • 4458

Android移动开发-Android设备利用光线传感器监测光照强度的实现

光线传感器也叫感光器,它是借助于手机前置上端的一个小孔感知当前所在环境的光照强度,一旦遮住了那个小孔,光线传感器监测到的光线强度立马降低。比如生活中当手机用户打电话或接电话时手机前置上端靠近耳机时,光线传感器监测到的光线强度降低,从而进行手机息屏状态,以防止用户的耳朵或脸接触到手机屏幕而勿触挂断手机...
  • fukaimei
  • fukaimei
  • 2017-10-21 19:35
  • 575

Android之光线传感器

原文地址:http://blog.csdn.net/ccslff/article/details/51540085 Android手机自带光线传感器,通常我们手机的屏幕自动亮度都是用光线传感器来实现的。该传感器在前置摄像头附近,此外,还有一个距离传感器。本文主要讲解如何使用Andr...
  • wjw_java
  • wjw_java
  • 2017-03-10 17:32
  • 367
    个人资料
    • 访问:18617次
    • 积分:394
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论