본문 바로가기

728x90

Android

(19)
[M1/M2] Android gRPC 적용 가이드 android gRPC 를 사용하기 위해서 아래와 같은 단계를 진행하면서 gRPC 를 적용한다. 이때 Mac M2 Chip 에서 이슈가 있었던 부분을 정리하였다.1. libs.version.toml 에 android protobuf plugin 버전 등록 및 plugin 적용protobufPlugin = "0.9.4"...protobuf = { id = "com.google.protobuf", version.ref = "protobufPlugin" }2. app > gradle kts 에 protobuf plugin 적용하기plugins { alias(libs.plugins.protobuf)}protobuf { protoc { artifact = libs.protobuf.proto..
[Android] Google Firebase 와 앱 연동 하기 목적 Android Application 을 Google Firebase 와 연동 하여 서버 통신을 할 수 있는 환경을 구축한다. Firebase 내에 프로젝트 만들기 1. Firebase 에 접속하여 프로젝트를 생성 한다. - URL : https://firebase.google.com/?hl=ko Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com - 시작 하기 - 프로젝트 추가 2. 프로젝트 생성이 완료 되면 Android Studio 에서 생성한 Firebase 와 프로젝트를 연동한다. Android Studio 내 Project 와 Firebase 연동(mac os 기준) 1...
[UnitTest] Local Resource 접근 - Android UnitTest 수행 시 res 폴더의 파일을 사용할 수 있다. - 음성 인식 테스트 시 마이크 입력을 받아서 테스트 하기 어려우므로 미리 녹음한 음원(wav) 파일을 이용하여 UnitTest 를 수행하고자 한다. - 이때 음원을 test>resources 폴더 저장하여 접근하면 resources 폴더 저장한 원하는 파일을 사용 가능한다. - 사용 방법은 아래와 같이 java classLoader 를 이용하여 stream 형태로 resoruces 내의 파일을 가져올 수 있다. private fun getSttWavFile(obj: Any, fileName: String): InputStream? { obj.javaClass.classLoader?.let { return it.getRes..
[BOJ][KOTLIN] 2447 별 찍기 - 10 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. 출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 예제 입력1 27 예제 출력1 *************************** ..
rx 를 이용한 Timer 처리 앱을 개발하다가 보면 TimeOut 스펙을 처리하는 상황이 발생 한다. TimeOut 를 처리하는 방법에는 여러 가지 경우가 있어 각 개발 상황에 맞게 적용하면 된다. 여기서는 rx 를 이용해서 10초 TimeOut Event 발생 및 TimeOut 후의 동작을 처리하는 로직에 대해서 확인한다. TimeOut 처리 방법 Handler 를 이용한 처리 Timer shedule 를 이용한 처리 Kotlin 의 경우 Coroutine 을 이용하여 처리 rx event 를 활용한 처리 rxkotlin 을 이용한 TimeOut 처리 Oberservable 를 통해서 주기적인 Interval 을 발생 시킨다. 해당 Interval 이 기준점에 도달하면 TimeOut 처리 한다. private var callback..
[Android] AudioTrack 재생 Android 앱에서 음원 및 Raw Data 재생 시 AudioTrack 과 MediaPlayer 를 이용해서 재생할 수 있다. AudioTrack 과 MediaPlayer 는 각 용도에 맞게 선택하여 사용한다. MediaPlayer 음악과 같이 백그라운드 재생을 할 경우 STATIC 한 시간이 아닌 음원을 재생할 경우 AudioTrack AudioChannel Config 설정을 원할 경우 PCM Raw Data Buffer 를 바로 재생할 경우 MediaPlayer Raw 파일의 Wav 음원을 재생하는 경우 AudioAttribute 설정(안드로이드 O이상 지원)이 필요없을 때에는 MediaPlayer 를 바로 Create 하고 음원을 재생한다. val mediaPlayer = MediaPlayer..
Android gRPC Client 구현(2) - Connection gRPC ManagedChannel Builder 를 이용하여 gRPC stub 을 구성한다. 각 서버 상황에 맞게 Authorization Key, RequestId 를 Header 로 설정한다. //async stub - stream response 를 처리하는 stub val stub: XXXServiceGrpc.XXXServiceStub = if (!apikey.isNullOrEmpty()) { val header = Metadata() val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER) header.put(key, "$apikey") MetadataUtils.attachHeaders(XXXServiceGrpc...
Android gRPC Client 구현(1) - gradle 환경 설정 Android gRPC 통신을 위한 Client 구현을 위해서 google proto buf 및 proto file 빌드를 위한 gradle 설정이 필요하다. 1. gradle protobuf plugin 설정 apply plugin: 'com.google.protobuf' 2. protobuf build 환경 설정 buildscript{ repositories{ google() mavenCentral() } dependencies{ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.14' } } protobuf { protoc { artifact = "com.google.protobuf:protoc:3.12.0" // Set the location ..