Android编程之光线传感器用法详解

本文实例讲述了Android编程之光线传感器用法。分享给大家供大家参考,具体如下:

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(勒克斯)");
    }
  };
}

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

另外,对于一些程序,在改变当前程序屏幕亮度的时候,可以考虑加入光照传感器的判断。

因为大部分这些程序,会出现这样的一个问题,当(在非自动亮度调节模式)设定屏幕亮度为一个值时,再设置为自动亮度调节模式的时候是无效的。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android利用方向传感器获得手机的相对角度实例说明

    1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较短的边需要水平放置,较长的边需要垂直放置. Y轴的方向是从屏幕的左下角开始沿着屏幕的的垂直方向指向屏幕的顶端. 将手机放在桌子上,z轴的方向是从手机指向天空. 2.方向传感器 在方向传感器中values变量的3个值都表示度数,它们的含义如下: values[0]:该值表示方位,也就是手机绕着Z轴旋转的角度.0表示北(North):90表示东(East):180表示南(Sou

  • Android开发中方向传感器定义与用法详解【附指南针实现方法】

    本文实例讲述了Android开发中方向传感器定义与用法.分享给大家供大家参考,具体如下: Android中的方向传感器在生活中是一个很好的应用,典型的例子是指南针的使用,我们先来简单介绍一下传感器中三个参数x,y,z的含义,以一幅图来说明. 补充说明:图中的坐标轴x,y,z和传感器中的X,Y,Z没有任何联系! 如上图所示,绿色部分表示一个手机,带有小圈那一头是手机头部 传感器中的X:如上图所示,规定X正半轴为北,手机头部指向OF方向,此时X的值为0,如果手机头部指向OG方向,此时X值为90,指向

  • Android编程基于距离传感器控制手机屏幕熄灭的方法详解

    本文实例讲述了Android编程基于距离传感器控制手机屏幕熄灭的方法.分享给大家供大家参考,具体如下: 在现实生活中,打电话的时候手机挨着自己的头,屏幕会熄灭,这是为了不让自己的头按到什么手机键~ 这个功能可以使用距离传感器来实现 P-Sensor距离感应器,可以感应手机和人体距离.具体使用用途是在通话过程中打开P-Sensor,那么当手机屏幕贴近用户脸部时,就会自动感应出手机和人体距离是多少.当小于某一个值时,就会熄灭屏幕,不再接收用户触摸屏幕事件,从而有效的防止通话过程中误触摸事件的出现.

  • Android开发中的重力传感器用法实例详解

    本文实例讲述了Android开发中的重力传感器用法.分享给大家供大家参考,具体如下: 重力传感器与方向传感器的开发步骤类似,只要理清了期中的x,y,z的值之后就可以根据他们的变化来进行编程了,首先来看一副图 假设当地的重力加速度值为g 当手机正面朝上的时候,z的值为q,反面朝上的时候,z的值为-g 当手机右侧面朝上的时候,x的值为g,右侧面朝上的时候,x的值为-g 当手机上侧面朝上的时候,y的值为g,右侧面朝上的时候,y的值为-g 了解了重力传感器中X,Y,Z的含义之后下面我们就开始学习如何使用

  • Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】

    本文实例讲述了Android编程使用光线传感器获取光线强弱的方法.分享给大家供大家参考,具体如下: 在Android开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器.通常我们手机的屏幕自动亮度都是用光线传感器来实现的.该传感器在前置摄像头附近,此外,还有一个距离传感器.这里我们主要讲解如何使用Android手机的光线传感器. 下面是我简单封装的一个光线传感器管理类,主要提供了3个方法: 1.start():启动,在获取光照强度前调用. 2.stop():停止,

  • Android重力传感器实现滚动的弹球

    熟知: 什么是传感器: 所谓传感器能够探测如光.热.温度.重力.方向 等等的功能! Android中提供传感器有哪些: 1.  加速度传感器(重力传感器)      2.  陀螺仪传感器      3.  光传感器      5.  恒定磁场传感器      6.  方向传感器      7.  恒定的压力传感器      8.  接近传感器      9.  温度传感器 一. 问题描述 Android中有多达11种传感器,不同的手机设备支持的传感器类型也不尽相同 1. 重力传感器 GV-sen

  • Android编程中光线传感器的调用方法详解

    本文实例讲述了Android编程中光线传感器的调用方法.分享给大家供大家参考,具体如下: 1.activity如果要使用传感器,就必须实现SensorEventListener接口 2.得到传感器管理对象(sensormanager) 3.使用sensormanager.registerlistener 方法注册指定的传感器 4.在sensoreventlistener 接口中的onsensorchanged和onaccuracychanged方法中完成其他具体工作 public class T

  • Android 利用方向传感器实现指南针具体步骤

    step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中  step2:设计应用的UI界面,main.xml 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px"><STRONG><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="htt

  • Android操作系统介绍之11种传感器

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.接下来通过本文给大家介绍Android操作系统介绍之11种传感器. 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. #define SENSOR_TYPE_ACCELEROMETER 1 //加速度 #define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 #define

  • Android编程之方向传感器用法示例

    本文实例讲述了Android编程之方向传感器用法.分享给大家供大家参考,具体如下: /** * 传感器指针Demo * * @description: * @author ldm * @date 2016-4-25 下午5:29:18 */ public class SensorHandActivity extends GraphicsActivity { // 传感器管理对象 private SensorManager mSensorManager; // 传感器类 private Senso

  • Android 传感器--光照传感器详解及使用

    Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化.当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛. 起着这样作用,Android是通过一款光照传感器来获取你周围环境亮度的变化.光照传感器一般在手机的顶部的位置. 要在程序中使用这款传感器 (1)首先要获取SensorManager传感器管理器服务:SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERV

  • android 传感器(OnSensorChanged)使用介绍

    下面是API中定义的几个代表sensor的常量. Int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. 加速度传感器 int TYPE_ALL A constant describing all sensor types. 所有类型 A constant describing all sensor types. int TYPE_GRAVITY A constant describing a grav

随机推荐