* Firebase 시작하기   (& Google Project 생성)*

 

1. 저장방식에 따른 App개발방법 3가지 및 특장점

   첫번째 - 특징 . 보통 서버를 구축하지 않고 스마트폰에 있는 저장소를 활용하여 개발

                       . 개발하기 편하다

             - 단점 . 다른사람(다른 사마트폰)과 자료가 공유가 안 된다.

                      . 스마트폰 분실 및 파손시 저장된 자료가 유실 된다.

   두번째 - 특징 . 별도 서버를 구축하여  서버에 자료를 저장한다.

             - 장점 . 스마트폰 분실 및 파손시에도 자료가 유실 되지 않는다.

             - 단점 . 서버구축 시간 및 비용이 든다.

   세번째 - 특징 . Google Firebase를 이용해서 서버에 자료를 저장한다.

             - 장점 . 스마트폰 분실 및 파손시에도 자료가 유실 되지 않는다.

                      . 적은 용량일 경우에 비용이 발생하지 않는다.

                      . 서버구축 비용이 들지 않는다.

                        (단, 사용량에 따라서 비용이 발생)          .   .

 

2. Firebase란

    - 서버(Tomcat, jeus, weblogic) 구축 없이 Google에서 제공하는 Firebase Flatform을 이용하여 서버처럼 개발 할 수 있다.

    - DB(oracle, ms sql, mysql) 구축 없이 Google에서 제공하는 Firebase Flatform을 이용하여 DB처럼 저장 할 수 있다.

 

3. Login 사용자 및 권한 관리. 

     - Google mail id, Facebook user  id 를 이용해서 App 권한을 적용시킬 수 있다.

     - 요즘, 웹(web) Login화면들을 보면 사용자등록없이

         카카오톡으로 login 하기 화면들 이 있다. 

        이 와 같은 방식으로 Google email id로 login하기,

       Facebook user id로  login하기가 가능하다.)

 

4. DB 처럼 사용하기

     - RDB처럼은 아니지만  단순한 목록을 관리하는 자료는 Firebase를 이용해서 개발이 가능하다.

     - 예, 게시판,  간단한 메시져 등등

 

5. Firebase 사용하기

     - Firebase를 사용하려면 Project를 등록 해야 된다.

     - 하나의 Project는 한개 App 또는 여러개의 App을 통합으로 연동 할 수 있다.

     - 하나의 App은 하나의 Firebase Project만 가능하다.

 

* Firebase Project생성하기

1. URL

     - https://console.firebase.google.com/

2.  생성하기 화면 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 농부지기
,

[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 농부지기
,

[Android&Kotlin] - Calcurator 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. 실행화면

   a. 버튼      

      - 자판중 맨 왼쪽.아래 시계icon이 : 계산기록 보여주기 버튼

      - [계산기록삭제] : db에 저장된 계산기록을 삭제 한다.

   b. 개발SPEC

      - 4칙 연산만 수행한다.

      - ( ) 괄호 , . (소수점) 은 제외 한다.

      - 숫자 15자리 이하만 가능하다.

      - 계산기록은 App이 종료 되어도 db에 계속 남아 있다.

         (그래서 App을 다시 실행해도 [계산이력]버튼 (시계icon)을 클릭 하면 이력을 볼 수 있다.

      - [계산기록삭제]버튼을 누르는 경우에만 계산이력을 삭제 한다.

 

4. 디렉토리 구조

5. 프로젝트 소스

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

CalcuratorA-src.zip
0.01MB

6. 각 파일 간략 설명

    a. build.gradle

 

    a. activity_main.xml

         - 계산기 주요화면 Layout

    b. history_row.xml

       - 계산이력 한줄을 보여주는 Layout

    c. history_view_icon.xml

       - vector형 icon

       - 생성방식 : drawable > Right mouse > New > Vector Asset

    d. drawable>button_background.xml

       drawable>button_background_green.xml

       - 버튼 background용

 

    a. HistoryDao.kt

        - @Dao

        - Room에 연결된 dao

    b. History.kt

       - @Entity

       - data class

    c. AppDatabase.kt

       - @Database

       - Database class로 생성

    d. MainActivity.kt

 

7. 소스별 상세 설명

    a. build.gradle

       - viewbinding을 사용하기 위해 gradle  변경

       - room db를 사용하기 위해 gradle  변경

 

    a. activity_main.xml

         - 계산기 주요화면 Layout

 

    b. history_row.xml

       - 계산이력 한줄을 보여주는 Layout

       - 계산식과 계산식에 대한 결과를 보여주는 TextView 2개만 존재

       - activity_main.xml의 LinearLayout.addView( )를 이용해서 계산이력을 한줄 한줄 추가해준다. 

    c. history_view_icon.xml

       - vector형 icon

       - 생성방식 : drawable > Right mouse > New > Vector Asset

    d. drawable>button_background.xml

       drawable>button_background_green.xml

       - 버튼 background용

 

    a. HistoryDao.kt

        - @Dao

        - Room에 연결된 dao

    b. History.kt

       - @Entity

       - data class

    c. AppDatabase.kt

       - @Database

       - Database class로 생성

    d. MainActivity.kt

     

 

 

 

 

 

 

Posted by 농부지기
,