Camera


Contents

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


takePicture

Example

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

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

PermissionUtils.checkPermissions(PermissionParams.builder()
    .permission(Manifest.permission.YOU_WANT_PERMISSION)
    .activity(activity)
    .listener((reqCode, result) -> {
        if (!result) {
            TODO

            return ;
        }

        TODO
    })
    .build());

Camera 는 Android 에서 제공하는 Camera 를 사용할 수 있게 하며 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

필드설명
quality사진 품질 (범위 0~100)
width가로크기 픽셀 (-1 기입시 원본 크기)
height세로크기 픽셀 (-1 기입시 원본 크기) 
sourceType입력소스타입
  • DAPCamera.CAMERA : 카메라로 부터 직접 찍어서 사진을 얻음
  • DAPCamera.PHOTOLIBRARY : 내장 앨범으로 사진을 얻음
  • DAPCamera.SAVEDPHOTOALBUM : PHOTOLIBRARY 와 동일 옵션 
destType가져올 사진의 타입  (기본값 : URI)
  • DAPCamera.RESULT_BASE64 : Base64 String  형태로 전달 (최대 크기 가로 160, 세로 120 으로 제한 됨)
  • DAPCamera.RESULT_URI : 파일 절대 경로 전달 
  

카메라 촬영 사용 예

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

// 3.10.18 이상
DAPCamera.takePicture(activity, cfg, {
       // TODO
   }) {
       // TODO
   }

// 3.10.18 이하
DAPCamera.takePicture(activity, cfg) { result, _ ->
   when (result) {
        OnResultListener.TRUE -> {
           // TODO
       }
       else -> {
           // TODO
       }
    }
}
DAPCamera.CameraConfig cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.CAMERA).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build();

// 3.10.18 이상
DAPCamera.takePicture(activity, cfg, result -> {
       // TODO
   }, e -> {
       // TODO
   });

// 3.10.18 이하
DAPCamera.takePicture(activity, cfg, (result, value) -> {
   if (result == OnResultListener.TRUE) {
       // TODO
   } else {
       // TODO
   }
});

이미지 선택 사용 예

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

// 3.10.18 이상
DAPCamera.takePicture(activity, cfg, result -> {
       // TODO
   }, e -> {
       // TODO
   });

// 3.10.18 이하
DAPCamera.takePicture(activity, cfg, (result, value) -> {
   if (result == OnResultListener.TRUE) {
       // TODO
   } else {
       // TODO
   }
});
Activity activity;
DAPCamera.CameraConfig cfg = DAPCamera.CameraConfig.builder()
            .srcType(DAPCamera.PHOTO_LIBRARY).destType(DAPCamera.RESULT_URI)
            .width(-1).height(-1).quality(50).build();

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

// 3.10.18 이하
DAPCamera.takePicture(MainActivity.this, cfg, (result, value) -> {
   if (result == OnResultListener.TRUE) {
       // TODO
   } else {
       // TODO
   }
});