구글 맵 클러스터링 화장실 찾기까지 하였지만 화장실이 너무 많아서 렉도 걸리고 화면에 화장실이 겹쳐진 모양으로 가득 차게 됩니다. 구글 맵 클러스터링은 이러한 문제를 보완하여 여러개 겹친 경우 원의 숫자로 보여줍니다. 시작하기 구글 맵 클러스터링을 구현하기 위해서는 크게 ClusterItem 인터페이스와 ClusterManager 클래스가 필요합니다 ClusterItem 인터페이스는 화면에 표시되는 정보를 제공하고 ClusterManager 클래스는 마커로 표시할지 원으로 표시할지를 관리합니다. 추가로 마커의 이미지를 변경하고 싶다면 ClusterRenderer 클래스도 사용해야 합니다. ClusterItem 인터페이스인 MyItem.kt class MyItem(private val position: L..
구글 API 발급 https://cloud.google.com/ 에 접속합니다. 로그인을 한 후에 상단에 있는 콘솔 버튼을 눌러줍니다. 그리고 API 및 서비스에 들어갑니다 그리고 프로젝트를 생성해줍니다. 상단에 있는 API 및 서비스 사용 설정을 누르고 Maps SDK for Android를 선택해줍니다. 사용 설정 버튼을 누른 뒤에 사용자 인증 정보로 와서 API 키를 생성해줍니다. 키 제한을 클릭하여 아래와 같이 제한 설정을 해줍니다. SHA-1 인증키 발급받기 SHA-1 인증키는 아래와 같이 발급받을 수 있습니다. Gradle > Tasks > android > signingReport를 더블 클릭하면 위와 같이 발급이 되고 복사하여 붙여 넣으시면 됩니다. 구글 맵 적용 먼저 build.gradl..
databinding을 사용하기 전에 먼저 build.gradle에 아래를 추가해줍니다. android { ... dataBinding { enabled = true } } 간단한 databinding 설명 //User.kt data class User(val name: String? = null, val age: String? = null, val number: String? = null) 값을 저장하는 data class인 User 클래스를 만들었습니다. // MainActivity.kt class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding val user = User("ImLeaf", "18", nul..
speech to text와 text to speech의 예제입니다. 먼저 Manifest에 권한을 추가해줍니다. // AndroidManifest.xml 아래는 권한을 확인하는 코드입니다. // MainActivity.kt private val REQUEST_CODE = 1 if (Build.VERSION.SDK_INT >= 23) ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.INTERNET, Manifest.permission.RECORD_AUDIO), REQUEST_CODE) STT STT는 두 가지 예제로 준비했습니다. 첫 번째는, onActivityResult를 통해 STT를 받는 전체 코드입니다. class MainA..
Retrofit에서 값을 받아온 뒤, data class에 처리를 하는데 data class의 값을 SharedPreference에 저장할 수 없을까 하다가 찾게되었다. GsonBuilder로 Json 값을 data class에서 가져와 저장하면 된다. // User data class data class User(val name: String = "", val gender: String = "") class PreferenceManager(context : Context) { private val pref = PreferenceManager.getDefaultSharedPreferences(context) // Json에서 data class 값으로 변환 fun getUserInfo(key: Strin..
안드로이드 앱은 컴포넌트(Component)로 이루어져 있습니다. 컴포넌트의 종류로는 Activity, Service, Broadcast Receiver, Content Provider가 있습니다. 각 컴포넌트들은 Intent라는 객체로 상호 통신을 합니다. 액티비티 (Activity) UI 화면을 담당하는 컴포넌트 반드시 하나 이상의 액티비티를 가지고 있어야 함 두 개의 액티비티를 동시에 보여 줄 수는 없음 각 액티비티는 매니페스트 파일에 등록되어 있어야 함 프래그먼트를 추가하여 화면을 분할할 수 있음 서비스 (Service) 백그라운드에서 실행되는 프로세스 UI가 없음 한번 시작된 서비스는 애플리케이션이 종료돼도 백그라운드에서 계속 돌아감 네트워크를 통해서 데이터를 가져올 수 있음 Service 클래..