ANDROID에서 플래쉬(카메라 뒷편 FLASH LIGHT)를 제어하는 방법입니다.
어찌보면 쉽지만.. 어찌보면 좀 까다로울 수 있습니다.
일단 ANDROID 에서 카메라를 OPEN 시켜 줘야 합니다.
(ANDROID에서는 FLASH LIGHT를 PREVIEW 상태에서 켜준다고 되어 있습니다.)
- on source
private Camera camera;
private Parameters p;
camera = Camera.open(); - 카메라를 open합니다.
p = camera.getParameters(); - open된 카메라의 설정값을 받아 옵니다.
p.setFlashMode(Parameters.FLASH_MODE_TORCH); - 플래쉬 모드에서 플래쉬를 켭니다.
camera.setParameters(p); -설정한(open)한 카메라에 설정값을 저장합니다.
camera.startPreview(); -flash를 켜기 위해서 preview 시작합니다.
위의 source를 보면 아시겠지만 surfaceView를 사용해서 실제로 preview를 띄우지 않으셔도
됩니다.
-off source
p.setFlashMode(Parameters.FLASH_MODE_OFF); - flash를 off 합니다.
camera.setParameters(p) -flash가 꺼졌다는 셋팅값을 넘겨 줍니다.
camera.stopPreview(); -카메라의 preView를 종료 합니다.(실질적으로 flash를 끕니다.)
camera.release(); -open된 카메라를 메모리에서 제거합니다.
플래시만 끄고 싶은신분들은
p.setFlashMode(Parameters.FLASH_MODE_OFF); - flash를 off 합니다.
camera.setParameters(p) -flash가 꺼졌다는 셋팅값을 넘겨 줍니다.
camera.startPreview(); -flash를 켜기 위해서 preview 시작합니다.
이렇게 하면 됩니다.
종료 source는 복잡하지 않습니다. 다만 주의 할 내용은 마지막줄 camera.release()를 하지 않으면 다시 flash light를 켤때나 혹은 다른 다른 어플에서 Camera의 접근시 오류가 발생합니다.
그리고 permission에 다음 내용을 넣어 주시면 됩니다.
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
참고 Android Api 문서에는
Flash Mode 종류를
- FLASH_MODE_AUTO : Flash will be fired automaticall when required.
- FLASH_MODE_OFF : Flash will not be fired.
- FLASH_MODE_ON : Flash will always be fired during snapshot.
- FLASH_MODE_RED_EYE : Flash will be fired in red-eye reduction mode.
- FLASH_MODE_TORCH : Constant emission of light during preview, auto-focus and snapshot.
이렇게 입니다.
여기서 주의 점 ON 과 TORCH의 차이점은 ON은 샷이 찍힐때 만 켜지는 겁니다.
측 셔터를 눌러야 켜진다는 거죠.^^
출처 : http://swindowsit.blogspot.kr/2014/03/android-camera-flash-torch.html
'개발관련 > android' 카테고리의 다른 글
popupWindow 사용방법 (0) | 2015.03.03 |
---|---|
ScrollView 안에 WebView에 있을때 스크롤문제 (0) | 2015.02.17 |
target _blank 테스트 버튼 (0) | 2014.10.14 |
CustomLayout 만들때 만날 수 있는 오류 (0) | 2014.09.17 |
DragHelper 를 활용한 View Drag&Drop 애니메이션 (0) | 2014.09.02 |