Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

코틀린(Kotlin)으로 안드로이드 손전등 앱 만들기 – 프로그래밍 방식으로 플래시 켜고 끄는 방법

이 튜토리얼에서는 코틀린(Kotlin)을 사용하여 안드로이드 기기의 카메라 플래시(LED)를 프로그래밍 방식으로 켜고 끄는 손전등 앱을 만드는 방법을 단계별로 살펴봅니다. 안드로이드 6.0(API 23)부터 지원되는 CameraManager 클래스의 setTorchMode() 메서드를 활용하면 카메라 리소스를 직접 열지 않고도 간단하게 플래시를 제어할 수 있습니다.


1단계: 새 프로젝트 생성

Android Studio를 실행한 뒤, 상단 메뉴에서 File → New Project를 선택하고 프로젝트 생성에 필요한 정보를 모두 입력합니다. 언어는 Kotlin으로 선택하세요.


2단계: 레이아웃 작성 (activity_main.xml)

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 화면 중앙에 손전등을 켜고 끌 수 있는 ToggleButton을 배치했습니다.

예제

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="50dp"
    android:text="Tutorials Point"
    android:textAlignment="center"
    android:textColor="@android:color/holo_green_dark"
    android:textSize="32sp"
    android:textStyle="bold" />
<ToggleButton
    android:id="@+id/onOffFlashlight"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:checked="false"
    android:text="Turn On/Off Camera LED/ Flashlight Android"
    android:textOff="Turn On"
    android:textOn="Turn Off" />
</RelativeLayout>

3단계: MainActivity.kt 구현

src/MainActivity.kt 파일에 다음 코드를 추가합니다. 먼저 기기에 플래시가 장착되어 있는지 확인하고, 플래시가 없다면 알림 대화상자를 표시한 후 앱을 종료합니다. 플래시가 있다면 CameraManager를 통해 토치(Torch) 모드를 제어합니다.

import android.content.Context
import android.content.DialogInterface
import android.content.pm.PackageManager
import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraManager
import android.os.Build
import android.os.Bundle
import android.widget.ToggleButton
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
    private lateinit var cameraManager: CameraManager
    private lateinit var cameraId: String
    private lateinit var toggleButton: ToggleButton
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        val isFlashAvailable = applicationContext.packageManager
        .hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)
        if (!isFlashAvailable) {
            showNoFlashError()
        }
        cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
        try {
            cameraId = cameraManager.cameraIdList[0]
        } catch (e: CameraAccessException) {
            e.printStackTrace()
        }
        toggleButton = findViewById(R.id.onOffFlashlight)
        toggleButton.setOnCheckedChangeListener { _, isChecked -> switchFlashLight(isChecked) }
    }
    private fun showNoFlashError() {
        val alert = AlertDialog.Builder(this)
        .create()
        alert.setTitle("Oops!")
        alert.setMessage("Flash not available in this device...")
        alert.setButton(DialogInterface.BUTTON_POSITIVE, "OK") { _, _ -> finish() }
        alert.show()
    }
    private fun switchFlashLight(status: Boolean) {
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                cameraManager.setTorchMode(cameraId, status)
            }
        } catch (e: CameraAccessException) {
            e.printStackTrace()
        }
    }
}

4단계: 매니페스트 권한 설정 (AndroidManifest.xml)

플래시를 제어하려면 CAMERA 권한camera.flash 하드웨어 기능 선언이 필요합니다. androidManifest.xml 파일에 아래 코드를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q11">
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera.flash" />
    <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>

앱 실행 및 결과 확인

이제 앱을 실행해 보겠습니다. 실제 안드로이드 스마트폰을 컴퓨터에 연결한 상태에서 Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 실행(Run) 아이콘코틀린(Kotlin)으로 안드로이드 손전등 앱 만들기 – 프로그래밍 방식으로 플래시 켜고 끄는 방법을 클릭하세요. 기기 목록에서 자신의 스마트폰을 선택하면 앱이 설치되고 실행됩니다. 화면 가운데의 토글 버튼을 누르면 카메라 LED가 켜지고, 다시 누르면 꺼지는 것을 확인할 수 있습니다.

참고: 에뮬레이터에는 실제 플래시 하드웨어가 없기 때문에, 정확한 동작을 확인하려면 반드시 실제 기기에서 테스트하는 것이 좋습니다.

코틀린(Kotlin)으로 안드로이드 손전등 앱 만들기 – 프로그래밍 방식으로 플래시 켜고 끄는 방법

코틀린(Kotlin)으로 안드로이드 손전등 앱 만들기 – 프로그래밍 방식으로 플래시 켜고 끄는 방법