본문 바로가기

Android/Application

안드로이드 카메라 플래시 제어

안드로이드 카메라 플래시 제어 방법 및 소스코드.


카메라 플래시 제어의 흐름은 이렇게 된다.

0. 매니페스트에 카메라 사용 권한 설정

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

1. Camera 변수 생성 및 null값으로 초기화

Camera mCamera = null;

2. 변수를 기반으로 객체 생성 및 카메라 접근

mCamera = Camera.open();

//Camera.open()이 일종의 생성자라고 보면된다

3. 카메라의 상태를 갖고있는 놈인 파라미터 변수 생성

Camera.Parameters mCameraParameter;

mCameraParameter = mCamera.getParameters();

4. 파라미터 변수를 이용해 각종 조작값을 지정하고(여기선 플래시)

mCameraParameter.setFlashMode("torch");

//여기선 플래쉬를 키는 것으로 조작했다.

5. 카메라 객체에 넣어서 작동!

mCamera.setParameters(mCameraParameter);


-정리-

하드웨어인 카메라를 가져오기위해 mCamera를 만들었고

이제 하드웨어 조작이 가능하므로 mCameraParameter로 각종 파라미터 기능을 조작했다

마지막으로 조작한 값을 카메라에 전달했다.mCamera.setParameters(mCameraParameter);



소스코드>

Camera mCamera = null;

mCamera = Camera.open();

Camera.Parameters mCameraParameter;

mCameraParameter = mCamera.getParameters();

mCameraParameter.setFlashMode("torch");

mCamera.setParameters(mCameraParameter);



이제 키는건 된다 근데 끄는건?


setFlashMode를 "off"로 할수도 있고 여러 방법이 있겠지만

간단한 방법은 그냥 카메라 변수를 박살내버리면된다고 생각한다.

끄고싶은 상황 언제든지 그냥 다짜고짜

mCamera.release();

를 호출하면 된다. 알아서 꺼진다. 간단하다!


절대 빼먹지 말아야 할 점


반드시!!!! 카메라객체를 박살내는걸 잊으면 안된다

카메라 기능을 쓸 상황이 아니면 반드시 객체를 박살내야한다

그렇지 않으면 플래시가 계속 켜져있는 상태가 됨은 물론이요 무슨 프로그램을 키든

카메라 기능 자체를 쓸수가 없게된다(안드로이드OS가 이미 사용중인 상태로 인식하기때문에)


다른 어플로인해 화면이 사라진다던가. 전화가와서 화면이 사라진다던가. 별별 경우가 다있다


따라서 액티비티의 onPause()에 기술하는걸 절대 잊으면 안된다.


@Override

protected void onPause() {

if (mCamera != null) {

mCamera.release();

}

super.onPause();

}

필자는 이렇게 해두었다.



예제 링크

http://makerj.tistory.com/80



반짝반짝반짝반짝거려보자!