안드로이드 스튜디오

Remake: 안드로이드 스튜디오 환경센서 모니터링

coding art 2020. 4. 6. 14:06
728x90

 

 

 

밝기를 lux 단위로 측정하는 조도 룩스, 대기압 밀리바, 섭씨온도, 상대습도 센서를 포함하는 4개의 스마트폰 환경 센서의 값을 읽어서 출력해 보도록 하자.

주의해야 할 사항은 10년 이상된 구형폰 노트모델에서는 아래의 모든 환경 센서 값들이 출력 되지만 최근에 출시된 A31 폰이나 Quntum Jump 모델에서는 대기압력, 온도, 습도항들이 지원되지 않는다는 점에 유의하자.

 

환경센서 모니터링을 위한 안드로이드 코드 구조는 MainActivity activity_main.xml 로 간단하게 이루어진다. 스마트폰 화면에서 TextView를 사용해서 모니터링 값 수치를 출력하도록 한다.

 

 

MainActivity 라이브러리를 살펴보자. hardware.Sensor에 의해서 4개의 환경센서를 포함 총 9가지 종류의 센서를 지원한다. 센서로부터 데이터를 센싱하기 위해서 센서 별로 타이밍과 정밀도가 다르지만 SensorManager가 특정한 센서를 지정하게 되면 SensorEvent 가 발생함에 따라 SensorEventListner가 가동되면서 Accuracy 변동이 체크됨과 아울러 onSensorChanged 에 의해 변동되는 센서 값을 읽게 된다.

 

 

다음의 코드는 총9개의 센서 중 온도센서 하나만을 대상으로 클라스 SensorManager가 인스턴스를 생성하는 과정을 보여준다센서 수에 관계없이 단 한번 SENSOR_SERVICE를 실행한 후 TYPE_AMBIENT_TEMPERATURE 센서를 지정하는 과정이다. 센서 수가 늘어남에 따라 TYPE_∙∙∙ 실행문은 추가되어야 하며 비슷한 코드구조가 병렬적으로 들어오게 된다.

 

SensorManger에 의한 개별 센서 지정에 따라 onAccuracyChanged method 와 동시에 onSensorChanged callback methodOverride 되어야 한다. onAccuracyChanged도 필수적이므로 빼면 안된다센서 수가 늘어남에 따라 해당 if 문이 else if 로 병렬적으로 확장할 필요가 있다. 센서 값은 온도, 조명, 대기압, 습도의 경우 values[0]에 값이 저장되며 가속도나 자이로 및 자기장 값은 3차원 벡터이므로 value[1]value[2]까지 사용된다.

첨부된 코드에서는 환경센서 4개 값을 포함 총9개 센서의 모든 값들이 출력된다.

 

SensorValues.zip
0.14MB

환경센서 4개값 출력

SensorTemp.zip
0.14MB

온도값만 출력

 

 

SensorTemp.zip
0.14MB
SensorValues.zip
0.14MB
TempHumdity.zip
0.14MB