camera


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

Example

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

런타임 퍼미션이 필요한 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

Information

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알 수 없는 오류가 발생 되었을 경우