21. [파이어스토어, 스토리지, FCM]
[21. 파이어스토어, 스토리지, FCM] [21-1. 파이어스토어 데이터베이스] [파이어베이스 제공. 클라우드 기반 데이터베이스] 파이어스토어 데이터베이스 실시간 데이터베이스 [파이어스토어 사용 설정] -모듈 수준의 build.gradle 파일에 파이어스토어 라이브러리 등록 implementation ‘com.google.firebase:firebase-firestore-ktx:21.2.1’ [파이어스토어 데이터 모델] -파이어스토어는 NoSQL DB이므로 테이블/행 X -컬렉션 안에 문서 단위로 데이터 저장됨 -각 문서에 키-값 쌍의 데이터 저장됨 [파이어스토어 보안 규칙] -match 구문으로 데이터베이스 문서 식별 -allow 구문으로 접근 권한 작성 1) 모든 문서 읽기/쓰기 거부 rules_v..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 31.
20. [파이어베이스 연동과 인증 기능]
[20. 파이어베이스 연동과 인증 기능] [20-1. 파이어베이스 이해] [파이어베이스] -모바일, 웹 어플리케이션 개발 플랫폼 -서버리스 컴퓨팅 구현 가능O Authentication 인증/회원가입/로그인 처리 Cloud Message 알림 전송 Firebse Database 앱 데이터 저장 및 동기화 Realtime Database 실시간 데이터 저장 및 동기화 Storage 파일 저장소 Hosting 웹 호스팅 Functions 서버 관리 없이 모바일 백엔드 코드 실행 Machine Learning 모바일 개발자용 머신러닝 1) 파이어베이스 콘솔 이용 2) 안드로이드 스튜디오에서 파이어베이스 어시스턴트 사용 [20-2. 파이어베이스 연동] 1) 콘솔에서 프로젝트 생성 2) 파이어베이스에 앱 등록 3..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 31.
19. [위치 정보 활용]
[19. 위치 정보 활용] [19-1. 사용자 위치 얻기] 1) 플랫폼 API 이용하는 방법 2) 구글 PLAY 서비스 제공 라이브러리 이용하는 방법 [위치 접근 권한] -각 상황에 맞춰 매니파스트 파일에 다음 권한 등록 ACCESS_COARSE_LOCATION 정확도 높아야 할 때 ACCESS_FINE_LOCATION 대략의 위치 확인할 때 ACCESS_BACKGROUND_LOCATION 백그랑누드 상황에서 위치 접근할 때 -foregroundServiceType 속성에 “location” 지정 필요 호출됨 onProviderDisabled() 위치 제공자가 이용 X -> 호출됨 ② [구글 Play 서비스의 위치 라이브러리 사용] - Fused Lo..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 30.
18. [네트워크 프로그래밍]
[18. 네트워크 프로그래밍] [18-1. 스마트폰 정보 구하기] [전화 상태 변화 감지] -안드로이드12(API 31)에서 PhoneStateListener은 deprecated 되었고, 대신 TelephonyCallback 추가 됐다. - 호환성 고려해야 하므로 두 방법 모두 학습한다. ① [PhoneStateListener 이용하는 방법] 1) PhoneStateListener 상속받은 클래스 내부에 (상태 변화 감지 자동 호출) 함수 중 필요한 것만 재정의해서 작성 2) TelephonyManager 객체를 getSystemService() 함수로 얻고, 이 객체의 listen() 함수에 PhoneStateListener 객체를 등록. 3) 등록 시, listen()의 두 번째 매개변수에는 ‘감지..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 26.
17. [저장소에 데이터 보관]
[17. 저장소에 데이터 보관] (1) 외부 서버에 저장 -> 통신으로 주고받기 (2) 내부 저장소에 저장 : 3가지 제공 - 데이터베이스에 보관 - 파일에 보관 - 공유된 프리퍼런스에 보관 [17-1. 데이터베이스에 보관] [안드로이드의 DBMS] | SQLite -SQLite : 오픈소스로 만들어진 데이터베이스 관리 시스템 -테이블의 데이터를 앱 저장소에 파일로 저장. -외부 앱에서 접근 불가 -실제 데이터를 SQLite 가 관리해줌 [질의문 작성] -SQLite 사용하려면 SQLiteDatabase API 이용해야 함 ▶[질의문을 실행해주는 함수 사용] (1) SQLiteDatabase 객체 생성 (= 데이터베이스 객체) - openOrCreateDatabase() 함수 호출하여 객체 받기 val ..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 25.
16. [콘텐츠 프로바이더 컴포넌트]
[16. 콘텐츠 프로바이더 컴포넌트] [16-1. 콘텐츠 프로바이더 이해] [콘텐츠 프로바이더] -콘텐츠 프로바이더 : 앱의 데이터를 다른 앱과 공유할 때 사용 -데이터 : 대상 앱의 데이터베이스/파일/앱에 할당된 메모리 등에 존재 [콘텐츠 프로바이더 생성/등록] -ContentProvider 클래스 상속받은 후, 내부에 onCreate() / getType() / query() / insert() / update() / delete() 함수 재정의 -이 역시 컴포넌트이므로 매니페스트에 등록 필수 - 태그로 등록. name 속성에 등록할 클래스명 지정 + authorities 속성에 식별 문자열 지정 필수 [콘텐츠 프로바이더 사용] -인텐트와 관련 X -필요한 순간에 시스템에서 자동 생성해주므로 내부에 ..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 24.
15. [서비스 컴포넌트]
[15. 서비스 컴포넌트] *서비스 : 백그라운드 작업 목적 컴포넌트 [15-1. 서비스 이해] [서비스] -서비스 컴포넌트 : 오래 걸리는 작업을 백그라운드에서 처리 가능하게 해주는 컴포넌트 -화면 구현 X. 역시 컴포넌트의 한 종류이므로 시스템에서 생명주기 관리 [서비스 생성. 등록] -서비스 생성: Service 클래스 상속받은 클래스로 작성 -> 내부에 onBind() 생명주기 함수 재정의 필수 class MyService: Service() { //Service 클래스 상속받아 작성 override fun onBind(intent: Intent) : IBinder? { //반드시 재정의 return null } } -서비스 등록 : 역시 컴포넌트이므로 매니페스트 파일에 태그로 등록. -> 실행할..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 24.
14. [브로드캐스트 리시버 컴포넌트]
[14. 브로드캐스트 리시버 컴포넌트] [14-1. 브로드캐스트 리시버 이해하기] [브로드캐스트 리시버] : 안드로이드 4개의 컴포넌트 中 하나 -브로드캐스트 리시버 : ‘시스템 이벤트’ 발생 시, 실행되는 컴포넌트 즉, 시스템에 특정 이벤트 발생 시, 알림을 받아서 처리하는 수신기 -이 역시 안드로이드의 컴포넌트. 따라서 ‘인텐트’를 시스템에 전달하여 실행 O -안드로이드 컴포넌트는 매니페스트에 등록해야 시스템이 인지O [브로드캐스트 리시버 생성] (1) ‘일반’ 생성 방법 ① 브로드캐스트 리시버 객체 생성 -BroadcastReceiver 상속받는 클래스 선언 -내부에 유일한 생명주기 함수 onReceive() 함수가 자동 호출/소멸됨 ② 매니페스트 파일에 태그로 등록 명시적 인텐트로 실행 -> 클래..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 23.
13. [액티비티 컴포넌트]
[13. 액티비티 컴포넌트] [13-1. 인텐트 이해] [인텐트] : intent -인텐트: 컴포넌트 실행 정보 담긴 객체 -인텐트 객체를 시스템에 전달하면 시스템에서 해당 인텐트 정보 분석 후 그에 맞는 컴포넌트를 실행하는 구조. 일반 클래스 -개발자가 직접 생명주기 관리 O 컴포넌트 클래스 -시스템이 생명주기 관리O - 이 클래스에 한해서는 개발자가 직접 접근 불가능 시스템에 요청하고 시스템이 실행하는 구조로 접근만 가능 O -시스템은 런타임 때 ‘매니페스트 파일’ 참조하여 앱을 실행함 -> 컴포넌트(액티비티/서비스/브로드캐스트 리시버/콘텐츠 프로바이더)를 '매니페스트 파일'에 등록하여 알림. -따라서, 시스템에 사용할 컴포넌트를 ‘매니페스트 파일’ 통해서 먼저 알려야 함 -이제 인텐트 단위로 시스템..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 18.
12. [머티리얼 라이브러리]
[12. 머티리얼 라이브러리] [12-1. 앱바 사용] [머티리얼 라이브러리] : Material desisgn library -머티리얼 디자인: 모바일 장치 아우르는 구글의 ‘일관된 애플리케이션 디자인 규격 지침’ -특정 효과 제공하여 ‘직관적’ 뷰 제공 -사용 전 build.gradle 파일 dependencies 항목에 선언 필요 implementation ‘com.google.android.material:material:1.4.0’ [앱바 레이아웃] - 화면 위쪽 영역 꾸미기 : AppBarLayout -앱바(AppBar) : 화면 위쪽 꾸밀 수 있는 영역 -위쪽 영역은 단순 액션바X. 툴바X -화면 위쪽 영역 다양하게 꾸밀 때 앱바 사용 -material 머티리얼 라이브러리가 ‘앱바 레이아웃’..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 16.
11. [제트팩 라이브러리]
[11. 제트팩 라이브러리] [11-1. 제트팩과 androidx 소개] -제트팩 라이브러리 : 구글에서 제공. 안드로이드 앱 개발에 필요한 다양한 라이브러리 모음 [플랫폼 API] : 기본 재료 -플랫폼 API는 ART(Android Runtime)에서 제공하는 안드로이드 앱 핵심 라이브러리 -안드로이드 앱은 런타임 때 ART에 의해 실행되므로 ART에서 제공하는 플랫폼 API 이용 개발 -> [호환성 문제 발생 우려] -앱 개발 시 더 다양한 기능/화면 제공을 위해 ‘제트팩’ 활용 [제트팩] -제트팩 : 구글에서 앱 개발용으로 제공하는 추가 라이브러리 모음 : androidx 로 시작하는 패키지명 사용 -여러 버전에 일관되게 작동 코드 작성 돕는 라이브러리 -ex. 뷰모델/라이브 데이터/룸/페이징 등..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 14.
10. [다이얼로그와 알림 이용]
[10. 다이얼로그와 알림 이용] -앱에서 사용자에게 ‘특정한 상황’을 알려야 할 때가 있다. -앱에서 사용자에게 ‘특정한 상황’ 알릴 때, 소리/진동/다이얼로그/알림 등을 이용한다. [10-1. API 레벨 호환성 고려하기] [API 호환성 고려] targetSdk: 이 앱을 개발한 API 버전 minSdk: 이 앱 동작을 지원하는 최소 API 버전 -앞서 build.gradle 파일 속 SDK 버전 설정에서 targetSdk, minSdk 설정을 한 적 있다. -즉, 앱 개발 시 minSdk 설정값보다 상위 버전에서 제공하는 API를 사용할 경우 호환성 고려 [ API 호환성 애노테이션] : @RequiredApi 애노테이션 -API 레벨 호환성에 문제가 있는 API 사용한 함수/클래스 선언부에 추가..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 10.
09. [리소스 활용]
[09. 리소스 활용] [09-1. 리소스 종류와 특징] -리소스: 정적인 자원. 변경되지 않는 정적 콘텐츠. 리소스로 분리해서 외부 파일로 만듬 -리소스 구분 : 앱 리소스/ 플랫폼 리소스 [앱 리소스 사용] -앱 리소스 :앱 개발자가 res 디렉토리에 직접 리소스 추가하는 것 -res 디렉토리 아래에 개발자가 임의로 이름붙인 디렉토리는 X. 하위 티렉터리 추가 X -리소스 그대로 사용 X. R.Java 파일에 식별자로 등록해서 이용 [앱 리소스 종류] animator 속성 애니메이션 XML anim 트윈 애니메이션 XML color 색상 상태 목록 정의 XML drawable 이미지 리소스 mipmap 앱 실행 아이콘 리소스 layout 레이아웃 XML menu 메뉴 구성 XML raw 원시 형태로 ..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 9.
08. [사용자 이벤트 처리하기]
[08. 사용자 이벤트 처리하기] - 앱 : 화면에서 발생하는 다양한 사용자이벤트 처리하며 상호작용하는 구조 [08-1. 터치와 키 이벤트] [터치 이벤트] : onTouchEvent() 함수 -터치 : 앱 화면에서 발생하는 사용자 이벤트 -콜백함수 : 시스템에서 자동 호출되는 함수 -액티비티에서 onTouchEvent() 함수 재정의하여 선언해놓으면 사용자가 해당 액티비티 화면 터치하는 순간 onTouchEvent() 함수가 자동 호출됨. -이 함수 매개변수는 MotionEvent 객체. 이 객체에 ‘터치 종류’ ‘발생 좌표’ 담김 즉, 터치 이벤트 종류/발생 좌표를 MotionEvent 객체로 얻음 ▶[터치 이벤트 종류] ACTION_DOWN 화면 손가락으로 ‘누른 순간’ 이벤트 ACTION_UP 화..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 9.
07. [뷰를 배치하는 레이아웃]
[07. 뷰를 배치하는 레이아웃] -레이아웃 클래스 : 다르 뷰 객체들 담아서 제어하는 컨테이너 역할. [07-1. 선형 배치] : LinearLayout 클래스 [LinearLyout 배치 기본 규칙] -LinearLayout : 담고 있는 뷰 객체들을 방향 기준 선형 나열 레이아웃 -기본적으로 ‘뷰 객체’ 추가한 순서대로 일렬로 나열. -화면에서 벗어나도 자동 줄 바꿈 X - 에 속성값 지정하여 선형 나열의 ‘방향’을 지정 ▷[방향 지정 속성값] vertical 세로 나열 hroizontal 가로 나열 [LinearLayout 레이아웃 충접 구조] : 복잡한 화면 구성 가능 -레이아웃 클래스도 역시 뷰 객체이므로, 내부에 다른 레이아웃 객체 포함 O [여백 채우기 속성] : -각각의 뷰 객체에 설정한..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 8.
06. [뷰를 이용한 화면 구성]
[06. 뷰를 이용한 화면 구성] [06-1. 화면 구성 방법] [액티비티 – 뷰 구조] -안드로이드 앱 = 컴포넌트들의 조합 -액티비티 : 유일하게 화면을 출력하는 컴포넌트. (단, 그 자체가 화면 X) : 화면 구성 필요. (-> 뷰(View) 클래스 이용) - 액티비티가 실행-> 화면 구성한 뷰 클래스들 이용-> 기기 화면에 출력하는 구조 [액티비티에 화면 구성 방법 2가지 ] ① 액티비티 코드로 작성하는 방법 -액티비티 클래스 안에서 직접 레이아웃 짜고 (필요한 뷰 객체) 화면 구성 코드를 직접 작성 -> 그 레이아웃 배치를 setContentView() 로 화면에 출력 ② 레이아웃 XML 파일로 작성하는 방법 (사용 多) -화면 구성은 XML태그로 짜고 그 XML 파일을 액티비티 클래스 코드 안..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 7.
05. [코틀린의 유용한 기법]
[05. 코틀린 유용한 기법] [05-1. 람다 함수와 고차 함수] [람다 함수] : 익명 함수 -주로 함수를 간단하게 정의할 때 사용 -코틀린에서는 고차함수를 지원함. 고차함수는 매개변수나 반환값에 ‘함수’를 이용함. -즉, 람다함수는 고차함수를 이해하기 위해 알아야 함. [람다 함수 선언과 호출] : { 매개변수 -> 함수 본문 } -{} 중괄호 사용, ( fun 키워드 사용X) -함수 이름 없기 때문에, 함수명으로는 호출 X 1) 람다함수를 변수에 대입해서 사용 val sum = { no1: Int, no2: Int -> no1 + no2} 2)람다함수 선언과 동시에 호출해서 사용: 바로 뒤에서 소괄호()로 호출 {no1: Int, no2 : Int -> no1 + no2 } (10, 20) 3) ..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 4.
04.[ 코틀린 객체지향 프로그래밍]
[04. 코틀린 객체 지향 프로그래밍] [04-1. 클래스와 생성자] [클래스 선언] : class 키워드로 선언 -본문 없이 선언부만 있는 클래스의 의미 : 코틀린에서는 클래스의 생성자를 선언부에 작성O -클래스 멤버 = 생성자/변수/함수/클래스 구성 class 클래스명 { //본문 } [생성자 선언] : constructor 키워드로 선언한 함수 class User { //변수 선언 var name = “kkang” //생성자 constructor(name:String) { this.name = name } //함수 fun someFun(){ } //다른 클래스 class SomeClass{ } [클래스 생성] : 클래스명 함수로 객체 생성( new 연산자 사용 X) val user = User(“k..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 4.
03.[코틀린 Kotlin 기본]
[03. 코틀린 시작하기] [03-1. 코틀린 언어 소개] [코틀린 Kotlin] -코틀린 : 젯브레인스에서 오픈소스 그룹을 만들어 개발한 프로그래밍 언어. -코틀린으로 안드로이드 앱 개발 가능한 이유는 자바 가상 머신 JVM 기반 언어이기 때문 -코틀린 컴파일러가 (.kt) 파일 컴파일하면 자바 바이트 코드 만들어짐 -즉, 코틀린 파일 컴파일하면 자바 클래스가 만들어지고 이를 JVM 이 실행함 [코틀린 개발 장점] -표현 간결함 -널 안정성 지원 언어 : null허용/불허용 구분 선언하므로 널 안정성 확보 -상호 운용성 : 자바-코틀린 혼용가능. 호환가능 -구조화 동시성 : 코루틴 기법 사용시 비동기 프로그래밍 간소화 가능 [코틀린 파일 구성] : .kt 파일 -코틀린 파일명은 클래스명과 다르게 선언해..
- App(앱)_관련 공부 모음/[교재] Andorid App_Kotlin 기반
- · 2022. 3. 4.