camera


camera 는 HSP 에서 기본으로 제공하는 API 로 사진을 촬영하거나 갤러리에서 사진을 불러오는 기능을 제공한다.
AndroidManifest.xml 내 uses-permission 을 추가하면 사용 가능 하다. 

Example

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

런타임 퍼미션이 필요한 API 는 아래와 같이 사용 가능 하다. 

HspPermission.check(HspPermission.builder()
    .activity(activity)
    .permission(Manifest.permission.YOU_WANT_PERMISSION)
    .listener((reqCode, result) -> {
        if (result) {
            TODO
        } else {
            TODO
        }

        return null;
    })
    .build());

camera 는 Android 에서 제공하는 Camera 를 사용할 수 있게 한다. 


takePicture

카메라가 사용 가능한 경우 카메라로 찍어 로컬에 저장되어 있는 사진 또는 직접 사진 촬영을 통해 사진을 얻거나 내장 앨범으로부터 사진을 얻는다. 

Camera 옵션을 전달하기 위해 CameraConfig 를 인자로 받아 처리하도록 구성되어 있다.
CameraConfig 클래스 정보와 각각의 변수 정보는 하단에 표를 참고 한다.

CameraConfig Class

public static class CameraConfig {
   public int srcType;
   public int destType;
   public int quality;
   public int width;
   public int height;
}

CameraConfig

필드설명M/O
quality사진 품질 (범위 1~100 정수)M
width가로크기 픽셀 (0보다 작거나 같은 경우 원본 크기)M
height세로크기 픽셀 (0보다 작거나 같은 경우 원본 크기) M
sourceType입력소스타입
  • DAPCamera.CAMERA : 카메라로 부터 직접 찍어서 사진을 얻음
  • DAPCamera.PHOTOLIBRARY : 내장 앨범으로 사진을 얻음
M
destType가져올 사진의 타입
  • DAPCamera.RESULT_BASE64 : Base64 String  형태로 전달 (최대 크기 가로 160, 세로 120 으로 제한 됨)
  • DAPCamera.RESULT_URI : 파일 절대 경로 전달 
M
   

카메라 촬영 사용 예

val cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.CAMERA).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build()

DAPCamera.takePicture(this@MainActivity, cfg, {
   // TODO
}) {
   // TODO
}
DAPCamera.CameraConfig cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.CAMERA).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build();

DAPCamera.takePicture(MainActivity.this, cfg, result -> {
       // TODO
   }, e -> {
       // TODO
   });

이미지 선택 사용 예

val cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.PHOTO_LIBRARY).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build()

DAPCamera.takePicture(this@MainActivity, cfg, {
   // TODO
}) {
   // TODO
}
DAPCamera.CameraConfig cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.PHOTO_LIBRARY).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build();

DAPCamera.takePicture(MainActivity.this, cfg, result -> {
       // TODO
   }, e -> {
       // TODO
   });

takeVideo

takeVideo는 4.15.27 버전 이상 부터 제공됩니다.

카메라가 사용 가능한 경우 카메라로 찍어 로컬에 저장되어 있는 동영상 또는 직접 동영상 촬영을 통해 동영상을 얻거나 내장 앨범으로부터 동영상을 얻는다.

options

필드설명M/O
sourceType입력소스타입
  • "camera” : 카메라로부터 직접 촬영해서 동영상을 얻음
  • “library” : 내장 앨범으로 동영상을 얻음
M
   

동영상 촬영 사용 예

DAPCamera.takeVideo(this@MainActivity, "camera", {
       // TODO
   }) {
       // TODO
}
DAPCamera. takeVideo(MainActivity.this, "camera", result -> {
       // TODO
   }, e -> {
       // TODO
   });

동영상 선택 사용 예

DAPCamera.takeVideo(this@MainActivity, "libaray", {
       // TODO
   }) {
       // TODO
}
DAPCamera. takeVideo(MainActivity.this, " libaray", result -> {
       // TODO
   }, e -> {
       // TODO
   });

Error Code

CodeCauseComment
E11400파라메터 값이 잘못되어 있을 경우 
E11401전달된 액션 값이 알 수 없는 액션일 경우 
E11402입력소스 타입 값이 잘못되어 있을 경우 
E11403너비 값이 정수값이 아닌 경우 
E11404높이 값이 정수값이 아닌 경우 
E11405사진결과 타입 값이 잘못되어 있을 경우 
E11406사진 품질 값이 1 ~ 100 사이의 정수값이 아닌 경우 
E11450실행 중 오류가 발생 되었을 경우 
E11451이미지 처리 중 오류가 발생 되었을 경우 
E11452사용자가 실행을 취소 하였을 경우 
E11499알 수 없는 오류가 발생 되었을 경우