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

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

DataBinding을 사용시 TextView의 텍스트가 변경되지 않는 경우

LiveData와 DataBinding을 이용하여 동적으로 TextView의 Text를 변경하는 로직을 적용했습니다. 예를들면, “Hello World” 를 “Hello Charles”는 것과 같이 단순한 변경이였습니다. <?xml version=”1.0″ encoding=”utf-8″?> <layout xmlns:tools=”http://schemas.android.com/tools” xmlns:app=”http://schemas.android.com/apk/res-auto”> <data> <variable name=”viewModel” type=”com.charlezz.MainViewModel”/> </data> <TextView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”@{viewModel.text}”/> </layout> class MainViewModel: ViewModel (){ val text = MutableLiveData<CharSequence>().apply{ text.value = “Hello World” } fun changeText(enabled:Boolean){ 더보기…

글쓴이 Charlezz,

[OpenGL] 1. Android OpenGL ES의 개요

OpenGL ES란? Android는 높은 퍼포먼스를 필요로 하는 2D,3D 그래픽스를 위해 OpenGL ES(Open Graphics Library for Embeded System)를 지원합니다. OpenGL은 3D 그래픽 처리 하드웨어에 대한 표준 소프트웨어 인터페이스를 지정하는 크로스 플랫폼 그래픽 API이며, OpenGL ES는 안드로이드와 같은 임베디드 장치를 위한 가볍고 쉬운 API를 제공합니다. 또한 Android는 여러 버전의 OpenGL ES API를 더보기…

Koin과 함께 하는 안드로이드 의존성 주입

Introduction Koin은 코틀린 개발자를 위한 실용적인 API제공을 하는 경량화된 의존성 주입 프레임워크입니다. (자바 개발자 또는 의존성 주입에 대해서 알고 싶다면 Dagger 포스트를 참조해주세요)  순수 코틀린으로만 작성되어있으며 프록시, 애노테이션 프로세싱을 통한 코드 생성, 리플렉션을 사용하지 않기 때문에 가볍습니다. Android Gradle설정(https://github.com/InsertKoinIO/koin) def koin_version=”0.9.3″ // 최신버전은 위의 github링크 참조 implementation “org.koin:koin-android:$koin_version” 왜 DSL을 더보기…

안드로이드 단위 테스트 (1)

소프트웨어 개발에서 테스트는 종종 저평가 되거나 무시되버리곤 한다. 모바일앱에서 테스트 코드를 하나도 작성하지 않고 앱을 출시하는 경우도 허다 합니다.   대부분 개발자가 유닛테스트를 적용하지 않는 이유는? 모바일 앱은 프론트앤드니까 대부분은 백엔드에서 테스트해야 되지! 모바일은 유닛테스트부분에서는 좀 달라, 왜냐면 대부분의 로직이 UI랑 연결되어있거든! 기껏해봐야 넌 UI 테스트만 신경쓰겠지. 백엔드랑 비교하면 모바일앱은 더보기…

글쓴이 Charlezz,

디폴트 값과 자바 (@JvmOverloads)

자바에는 디폴트 파라미터 값이라는 개념이 없다. 그러므로 오버로딩한 메소드가 많아지는 경우가 있다.   코틀린에서는 적용된 디폴트파라미터 예제 fun foo(){ param1:Int, param2:String = “” //default 값이 지정된 파라미터 } 위함수를 호출하는경우 foo(123) //디폴트파라미터는 생략가능 foo(123, “test”) // 디폴트값이 있으나 test로 덮어씌움 foo(param2=””, param1= 123) // 파라미터 명을 적는 경우 순서를 바꿀수 더보기…

글쓴이 Charlezz,

RecyclerView를 iOS의 UIPickerView 처럼 fade-in, fade-out 적용하기

롤리팝 출시 이후로 RecyclerView가 도입되고 AdapterView를 커스터마이징 하기가 편해졌다. 오늘은 UIPickerView 스타일로 RecyclerView의 투명도를 주고 싶어서 레이아웃매니저를 다음과 같이 적용했다. class CustomLinearLayoutManager(context: Context) : LinearLayoutManager(context, VERTICAL, false) { private fun updateChildrenAlpha() { for (i in 0 until childCount) { val child: View = getChildAt(i) val bottom: Float = getDecoratedBottom(child).toFloat() val 더보기…

코틀린이란 무엇인가? 왜 필요한가?

코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다. 코틀린은 간결하고 실용적이다. 자바코드와의 상호운용성(interoperability)을 중시한다. 코틀린은 기존 자바 라이브러리나 프레임워크와 함께 잘 동작하며, 성능도 자바와 비슷한 수준이다 대상플랫폼은 서버, 안드로이드 등 자바가 실행되는 모든 곳이다. 코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 완전한 대체 언어를 제공하는 것이다. 더보기…

글쓴이 Charlezz,

[Kotlin Basics] Returns and Jumps

Returns and Jumps 코틀린은 3가지 구조적 jump 표현식을 갖는다. return : 기본적으로 가장가깝게 둘러싸고 있는 함수 또는 익명 함수로 부터 리턴한다. break : 가장 가깝게 둘러싸고 있는 루프를 종료한다 continue : 가장 가깝게 둘러싸고 있는 루프의 다음 단계를 진행시킨다. 이러한 표현식은 큰 표현식중의 일부이다. val s = person.name ?: return 더보기…

글쓴이 Charlezz,

[Kotlin Basics] 제어문

제어문 : if, when, for, while If 문법 코틀린에서는 if 는 표현중하나로 값을 하나 리턴하게 된다. 그러므로 삼항연산자는 존재하지 않는다. 왜냐하면 if문법이 그 역할을 하고 있으니까.   // Traditional usage var max = a if (a < b) max = b // With else var max: Int if (a > 더보기…

글쓴이 Charlezz,