이 예제는 Android 기기가 중력(GRAVITY) 센서를 지원하는지 확인하는 방법을 보여줍니다. 센서 지원 여부는 SensorManager 클래스를 활용하면 몇 줄의 코드만으로 간단하게 판별할 수 있습니다.
1단계: 새 프로젝트 생성
Android Studio에서 새 프로젝트를 생성합니다. 상단 메뉴에서 File → New Project를 선택한 후, 프로젝트 생성에 필요한 모든 세부 정보를 입력합니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> <TextView android:id="@+id/actionEvent" android:textSize="40sp" android:layout_marginTop="30dp" android:layout_width="wrap_content" android:layout_height="match_parent" /> </LinearLayout>
위 코드에서는 중력 센서의 지원 여부 정보를 화면에 표시하기 위해 TextView 하나를 배치했습니다.
3단계: MainActivity 작성
src/MainActivity.java 파일에 아래 코드를 추가합니다.
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
private SensorManager sensorManager;
@SuppressLint({"RestrictedApi", "ClickableViewAccessibility"})
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView actionEvent = findViewById(R.id.actionEvent);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY) != null) {
actionEvent.setText("GRAVITY supports");
} else {
actionEvent.setText("no GRAVITY supports");
}
}
}코드 설명
핵심 로직은 onCreate() 메서드 안에 있습니다. 먼저 getSystemService(Context.SENSOR_SERVICE)를 호출하여 시스템의 SensorManager 인스턴스를 가져옵니다. 그다음 getDefaultSensor(Sensor.TYPE_GRAVITY)를 호출하는데, 이 메서드는 요청한 타입의 기본 센서가 존재하면 해당 센서 객체를 반환하고, 존재하지 않으면 null을 반환합니다. 따라서 반환값이 null이 아니면 중력 센서가 지원되는 것이고, null이면 지원되지 않는 것입니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고 툴바의 Run 아이콘을 클릭한 후, 옵션 목록에서 자신의 모바일 기기를 선택합니다. 그러면 앱이 기기에서 실행되고, 화면에 중력 센서 지원 여부가 표시됩니다.

참고 사항
대부분의 최신 Android 스마트폰과 태블릿에는 가속도계(accelerometer)가 내장되어 있으며, 중력 센서는 일반적으로 이 가속도계 데이터를 기반으로 소프트웨어적으로 구현됩니다. 하지만 일부 저가형 기기나 특수 목적 기기에서는 중력 센서가 없을 수 있으므로, 센서를 사용하는 앱을 개발할 때는 위와 같은 방식으로 사전에 지원 여부를 반드시 확인하는 것이 좋습니다.