[2022 찰스의 안드로이드 컨퍼런스] 후기

발표용 환경을 셋팅하고 있습니다. 준비한 리모컨이 잘 작동하지 않아 적잖이 당황했지만.. 다행히 연사자 중 한분이 여분의 리모컨을 가지고 있어서 해결할 수 있었습니다. 연사분들도 아침 일찍 오셔서 리허설을 준비하는 모습입니다. 행사장 입구에 놓여진 표지판. 폰트는 종신체, 힘이 느껴지는 폰트입니다. (written by 더보기…

안드로이드 프로젝트에서 최신 버전의 라이브러리 확인하기

이 포스팅은 Gradle 프로젝트에서 라이브러리 버전을 관리하는 방법을 공유합니다. Lint의 최신 라이브러리 검사 비활성화 Lint의 이슈중 NewerVersionAvailable 이라는 것을 활성화 하면, 원격 리파지토리에 접속하여 특정 라이브러리의 버전을 매번 검사하게 되므로 유용할 수 있지만 안드로이드 스튜디오가 느려질 수 있다. 그래서 난 더보기…

Composable, 너의 위치를 알려죠! (OnGloballyPositioned)

컴포저블의 포지션은 어떻게 구할 수 있나 Android View로 애플리케이션 UI를 구현할 때는 root 에서 하위에 있는 view의 포지션을 구할 수 있었다. 하지만 컴포즈로 UI를 구현시에는 View는 ComposeView 하나만 존재하고, 캔버스에 필요한 Element들을 그리는 방식이다.  위의 이미지와 같이 특정 버튼(컴포저블) 위치에 더보기…

[안드로이드로 배우는 OpenCV] matchShape로 객체 검출하기

이전 포스팅에서 모멘트에 대해서 알아보았고, 그중 Hu의 7개 불변 모멘트가 영상의 크기, 회전, 이동, 대칭 변환에 불변하다는 것을 알 수 있었다. 이러한 부분을 참고하여 주어진 이미지에서 원하는 객체를 찾아보도록 하자. OpenCV에서는 원하는 객체를 찾기위해 주어진 두 모양을 비교하는 matchShapes()라는 함수를 더보기…

생명주기에 맞춰 안전하게 코루틴 사용하기

생명주기에 안전한 코루틴 lifecycle 컴포넌트를 사용한다면, 생명주기를 인식하는 코루틴을 만들 수 있다. LifecycleOwner로써 취급되는 AppCompatActivity(ComponentActivity) 또는 Fragment를 일반적으로 사용할 때 lifecycle 컴포넌트를 사용하게 되는데 이때 lifecycleScope를 사용할 수 있다. 일반적은 코루틴 스코프와 마찬가지로 launch를 async와 같은 함수 호출을 통해 suspendable 더보기…

콜드 스트림을 핫 스트림으로 변경하기 (shareIn, stateIn)

MutableSharedFlow를 사용하여 값을 발행하고 다른 한편에서는 이를 수집할 수 있는 수단을 제공한다. 그러나 다른 코드에 있는 콜드 플로우를 가져와서 이 업스트림을 수집하고 SharedFlow로 내보낼 수 있는 편리한 방법도 있다. 바로 ShareIn 연산자를 사용하는 것이다. ShareIn 연산자 shareIn 연산자는 다음과 같이 더보기…