본문 바로가기

분류 전체보기274

Firebase -데이터베이스(3) 데이터 Read, Puul Driven방식, Push Driven 방식 Firebase - 데이터베이스 읽어오기(Read)데이터베이스를 읽어오는 방식을 Read라고 합니다. 앱을 만드는데 있어서 Read부분은 굉장히 중요합니다. 데이터를 읽어오는 방식에는 두 가지가 있습니다. Controller가 자신이 원하는 타이밍에만 데이터베이스에 접근해서 데이터를 읽어오는 Pull Driven 방식과 , 데이터가 변경되는 순간 데이터를 받는 Push Driven 방식이 있습니다. 1.Pull DrivenController가 원하는 타이밍에 데이터를 읽어오는 방식입니다. 보통 한 번만 데이터를 읽어올 때 많이 사용합니다. Get().addOnCompleteListener를 입력해주면 됩니다. 형식collection(Collection 이름).document(Document 이름).get.. 2019. 1. 9.
Firebase -데이터베이스(2) NoSQL구조, Firestore선언, create하기 Firebase - 데이터베이스 Firestore 사용하기 일단 데이터베이스에는 CRUD라는 개념이 있습니다. Create, Read, Update, Delete의 약자로 쓰기, 읽기, 수정하기, 삭제하기 를 말합니다.Firestore로 어떻게 CRUD를 할수 있는지 알아보겠습니다. NoSQL 데이터베이스의 기본 구조Firestore의 구조는 크게 세 가지로 나눌 수 있습니다. 기본적인 데이터베이스의 가장 기초적인 구성 요소인 Data가 있고 Data가 모여서 하나의 문서 즉 Document를 구성하며 Document가 모여서 하나의 Collection을 구성한다. ( Data -> Document -> Collection) 만약 유저정보를 가지고 있는 데이터베이스를 예로 들 경우 유저 정보의 한 조각인.. 2019. 1. 9.
Firebase -데이터베이스(1) FirebaseDB종류, Firestore 안드로이드프로젝트 ,Console설정하기 Firebase - 데이터베이스 Firebase 데이터베이스란?Firebase 데이터베이스는 다른 데이터베이스들과는 다른 방식으로 만들어져 있다.보통 데이터베이스들은 Pull driven 방식의 매커니즘으로 작동됩니다.Pull Driven 방식이란 데이터베이스의 내용이 수정되어도 따로 앱에서 또는 Controller가 데이터베이스를 읽어들이지 않는 이상 앱의 UI가 그려지지 않는 것을 말합니다.반대로 Push Driven 방식의 데이터베이스는 데이터베이스의 내용이 수정될 경우 UI가 변경되는 것을 말합니다. Push Driven 방식은 RxAndroid나 RxSwift 등에서 많이 얘기하고 있습니다.즉 시시각각 데이터가 변하는 모바일에서는 최적화 된 데이터베이스 방식이며 이 방식을 사용하게 되면 코드를 .. 2019. 1. 9.
Firebase - 파이어베이스로 트위터로그인 Firebase - 파이어베이스 트위터로그인Firebase 콘솔에 내앱 추가하기먼저 https://console.firebase.google.com/ Firebase 콘솔창에 접속해 Project Overview오른쪽의 톱니바퀴를 눌러 프로젝트설정-> 앱추가 -> 패키지이름 입력 ->google-services.json 파일 다운로드하여 -> 안드로이드스튜디오 app 아래에 넣어주기 그리고 gradle.build(모듈)의 dependencies에 아래 내용을 추가합니다dependencies { ... //Firebase implementation 'com.google.firebase:firebase-database:16.0.5' implementation 'com.google.firebase:fireba.. 2019. 1. 8.
Firebase - 파이어베이스로 페이스북로그인 Firebase - 파이어베이스 페이스북로그인페이스북 아이디로 소셜 로그인 하는 기능은 현재 가장 많이 쓰이는 소셜 로그인 기능일 것입니다. 아이폰과 안드로이드폰 사용자 모두 손쉽게 가입할 수 있는 장점이 있기 때문입니다. Firebase 콘솔에 내앱 추가하기먼저 https://console.firebase.google.com/ Firebase 콘솔창에 접속해 Project Overview오른쪽의 톱니바퀴를 눌러 프로젝트설정-> 앱추가 -> 패키지이름 입력 ->google-services.json 파일 다운로드하여 -> 안드로이드스튜디오 app 아래에 넣어주기 그리고 gradle.build(모듈)의 dependencies에 아래 내용을 추가합니다dependencies { ... //Firebase imp.. 2019. 1. 8.
Firebase - 파이어베이스로 구글로그인 Firebase - 구글로그인 구글아이디로 소셜 로그인 하는 기능은 구현이 매우 간편하며 이메일 ,비밀번호, 아이디 찾기 기능을 구현하지 않아도 되기 때문에 금방 적용할 수 있습니다. 구글 로그인 기능을 적용하기 위해서는 먼저 프로젝트에 라이브러리 의존성을 추가합니다 파이어베이스를 이용하기 때문에 우선 gradle.build(모듈)의 dependencies에 아래 내용을 추가합니다 dependencies { ... //Firebase implementation 'com.google.firebase:firebase-database:16.0.5' implementation 'com.google.firebase:firebase-auth:16.0.5' //Google Login implementation 'co.. 2019. 1. 8.
Firebase - 안드로이드프로젝트와 파이어베이스 연동 (2) Firebase - 안드로이드프로젝트와 파이어베이스 연동 FirebaseAuth의 기능들 명칭기능 createUserWithEmailAndPassword 회원가입 signlnWithEmailAndPassword 로그인 sendEmailVerification 회원 가입한 이메일 유효 확인 updateEmail 회원 가입한 아이디 이메일 변경 updatePassword 회원 가입한 아이디 패스워드 변경 sendPasswordResetEmail 회원 가입한 비밀번호 재설정 delete 회원 가입한 아이디 삭제 reauthenticate 아이디 재 인증 FirebaseAuth 호출FirebaseAuth를 선언하기 위해서는 "FirebaseAuth.getInstance() "를 입력합니다.class MainAct.. 2019. 1. 7.
Firebase - 안드로이드프로젝트와 파이어베이스 연동 (1) Firebase - 안드로이드프로젝트와 파이어베이스 연동Firebase 프로젝트와 안드로이드 프로젝트를 연결하기 위해서는 몇 가지 준비가 필요합니다. 안드로이드 프로젝트가 Firebase에 접근하기 위해서는 Firebase에서 발급한 증명서가 필요한데,그 증명서는 "google-service.json" 파일 입니다. 이 파일 안에 Firebase에 필요한 여러 API 키가 담겨있습니다. google-service.json 파일과 안드로이드 프로젝트 연결하기1) 안드로이드 프로젝트 생성안드로이드 프로젝트를 생성한 뒤 build.gradle(Project)에 아래코드를 넣어줍니다. buildscript { .... repositories { google() jcenter() } dependencies { ... 2019. 1. 7.
FireBase란? FireBase란?모바일 서버를 개발하기 위해서는 인증, 데이터베이스, 푸시 알람, 스토리지, API 등 모든것을 개발해야 했습니다. 하지만 모바일 서버는 이런 모든 것을 구성하는데 구성하는 범위가 매번 새로운 앱들과 차이 나지 않기 때문에 리눅스를 설치하고, FTP를 설치하고, 데이터베이스를 설치하고, 노드 서버나 스프링 서버를 올리고, 방화벽을 올리고, 도메인을 구입하는 등 이런 반복적인 작업을 앱 개발 할 대마다 하는 것은 엄청난 시간낭비입니다. FireBase는 이 모든 플렛폼을 프로젝트 구축 시 자동적으로 만들어 줍니다. 또한 서버를 구축하기 위해서 리눅스 명령어를 알 필요도 없으며 도메인을 구입할 필요도 없고 개발하는 동안에는 서버를 구입할 필요도 없습니다. FireBase라는 플랫폼으로 프론.. 2019. 1. 7.
Kotlin - Realm 사용하기 Kotlin - Realm 사용하기Realm은 적은 코드로 데이터베이스를 작성할 수 있습니다. SQLite는 SQL 문법을 어느정도 알고있어야 하는 반번 Realm은 SQL 문법을 전혀 몰라도 사용할 수 있습니다. Realm 데이터베이스 사용 준비Realm 을 사용하려면 먼저 프로젝트수준의 build.gradle 파일을 열고 dependencies 항목에 아래와같이 플러그인을 추가합니다.dependencies { .... classpath 'io.realm:realm-gradle-plugin:5.2.0' } 다음으로 모듈 수준의 build.gradle 파일을 열고 상단에 아래와 같은 두 가지 플러그인을 추가합니다.apply plugin: 'realm-andorid' apply plugin: 'kotlin.. 2019. 1. 7.
Kotlin - 소리 재생하기(MediaPlayer ,SoundPool 클래스, 버전분기) Kotlin - 소리 재생하기(MediaPlayer ,SoundPool 클래스, 버전분기) 안드로이드에서 소리를 재생하는 방법에는 대표적으로 MediaPlayer 클래스와 SoundPool 클래스를 사용하는 방법이 있습니다. MediaPlayer일반적인 소리 파일 전주에는 MediaPalyer 클래스를 사용합니다. 클래스 이름에서 알 수 있듯이 음악파일과 비디오 파일을 모두 재생할 수 있습니다. MediaPlayer로 raw 디렉터리 파일을 재생하는 코드는 다음과 같이 간단합니다.//raw 디렉터리의 do1 파일을 재생하는 예val mediaPlayer = MediaPlayer.create(this,R.raw.do1)button.setOnClickListener{ mdiaPlayer.start() }.... 2019. 1. 5.
Kotlin - 체인모드(ContraintLayout) Kotlin - 체인모드(ContraintLayout) [Ctrl]+ 뷰클릭 으로 여러 뷰들은 선택할 수 있습니다. 여러 뷰들을 선택한 후 우클릭하면 Chains 메뉴에서 Create Vertical Chain 또는 Create Horizontal Chain 을 선택하여 사슬을 연결할 수 있습니다. 위와 같은 Cycle chain mode 아이콘을 클릭할 때마다( 분산 체인(Spread Chain), 체인 내부에서 분산(Spread Inside Chain),가중 체인(Weighted Chain)으로 변경됩니다. 다른 속성들과 결합하여 다음과 같이 다양한 한 형태의 체인 설정이 가능합니다.Packed Chain(중앙 배치 체인) Packed Chain with Bias(편향된 중앙 배치 체인) 등등 2019. 1. 5.
Kotlin - companion object 출처 - https://www.androidhuman.com/lecture/kotlin/2016/07/10/kotlin_companion_object/ 코틀린에는 static이 없다? - companion object코틀린에는 정적(static) 변수 혹은 메소드가 없고, 대신 패키지 내에 함수를 선언하여 사용할 수 있습니다. 자바와 동일한 방식으로 사용하기: companion objectcompanion object를 사용하면 위에서 나열했던 문제 없이 자바에서 정적 변수/메서드를 사용했던 것과 동일하게 사용할 수 있습니다. 다음은 사용 예를 보여줍니다.class Foo { companion object { const val BAR = "bar" fun baz() { // Do something } }.. 2019. 1. 5.
Kotlin - 앱 위젯 만들기 Kotlin - 앱 위젯 만들기앱 위젯이란 런처에 배치하여 빠르게 앱 기능을 제공하는 컴포넌트 입니다. 손전등 위젯 만들기1) 앱 위젯 추가 2) 앱 위젯이 생성한 코드 살펴보기3) 앱 위젯 레이아웃 수정4) 앱 위젯에서 손전등 켜기5) 앱 위젯 배치6) 앱 위젯 사용하기 1. 앱 위젯 추가프로젝트 창의 패키지명에서 우클릭 또는 안드로이드 스튜디오에서 [File] -> [New] -> [Widget] ->[App Widget] 항목 설명 Placement 위젯을 어디에 배치하는지 설정합니다. - Home-screen only : 홈 화면에만 배치 가능 - Home-screen and Keyguard : 홈 화면과 잠금 배치화면에 배치 가능 -Keyguard only(API 17+) : 잠금화면에만 배치 .. 2019. 1. 5.
Kotlin - 서비스( Service ) Kotlin - 서비스( Service )서비스란 안드로이드 4대 컴포넌트 중 하나로 화면이 없고 백그라운드에서 수행하는 작업을 작성하는 컴포넌트입니다. 서비스는 크게 바운드된 서비스와 바운드되지 않은 서비스로 나뉩니다.지금 다룰 서비스는 바운드 되지 않은 서비스입니다. 서비스와 생명주기서비스는 액티비티와 마찬가지로 생명주기용 콜백 메소드를 가지고 있습니다. 서비스를 시작하면 onCreate() 메소드가 호출되고, onStartCommand() 메소드가 호출되며 여기서 서비의 동작을 코드로 작성합니다. 서비스가 종료되면 onDestroy() 메소드가 호출됩니다. - onCreate() : 서비스가 생성 될 때 호출되는 콜백메소드 입니다. 초기화 등을 수행합니다. - onStartCommand() : 서비.. 2019. 1. 5.
Kotlin - 프래그먼트 생성 Kotlin - 프래그먼트 생성프래그먼트를 생성하려면 프로젝트 창에서 패키지를 클릭 후 우클릭 또는 안드로이드 스튜디오 상단 메뉴에서[File]-> [New]->[Fragment]->[Fragment(Blank)]를 클릭합니다. 체크박스들의 역할 - Create layout XML? : XML 레이아웃 파일을 생성합니다. 레이아웃 파일을 보통 같이 만드므로 체크하면됩니다.- Include fragment factory method : 프레그먼트를 생성하는 팩토리 메소드를 포함합니다.프래그먼트를 생성 할 때 인자를 넘겨준다면 체크합니다.- Include interface callbacks? : 액티비티와 상호 작용하는 콜백 인터페이스를 포함합니다.프래그먼트에서 발생한 이벤트를 액티비티에 전달하려면 체크합니다. 2019. 1. 5.
Kotlin - 콘텐츠 프로바이더 사용하기 Kotlin - 콘텐츠 프로바이더 사용하기콘텐츠 프로바이더 란? 데이터베이스, 파일, 네트워크의 데이터를 다른 앱에 공유합니다.콘텐츠 프로바이더란 앱의 데이터 접근을 다른 앱에 허용하는 컴포넌트 입니다. 콘텐츠 프로바이더를 이용해 사진 정보를 얻어오는 방법에 대해 알아보겠습니다. 프로바이더를 이용하여 사진 정보를 가지고 오는 순서는 아래와 같습니다1) 사진 데이터는 외부 저장소에 저장되어 있으므로 외부 저장소 읽기 권한을 앱에 부여합니다.2) 외부 저장소 읽기 권한은 위험 권한으로 실행 중에 사용자에게 권한을 허용하도록 합니다.3) contentResolver 객체를 이용하여 데이터를 Cursor 객체로 가지고옵니다. 위 순서를 기억하며 아래 과정을 진행합니다.1. 프로바이더로 기기의 사진 경로 얻기2... 2019. 1. 4.
Kotlin - 안드로이드 내장센서 사용하기 안드로이드 내장 센서 사용하기 안드로이드 내장 센서 종류(Sensor 클래스) Type센서값설명intTYPE_ACCELEROMETER1가속도 감지, 외부의 충격량과 방향 감지 센서intTYPE_ALL-1모든 센서intTYPE_AMBIENT_TEMPERATURE13주위 온도 감지 센서intTYPE_GAME_ROTATION_VECTOR15보정되지 않은 회전 벡터 센서intTYPE_GEOMAGNETIC_ROTATION_VECTOR20지자기 회전 벡터intTYPE_GRAVITY9축의 방향과 중력 감지intTYPE_GYROSCOPE4회전 정보 감지, 다양한 축의 회전각 감지intTYPE_LIGHT5빛의 세기 감지 센서intTYPE_MAGNETIC_FIELD2자기장 센서intTYPE_MOTION_DETECT30움직.. 2019. 1. 4.
Kotlin - 기타기능(let, with, apply, run 함수) Kotlin - 기타기능(고차함수, 동반객체) 유용한 기타 기능 - 확장 함수 : 원래 있던 클래스에 기능을 추가하는 함수- 형변환 : 숫자형 자료형끼리 쉽게 형변환 가능- 형 체크 : 변수의 형이 무엇인지 검사하는 기능- 고차 함수 : 인자로 함수를 전달하는 기능- 동반 객체 : 클래스의 인스턴스 생성 없이 사용할 수 있는 객체- let() 함수 : 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수- with() 함수 : 인자로 객체를 받고 블록에서 수행된 결과를 반환하는 함수- apply() 함수 : 블록에 자기 자신을 전달하고 이 객체를 반환하는 함수- run() 함수 : 익명함수처럼 사용하거나, 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수 let() 함수코틀린 기본 라이브러리는.. 2019. 1. 3.
Kotlin - 기타기능(고차함수, 동반객체) Kotlin - 기타기능(고차함수, 동반객체) 유용한 기타 기능 - 확장 함수 : 원래 있던 클래스에 기능을 추가하는 함수- 형변환 : 숫자형 자료형끼리 쉽게 형변환 가능- 형 체크 : 변수의 형이 무엇인지 검사하는 기능- 고차 함수 : 인자로 함수를 전달하는 기능- 동반 객체 : 클래스의 인스턴스 생성 없이 사용할 수 있는 객체- let() 함수 : 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수- with() 함수 : 인자로 객체를 받고 블록에서 수행된 결과를 반환하는 함수- apply() 함수 : 블록에 자기 자신을 전달하고 이 객체를 반환하는 함수- run() 함수 : 익명함수처럼 사용하거나, 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수 고차함수코틀린에서는 함수의 인수로 함수.. 2019. 1. 3.
Kotlin - 기타기능(확장함수,형변환,형체크) Kotlin - 기타기능(확장함수, 형변환, 형 체크)유용한 기타 기능 - 확장 함수 : 원래 있던 클래스에 기능을 추가하는 함수- 형변환 : 숫자형 자료형끼리 쉽게 형변환 가능- 형 체크 : 변수의 형이 무엇인지 검사하는 기능- 고차 함수 : 인자로 함수를 전달하는 기능- 동반 객체 : 클래스의 인스턴스 생성 없이 사용할 수 있는 객체- let() 함수 : 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수- with() 함수 : 인자로 객체를 받고 블록에서 수행된 결과를 반환하는 함수- apply() 함수 : 블록에 자기 자신을 전달하고 이 객체를 반환하는 함수- run() 함수 : 익명함수처럼 사용하거나, 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수 확장 함수코틀린은 확장 함수 기.. 2019. 1. 3.
Kotlin - 람다식, SAM변환 Kotlin - 람다식, SAM변환 람다식코틀린은 자바 8과 같이 람다식을 지원합니다. 람다식은 하나의 함수를 표현하는 방법으로 익명 클래스나 익명 함수를 간결하게 표현할 수 있어서 매우 유용합니다. 람다식은 코드를 간결하게 해주는 장점이 있지만 디버깅이 어렵고 남발할 경우 오히려 코드의 가독성이 떨어져 주의해야 합니다. 먼저 두 인수를 받아서 더해주는 add() 메소드입니다.fun add(x:Int,y:Int):Int{ return x+y} 위의 코드는 아래처럼 표현할 수 있습니다. 반환 자료형을 생략하고 블록{}과 return을 생략할 수 있습니다.fun add(x:Int,y:Int)=x+y 또한 아래처럼 표현할 수도 있습니다. 코틀린의 람다식은 다음과 같이 항상 중괄호로 둘러싸여 있습니다. 내용으로.. 2019. 1. 3.
Kotlin - 컬렉션(리스트,맵,집합) Kotlin - 컬렉션(리스트, 맵, 집합)컬렉션은 개발에 유용한 자료구조를 말합니다. 안드로이드 개발에서도 리스트나 맵은 자주 사용되는 구조입니다. 리스트리스트는 배열처럼 같은 자료형의 데이터들을 순서대로 가지고 있는 자료구조입니다. 중복된 아이템을 가질 수 있고 추가, 삭제, 교체 등이 쉽습니다. 요소를 변경할 수 없는 읽기 전용 리스트는 listOf() 메소드로 작성할 수 있습니다.val foods:List = listOf("라면","갈비","밥") 형 추론으로 자료형을 생략할 수 있습니다.val foods=listOf("라면","갈비","밥") 요소를 변경하는 리스트를 작성할 때는 mutableListOf() 메소드를 사용하여 작성합니다. 자바와 다른 점은 특정 요소에 접근할 때 대괄호 안에 요소.. 2019. 1. 3.
Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:) Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:) null값이 아님을 보증(!!)변수 뒤에 !!를 추가하면 nulll값이 아님을 보증하게 됩니다. 다음과 같이 null 값이 허용되는 name 변수의 경우 String? 타입이기 때문에 String 타입으로 변환하려면 !!값을 붙여서 null 값이 아님을 보증해야 합니다 val name: String?="키다리" val name2: String=name //에러val name3: String?=name //OKval name4: String=name!!//OK 안전한 호출 (?.)메소드 호출 시 점(.) 연산자 대신 ?. 연산자를 사용하면 null 값이 아닌 경우에만 호출됩니다. 다음 코드는 str 변수의 값이 null이 .. 2019. 1. 3.