app随着光照强度变化总结

app根据光的强度变化主要是用到光的传感器 和 控制屏幕的亮度 ,


一、光传感器:

       (1)获取传感器的服务:mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

       (2)获取光照传感器:mSensor = mSensorManager

        .getDefaultSensor(Sensor.TYPE_LIGHT);                                                                           
     (3) 注册 和监视光照传感器 mSensorManager.registerListener(listener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);

一、控制屏幕亮度:
    (1) 获取系统亮度
    (2)  设置系统亮度
    (3)  关闭手机自动调节亮度


代码示例:
   MainActivity.class
     

      
package com.boe.sensoractivity;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private SensorManager mSensorManager;
    private Sensor mSensor;
    private TextView mTextView ,mTextView2;
    private LinearLayout ll;
    private float mLux ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView2 = (TextView) findViewById(R.id.text2);
        mTextView = (TextView) findViewById(R.id.text);
        ll = (LinearLayout) findViewById(R.id.ll);

        mSensorManager = (SensorManager)
                getSystemService(Context.SENSOR_SERVICE);
        // 传感器种类-光照传感器
        mSensor = mSensorManager
                .getDefaultSensor(Sensor.TYPE_LIGHT);

        //判断手机是否开启了 自动调节亮度
        if(IsAutoBrightness(MainActivity.this)){
            //关闭手机开启自动调节亮度
           stopAutoBrightness(MainActivity.this);
        }
        //光传感器
        mSensorManager.registerListener(listener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

     // 光传感器监听
    private SensorEventListener listener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {

            if(event.sensor.getType() == Sensor.TYPE_LIGHT){
                  //获取光线强度
                mLux = event.values[0];
                mTextView2.setText("" + getScreenBrightness(MainActivity.this));
                mTextView.setText("当前光照强度为:" + mLux);
                if (mLux <  70){
                  setBrightness(MainActivity.this, 80);  //0最暗,255最亮。
                  mTextView.setTextColor(Color.WHITE);
                  ll.setBackgroundColor(Color.BLACK);

                    mTextView2.setTextColor(Color.WHITE);
              }else if(mLux >70 && mLux <120){
                  setBrightness(MainActivity.this,140);  //0最暗,255最亮。
                  mTextView.setTextColor(Color.BLUE);
                  ll.setBackgroundColor(Color.GRAY);

              }else{
                  setBrightness(MainActivity.this,255);  //0最暗,255最亮。
                  mTextView.setTextColor(Color.BLACK);
                  ll.setBackgroundColor(Color.WHITE);

              }

            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

    @Override
    protected void onResume() {
        super.onResume();


    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mSensorManager != null) {
                 mSensorManager.unregisterListener(listener);
        }


    }

    /**
     * 修改屏幕亮度
     * @param activity
     * @param brightness
     */
     public static  void setBrightness(Activity activity, int brightness){
         WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
         lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
         activity.getWindow().setAttributes(lp);

     }

    /**
     * 获取屏幕亮度
     * @param activity
     * @return
     */
       public static  int getScreenBrightness(Activity activity){
           int nowBrightnessValue = 0;
             ContentResolver resolver = activity.getContentResolver();
             try{
                 nowBrightnessValue = Settings.System.getInt(resolver,Settings.System.SCREEN_BRIGHTNESS);
             }catch (Exception e){
                 e.printStackTrace();
             }

           return  nowBrightnessValue;
       }

    //判断是否开启了自动调节亮度
    public static  boolean IsAutoBrightness(Context context){
        boolean IsAutoBrightness = false ;
        try{
            IsAutoBrightness = Settings.System.getInt(
                    context.getContentResolver(),

                    Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;

        }catch (Exception e){
            e.printStackTrace();
        }

        return  IsAutoBrightness;
    }


    //停止自动亮度调节、
    public static  void stopAutoBrightness(Context context){
        Settings.System.putInt(context.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    }

    //开启自动亮度调节
    public static  void  startAutoBrightness(Context context){
        Settings.System.putInt(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
    }
}


activity_main.xml




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:id="@+id/ll"
    android:orientation="vertical"
    tools:context="com.boe.sensoractivity.MainActivity">

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:text=""
        android:textSize="30sp" />
    <TextView
        android:id="@+id/text2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text=""
        android:layout_weight="1"
        android:textSize="30sp" />
</LinearLayout>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 亮度过高时,自动发送警告信息给用户。 要实现这个功能,我们需要一些硬件和软件组件。 硬件方面,首先我们需要选择适合采集水位和强的传感器。针对水位,可以选择浮球传感器或压力传感器等;针对强,可以选择敏电阻传感器敏二极管传感器等。这些传感器需要与主控板进行连接,并确保能够准确地采集到水位和强的数值。 主控板可以选择Arduino或者树莓派等开发板,通过串口或者I2C等接口与传感器进行通信,并将采集到的数据进行处理和存储。主控板还需要连接到互联网,可以选择使用WiFi或者蓝牙等方式与手机或者WiFi路由器进行通信。 软件方面,我们需要编写一款手机应用程序来接收和显示采集到的数据,并设置控制值和发送警告信息给用户。开发手机应用可以选择使用Android或iOS平台的开发工具,如Android Studio或Xcode。在应用中,我们需要编写代码来与主控板通信,并实时显示水位和强的数值。用户可以根据自己的需求,设置控制值以及触发条件,当水位过低且强过高时,手机应用会自动发送警告信息给用户。 总结起来,要实现采集水位和强并发送到手机应用上显示,需要选择合适的硬件传感器和主控板,连接互联网,编写手机应用程序来与硬件进行通信和显示数据,并设置控制和警告功能。这样用户就能够实时监测水位和强,并及时获取警告信息,保障安全。 ### 回答2: 强过高时,自动触发警报。该系统由水位传感器传感器组成,采集水位值和强数据,并通过无线方式发送到手机app上进行显示和控制。 水位传感器通过测量水中的压力或电阻等变化来获取水位值。它将水位数据转化为电信号,然后通过无线通信模块发送给手机app。手机app接收到数据后将其显示在界面上,用户可以随时了解当前的水位情况。 传感器用于测量线的强度。它可以感知线的变化,并将强数据转化为电信号,然后发送给手机app显示出来。用户可以通过app上的界面实时监测当前的光照强度。 在手机app上,用户可以设置控制值。当水位低于设定的阈值且强高于设定的阈值时,系统将自动触发警报。这可以通过在app上设置警报方式,如声音、震动或消息提醒来实现。 例如,当水位过低时可能意味着水箱快要用尽水源,这时强过高可能表示阳直射导致水的蒸发加快,因此系统会自动触发警报提醒用户及时补充水源。 这种采集水位值和强,并将数据发送到手机app上显示的系统在农田灌溉、水库水位监测等领域具有广泛的应用前景,可以帮助用户实时了解和控制水位和照情况,提高生产效率和资源利用率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值