[Android&Kotlin] - Camera App(카메라 앱)

1. Project생성정보

   - Package Name : com.farmerkyh.study.calcurator

   - Language : Kotlin

   - Minimum SDK : API 23: Android 6.0 (Marshmallow)

2. Android Version정보

   - Android Studio : 4.1.2 (2020.12.20)

   - Java : 1.8.0_242

   - AVD Test API : 29

   - Kotlin Plug in version : 1.4.32-release-Sdudio4.1-1

 

3. Layout / 실행화면

 

4. 디렉토리 및 파일 구조

 

5. 프로젝트 소스

    - 프로젝트 전체를 올릴 려고 했으나 10M 이상 초과 되어 파일들만 upload함   

   

CameraA.zip
0.01MB

6. 카메라 등 기타 특징

//개발한 앱에서 카메라 사진찍는 방법 2가지
//  첫번째. 개발한 앱에서 카메라 API를 이용해서 직접 사진을 찍고 사진을 얻어 오는 방법
//          정점, 사진찍기 속도가 빠르다.
//          단점, 폰 기종마다 카메라 성능등이 달라 어려움이 많다.
//  두번째. 카메라 APP을 이용하는 방법 (thumbnail방식)
//          a. 진행 과정
//             1. 개발한 앱 <-> 카메라 APP <-> 카메라
//          b. 진행 과정 상세
//             1. 개발한 앱에서 카메라 APP에 사진찍어달라 요청
//             2. 카메라 APP은 카메라를 통해 사진을 찍고, 사진을 받아온다.
//             3. 카메라 APP은 전달받은 사진을 다시 개발한 앱으로 전송한다.
//          c. 특징
//             1. 위와 진행과정 같은 Process방식은 INTENT를 이용해야 된다.
//             2. INTENT의 용량은 제한적이다. 그래서 thumbnail방식으로만(작은size) 주고 받는다.
//  세번째. 카메라 APP을 이용하는 방법 (Provider방식)
//          - 카메라 원본사이즈를 원한다면 Provider방식으로 구현해야 된다.
//          a. 진행 과정
//             1. 개발한 앱 -> 저장소에 임시로 파일 생성
//             2. 개발한 앱 <-> 카메라 APP <-> 카메라
//          b. 진행 과정 상세
//             1. 개발한 앱에서 저장소에 임시파일 하나를 생성 후 image_uri를 얻어온다.
//             2. 개발한 앱에서 카메라 APP에  사진찍어달라 요청
//                - 이때 image_uri를 전송하면서 사진을 이곳에 저장해달라고 요청한다.
//             3. 카메라 APP은 카메라를 통해 사진을 찍고, 사진을 받아온다.
//                - 받아온 사진을 image_uri에 저장 한다.
//             4. 카메라 APP은 image_uri에 저장후 개발한 앱으로 결과를 전송한다.
//             5. 개발한 앱은 image_uri에서 사진을 불러와 사용한다.
//  File Provider 란
//             1. 임시로 다른 APP에게 홈디렉토리(홈저장소)에 접근할 수 있도록 권한을 부여하는 역할을 담당
//  File Provider 특징
//             1. 저장소는 개발한 앱에서는 홈디렉토리와 같다. (앱에서 마음대로 접근가능)
//             2. 카메라 APP은 개발한 앱.홈디렉토리에 접근 할 수 없다.
//             3. 이때 카메라 APP에 임시권한부여를 해줘야 된다.
//             4. 임시권한부여를 위해서 File Provider를 제공한다.
//             5. File Provider를 이용해서 권한이 부여된 image_url을 만들어 카메라 APP으로 전송해준다.
//             6. 카메라 APP은 권한 부여받은 image_url에 접근할 수 있다.
// 저장소 종류
//    1. 일반저장소와 케시저장소 2가지 이다.
//    2. 일반저장소
//        - APP 삭제 되지 않는 이상 일반저장소의 파일들은 계속 유지 된다.
//    3. 케시저장소(임시저장소)
//        - 앱이 실행되고 있을때는 유지가 된다.
//        - 앱이 종료되었을때는 clear될 수 도 있다.
//        - Android os는 기타APP들이 수행도중 저장소가 부족하면 종료된 APP의 캐시저장소를 clear한다.
//
//기본적으로 카메라 미리보기는 사진이미지가 깨져 보인다.
//원본이미지를 보고 싶다면 (간략)
//   1. 카메라가 사진을 찍은 후 -> 카메라 APP에서 저장소에 저장 후 -> 앱에서  저장소에있는 원본이미지 조회
//원본이미지를 보고 싶다면 (상세) - Provider 이용
//   1. 개발한 앱에서 Provider를 이용해서  저장소_image_Uri생성
//   2. 개발한 앱에서 > 카메라 APP을 호출 시  저장소_image_Uri 전송
//   3. 카메라 APP이 카메라를 구동시킨다.
//   4. 카메라에서 사진을 찍은 후 사진을 카메라 APP으로 전송한다.
//   5. 카메라 APP은  저장소_image_Uri  를 이용해 사진을 저장한다.
//   6. 개발한 앱은 저장소_image_Uri 에서 사진을 불러드릴 수 있다.

7. 소스별 조요 내용 설명

   a. AndroidMenifest.xml

   

   b. provider_paths.xml

       

   c. provider_paths.xml

   

   d. MainActivity.xml

   

 

 

 

 

 

Posted by 농부지기
,