본문 바로가기

안드로이드28

앱 백그라운드 상태 체크 : LifecycleEventObserver, DefaultLifecycleObserver 앱이 백그라운드인지 포그라운드인지 체크하려면 어떻게 해야 될까요?생명주기를 관찰하는 LifecycleObserver를 활용할 수 있습니다.위 그림은 LifecycleObserver 개발자 문서 일부인데요LifecycleObser를 바로 사용하지 말고,확장된 인터페이스로 LifecycleEventObserver 또는 DefaultLifecycleObserver를 사용하시면 됩니다.     Application 클래스 생성 앱에 전반적인 생명주기를 관찰하기 위해 Application 클래스가 필요합니다.생성한 Application 클래스 이름을 아래와 같이 manifests에 등록해 주세요.     LifecycleEventObserver 사용 LifecycleEventObserver는 onStateChan.. 2024. 5. 7.
안드로이드 캡처 효과 예제 : CaptureEffectView 최근 안드로이드 캡처 동작 관련해서 공부하다가 캡처는 잘되는데... 뭔가 심심한 느낌이 있습니다.안드로이드 기기에서 지원하는 전원+볼륨 다운 버튼으로 screenshot을 했을 때 나오는 효과처럼내가 작성한 캡처 동작에도 효과가 들어가면 좋을 것 같아서 애니메이션을 활용해서 캡처 효과를 추가하였습니다.애니메이션을 활용한 캡처 효과 예제를 간략하게 정리해보려고 합니다.     애니메이션 : ObjectAnimator 사용 캡처 효과를 주기 위해 ObjectAnimator를 사용하려고 합니다.ObjectAnimator는 속성 애니메이션(Property Animation)을 제어하기 위한 클래스입니다.이 클래스를 사용하면 원하는 객체의 속성을 부드럽게 애니메이션화 할 수 있습니다.대표적으로 다룰 수 있는 속성.. 2024. 5. 2.
코틀린 화면 캡처 Canvas, PixelCopy 비교 안드로이드 화면을 캡처에 사용되는 방식으로 Canvas 그리기와 PixelCopy가 있습니다.두 가지 모두 특정 View 영역에 대한 Bitmap을 가져와서 처리할 수 있는 건 똑같지만Canvas, PixelCopy를 비교해서 어떤 차이가 있는지 정리해보려고 합니다.     화면 캡처 : Canvas 샘플 코드 captureScreenWithCanvas 메서드는 Canvas를 활용하여 전체화면을 캡처하는 동작을 합니다.private fun captureScreenWithCanvas() { val rootView = window.decorView.rootView val width = rootView.width val height = rootView.height val bitmap = .. 2024. 4. 30.
Android 14 MediaProjection 권한 허용 : ADB Shell MediaProjection은 안드로이드 화면 캡처 및 녹화 기능을 지원해 주는 API입니다.MediaProjection을 사용하기 위해서는 위와 같이 사용자 승인을 받아야 하고,앱이 권한을 부여받았을 때 캡처 및 녹화 기능을 사용할 수 있습니다. Android 14 이전까지 해당 권한을 승인받았을 때의 Intent를 재활용하여 사용할 수 있었습니다.즉, 앱 실행하고 최초 권한 승인을 한번 받으면 이후 권한 승인 없이 진행이 가능했습니다. 해당 동작이 보안상 문제였는지 Android 14 이후로는 권한 승인했을 때 Intent 재활용이 불가능하였고이제 캡처 및 녹화기능을 동작할 때마다 반드시 해당 권한 승인을 받아야 합니다.결론적으로 앱에서는 해당 권한 승인을 넘길 수 있는 방법은 찾을 수 없었지만ADB.. 2024. 4. 29.
안드로이드 스튜디오 ADB 설치 및 터미널 사용 ADB를 사용하기 위해서는 두 가지 단계가 반드시 필요합니다. 1. ADB 설치2. 환경 변수 설정 이 두 가지가 완료되면 어디서든지 ADB 사용이 가능합니다.안드로이드 스튜디오를 활용해서 보다 쉽게 ADB를 설치하고 터미널 사용하는 것까지 정리해보려고 합니다.     ADB 설치 안드로이드 스튜디오를 실행해서 [Tools] > [SDK Manager]를 열어줍니다.아래와 같은 화면이 나오면 [SKD Tools] > [Android SDK Command-line-Tools]에서 되도록 최신버전을 선택하고 Apply를 통해 설치합니다.(SDK 경로 미리 확인해 주세요!)  ADB 설치는 끝났습니다.그럼 SDK 경로에 platform-tools 폴더가 있을 건데 들어가 보시면 adb.exe 잘 설치되어 있는.. 2024. 4. 26.
안드로이드 이미지 확대 축소 : PhotoView 예제 일반적으로 사용되는 ImageView는 단순히 이미지를 표시해 주는 View입니다.PhotoView는 ImageView를 확장해서 작성된 라이브러리로 쉽게 이미지 확대 및 축소 사용이 가능합니다.이번 글에서는 PhotoView를 활용해서 이미지 확대 축소하는 예제를 다뤄보려고합니다.     PhotoView 라이브러리 사용법 아래와 같이 gradle 설정합니다.dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { setUrl("https://jitpack.io".. 2024. 4. 25.
안드로이드 Room 쿼리(Query) 정리 안드로이드 Room을 사용할 때 데이터베이스와 상호작용하기 위해서 데이터 액세스 객체(DAO)를 구현합니다.DAO 안에는 상호작용을 정의하는 메서드를 가집니다.해당 메서드에 대해서 간단하게 살펴보면서특히 SQL 코드가 포함된 안드로이드 Room 쿼리 메서드에 대해서 정리해보려고 합니다.     안드로이드 Room DAO 메서드 데이터베이스와 상호작용을 정의하는 DAO 메서드는 두 가지 유형을 가집니다.편의 메서드 : SQL 코드 작성 없이 상호작용을 정의합니다. (@Insert, @Update, @Delete)쿼리 메서드 : SQL 코드를 작성하여 상호작용을 정의합니다. (@Query)     안드로이드 Room DAO : 편의 메서드 편의 메서드는 아래와 같이 SQL 코드 작성 없이도 쉽게 정의가 가능.. 2023. 2. 21.
안드로이드 Room in jetpack 이해와 사용방법 안드로이드 jetpack compose 중에 하나로 Room에 대해 알아보려고 합니다.해당 내용은 Room에 대한 이해와 기본적인 사용방법을 다루고 있습니다.     Room 이란? Android Jetpack 라이브러리의 구성요소 중 하나입니다.Room을 활용하여 원하는 데이터를 로컬 데이터베이스에 저장, 유지할 수 있습니다.많은 양의 데이터를 지속적으로 관리해야 할 때 사용합니다.예를 들어 앱이 종료되어도 데이터가 유지돼야 하거나,네트워크 접근 없이 사용자에게 오프라인으로도 제공돼야 하는 데이터인 경우 활용할 수 있습니다.     Room 구성 요소 3가지 구성요소를 가집니다.Database Class : 데이터 연결을 위한 기본 액세스 포인트 역할Entitiy : 데이터베이스 테이블Data Acce.. 2023. 2. 17.