欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-07 09:32:50
android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化。当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛。 起着这样作用,androi...

android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化。当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛。

起着这样作用,android是通过一款光照传感器来获取你周围环境亮度的变化。光照传感器一般在手机的顶部的位置。

要在程序中使用这款传感器

(1)首先要获取sensormanager传感器管理器服务:sensormanager sensormanager=(sensormanager)getsystemservice(context.sensor_service);

(2)获取光照传感器:sensor liaghtsensor=sensormanager.getdefaultsensor(sensor.type_light)//sensor.type_light 代表光照传感器

(3)注册和监视光照传感器:

sensormanager.registerlistener(new sensoreventlistener() {
 @override
 public void onsensorchanged(sensorevent event) {
//监视传感器的改变

//accuracy 传感器的精度 通过event.accuracy获取

//values 传感器传回的数值 如event.values[0] 获取光线强度lux

//timestamp 传感器事件发生的时间(以纳秒为单位)
}

 @override
 public void onaccuracychanged(sensor sensor, int accuracy) {
//对传感器精度的改变做出反应
}
 }, sensor, sensormanager.sensor_delay_normal);

一个简单的获取光照传感器光线强度lux的代码:

public class mainactivity extends activity {

  private textview value_tv;

  private sensormanager sensormamager;

  private sensor sensor;

  @override

  protected void oncreate(bundle savedinstancestate) {

    super.oncreate(savedinstancestate);

    setcontentview(r.layout.activity_main);

    value_tv=(textview) findviewbyid(r.id.value_tv);

    //获取sensormanager对象

    sensormamager=(sensormanager) getsystemservice(sensor_service);

    //获取sensor对象

    sensor=sensormamager.getdefaultsensor(sensor.type_light);

    sensormamager.registerlistener(new sensoreventlistener() {

       

      @override

      public void onsensorchanged(sensorevent event) {

         //获取精度 

        float acc = event.accuracy; 

        //获取光线强度 

        float lux = event.values[0];  

        value_tv.settext("acc:"+acc+";"+"lux:"+lux);

      }

       

      @override

      public void onaccuracychanged(sensor sensor, int accuracy) {

        // todo 自动生成的方法存根

      }

    }, sensor, sensormanager.sensor_delay_normal);

  }

} 

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

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

 以上就是对android 传感器 光照传感的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!