본문 바로가기

Android

(43)
[Android Tip] Spinner: DropDown(다른 글로 수정됨) DropDown Spinner아래의 이미지 처럼 터치했을 때, 값을 사용자가 선택할 수 있도록 목록 형태로 펼쳐지는 것을 드롭다운(Drowdown) 이라고 한다.안드로이드에서 드롭다운은 스피너(Spinner) 를 이용해 구현할 수 있다.이번 포스팅에서는 스피너를 구현하는 방법과 커스텀하는 방법에 대해 알아보겠다.ViewBinding 환경을 고려하고 작성된 글이다. 이번 글의 내용에서 만들어가는 드롭다운의 결과는 아래와 같다.간단하게 드롭다운에서 아이템을 선택하면 그에 따라 텍스트가 바뀌는 예제다. 코드 전문은 아래 깃허브 저장소에서 확인 가능하다.샘플 프로젝트 코드 링크 GitHub - parade621/Basic_Spinner: Tstory Basic Spinner DropDown 코드 전문Tstory..
Debounce와 Throttle, Event 핸들링 본인이 전담해서 운영 중인 어플리케이션은 로그인을 하거나 특정 API를 호출할 때, 서버에 로그를 남긴다.앱 운영을 전담하기 이전부터 있던 고질적인 문제가 있었는데.. 사용자가 로그인을 시도 할 때, 1초도 안되는 시간동안 소수초 간격으로 Api가 연속 호출되는 문제였다.다수의 이용자가 사용하는 서비스이고, 최근 사용자가 늘어가는 만큼, 이대로 방치하면 서버의 과부하가 유발되어 서비스 품질이 낮아질 수 있겠다는 생각이 들었다.마침 최근에 Medium에서 Debounce와 Throttle에 관련된 칼럼을 읽었던 기억이 있어서 적용해 보았고, 이슈를 해결할 수 있었다. 비슷한 이슈를 겪는 사람들에게 기술적 인사이트를 제공할 수 있겠다는 생각에, 관련 내용을 기록해 둔다.Debounce와 Throttle의 개..
Android studio Markdown Preveiw 안보이는 증상 해결 아니 마크다운 Preview가 계속 안되서 구글링 해봤는데 나오는 방법들이 다 안되는거임 해결한 방법 기록 상단 탭 Help -> Find Action All -> "registry"입력 Registry 창에서 cmd+f할 필요없이 바로 "sand" 입력 ide.brwoser.jcef.sandbox.enable 이게 체크가 되어있을텐데 체크 해지 다시 Help -> Find Action -> "Choose"입력하고 "Choose Boot Java Runtime IDE.." 선택 최신버전 JetBrains Runtime JBR with JCEF 선택 -> OK IDE 재시작하면 Preview 표시됨
The compiler option dagger.hilt.android.internal.projectType is not a recognized Hilt option. Is there a typo? 오류 가끔 Hilt를 사용하다 보면The compiler option dagger.hilt.android.internal.projectType is not a recognized Hilt option. Is there a typo?이런 오류가 발생한다. 보통 hilt 설정이나 구성에 문제가 있어서 발생하는 오류인데, 주로 빌드 과정에서 hilt 컴파일러가 이상한 옵션을 받을 때 나타난다. hilt dependency 잘 확인하자.본인은 아래처럼 잘못 작성했던 것을 수정해서 해결했다.kapt("com.google.dagger:hilt-compiler:2.48") // ❌ kapt("com.google.dagger:hilt-android-compiler:2.48") // ✅
Foreground Service 구현: 바인딩된 서비스 Foreground Service의 개념은 개념편을 참고 바람 이번 글에서 다루는 예제는 포그라운드 서비스 동작의 이해를 위해 Hilt, Coroutine, Flow 와 같은 고급 기능 사용을 지양하여 작성되었다. 목표는 "위치를 가져오는 Location Service 만들기" 이게 사실 서비스를 설명하기 가장 간단하면서도 편리한 거라 계속 이것만 만들게 되는 듯 하다. 해당 게시글에 사용되는 예제 코드는 gitHub에 업로드 해두었다. [Github: Location_ForegroundService_Sample] GitHub - parade621/Foreground_Service-Location-_Sample: ForegroundService(Location) Sample Code 입니다 Foregro..
[Compose] Custom CameraView 만들기 이미지 업로드 관련 서버가 자꾸 맛이 가는 걸 언제 어디서나 확인할 수 있도록 하기 위해 서비스 중인 앱에다가 PC 없이도 로그를 볼 수 있는 스크린을 만들고 있다. 현재 서비스 중인 앱의 카메라 기능은 전부 XML으로 커스텀뷰를 만들어서 사용 중인데, 요즘 Compose를 공부 중이라 그런지 이번 기능은 괜히 컴포즈로 만들어 보고 싶다는 생각이 들었다. 그래서 한번 만들어 봤다. 일단 사진을 촬영해서 서버에 전송해야하는데.. 진짜 딱 프리뷰-촬영만 만들면 되는데, 갑자기 난독증이 도진건지 설명이 어려운건지 Compose Camera 관련 자료들이 이해하기 넘모 어려웠다. 그래서 여차저차 간단하게 딱 프리뷰-촬영 기능만을 구현한 코드를 기록해 두려고 한다. [❗️주의❗️] 진짜 딱 나만 쓴다는 생각으로 ..
Compose Preview 오류 This version (1.3.2) of the Compose Compiler requires Kotlin version 1.7.20 but you appear to be using Kotlin version 1.9.21 which is not known to be compatible. Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!). Xml UI 방식에서 Compose로 리팩토링을 진행하던 중, Preview를 확인하기 위해 빌드를 하는데 계속 위와 같은 오류가 발생했다. 코럼 고렇치ㅋㅋ 한번에 잘 풀리는 일이 없네ㅋㅋ! 일단 본인의 경우, Kotlin ..
안드로이드 디바이스 정보 가져오기 지난 글에 이어서 로그를 남기는데 사용했던 디바이스 정보를 가져오는 함수들을 기록해 두려고 한다. 1. 디바이스 모델 명, OS 버전, Api level 정보 가져오기 fun getOSVersion(): String { val deviceModel = Build.MODEL val version = Build.VERSION.RELEASE val sdkInt = Build.VERSION.SDK_INT return "Device Model: $deviceModel, OS Version: $version(Api level: $sdkInt)" } 2. 디바이스 배터리 정보(잔여량) 가져오기 fun getBatteryLevel(context: Context): String { val batteryStatus: In..