본문 바로가기
Android

[Android] Light Sensor 라이트 센서 (조도 측정)

by bryan.oh 2019. 8. 11.
반응형

Android Sensor

Light Sensor 사용하기

 

갤럭시 폰의 전면(얼굴) 카메라 옆에 있는 조도(밝기) 센서를 이용해서 현재 조도를 알아오는 방법입니다.

일단 Manifast에 아래와 같이 추가.

<uses-feature android:name="android.hardware.sensor.light" android:required="true"/>

 

사용하려는 class (Activity, Fragment..) 의 전역변수로 추가

private SensorManager sensorManager;
private Sensor lightSensor;
private String light = "";

여기서 String light 는 현재 조도를 받아와서 표시하기 위한 변수입니다. 

 

그리고 초기화하는 메소드 안에 아래 소스를 입력합니다.

    sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
    lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    if( lightSensor == null )
        showToast("No Light Sensor Found!");}

초기화 메소드라면, 

예를들어 Fragment 는 onViewCreated,  Activity 는 onCreate 

 

onResume에

@Override
public void onResume() {
    super.onResume();
    sensorManager.registerListener(this, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

 

Class 에 implement

public class SomeFragment extends Fragment implements SensorEventListener {

 

그리고 SensorEventListener 의 메소드를 implement

@Override
public void onSensorChanged(SensorEvent event) {
    if( event.sensor.getType() == Sensor.TYPE_LIGHT){
        light = String.valueOf(event.values[0]);
    }
}

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

}

 

이렇게 끝입니다. 해당 Activity 나 Fragment를 실행하면 

onSensorChanged 가 계속 발생하면서 light 변수에 조도 값이 들어옵니다.

0이상의 값이 들어옵니다.

 

참고로 보통 사무실 환경이 300~500정도 됩니다.

 

2019/11/24 - [Android] - 글 작성자의 앱 - 로또버스

 

글 작성자의 앱 - 로또버스

초스피드 로또 당첨 확인 1초에 15개 이상 당첨확인! 이번 글은 제가 만든 안드로이드 앱에 대한 글입니다. 기존의 대부분 앱은 하나씩 QR을 스캔하고 동행 복권 사이트로 넘깁니다. 이렇게.... 귀찮죠..? QR 맞..

hello-bryan.tistory.com

 

728x90
반응형

댓글