Android
-
Android Architecture Components #5 - RoomAndroid/AAC 2019. 8. 5. 18:04
대부분의 앱들은 대량의 데이터를 데이터베이스에 구조화 시켜서 영속적으로 저장한다. 이를 Room이라는 라이브러리를 사용하면 쉽게 작성이 가능하다. 구글에서는 안드로이드 앱의 데이터베이스 이용을 Room으로 작성할것을 강력하게 권고하고 있다. ROOM은 ORM(Object Relational Mapping) 으로써 쉽게 말해 데이터베이스의 객체를 자바 or 코틀린 객체로 매핑해주는것 입니다. ROOM은 SQLite의 추상레이어 위에 제공하고 있으며 SQLite의 모든 기능을 제공하면서 편한 데이터베이스의 접근을 허용합니다. Room과 SQLite의 차이점 1. SQLite 경우 쿼리에 대한 에러를 컴파일에 확인하는것이 없지만 ROOM에서는 컴파일 도중 SQL에 대한 유효성을 검사 가능합니다 2. Schem..
-
Android Architecture Components #4 - NavigationAndroid/AAC 2019. 8. 5. 18:04
Navigation을 사용하려면 Fragment에 대해서 잠시 짚고 넘어가야 한다. Fragment는 하나의 액티비티가 여러 개의 화면을 가지도록 만들기위해 고안된 개념으로 옛날에 태블릿의 화면 구성을 위해서 1개의 액티비티의 3개의 화면을 출력하고 싶으나 그 당시 View로서는 불가능하거나 너무 어려운 처지였다. 그래서 Fragment라는 것을 만들었다고 한다. 이러한 Fragment를 좀 더 쉽게 다루고 화면 전환시의 코드나 전체적인 앱의 흐름을 파악하기 좋게 하기 위해 IOS의 스토리보드가 있듯이 안드로이드에도 Navigation이라는 것을 만들어서 사용을 하게 되었다. 단, Activity는 지원하지 않으며 오직 Fragment만 지원을 한다. 그래서 액티비티 1개에 여러개의 프래그먼트가 들어가는..
-
Android Architecture Components #3 - LiveDataAndroid/AAC 2019. 7. 31. 16:11
제목부터 재미있어 보이는 LiveData! LiveData는 Activity나 Fragment의 수명주기에 따라 Observable한 data holder 클래스이다. 따라서 어떤 데이터의 실시간 변화에 따른 UI 업데이트가 필요할 때 사용합니다. Observer pattern을 사용하여, UI component가 data가 변화를 요청하여 변경점이 있으면 업데이트 하는것이 아니라, Data driven 방식으로 data가 변경되면 UI에게 업데이트를 알려준다. 실제로 ViewModel에서 데이터를 가져다 쓰는 View 입장에서는 ViewModel의 데이터가 바뀌면 View로 바뀌어야 하는데 실제 Rx나 LiveData를 쓰지 않고서는 좀 복잡하게 캐치를 해야하는 번거러움이 있다. 이를 Google에서 ..
-
Android Architecture Components #2 - ViewModelAndroid/AAC 2019. 7. 31. 15:46
Android Arcitecture Component 중 한개인 ViewModel에서 알아보자 ViewModel은 MVVM 공부를 하면서 알아보았던 개념인데 View와 Model사이에서 징검다리 역할과 View의 추상 개념으로 View가 가지고 있어야 할 데이터를 ViewModel에서 가지고 있어 View의 역할을 충실히 만들자는 것이 목표이다 그래서 이러한 ViewModel의 구현을 도와주고자 나온것이 ViewModel...!? 이름이 똑같아서 헷갈리기는 하나 전혀 다른 존재인거를 명심하자 ACC ViewModel의 특징은 화면 회전시 데이터를 유지해준다는 점이다 안드로이드에서 화면을 돌리면 OnDestroy -> OnCreate가 되어 가지고 있던 데이터를 다 날리는 셈이 된다. 예를 들면 버튼을 클..
-
Marker로 지도에 표시를 해보자Android/LBS 2019. 7. 29. 16:44
지도에 하나씩 동그란 기호가 있는것을 보았을 것이다 바로 고놈이 마커(Maker)! 한번 개발해 보도록 하자 소스는 이전 Android Map에서 동일하게 시작합니다. 1. 마커 생성하고 적용하기 override fun onMapReady(googleMap: GoogleMap?) { if (googleMap != null) { map = googleMap // CameraSetting val latLng = LatLng(37.550227, 126.987006) val position = CameraPosition.builder().target(latLng).zoom(14f).build() map.moveCamera(CameraUpdateFactory.newCameraPosition(position)) v..
-
Geocoder 도분초를 주소로, 주소를 도분초로!Android/LBS 2019. 7. 29. 16:30
Geocoder는 위 경도를 주소 문자열로 혹은 주소를 위경도 값으로 변형시키기 위한 프로그램 Geocoding : 주소를 위경도로 변환 Reverse Geocoding : 위경도를 주소로 변환 내부적으로 Google Server와 Network 통신이 이루어진다. 1. GeoCoder 사용하기 문자주소 -> 위 경도 val geocoder = Geocoder(this) val results = geocoder.getFromLocationName("서울특별시 동대문구", 1) val latlng = LatLng(results[0].latitude, results[0].longitude) 서울특별시 동대문구를 기점으로 가장 근사값을 가져와서 출력한다. lat/lng: (37.574368199999995,1..
-
Android Google Map 등록하기 ( API Key )Android/LBS 2019. 7. 29. 12:50
구글 맵을 사용하기 위해 API Key를 얻는 방법을 소개 해보도록 하겠습니다. Site : https://console.cloud.google.com Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com Google Cloud Platform에 접속 좌측 상단에 프로젝트 선택을 누른뒤 새 프로젝트를 눌러 필요한 정보를 입력한 뒤 만들기 좌측 매뉴에서 "API 및 서비스" -> "라이브러리" 선택 후 "Maps SDK for Android' 선택 "사용 설정" 버튼 클릭 사용자 인증 정보 탭으로 이동 후 "사용자 인증 정보 만들기" 버튼 클릭 후 API 키 선택 키 제한 선택..
-
Android Google Map 구현하기Android/LBS 2019. 7. 26. 17:56
휴대폰에서 주소를 표기할때 그냥 "서울시 동대문구 OOO" 이런식으로 표시하면 근처 거주나 지역을 알고 있는 사람외에는 쉽게 알기 어려워 따로 지도앱을 키고는 한다. PC에서의 경우에는 워낙 화면이 넓어 이동이 자유롭지만 태블릿이 아닌이상 휴대폰에서는 고것이 참... 그래서 문자보다는 이미지가 좋은 만큼 지도를 보여주기 위해 Google Map을 사용해보도록 하겠다. Gradle Dependency implementation 'com.google.android.gms:play-services:12.0.1' 1. API Key 흭득하기 Site : https://dundun-dev.tistory.com/25 2. AndroidManifest.xml 파일 준비 kr.co.s1.myapplication 이부분..