光线传感器也叫感光器,它是借助于手机前置上端的一个小孔感知当前所在环境的光照强度,一旦遮住了那个小孔,光线传感器监测到的光线强度立马降低。比如生活中当手机用户打电话或接电话时手机前置上端靠近耳机时,光线传感器监测到的光线强度降低,从而进行手机息屏状态,以防止用户的耳朵或脸接触到手机屏幕而勿触挂断手机电话的操作,当用户打完或接完电话时离开耳朵时光线传感器监测到的光线强度变强时手机屏幕就自动亮屏。再比如当用户在晚上调用后置摄像头进行拍照时,光线传感器监测到的光线强度较低时,摄像头就会自动调用开启闪光灯。总之,光线传感器往往用于感应手机正面的光线强弱,从而自动调节屏幕的亮度。

  • layout/activity_main.xml界面布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="10dp"><CheckBox
        android:id="@+id/ck_bright"android:layout_width="match_parent"android:layout_height="50dp"android:button="@null"android:checked="false"android:drawableLeft="@drawable/ck_status_selector"android:padding="10dp"android:text="亮度自动调节"android:textColor="#ff000000"android:textSize="18sp" /><TextView
        android:id="@+id/tv_light"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="left"android:padding="10dp"android:text="看看光线变化了没有"android:textColor="#ff000000"android:textSize="18sp" /></LinearLayout>
  • MainActivity.java逻辑代码如下:
package com.fukaimei.lightsensor;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.support.v7.app.AppCompatActivity;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;import com.fukaimei.lightsensor.util.SwitchUtil;
import com.fukaimei.lightsensor.util.Utils;public class MainActivity extends AppCompatActivity implementsOnCheckedChangeListener, SensorEventListener {private CheckBox ck_bright;private TextView tv_light;private SensorManager mSensroMgr;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ck_bright = (CheckBox) findViewById(R.id.ck_bright);if (SwitchUtil.getAutoBrightStatus(this) == true) {ck_bright.setChecked(true);}ck_bright.setOnCheckedChangeListener(this);tv_light = (TextView) findViewById(R.id.tv_light);mSensroMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);}@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (buttonView.getId() == R.id.ck_bright) {SwitchUtil.setAutoBrightStatus(this, isChecked);}}@Overrideprotected void onPause() {super.onPause();mSensroMgr.unregisterListener(this);}@Overrideprotected void onResume() {super.onResume();mSensroMgr.registerListener(this, mSensroMgr.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_NORMAL);}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() == Sensor.TYPE_LIGHT) {float light_strength = event.values[0];tv_light.setText(Utils.getNowDateTimeFormat() + "\n当前光线强度为" + light_strength);}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {//当传感器精度改变时回调该方法,一般无需处理}}
  • Demo程序运行效果界面截图如下:


Demo程序源码下载地址一(GitHub)
Demo程序源码下载地址二(Gitee)

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

  1. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  2. android studio真机测试不生成apk,Android应用开发Android Studio编译出来的APK无法安装如何解决?...

    本文将带你了解Android应用开发Android Studio编译出来的APK无法安装如何解决?,希望本文对大家学Android有所帮助. Android Studio编译出来的APK无法安装如何解 ...

  3. android判断软件是否已root权限,Android应用开发Android 判断手机是否有root权限方法...

    本文将带你了解Android应用开发Android 判断手机是否有root权限方法,希望本文对大家学Android有所帮助. root权限是安卓最高的操作权限,俗称superuser,简称su,一般来 ...

  4. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  5. android落下动画,Android应用开发android 购物车小球掉落动画

    本文将带你了解Android应用开发android 购物车小球掉落动画,希望本文对大家学Android有所帮助. 先贴效果图 对自定义View小红球的绘制 public class BallView ...

  6. android baseactivity,Android应用开发Android通过BaseActivity获取到当前启动的Activity名称...

    本文将带你了解Android应用开发Android通过BaseActivity获取到当前启动的Activity名称,希望本文对大家学Android有所帮助. < 在BaseActivity的on ...

  7. android view 点击变暗,Android应用开发Android ImageView点击变暗效果

    本文将带你了解Android应用开发Android ImageView点击变暗效果,希望本文对大家学Android有所帮助. < 自定义ImageView: 在ImageView中setPres ...

  8. android 防止重复启动app,Android应用开发Android 防止启动页面(SplashActivity)被多次启动...

    本文将带你了解Android应用开发Android 防止启动页面(SplashActivity)被多次启动,希望本文对大家学Android有所帮助. 话不多说直接上代码: @Override prot ...

  9. android studio获取数字签名,Android应用开发Android Studio数字签名打包apk图文步骤教程...

    本文将带你了解Android应用开发Android Studio数字签名打包apk图文步骤教程,希望本文对大家学Android有所帮助. Android Studio数字签名打包release版apk ...

  10. android修改用户名和密码错误,Android应用开发Android Studio 修改用户名、密码、URL等操作教程...

    本文将带你了解Android应用开发Android Studio 修改用户名.密码.URL等操作教程,希望本文对大家学Android有所帮助. 修改用户名.密码: 在AndroidStudio的ter ...

最新文章

  1. Eclipse上GIT插件EGIT使用手册之八_解决推送冲突
  2. php 反序列化漏洞简介
  3. centos下fail2ban安装与配置详解
  4. 这 8 篇文章告诉你:未来的软件研发是怎样的?
  5. python基础教程:多态、多继承、函数重写、迭代器详细教程
  6. python创建与遍历List二维列表
  7. php7垃圾回收机制l_php5和php7垃圾回收上的区别是什么?
  8. 《Outlier Analysis》书籍
  9. [转]Http Message结构学习总结
  10. python基础语法篇——输入与输出
  11. HTML+CSS+JavaScript网页特效源代码(复制代码保存即可使用)
  12. 基于数码相机拍照图像分析的植被覆盖率(FVC)计算软件
  13. cuda安装及百度云链接
  14. 记一次阿里电话面试(java技术岗)
  15. 工程项目常见风险及其22种最佳管理实践
  16. 拿它们练Python爬虫,是在法律边缘试探吗?爬虫圈香饽饽之视频网站的评论区采集
  17. java 获取est时间_javascript-使用Java脚本将时区从EST转换为IST
  18. 图形界面介绍Create Placement Blockage
  19. 陈坤儿子的最新相关信息
  20. malloc与free函数原型

热门文章

  1. Python用selenium爬取高德地图商家数据
  2. 在淘宝做前端的这三年 — 第二年
  3. 什么是微内核,看这一篇就够了
  4. UE4开发五:人物模型和摄像机
  5. python多人聊天程序程序代码_Python使用django框架实现多人在线匿名聊天的小程序...
  6. 需要记住的的资料网址
  7. Bugku之秋名山老司机
  8. 自定义 kubectl-plugin
  9. php容器概念,PHP容器——Pimple运行流程浅析
  10. 中企海外周报 | 哈弗F7x性能版在俄罗斯上市;徐工首家海外银行落户巴西