본문 바로가기

Android83

[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에서 함수의 마지막 인자가 람다일 때 사용할 수 있는 두 가지 스타일에 대해 알아보겠습니다. 이 두 스타일은 구문적으로 차이가 있지만 기능적으로 동일합니다. 이번 포스팅에서는 두 가지 표현의 차이점과 언제 어떤 스타일을 사용할지에 대해 설명하겠습니다.ITEM_TYPE_PROMO -> GamePromoViewHolder( inflateBinding(ItemGameListPromoBinding::inflate), getGameList = { getGameList.value }) 위 코드는 GamePromoViewHolder에 람다를 전달할 때 명시적으로 인자를 지정한 방식입니다. 반면, 아래 코드는 람다를 마지막 인자로 전달할 때 Kotlin의 문법적 편의를 활용한 예시입니다.GameP.. 2024. 9. 9.
[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.
[Android/Kotlin] 왜 notifyDataSetChanged 대신 DiffUtil을 사용해야 하는가? 안드로이드 앱 개발에서 RecyclerView를 사용하여 데이터를 표시할 때, 데이터 변경 사항을 UI에 반영하는 방법은 매우 중요합니다. 흔히 사용되는 notifyDataSetChanged()와 더 효율적인 DiffUtil에 대해 설명하고, 왜 DiffUtil을 사용하는 것이 더 나은 선택인지 예시를 통해 알아보겠습니다.1. DiffUtil이란?DiffUtil은 안드로이드의 RecyclerView에서 두 데이터 세트를 비교하여 변경된 항목들을 찾아내고, 해당 변경 사항만 RecyclerView에 업데이트하는 유틸리티 클래스입니다. DiffUtil은 RecyclerView의 성능을 최적화하고, 더 나은 사용자 경험을 제공하는 데 중요한 역할을 합니다.2. notifyDataSetChanged()의 문제점.. 2024. 6. 28.
반응형