Android

Android에서 위도,경도나 주소를 이용해서 서로를 구하는 경우에 GeoCoding이 쓰인다. GeoCoding(지오코딩) 주소를 가지고 위도,경도를 구하는 것 Reverse-GeoCoding (역지오코딩) 위도,경도를 가지고 주소를 구하는 것 (2023-02-14) GRPC 오류 유의 GeoCoding 시 try-catch문을 이용해서 GRPC 오류가 났을때의 예외를 잡는다 1. 많은 주소 Main Thread에서 동기화 작업시, 주소 변경은 시간을 많이 사용하는 작업, 비동기 작업으로 수행 2. 불안정한 인터넷 상황 3. 변환하는 좌표값(위도, 경도)가 소수점 3자리를 넘어가면 가끔 발생 GeoCoding - 주소나 지명 -> 위치 (위도,경도) //주소로 위도,경도 구하는 GeoCoding fun..
Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com Google Developers Console 사이트에 접속 후 프로젝트 생성 적당한 프로젝트 이름을 짓고 만들기 Google Maps Android API를 사용하려면 추가 설정 필요. API 및 사용 서비스 사용 설정을 클릭 검색으로 Maps SDK for Android를 찾아 선택 후 사용 클릭 왼쪽 상단 메뉴 아이콘 클릭 후 API 및 서비스 사용자 인증 정보 클릭 사용자 인증 정보 만들기를 클릭하여 API 키 클릭 생성된 Key 값 Edit API key를 클릭하거나 만들어진 API key를 클릭해 사용자 인증정보..
기본적인 Jetpack Navigation + Bottom Navigation View의 경우에는 BottomNavigationView를 클릭할 때마다 Fragment가 재생성된다. 최초에만 Fragment가 생성되고 Fragment들을 Show/Hide 하는 방향으로 구현하려 한다. Custom Navigation FragmentNavigator Class 생성 Annotation인 @Navigator.Name("keep_state_fragment") 는 해당 내비게이터의 이름이고 graph.xml에서 와 같은 형태로 쓰일 TAG의 이름을 설정한다. 해당 FragmentNavigator의 navigate를 override 하여 재정의함으로써 기존의 프래그먼트 재생성 문제를 해결 @Navigator.Na..
LiveData의 setValue와 postValue 차이 LiveData는 Observer 패턴을 따르며 데이터의 변경이 일어날 때마다 콜백을 받아 원하는 동작을 실행가능 이때 LiveData의 값을 변경하게 해주는 함수가 바로 setValue()와 postValue() 두 함수 다 접근 제한자가 protected로, 외부에서 LiveData의 값을 변경불가 외부에서 값을 변경해주기 위해서는 LiveData를 상속받은 MutableLiveData를 사용 setValue() Main Thread에서 LiveData의 값을 변경 Main Thread에서 바로 값을 변경해주기 때문에 setValue() 함수를 호출한 뒤 바로 밑에서 getValue() 함수로 값을 읽어오면 변경된 값을 가져올 수 있다. Ma..
Android에서 복잡한 뷰를 쉽게 개발할 수 있게 해주는 Airbnb의 Epoxy 라이브러리 Epoxy Airbnb에서 만든 오픈소스 라이브러리 여러 뷰 타입을 갖는 RecyclerView에서 효율적으로 사용 가능, 이를 구현하는데 필요한 boilerplate code를 제거 디자인 변경에 빠르게 적응하고코드를 모듈화하고 관리하기 쉽게 만들기 위한 많은 인터페이스를 제공 예를 들어 위의 화면들과 같이 3개의 각각 다른 뷰타 입을 가지는 화면이 있다. 이를 RecyclerView에서 구현하려면 다음과 같은 것들이 필요 RecyclerView Object RecyclerView.ViewHolder RecyclerView.Adapter Epoxy를 사용하면 아래의 컴포넌트들로 구현할 수 있다. Epoxy M..
AAC 실습 이전에 포스팅했던 자료를 토대로 MVVM과 Room DB를 사용해 AAC기반의 RecyclerView를 구성해보는 실습을 하였다. Android AAC (Android Architecture Component) Android Architecture Component 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음 ViewModel 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트 UI Controller.. bumjae.tistory.com [Android] MVVM (Model, View, ViewModel) MVVM이란? MVVM( Model View ViewModel )은 Microsoft 설계자 인 Cooper & Peters에 ..
Android Architecture Component 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음 ViewModel 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트 UI Controller로부터 UI 관련 데이터 저장 및 관리를 분리하여 ViewModel이 담당하도록 하면 다음과 같은 문제를 해결할 수 있다. 안드로이드 프레임워크는 특정 작업이나 완전히 통제할 수 없는 기기 이벤트에 대한 응답으로 UI Controller를 제거하거나 다시 만들 수 있는데, 이런 경우 UI Controller에 저장된 모든 일시적인 UI 관련 데이터가 삭제됩니다. 단순한 데이터의 경우 onSaveInstanceState() 메서드를 사용하여 복구할 수 있지만 ..
StringFormat Android에서 String.xml을 동적으로 사용하고 싶은 상황이 있을 수 있다. 계속해서 변하는 값을 알려주기 위해서는 String Formatter 를 사용한 Format String 으로 표현될 수 있다. 서식 문자열의 앞에 "%"를 붙여 문자열에 기술해 두면 그 그위치에 변수의 값을 형식화하여 넣을 수 있다. %1$s 는 첫 번째 파라미터에 String 값이 들어오고, %2$d 는 두 번째 파라미터에 십진수 숫자가 들어온다는 뜻의 인자이다. Dynamic Text, %1$s! Change %2$d count. 위 Resource를 코드에서 사용 var text = getString(R.string.dynamic_text, printMsg, count) Databindin..
간혹 Emulator를 사용하다 보면 System UI isn't responding이라는 오류 팝업이 뜬다. 찾아보니 컴퓨터 하드웨어 성능 문제가 제일 크다고 한다. 남은 하드 용량, 전반적 컴퓨터 성능(CPU, GPU, RAM 등등), 에뮬에 할당한 메모리 용량 등이 원인이 될 수 있다고 한다. PC가 에뮬을 가상 머신으로 돌리는데 성능이 딸린다는 것 (회사 노트북이 안좋다..) 간단한 해결방법을 찾았지만 이 방법을 사용 시 Emulator에 저장한 설정, 데이터가 전부 삭제되니 주의 1. Android Emulator 종료 특별히 따로 설정을 하지 않았다면 에뮬레이터에 대한 정보는 아래 경로에 저장된다. 2. 아래 경로에 가서 파일 삭제 C드라이브 -> 사용자 or User -> "현재 사용자명" ..
bumjae
'Android' 카테고리의 글 목록 (4 Page)