안드로이드 스튜디오

6.3 가속도센서 Shake Color Change 안드로이드 스마트폰 프로젝트

coding art 2020. 5. 30. 18:25
728x90

스마트 폰을 갑작스럽게 흔드는 가속도 값을 센싱하여 스마트 폰 화면 색상을 바꾸는 앱 코드를 작성해 보자.

activity_main.xml에서 스마트폰 화면 레이아웃을 살펴보자. 화면 상단에 30sp 폰트 크기로 Shake to switch color를 텍스트 출력한다.

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

다음의 코드는 가속도 센서를 대상으로 클라스 SensorManager가 인스턴스를 생성하는 과정dl. 첫 시작 스마트 폰 컬러는 시안 색상이며 SENSOR_SERVICE를 실행한 후 TYPE_ACCELEROMETER 센서가 지정되었으면 이벤트 발생 확인 후 getAccelerometer(event)에 의해 값을 읽어 오는 과정이다.

이벤트 마다 값(values)을 측정한 다음 중력 가속도 즉 9.80 m/sec2을 사용하여 normalize 한다. Math.sqrt 함수를 사용하는데 이는 반드시 더블로 선언되어야 한다. 실제로 흔들기 전의 제곱근 가속도 값을 출력을 보면 0.98`0.99 수준이며 흔들 경우 1.4 G를 상회하니까 색상이 변하겠지만 make.toast에 의한 출력 값을 보면 1.0을 조금 상회하는데 이는 순간적인 값을 캐치하여 출력하지 못하는 듯하다.

첨부 파일을 다운받아 압축을 해제하여 AndroidStudioProjects 에 설치하여 실행해 보자.

Shaker.zip
0.14MB