티스토리 뷰

 

센서의 정보 얻어오기

센서의 이름 getName()

센서의 타입 getType()

센서의 최대 범위 값 getMaximumRange()

센서의 제조사 getVendor()

센서의 버전 getVersion()

 

센서 매개변수

중력센서 TYPE_GRAVITY 

방향센서 TYPE_ORIENTATION

조도센서 TYPE_LIGHT

자기장센서 TYPE_MAGNETIC_FIELD

압력센서 TYPE_PRESURE

자이로스코프센서 TYPE_GYROSCOPE

가속도센서 TYPE_ACCELEROMETER

 

센서 반응속도

최대한 빠르게 SENSOR_DELAY_FASTEST

게임속도 SENSOR_DELAY_GAME

UI 인터페이스 적합 SENSOR_DELAY_UI

가장 느린 속도 SENSOR_DELAY_NORMAL

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/img_light"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/light_off"/>

    <Button
        android:id="@+id/btn_bright"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="밝게"/>

    <Button
        android:id="@+id/btn_dark"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="어둡게"/>



</LinearLayout>

 

package com.jw.lightapp;

import androidx.appcompat.app.AppCompatActivity;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements SensorEventListener {

    SensorManager sm;
    Sensor sensor;
    ImageView imagelight;
    Button btn_bright, btn_dark;
    float brightValue = 0.5f;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imagelight = findViewById(R.id.img_light);
        btn_bright = findViewById(R.id.btn_bright);
        btn_dark = findViewById(R.id.btn_dark);

        sm = (SensorManager)getSystemService(SENSOR_SERVICE);
        sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
        //센서 매개변수
        //중력센서 TYPE_GRAVITY
        //방향센서 TYPE_ORIENTATION
        //조도센서 TYPE_LIGHT
        //자기장센서 TYPE_MAGNETIC_FIELD
        //압력센서 TYPE_PRESURE
        //자이로스코프센서 TYPE_GYROSCOPE
        //가속도센서 TYPE_ACCELEROMETER

        btn_dark.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                brightValue -= 0.1f;

                if(brightValue <= 0 ) brightValue = 0;
                if(brightValue >= 1 ) brightValue = 1.0f;

                WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
                layoutParams.screenBrightness = brightValue;
                getWindow().setAttributes(layoutParams);
            }
        });

        btn_bright.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                brightValue += 0.1f;

                if(brightValue <= 0 ) brightValue = 0;
                if(brightValue >= 1 ) brightValue = 1.0f;

                WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
                layoutParams.screenBrightness = brightValue;
                getWindow().setAttributes(layoutParams);
            }
        });




    }

    @Override
    protected void onResume(){
        super.onResume();
        sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
        //센서 반응속도
        //최대한 빠르게 SENSOR_DELAY_FASTEST
        //게임속도 SENSOR_DELAY_GAME
        //UI 인터페이스 적합 SENSOR_DELAY_UI
        //가장 느린 속도 SENSOR_DELAY_NORMAL
    }

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

    protected void onDestroy(){
        super.onDestroy();
    }



    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() == Sensor.TYPE_LIGHT){
            int lux = (int) event.values[0];

            if(lux < 70){
                imagelight.setImageResource(R.drawable.light_on);
            }else{
                imagelight.setImageResource(R.drawable.light_off);
            }
        }

    }

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


    }
}

 

 

댓글
최근에 달린 댓글
글 보관함
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글