Android/Android Core39 [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] 기본 카메라 기능을 사용한 사진 및 비디오 자동 촬영 시도 기록 이번 글에서는 Android에서 기본 카메라 기능을 활용하여 자동으로 사진과 비디오를 촬영하려고 시도한 과정을 기록합니다. CameraX 대신 기본 카메라 기능을 통해 구현했으나, 자동 촬영이 원활하게 되지 않아 최종적으로 CameraX로 전환하게 된 이유와 관련한 경험을 공유합니다. 이 기록은 나중에 다시 기본 카메라를 활용할 가능성을 염두에 두고 작성되었습니다.1. 기본 카메라를 이용한 촬영 시도Android의 기본 카메라 앱을 호출하여 사진과 비디오를 촬영하려고 했습니다. 이때 Intent와 ActivityResultLauncher를 사용해 시스템 카메라 앱을 호출하여 촬영 작업을 수행하고, 촬영된 미디어 파일을 앱의 지정된 위치에 저장하도록 했습니다.2. 구현 코드 개요2.1. ActivityRe.. 2024. 10. 25. [Android/Kotlin] CameraX로 자동 사진 및 비디오 촬영 기능 구현하기 이번 글에서는 Android의 CameraX 라이브러리를 활용하여 자동으로 사진 및 비디오를 촬영하는 기능을 구현하는 방법을 소개합니다. 권한 설정부터 CameraX 의존성 추가, 미리보기 화면 구성, 자동 촬영 기능 구현까지 단계별로 설명해 보겠습니다. CameraX의 주요 기능을 이해하고 실제 프로젝트에서 어떻게 활용할 수 있는지 다뤄보겠습니다.1. 권한 설정 (AndroidManifest.xml)CameraX를 사용해 카메라와 오디오를 제어하려면 다음과 같은 권한이 필요합니다.CAMERA: 카메라 사용을 위한 필수 권한입니다.RECORD_AUDIO: 비디오 촬영 시 오디오 녹음을 위해 필요합니다.WRITE_EXTERNAL_STORAGE 및 READ_EXTERNAL_STORAGE: Android 10.. 2024. 10. 25. [Android/Kotlin] Bluetooth Notify 기능 구현: CCCD 설정과 알림 활성화 방법 이번 글에서는 Android에서 Bluetooth 알림(notification) 기능을 설정하는 방법에 대해 공부한 내용을 정리해 두고자 합니다. 특히, 00002902-0000-1000-8000-00805f9b34fb UUID를 사용하는 CCCD(Client Characteristic Configuration Descriptor) 설정, 알림 활성화 과정, 그리고 Android 버전별(API 33 Tiramisu 이상과 이하) writeDescriptor() 및 onCharacteristicChanged() 메서드의 처리 방법에 대해 기록 해 보겠습니다. 1. Bluetooth 알림 개요Bluetooth GATT(GATT: Generic Attribute Profile) 프로토콜을 통해 GATT 서버가.. 2024. 10. 25. [Android/Kotlin] Kotlin에서 abstract class와 open class의 차이점 Kotlin에서는 클래스 계층 구조를 정의할 때 abstract class와 open class가 중요한 역할을 합니다. 이 두 클래스는 상속을 허용하지만, 각각의 목적과 사용 방식에서 차이가 있습니다. 이번 글에서는 abstract class와 open class의 개념과 차이점을 코드 예시와 함께 알아보겠습니다. 1. abstract class (추상 클래스)정의:abstract class는 인스턴스화할 수 없는 클래스입니다. 즉, 객체를 직접 생성할 수 없으며, 반드시 상속을 통해서만 사용됩니다.목적:공통 로직을 상속해주면서, 일부 메서드나 속성은 하위 클래스에서 구현을 강제하는 경우 사용됩니다.추상 메서드:추상 클래스는 구현되지 않은 메서드(추상 메서드)를 가질 수 있으며, 하위 클래스에서 반드시.. 2024. 10. 4. [Android/Kotlin] ContentProvider란 무엇인가? Android에서 ContentProvider는 앱 간 데이터(예: 파일, 데이터베이스)를 공유하는 컴포넌트입니다. 이는 여러 앱에서 접근할 수 있는 데이터 저장소 역할을 하며, 보안 및 권한 관리 기능을 포함합니다.ContentProvider를 통해 한 앱에서 다른 앱의 데이터를 안전하게 읽고 쓸 수 있습니다.ContentProvider의 사용 예시데이터베이스 공유: 데이터베이스에 저장된 정보를 다른 앱과 공유하고자 할 때.데이터 접근 용이성: 외부 앱에서 자신의 데이터를 쉽게 접근하도록 하고자 할 때.Manifest에 정의해야 하는 내용ContentProvider를 사용하기 위해 AndroidManifest.xml에 몇 가지 설정을 추가해야 합니다.ContentProvider 제공하는 쪽 (제공하는 .. 2024. 9. 25. [Android/Kotlin] Kotlin에서 @Parcelize를 사용하여 객체 전달하기 Android 애플리케이션 개발 시, Activity나 Fragment 간에 데이터를 전달해야 할 때가 많습니다. 이때 가장 많이 사용되는 방법 중 하나가 Parcelable 인터페이스를 구현하는 것입니다. Kotlin에서는 @Parcelize 어노테이션을 사용하여 이 과정을 더 쉽게 만들 수 있습니다. 이번 글에서는 @Parcelize를 사용하여 데이터를 전달하는 방법에 대해 알아보겠습니다.1. @Parcelize 어노테이션 소개@Parcelize 어노테이션은 Kotlin에서 Parcelable 인터페이스의 구현을 자동화해주는 기능입니다. 이를 통해 번거로운 Parcelable 구현 코드를 간단하게 처리할 수 있습니다.예시 데이터 클래스먼저, 데이터 클래스를 정의하고 @Parcelize 어노테이션을 추.. 2024. 7. 25. [Android/Kotlin] DiffUtil과 ListAdapter를 활용한 효율적인 RecyclerView 업데이트 안드로이드 개발에서 RecyclerView는 리스트 형태의 데이터를 표시하는 데 많이 사용됩니다. RecyclerView를 최적화하는 방법 중 하나는 DiffUtil과 ListAdapter를 사용하는 것입니다. 이 글에서는 DiffUtil과 ListAdapter를 함께 사용하는 방법과 그 효율성에 대해 알아보겠습니다.1. DiffUtil이란?DiffUtil은 안드로이드의 RecyclerView에서 두 데이터 세트를 비교하여 변경된 항목들을 찾아내고, 해당 변경 사항만 RecyclerView에 업데이트하는 유틸리티 클래스입니다. DiffUtil을 사용하면 성능을 최적화하고, 부드러운 UI 애니메이션을 제공할 수 있습니다.2. ListAdapter란?ListAdapter는 RecyclerView.Adapte.. 2024. 7. 1. 이전 1 2 3 4 5 다음 반응형