자바 안드로이드 앱개발 강좌, 배터리 정보 앱 만들기

이번 강좌에서는 자바를 사용하여 안드로이드 환경에서 배터리 정보를 표시하는 앱을 만드는 방법에 대해 알아보겠습니다.
현대 스마트폰에서 배터리 사용은 매우 중요한 요소이며, 사용자들은 자신의 배터리 상태를 실시간으로 확인하고 싶어합니다.
이 앱을 통해 사용자는 배터리 상태, 충전 상태, 배터리 레벨 등을 확인할 수 있을 것입니다.

1. 프로젝트 생성하기

안드로이드 스튜디오를 열고 새로운 프로젝트를 생성합니다. “Empty Activity” 템플릿을 선택하고 프로젝트 이름과 패키지 이름,
저장 위치 등을 설정한 후 “Finish”를 클릭합니다. 이제 기본적인 안드로이드 프로젝트가 생성되었습니다.

2. AndroidManifest.xml 수정하기

배터리 정보를 접근하기 위해 필요한 권한을 매니페스트 파일에 추가해야 합니다.
프로젝트의 AndroidManifest.xml 파일을 열고 아래와 같이 수정합니다.

        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.example.batteryinfo">

            <uses-permission android:name="android.permission.BATTERY_STATS"/>

            <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/Theme.AppCompat.Light.NoActionBar">

                <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>
    

3. 레이아웃 파일 만들기

앱의 UI를 정의하기 위해 activity_main.xml 파일을 수정합니다.
배터리 정보를 사용자에게 표시할 TextView들을 추가합니다.

        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            
            <TextView
                android:id="@+id/batteryLevel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="배터리 레벨: 100%"
                android:textSize="24sp"
                android:layout_centerInParent="true"/>

            <TextView
                android:id="@+id/batteryStatus"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="충전 상태: 충전 중"
                android:textSize="18sp"
                android:layout_below="@id/batteryLevel"
                android:layout_centerHorizontal="true"/>
        </RelativeLayout>
    

4. MainActivity.java 파일 수정하기

이제 실제로 배터리 정보를 가져오는 로직을 구현할 차례입니다. MainActivity.java 파일을 열고
배터리 상태와 레벨을 가져오는 코드를 추가합니다.

        package com.example.batteryinfo;

        import android.content.BroadcastReceiver;
        import android.content.Context;
        import android.content.Intent;
        import android.content.IntentFilter;
        import android.os.BatteryManager;
        import android.os.Bundle;
        import android.widget.TextView;

        import androidx.appcompat.app.AppCompatActivity;

        public class MainActivity extends AppCompatActivity {

            private TextView batteryLevelTextView;
            private TextView batteryStatusTextView;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                batteryLevelTextView = findViewById(R.id.batteryLevel);
                batteryStatusTextView = findViewById(R.id.batteryStatus);

                registerBatteryReceiver();
            }

            private void registerBatteryReceiver() {
                IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
                registerReceiver(batteryReceiver, filter);
            }

            private final BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                    int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
                    int batteryPct = (int) ((level / (float) scale) * 100);

                    int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                    String statusString;
                    switch (status) {
                        case BatteryManager.BATTERY_STATUS_CHARGING:
                            statusString = "충전 중";
                            break;
                        case BatteryManager.BATTERY_STATUS_DISCHARGING:
                            statusString = "방전 중";
                            break;
                        case BatteryManager.BATTERY_STATUS_FULL:
                            statusString = "완전 충전";
                            break;
                        default:
                            statusString = "알 수 없음";
                            break;
                    }

                    batteryLevelTextView.setText("배터리 레벨: " + batteryPct + "%");
                    batteryStatusTextView.setText("충전 상태: " + statusString);
                }
            };

            @Override
            protected void onDestroy() {
                super.onDestroy();
                unregisterReceiver(batteryReceiver);
            }
        }
    

5. 앱 실행하기

이제 모든 코드가 준비되었습니다. Android 스튜디오의 실행 버튼을 눌러 에뮬레이터나 실제 장치에서 앱을 실행해 보세요.
앱이 실행되면 실시간으로 배터리 레벨과 상태 정보가 표시됩니다. 이는 개발 과정에서도 매우 중요하게 활용될 것입니다.

6. 추가 기능 구현하기

기본적인 배터리 정보를 표시하는 것 이외에도 몇 가지 추가 기능을 구현해 보겠습니다. 예를 들어,
배터리 과충전 방지 알림 기능을 추가할 수 있습니다. 사용자에게 배터리 레벨이 특정 수준에 도달했을 때 알림을 보내는 것입니다.

7. 과충전 방지 알림 기능 구현하기

        // MainActivity.java에 추가된 코드
        private void checkBatteryLevel(int level) {
            if (level > 80) {
                showNotification("배터리 과충전 경고", "배터리 레벨이 80%를 초과했습니다.");
            }
        }

        private void showNotification(String title, String message) {
            // Notification 관련 코드 구현
        }
    

8. 사용자 인터페이스 개선하기

앱의 UI를 개선하기 위해 다양한 디자인 요소를 추가할 수 있습니다. 예를 들어, ConstraintLayout을 사용해 보다 복잡한 레이아웃을 만들거나,
Material Design 요소를 활용하여 더욱 모던한 UI를 구현할 수 있습니다.

결론

이번 강좌에서는 자바를 활용하여 안드로이드 앱 개발에 필수적인 기본적인 기술들을 배웠습니다. 배터리 정보 앱을 만드는 과정을 통해
안드로이드 앱의 구조, 사용자 인터페이스 및 데이터 처리에 대해 깊이 이해할 수 있었습니다.
이러한 기초를 바탕으로 더 많은 기능을 추가하거나 다른 주제를 탐구하여 안드로이드 앱 개발 능력을 키워 나가세요.

감사합니다! 추가적인 질문이나 피드백이 있다면 댓글로 남겨 주세요.