본문 바로가기
안드로이드 자바

[Android][Java] 플래시 라이트

by teamnova 2024. 2. 28.

 

오늘은 플래시 라이트사용법에 대해 포스팅 하겠습니다.

 

Manifest 

카메라 권한 추가 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <uses-permission android:name="android.permission.FLASHLIGHT"/> <!-- cranberryai -->

    <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.MyApplication">
        <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>

 

MainActivity

public class MainActivity extends AppCompatActivity {
    Button button;
    String TAG = "MainActivity";
    boolean on = false; // 플래시가 켜져 있는지 추적하는 플래그

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

        button = (Button) findViewById(R.id.button);

        // 카메라 권한 요청
        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CAMERA}, 1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 카메라 권한 확인
                if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                    // 디바이스가 카메라 플래시를 지원하는지 확인
                    if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
                        Camera camera = null;
                        try {
                            camera = Camera.open(); // 카메라 인스턴스 획득
                            Camera.Parameters parameters = camera.getParameters();

                            if (on) {
                                // 플래시 끄기
                                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                                on = false;
                            } else {
                                // 플래시 켜기
                                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                                on = true;
                            }
                            camera.setParameters(parameters);

                            if (on) {
                                camera.startPreview(); // 플래시를 켜기 위해 필요
                            } else {
                                camera.stopPreview(); // 플래시를 끄기 위해 필요
                            }
                        } finally {
                            if (camera != null) {
                                camera.release(); // 카메라 자원 해제
                            }
                        }
                    }
                }
            }
        });
    }
}