본문 바로가기

Android16

[Android] 갤러리에서 사진 가져오기 ActivityResultContracts.GetContent을 이용해서 내부 저장소에서 이미지를 가져올게요.이전 글에서 설명한 카메라에서 가져오는 방식과는 다르게 미리 파일을 생성하지 않아도 돼서 더 간단해요.Manifest에 READ_MEDIA_IMAGES권한을 먼저 받아와야하는데, 권한을 받는 과정은 다음에 설명해볼게요.1. registerForActivityResult() 구현이미지를 선택하면 content://로 시작하는 uri를 반환해요.private val pickImageLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> uri?.let { imageUri -> //이미지를.. 2024. 3. 23.
[Android] 카메라 앱으로 사진 촬영 기기의 기본 카메라 애플리케이션을 사용하여 사진이나 동영상 촬영과 같은 기본적인 카메라 작업을 실행하기 위해서는 Intent를 활용하면 되는데요.안드로이드 개발자 문서에서는 startActivityForResult()를 사용한 예제로 안내하고 있어요.저는 registerForActivityResult()을 이용해서 구현해 봤어요.1. AndroidManifest.xml에 FileProvider설정FileProvider설정은 AndroidManifest.xml및 file_paths.xml에서 정의해야 합니다. 이미지 파일 저장을 위한 FileProvider구성은 다음과 같아요.AndroidManifest.xml ... ...res/xml/file_paths.xml .. 2024. 3. 22.
[Android] Deep Link 딥링크 딥링크의 작동 원리딥링크는 URL 형태로 제공되며, 이 URL을 클릭하면 앱의 특정 부분으로 직접 이동할 수 있습니다. 웹에서 특정 페이지의 링크를 클릭해 바로 그 페이지로 이동하는 것과 유사한 원리입니다. 하지만 딥링크는 앱 내부의 특정 화면으로 직접 이동한다는 점에서 차이가 있습니다.딥링크의 종류딥링크 : 앱이 이미 설치되어 있어야만 작동하는 링크입니다. 앱이 없으면, 링크를 눌러도 아무 일도 일어나지 않습니다.웹 URL 딥링크 : 앱이 설치되어 있지 않으면 웹사이트로 이동하는 링크입니다. 이 방식으로, 앱이 없어도 내용을 볼 수 있습니다.앱 링크 : 가장 진화된 형태의 딥링크로, 앱이 있으면 바로 앱으로, 없으면 웹사이트로 이동합니다.딥링크의 장점사용자 경험 개선: 사용자는 검색이나 여러 단계의 탐.. 2024. 3. 18.
[Android] MVVM 패턴(Model-View-ViewModel) 복잡한 로직과 데이터 관리, 그리고 반응형 UI를 효과적으로 다루기 위해서는아키텍처 패턴이 필요합니다. 오늘은 MVVM(Model-View-ViewModel) 아키텍처 패턴에 대해 이야기하고자 합니다. MVVM이란? MVVM(Model-View-ViewModel) 아키텍처 패턴은 코드의 구조를 깔끔하게 유지하고, 테스트를 용이하게 하며, 유지보수를 간편하게 만드는 현대적인 솔루션입니다. MVVM은 앱의 비즈니스 로직과 사용자 인터페이스를 효과적으로 분리함으로써 애플리케이션의 확장성과 유지보수성을 대폭 향상시킵니다. MVVM 장점 코드 분리: 비즈니스 로직과 UI 로직의 철저한 분리로 코드 관리가 용이해집니다. 재사용성: 뷰모델을 통한 로직의 재사용성이 높아지며, 다양한 뷰에서 동일한 뷰모델을 사용할 수 .. 2024. 3. 14.
[Android] Retrofit2와 RxJava의 통신 실패 관리 Retrofit2와 RxJava를 함께 사용하면, 비동기 네트워크 요청을 보다 선언적이고 반응형으로 처리할 수 있습니다. 안녕하세요. Android앱 개발 시 네트워크 요청을 Retrofit2과 RxJava 를 많이 이용하는데요. 처음엔 RxJava의 'Throwable'과 Retrofit2의 'Response.isSuccessful() = false인 경우의 차이를 잘 몰랐었어요. 이 글에서는 차이가 무엇인지 설명해보려고 합니다. Retrofit2와 RxJava의 조합 Retrofit2는 HTTP API를 자바 인터페이스로 쉽게 변환해주는 강력한 라이브러리입니다. RxJava와의 결합은 네트워크 요청의 비동기 처리를 더욱 효율적이고 선언적으로 만들어 줍니다. 이 조합을 통해 개발자는 네트워크 상태, 데.. 2024. 3. 13.
[Android] Activity Lifecycle 액티비티 생명주기 콜백을 잘못 구현할 경우 발생할 수 있는 문제 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 1. onCreate() Activity가 처음 생성될 때 한 번만 호출됩니다. 필수로 구현해야합니다. 초기화 작업을 수행하거나 UI 구성을 설정합니다. setContentView()를 호출하여 Activity의 사용자 인터페이스 레이아웃을 정의해야 합니다. onCreate()가 완료되면 onSt.. 2024. 3. 8.
[Android] App components 앱 구성요소 Android 앱의 필수 구성요소입니다. 각 구성요소는 시스템이나 사용자가 앱에 진입할 수 있는 진입점입니다. Activity(액티비티) 안드로이드 애플리케이션의 사용자 인터페이스(UI)를 담당합니다. 사용자가 상호작용하는 화면 단위를 의미(버튼, 텍스트 필드, 이미지 등 UI요소 포함) 합니다. 사용자 이벤트(예: 버튼 클릭, 화면 터치 등)에 응답하여 작업을 수행합니다. 여러 액티비티를 조합하여 앱의 전체 기능 구현합니다. Services(서비스) 여러 가지 이유로 앱을 백그라운드에서 계속 실행하기 위한 범용 진입점. UI 없이 작업을 수행합니다. 주로 네트워크 호출, 파일 다운로드, 데이터베이스 관리 등 장기 실행되는 작업을 처리하는 데 사용합니다. 다른 구성 요소와 연동하여 실행되거나 독립적으로 .. 2024. 3. 6.