안드로이드

[안드로이드] 카메라 이벤트 받기 동적, 정적 BroadCastReceiver 받기

IT꿈나무 2017. 4. 24. 17:10
반응형


 카메라 이벤트 받기 동적, 정적 BroadCastReceiver 받기 

 

1. 브로드캐스트를 정적, 동적으로 구성할때의 차이를 확인한다.

2. com.android.camera.NEW_PICTURE 및 android.hardware.action.NEW_PICTURE 을 Nuga(7.0)에서는 동적 브로드 캐스트로 만 수신 할수 있다. 그외의 Action은 동적 정적 모두 가능.

3. 안드로이드 6.0 이하 에서만 NEW_PICTURE을 정적(Manifest)으로 수신 할수 있다.

  • 앱은 ACTION_NEW_PICTURE 또는 ACTION_NEW_VIDEO 브로드캐스트를 송수신할 수 없습니다. 이 최적화는 Android 7.0을 대상으로 하는 앱뿐 아니라 모든 앱에 영향을 미칩니다.
  • Android 7.0부터 사용 불가 상태~

 NEW_PICTURE 정적(Static) BroadCastReceiver 로 받기

 정적으로 구성시 Manifest를 이용하여, 할당한다.

 Mainifest.xml 등록

 리시버 등록 및 카메라 퍼미션 추가.



 BroadCast Receiver.java

 New Picture 액션을 수신 하여, 저장 경로를 확인한다.



 NEW_PICTURE 동적(Dynamic) BroadCastReceiver 로 받기

 동적으로 구성시 Context를 받아서 할당한다. Context 종료시 수신 받을수 없다.

 OnCreate() 에서 Context를 수신 받아 등록한다.

소 부연 설명



 Dynamic BroadCastReceiver를 이용한 코드



 참고 (API 24 부터, Action_new_picture 및 Action_new_video 는 deprecated 되었음.

https://developer.android.com/about/versions/nougat/android-7.0-changes.html?hl=ko


하기 Action 24 부터 deprecated 되었음.

https://developer.android.com/reference/android/hardware/Camera.html?hl=ko#ACTION_NEW_PICTURE

added in API level 14

ACTION_NEW_PICTURE

String ACTION_NEW_PICTURE

This constant was deprecated in API level 24.
This broadcast is no longer delivered by the system; use JobInfo.Builder.addTriggerContentUri(JobInfo.TriggerContentUri) instead. Broadcast Action: A new picture is taken by the camera, and the entry of the picture has been added to the media store. getData() is URI of the picture.

Constant Value: "android.hardware.action.NEW_PICTURE"

ACTION_NEW_VIDEO

added in API level 14
String ACTION_NEW_VIDEO

This constant was deprecated in API level 24.
This broadcast is no longer delivered by the system; use JobInfo.Builder.addTriggerContentUri(JobInfo.TriggerContentUri) instead. Broadcast Action: A new video is recorded by the camera, and the entry of the video has been added to the media store. getData() is URI of the video.

Constant Value: "android.hardware.action.NEW_VIDEO"





반응형