본문 바로가기

전체 글

(385)
[Android] gson , 복합적인 요소의 파싱 간단히 예를 들어보자. 단일 string, string 배열 두가지 형태가 전달되는 경우 { "item":[ {"name":"kim", "phone":"1234"}, {"name":"park", "phone":["12345","67890"]} ] } POJO 클래스의 구성 자체에 문제가 생긴다. public class Item implements Serializable { private static final long serialVersionUID = -11111L; public String name; // 어느거? public String phone; public List phone; } 이와 같은 경우 별도의 serializer, deserializer 를 구성해 주어야 한다. public class..
[Android] gradle android 빌드 구성 어플리케이션 apply plugin: 'com.android.application' android.applicationVariants.all { variant -> if( variant.name == 'release' ) { parent.classpath += variant.javaCompile.classpaths } } 라이브러리 apply plugin: 'com.android.library' android.libraryVariants.all { variant -> if( variant.name == 'release' ) { parent.classpath += variant.javaCompile.classpaths } } 소스 폴더 // 소스 폴더 구성 // 빌드타입이나 falvor 에 따라 각각의 소..
[Android] ConstraintSet ConstraintSet 은 ConstraintLayout 의 각 뷰들에 대한 Constraint 정보를 담고있는 배열 레이아웃 구성시 각 뷰에 constraint 를 기술하지만 실제 데이터는 부모 ConstraintLayout 의 ConstraintSet 에 저장된다. 동적으로 코드에서 구성시 ConstraintSet 를 생성해 기존 데이터를 clone 하거나 새로 값을 입력 후 ConstraintLayout 에 적용 시켜주면 된다. https://developer.android.com/reference/android/support/constraint/ConstraintSet ConstraintSet | Android Developers ConstraintSet public class Constrain..
Gradle Kotlin, AndroidX 설정 Kotlin gradle 플러그인 설정 buildscript { ext.kotlin_version = '1.3.41' dependencies { classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version' } } 안드로이드 플러그인 설정 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibili..
몬스터(?)가 리모트 워킹을 시작합니다. 스타트업. 전형적인 SI 회사와 변화를 중시하는 컨텐츠 회사 이곳저곳 경력을 쌓았지만 스타트업이라 불리울만한 회사는 이번이 두번째 회사라고 할 수 있다. 처음에는 창립멤버로, 이번에는 2년이 조금 넘은 회사에 합류하게 되었다. 다행스럽게도 모두 자유롭고 개방적인 사상(?)을 가진 기업들이라 여러가지 경험을 할 수 있는 기회들이 주어지곤 한다. 안식월/탄력근무/자율 프로젝트 등은 경험해 봤는데, 이번에 입사한 리모트몬스터에서 리모트워크를 할 기회가 생겼다. 회사이름에 리모트가 들어가니 리모트 워크가 아~ 주 자연스러워 보인다. 회사에서는 이미 작년 여름에 제주도에서 시행한적이 있다고 하지만, 당시에는 모든 인원이 제주로 내려가 함께 일했었기에 진정한 원격 근무로 보기에는 어렵지 않을까 싶다. 모든 인원이 ..
iOS 프레임워크 파이썬 스크립트 import sys import os import subprocess import plistlib import argparse def __init__(self, option): self.output_paths = [] self.framework = "" self.version = "" self.podspec_path = "" self.repository_path = "" self.target = "" self.option = option Derived Path HOME_PATH = os.path.expanduser("~") PROJECT_NAME="Test" PROJECT_PATH=HOME_PATH+"/Project/"+PROJECT_NAME DERIVED_PATH=PROJECT_PATH+"/Build"..
[WebRTC] Android SurfaceTextureHelper WebRTC 에서 미디어 스트림 생성시 트랙을 생성하게 되는데, 비디오 트랙의 경우 surface texture helper 를 사용해 VideoFrame 이라는 버퍼를 전달할 수 있도록 되어있다. Camera1Session, Camera2Session 에서 startListening() 으로 카메라 데이터 수신을 위한 루프를 동작시키고, 이 루프에서는 주기적으로 SurfaceTexture의 updateTexImage()를 호출해 새로운 데이터를 가져오도록 한다. 처리순서 1. 텍스처 생성 : oes 타입 텍스처 2. 서피스 텍스처 생성 : 텍스처로부터 surface texture를 생성 3. 해당 서피스 텍스처를 카메라 모듈등의 output으로 전달 4. surface texture 의 onFrameA..
[Android] androidX Camera 프리뷰 fun initAndroidXCamera() { . . val previewConfig = PreviewConfig.Builder().apply{ setLensFacing(CameraX.LensFacing.FRONT) setTargetAspectRatio(Rational(1,1)) setTargetResolution(Size(480,640)) }.build() val preview = Preview( previewConfig ) preview.setOnPreviewOutputUpdateListener { Log.d(TAG, "onPreviewOutputUpdate") val parent = binding.viewFinder.parent as ViewGroup parent.removeView(bin..