안드로이드 Q 무엇이 달라졌나 : Google I/O 2019

What’s New in Android (Google I/O’19)   #io19 What’s New in Android 세션을 정리한 내용입니다. Bubbles API 안드로이드 Q에 새로 도입어 사용자는 Bubbles를 이용해 기기상 어디서나 쉽게 멀티태스킹을 할 수 있습니다. 페이스북의 챗헤드와 같아 보입니다. 자세한 내용은 공식문서에서 확인가능합니다. Dark Theme Android Q는 Android 시스템 UI와 기기에서 실행중인 앱에 모두 더보기…

Jetpack에 새롭게 추가된 점(2019.05.08)

CameraX(알파버전) 카메라 관련 앱 개발은 어렵습니다. 또한 API21(롤리팝)을 기점으로 Camera 와 완전히 다른 Camera2 API로 분기 되어 개발자를 비명지르게 만듭니다. 새로운 CameraX 라이브러리르 이용하면 기본 적인 동작에 대한 걱정없이 애플리케이션을 개발 할 수 있게 된다고 합니다.  코루틴과 함께 하는 LiveData 그리고 Lifecycles(알파버전) 코루틴을 이용하여 동시성을 가진 작업을 처리할 수 있습니다. Lifecycle 더보기…

글쓴이 Charlezz,

Google Play Instant 개요

Overview of Google Play Instant Android 5.0 (API 21) 이상의 기기에서는 Google Play Instant를 사용하면 네이티브앱과 게임을 설치하지 않고도 실행됩니다. Android Studio를 사용하여 인스턴트 앱 및 인스턴트 게임이라고 불리는 유형을 만들 수 있습니다. 즉각적인 경험을 제공하는것으로 알려진 인스턴트 앱 또는 인스턴트 게임을 사용자가 실행할 수 있게 함으로써 앱 또 게임 더보기…

글쓴이 Charlezz,

Dynamic Delivery를 지원하는 앱 만들기

https://developer.android.com/studio/projects/dynamic-delivery를 번역한 내용입니다. 다이나믹 딜리버리란? 다이나믹 딜리버리(Dynamic Delivery)라는 구글 플레이의 앱 제공 모델은 Android App Bundles를 사용하여 최적화된 APK를 각 사용자 디바이스환경에 맞춰 생성하고 제공하므로 사용자들은 앱실행에 필요한 코드와 리소스만 다운로드합니다. 다양한 장치를 지원하기 위해 더 이상 여러개의 APK를 빌드, 서명 및 관리 할 필요가 없으며 사용자는 더 작고 최적화 더보기…

RecyclerView에 Selection 라이브러리를 사용하기

Selection RecyclerView를 구현하고 다중 선택 기능을 추가 하기 위해서는 Selection 라이브러리를 사용할 수 있습니다. 안드로이드 내의 사진들을 Grid형식으로 구성하고 Selection으로 다중 선택하는 예제를 만들어 보도록 하겠습니다 Selection 구현하기 의존성 추가하기 //androidx 를 쓰지 않는다면 implementation “com.android.support:recyclerview-selection:28.0.0” or //androidx를 쓴다면 androidx.recyclerview:recyclerview-selection:1.0.0 Key타입 결정하기 Selection라이브러리는 3가지 타입의 Key타입을 지원합니다. Parcelable String Long 더보기…

언어 변경과 AndroidViewModel 안티패턴

https://medium.com/androiddevelopers/locale-changes-and-the-androidviewmodel-antipattern-84eb677660d9을 번역한 글입니다. ViewModel은 화면회전이나 언어 변경에 의한 액티비티 재생성에서도 다시 생성되지 않고 이전 인스턴스가 그대로 남아 유지 되는 특징이 있습니다. 시스템 언어 변경을 하기전에 아래의 ViewModel코드를 보도록 하곘습니다. //이렇게 코드를 짜지 마세요 public class MyViewModel extends AndroidViewModel { public final MutableLiveData<String> statusLabel = new MutableLiveData<>(); public SampleViewModel(Application context) { 더보기…

[Android] Annotation Processor 만들기

Annotation이란 ? 애노테이션이란 무엇일까요? 사실 우리 모두가 이미 정의된 애노테이션을 쓰고 있습니다. 예를 들면, @Override 어노테이션을 사용하여 메소드를 재정의하고 싱글톤 패턴을 사용하기 위해 @Singleton을 사용하고 @NonNull, @StringRes, @IntRes 등과 같은 애노테이션을 사용합니다. 이러한 각가의 애노테이션에 대해서 설명하고자 하는건 아닙니다. 새로운 애노테이션을 만들고, 또 동작하는 원리에 대해서 알아보고자 합니다. 애노테이션은 자바 더보기…

Android에서 OpenCV를 시작하기전에…

OpenCV란? 컴퓨터 비전 애플리케이션을 빠르게 제작할 수 있게 도와주는 라이브러리입니다. 계산의 효율성과 실시간처리(Realtime-processing)에 중점을 두고 설계되었습니다. 자동차 번호판 인식, 얼굴 인식, 공장에서의 제품 검사, 의료 영상 처리, 카메라 켈리브레이션, 스트레오 비전, 로보틱스 등 다양한 분야에서 쓰이고 있습니다. 컴퓨터 비전이란? 컴퓨터 비전은 컴퓨터가 디지털 이미지나 비디오를 통해 높은 수준의 이해를 얻는 더보기…

글쓴이 Charlezz,

SingleLiveEvent로 이벤트 처리하기

AAC lifecycle컴포넌트의 등장과 함께 MVVM패턴이 다소 변경되었습니다. 기존의 방식은 다음 그림과 같습니다. Activity와 ViewModel의 의존성을 분리하고 ViewModel은 Navigator를 이용하여 Activity에게 이벤트를 전달합니다. Navigator의 구현체는 보통 Activity가 되곤했었습니다. BaseObservable을 상속받아 ViewModel을 만들면 데이터바인딩 라이브러리와 궁합도 잘맞습니다. 그런데, AAC ViewModel을 사용하고 부터는 이 패턴을 사용할 수 없게 되었습니다. Caution: A ViewModel must never reference a 더보기…

안드로이드 카메라 스트림 동시에 여러개 사용하기

안드로이드 카메라 스트림 동시에 여러개 사용하기 이 포스팅은 다음과 같은 내용을 포함합니다. 하나의 카메라로 여러개의 스트림을 동시에 사용하는것 하나의 캡쳐 리퀘스트로 다른 속성을 가진 타겟들을 결합하는것 출력타입, 출력사이즈, 하드웨어 수준을 선택하고 조회하는 방법 SurfaceView와 ImageReader의 Surface를 셋팅하고 사용하는 방법 여러개의 카메라 스트림을 사용하는 사례 카메라를 사용하는 앱은 두개이상의 스트림을 동시에 더보기…