이 튜토리얼에서는 프로그래밍 방식으로 안드로이드 기기 이름을 가져오는 방법을 단계별로 알아봅니다. 안드로이드에서는 Build.DEVICE 상수를 사용하면 현재 실행 중인 기기의 모델명(장치 이름)을 손쉽게 확인할 수 있습니다.
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">
<TextView
android:id = "@+id/text"
android:textSize = "30sp"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
</LinearLayout>위 코드에서는 화면 중앙에 배치된 TextView를 사용해 기기 이름을 표시하도록 구성했습니다. 텍스트 크기는 30sp로 지정되어 있어 결과를 한눈에 확인할 수 있습니다.
3단계: MainActivity 작성하기
다음 코드를 src/MainActivity.java 파일에 추가합니다.
package com.example.myapplication;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 101);
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 101:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return;
}
textView.setText(Build.DEVICE);
} else {
// 권한이 거부된 경우
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onResume() {
super.onResume();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return;
}
textView.setText(Build.DEVICE);
}
}위 코드의 핵심 동작 흐름은 다음과 같습니다.
- 앱이 시작되면 READ_PHONE_STATE 권한이 부여되어 있는지 확인하고, 없다면 사용자에게 권한을 요청합니다.
- 권한 승인 결과는 onRequestPermissionsResult() 콜백에서 처리하며, 승인되면 TextView에 Build.DEVICE 값을 표시합니다.
- onResume()에서도 권한 상태를 다시 점검하여 화면이 다시 활성화될 때마다 기기 이름이 정상적으로 표시되도록 합니다.
4단계: AndroidManifest.xml 설정하기
다음 코드를 AndroidManifest.xml 파일에 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
package = "com.example.myapplication">
<uses-permission android:name = "android.permission.INTERNET"/>
<uses-permission android:name = "android.permission.READ_PHONE_STATE" />
<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:roundIcon = "@mipmap/ic_launcher_round"
android:supportsRtl = "true"
android:theme = "@style/AppTheme">
<activity android:name = ".MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>매니페스트 파일에는 인터넷 권한과 함께 기기 정보 조회에 필요한 READ_PHONE_STATE 권한을 반드시 선언해야 합니다. 이 권한이 누락되면 런타임 시 권한 요청이 정상적으로 동작하지 않습니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 모바일 기기가 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run 아이콘을 클릭하세요. 실행 옵션으로 자신의 모바일 기기를 선택하면, 앱이 기기에 설치·실행되고 아래와 같이 기본 화면에 기기 이름이 표시됩니다.

마무리
이처럼 Build.DEVICE를 활용하면 별도의 외부 라이브러리 없이 간단하게 안드로이드 기기 이름을 가져올 수 있습니다. 참고로 Build.MODEL(모델명), Build.MANUFACTURER(제조사), Build.BRAND(브랜드) 등 Build 클래스의 다른 상수들도 함께 활용하면 더욱 상세한 기기 정보를 얻을 수 있습니다.