계측 테스트에서 리소스 불러오기

계측 테스트 코드 작성시 외부에서 리소스(파일)을 불러와야 하는 경우가 있다. 다음의 절차를 따라 리소스를 불러 올 수 있다. 1. 리소스 디렉토리 파일 추가하기 계측 테스트를 수행하고자 하는 모듈 하위에 다음과 같이 resources 디렉토리를 추가한다. 추가한 디렉토리에 원하는 리소스를 추가한다. 이 더보기…

Android 14 미리보기

Android 14 미리보기 한국시간으로 오늘 새벽에 Android 14 Preview 가 공개되었다. Preview 단계라 아직 모든것이 확정된 내용은 아니지만 현재까지 공개된 내용으로 이 포스팅을 작성한다. Android 14의 주요 변경 사항은 보안강화와 베터리 타임을 개선하는 내용이다. Android 14 릴리즈 일정 이제 Preview 더보기…

Compose의 CompositionLocal 이해하기

컴포저블 함수는 트리(tree)로 구성된다. 이 때 상태는 일반적으로 트리에서 가능한 한 가장 높은 노드에 선언되어야 한다(상태 호이스팅). 그리고 일반적으로 이렇게 선언된 상태는 하위 트리로 전달되곤 한다. 하지만 트리에서 여러 단계를 통해 상태를 전달해야 할 때는 다소 번거로울 수 있다. 예를 더보기…

[Hilt] 컴파일 타임에 @InstallIn 체크 무시하기

Hilt를 사용할 경우 모듈 클래스에 반드시 @InstallIn을 추가해야 한다. 그렇지 않으면 컴파일 타임에 오류가 발생한다. 하지만 Dagger2에서 Hilt로 마이그레이션을 하거나 특별한 사유가 있는 경우 모든 모듈 클래스에 @InstallIn을 추가하기 어려운 경우가 있다. 이때 다음 예제코드 처럼, 해당 모듈의 그레이들 스크립트에 더보기…

Android MVI 라이브러리 Orbit-MVI

이전 포스팅 Android 프로젝트에 MVI 도입하기 를 먼저 읽는 것을 권장합니다. Orbit 개요 Orbit은 안드로이드 뿐만 멀티플랫폼을 지원하는 Redux/MVI 같은 라이브러리 이며, 쉽고 가벼운 것이 특징이다. 자세한 내용은 아래의 링크에서 참조하자 orbit-mvi github 저장소 공식 페이지 orbit을 프로젝트에 추가하기 위해 더보기…

Android 프로젝트에 MVI 도입하기

MVI 도입배경 프로젝트에 Jetpack Compose를 도입하고 1년정도 적극 쓰면서 ‘상태’ 관리의 중요성을 머리가 아닌 몸으로 느껴버렸다. 상태 관리를 어떻게 하면 좋을까 고민하던 중 동료 개발자가 이전에 나에게 말해줬던 MVI가 떠올랐다.  “MVI 는 상태를 쉽게 관리해준다구 blah blah…” Compose 도입 이전에는 더보기…

[OpenCV로 배우는 안드로이드] 케스케이드 분류기:얼굴검출

이번 포스팅에서는 Haar 특징 기반의 케스케이드 객체 검출원리에 대해 알아보고 얼굴을 감지하는 특징(feature)을 구현한다. Cascade Classifier와 얼굴 검출 원리 Haar 객체 검출기를 사용하는 객체 검출은 효과적인 객체 검출 방식으로 Paul Viola 와 Michael Jones의 의해 2001년에 고안되었다. (논문) 해당 논문은 더보기…

[OpenCV로 배우는 안드로이드] 템플릿 매칭

템플릿 매칭 이번 포스팅에서는 템플릿 매칭을 통한 이미지내 객체들을 찾는 방법을 다룬다. 템플릿 매칭은 큰 이미지내에서 템플릿 이미지의 위치를 찾는 방법을 말한다. OpenCV에서는 이를 위해 matchTemplate()이라는 함수를 제공하고 있다. 템플릿 매칭의 원리는 어렵지 않다. 단순히 템플릿 이미지를 원본 이미지상에서 조금씩 더보기…

First step in Canvas – (2) Path Basics

Path Basics 이번 포스팅에서는 Path가 무엇인지 살펴보고, Path로 어떤일들을 할 수 있는지 살펴보도록 하겠습니다. Path란? 안드로이드의 Path 클래스는 위에 있는 이미지 처럼 직선 및 곡선 등으로 구성된 복합적이고 기하학적인 내용을 그릴 수 있도록 도와줍니다. Path로 그리기 Canvas 스코프 내에서 path를 더보기…

First step in Canvas – (1) Canvas Basics

캔버스 기초 이 포스팅은 캔버스의 전반적인 기초에 대해서 요약합니다. 캔버스 좌표계 안드로이드의 캔버스는 다른 좌표계들과 달리 좌측 상단을 원점으로 하여 값이 우측 하단 방향으로 증가합니다. 사각형 그려보기 이 캔버스의 정중앙에 사각형을 하나 그리기 위해서는 두 점이 필요합니다. 두 점은 각각 (x1,y1), 더보기…