if (study)/Android
액티비티 위에 프레그먼트가 하나 이상 올라가 있을 때, 서로 동일한 데이터를 공유해야 하는 경우가 자주 있다. AAC ViewModel을 활용하면 UI 컨트롤러 간 데이터 공유를 쉽게 처리할 수 있다. 일반 ViewModel과 달리 AAC ViewModel 객체를 생성하려면 ViewModelProvider를 사용해야 한다. 생성자 원형은 다음과 같다. ViewModelProvider(ViewModelStoreOwner owner) ViewModelProvider(ViewModelStoreOwner owner, ViewModelProvider.Factory factory) ViewModelProvider(ViewModelStore store, ViewModelProvider.Factory factory) ..
AAC와 코루틴을 함께 사용 할 때 쓸 수 있는 유용한 built-in coroutine scopes를 알아보자. 구글에서 ViewModel, Lifecycle, LiveData에 적용할 수 있는 확장함수들을 만들어놨다. ViewModelScope LifecycleScope LiveData 이번 글에서는 이 중에서 ViewModelScope, LiveData Builder의 사용법을 정리한다. 안드로이드에서 코루틴 사용하기 build.gradle 의 dependencies에 라이브러리를 추가한다. 이 글을 작성하는 시점에서 코루틴 최신 버전은 1.3.4다. implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutine_version..
네이티브 앱은 웹처럼 URL만 알면 누구나 접근할 수 있는 환경이 아니다. 안드로이드는 플레이스토어에 앱이 올라가지 않았을 때, 실제 단말기에서 사용을 해보려면 apk 파일 설치가 필요하다. (iOS는 테스트 플라이트라는 고유한 툴을 사용해서 사전에 앱을 써볼 수 있더라.) 가끔 여러 명과 함께하는 토이 프로젝트에서 안드로이드 개발을 하다 보면, 앱이 어떻게 만들어지고 있는지 궁금해하는 다른 분들에게 apk를 전달해야 할 일이 있다. 그때마다 안드로이드 스튜디오에서 빌드 -> zip으로 압축 -> 카카오톡으로 전달의 프로세스를 거치곤 했다. 어려운 일은 아니지만 변경사항이 생겼을 때마다 이렇게 파일을 주고받는 게 조금은 번거롭게 느껴졌다. 다른 서버 개발자 분들이 jenkins로 깃허브에 푸시만 하면 알..
이 글은 TTS로 일시정지를 구현하면서 겪은 삽질 과정을 정리한 글이다. TTS 사용법을 알려주는 튜토리얼 같은 글은 아니라는 점 미리 참고 바란다! 텍스트를 음성으로 변환해주는 앱을 만들고 있다. 구현할 기능 중 중 하나는 아래와 같이 장문의 글을 음악 플레이어처럼 재생하는 텍스트 플레이어로, 간단한 개요는 아래와 같다. 새로운 파일을 생성하거나, 단말기에 있던 기존 파일을 불러올 수 있다. 파일을 편집하거나 삭제할 수 있다. 파일 내용을 확인하고 재생할 수 있다. 현재 재생 중인 텍스트가 무엇인지 알 수 있도록 글자에 색을 입힌다. 하이라이트 on/off 여부와 색상을 선택할 수 있다. 예제 소개 스크린샷만 보면 별거 없어 보이나 일시정지 때문에 만드는 과정에서 나름 우여곡절이 있었다.💦 구글링을 했..
다양한 사이즈의 디바이스에 대응하기 위해 해상도 정보가 필요할 때가 있다. 디스플레이에 대한 정보가 필요할 땐 android.util.DisplayMetrics 클래스를 사용하면 된다. Context 객체를 통해 DisplayMetrics의 멤버를 얻어올 수 있다. getContext().getResources().getDisplayMetrics(); 예제) 디바이스 가로, 세로 길이 구하기 DisplayMetrics display = new DisplayMetrics(); ((WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay() .getMetrics(display); float deviceWi..