Android82 [Android/Kotlin] Kakao Map V2: 특정 좌표를 모두 화면에 표시하기 Kakao Map V2에서는 지도에서 특정 좌표들이 모두 보이도록 카메라를 자동으로 이동 및 확대/축소할 수 있습니다.이를 위해 kakaoMap.moveCamera(CameraUpdateFactory.fitMapPoints()) 메서드를 활용할 수 있습니다.이번 글에서는 출발지와 도착지가 지도 화면에 동시에 보이도록 카메라를 설정하는 방법을 공유 하고자 합니다. 문제 상황처음 지도에 출발지와 도착지의 마커를 표시했을 때, 두 위치가 서로 멀리 떨어져 있으면 한 화면에 두 마커가 모두 나타나지 않는 문제가 있었습니다.이런 경우, 사용자는 출발지나 도착지 중 하나만 확인할 수 있어 불편함을 느낄 수 있습니다.이를 해결하기 위해 Kakao Map V2의 CameraUpdateFactory.fitMapPoint.. 2024. 12. 2. [Android/Kotlin] API Key 숨기기: buildConfigField 활용법 안드로이드 앱 개발에서는 API Key와 같은 민감한 정보를 소스 코드에 하드코딩하면 보안상 위험합니다.이러한 문제를 방지하기 위해 **buildConfigField**를 사용하여 API Key를 안전하게 관리해야 하지만, 매번 구현할 때마다 세부적인 과정을 잊어버리곤 했습니다. 그래서 이번 기회에 정리해 두고 필요할 때 빠르게 참고할 수 있도록 내용을 남깁니다. 1. 프로젝트 설정: local.properties에 API Key 저장하기프로젝트 루트 디렉토리의 local.properties 파일에 API Key를 추가합니다. 이 파일은 기본적으로 .gitignore에 포함되어 있어 Git 저장소에 업로드되지 않습니다.예시: local.propertiesKAKAO_NATIVE_APP_KEY=your_ka.. 2024. 12. 2. [Android/Kotlin] Kotlin의 ?. 연산자와 ?: 연산자: 실제 예시로 이해하기 개발 중 맵의 출발지/도착지를 재설정하는 기능을 구현하면서 Kotlin의 ?. 연산자와 ?: 연산자를 효율적으로 사용할 수 있는 상황이 발생했습니다.이 글에서는 실제 예시와 함께 두 연산자의 쓰임새를 정리하고, 어떻게 이를 활용해 코드를 간결하고 직관적으로 만들었는지 정리 해 두고자 합니다. 문제 상황: 맵의 마커 업데이트맵에서 사용자가 새로운 출발지나 도착지를 선택하면, 맵에 표시된 마커(레이블)를 업데이트해야 합니다. 이때 고려해야 할 점은 다음과 같습니다:마커가 이미 존재하는 경우기존 마커의 위치를 업데이트해야 합니다.마커가 존재하지 않는 경우새로 마커를 추가해야 합니다.해결 방법: ?. 연산자와 ?: 연산자의 활용이 문제를 해결하기 위해 아래와 같은 Kotlin 문법을 활용했습니다.destinat.. 2024. 11. 29. [Android/Kotlin] 안드로이드 앱에서 카카오 SDK를 사용해 OAuth 로그인을 구현하는 방법 이번 글에서는 카카오 SDK를 사용해 안드로이드 앱에 OAuth 로그인을 구현하는 과정을 기록 해 두고자 합니다. 1. 카카오 SDK 설치먼저, 카카오 SDK를 프로젝트에 추가해야 합니다.Gradle 설정1. 프로젝트 수준 build.gradle 파일에 Maven 저장소 추가.allprojects { repositories { google() mavenCentral() maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' } }} 2.앱 수준 build.gradle 파일에 카카오 SDK 종속성 추가.dependencies { implementation "com.kakao.sdk:v2.. 2024. 11. 9. [Android/Kotlin] EncryptedSharedPreferences 사용하기: 보안 강화된 데이터 저장 방법 안드로이드 앱 개발 시, 간단한 데이터 저장을 위해 흔히 SharedPreferences를 사용합니다.하지만 이 방식은 기본적으로 암호화되지 않은 데이터를 저장하므로 보안에 취약할 수 있습니다.특히 사용자의 인증 토큰, 계정 정보와 같은 민감한 데이터를 다룰 때는 암호화가 필수적입니다.여기서 EncryptedSharedPreferences가 유용하게 사용될 수 있습니다.이번 글에서는 EncryptedSharedPreferences가 무엇인지, 왜 더 안전한지, 어떻게 사용하는지에 대해 다뤄보겠습니다. 1. EncryptedSharedPreferences란?EncryptedSharedPreferences는 안드로이드에서 민감한 데이터를 안전하게 저장하기 위해 제공하는 암호화된 데이터 저장 방식입니다. 일반.. 2024. 11. 8. [Android/Kotlin] CameraX에서 발생한 'Use case binding failed' 오류를 조건부 바인딩으로 해결하기 CameraX를 사용해 사진 또는 비디오를 촬영하고, 그 결과를 서버에 업로드한 후 성공 여부를 이전 화면으로 전달하는 과정에서 카메라 화면으로 넘어가지 못하고 Use case binding failed 오류가 발생 했습니다.이 오류는 설정된 mediaFormat에 따라 하나의 촬영 모드만 활성화해야 하는 상황에서, 사진(ImageCapture)과 비디오(VideoCapture) UseCase를 동시에 바인딩하고 있었기 때문에 발생했습니다. 이번 글에서는 mediaFormat 값에 따라 필요한 UseCase만 바인딩하도록 수정하여 문제를 해결한 과정을 공유합니다.문제 상황: Use case binding failed 오류CameraX는 기기 하드웨어가 허용하는 범위 내에서만 여러 UseCase를 동시 .. 2024. 11. 1. [Android/Kotlin] activityResultLauncher로 비동기 데이터 교환 및 파일 업로드 결과 처리하기 안드로이드에서는 화면 간 데이터 교환을 위해 기존에 startActivityForResult를 사용했지만, activityResultLauncher API가 등장하면서 더 직관적이고 안전하게 데이터를 주고받을 수 있게 되었습니다.이번 글에서는 카메라 액티비티에서 촬영한 파일을 서버에 업로드하고, 그 결과를 원래 화면에 전달하여 토스트로 표시하는 예시를 통해 activityResultLauncher의 사용법을 알아보겠습니다.1. activityResultLauncher를 onCreate에서 정의해야 하는 이유activityResultLauncher는 액티비티의 생명주기를 따르는 안전한 비동기 콜백입니다. onCreate에서 한 번만 정의하여야 안정적으로 동작하며, 다른 메서드에서 정의할 경우 여러 개의 a.. 2024. 11. 1. [Android/Kotlin] 코틀린에서 비동기 콜백 처리하기: 람다와 인터페이스 방식 비교 1. 람다 표현식을 사용한 콜백람다 표현식은 코드가 간결해지고 가독성을 높여주며, 코틀린의 함수형 프로그래밍 스타일을 쉽게 구현할 수 있습니다. 예를 들어, reportEmergency 메서드에서 이벤트 ID를 전달받아 처리하는 방식을 람다로 작성한 코드는 다음과 같습니다.fun reportEmergency( context: Context, uuid: String = UserSettingsManager.getUuid(context), latitude: Double = 37.585057, longitude: Double = 126.885347, eventIdCallback: ((Long) -> Unit)? = null // 람다로 콜백 전달) { CoroutineScope(.. 2024. 10. 30. [Android/Kotlin] 기본 카메라 기능을 사용한 사진 및 비디오 자동 촬영 시도 기록 이번 글에서는 Android에서 기본 카메라 기능을 활용하여 자동으로 사진과 비디오를 촬영하려고 시도한 과정을 기록합니다. CameraX 대신 기본 카메라 기능을 통해 구현했으나, 자동 촬영이 원활하게 되지 않아 최종적으로 CameraX로 전환하게 된 이유와 관련한 경험을 공유합니다. 이 기록은 나중에 다시 기본 카메라를 활용할 가능성을 염두에 두고 작성되었습니다.1. 기본 카메라를 이용한 촬영 시도Android의 기본 카메라 앱을 호출하여 사진과 비디오를 촬영하려고 했습니다. 이때 Intent와 ActivityResultLauncher를 사용해 시스템 카메라 앱을 호출하여 촬영 작업을 수행하고, 촬영된 미디어 파일을 앱의 지정된 위치에 저장하도록 했습니다.2. 구현 코드 개요2.1. ActivityRe.. 2024. 10. 25. 이전 1 2 3 4 5 6 7 ··· 10 다음 반응형