이 예제에서는 안드로이드 스마트폰이 온도(TEMPERATURE) 센서를 지원하는지 프로그래밍 방식으로 확인하는 방법을 알아봅니다. 안드로이드에서는 SensorManager를 활용해 기기에 특정 센서가 탑재되어 있는지 손쉽게 검사할 수 있습니다.
1단계: 새 프로젝트 생성
안드로이드 스튜디오를 실행하고 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_AMBIENT_TEMPERATURE) != null) {
actionEvent.setText("TEMPERATURE supports");
} else {
actionEvent.setText("no TEMPERATURE supports");
}
}
}코드 설명
핵심 로직은 sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE) 호출에 있습니다. 이 메서드는 주변 온도 센서(주변 환경 온도 측정용)의 기본 인스턴스를 반환하며, 해당 센서가 기기에 없으면 null을 반환합니다. 따라서 반환값이 null인지 여부를 조건문으로 판단해 센서 지원 여부를 화면에 출력할 수 있습니다.
참고로 대부분의 스마트폰에는 주변 온도 센서가 내장되어 있지 않으며, 일부 특수 목적 기기나 웨어러블 기기에만 탑재되어 있으므로 "no TEMPERATURE supports"라는 결과가 표시되는 것이 일반적입니다.
애플리케이션 실행
이제 앱을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터와 연결되어 있다고 가정합니다. 안드로이드 스튜디오에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 실행 옵션에서 자신의 모바일 기기를 선택하세요. 그러면 기기 화면에 아래와 같은 결과가 표시됩니다.

프로젝트 전체 코드는 여기에서 다운로드할 수 있습니다.