안드로이드/잡다한 지식
[안드로이드] 왜 string resource로 관리하나요?
xml에서 text값을 하드코딩한 경우 아래와 같은 제안이 나타난다.이 제안은 string resource로 관리를 제안한다. 왜 이런 제안을 하게 되었는지 궁금해서 찾아봤다. 다국어 지원만약 한국만 지원하는 어플리케이션을 만들다가 해외로 진출 시 그에 맞는 언어를 지원해야한다. 만약 하드코딩을 했을 경우 많은 시간을 소요하면서 수정해야한다. 하지만, string resource로 관리한 경우 상대적으로 시간을 덜 사용해 앱을 수정할 수 있다. 동일한 문자열을 사용한 경우동일한 문자열을 사용해서 앱을 출시했다가 수정이 필요한 경우 여러번 수정을 해야한다. 하지만 string resource로 관리한 경우 한번만 바꾸면 되기 때문에 이점이 있다.
[안드로이드] WorkManager와 Koin
WorkManagerWorkManager는 프로세스의 종료와 관계없이 반드시 수행할 수 있도록 해주는 Android JetPack의 일부이다.제약으로는 10분이내로 처리할 수 있도록 해주어야 한다. 하나의 WorkManager가 과도한 시스템 리소스 사용 방지 및 배터리 소모를 방지하기 위해서이다. WorkManager 사용사례1. 데이터 동기화앱 데이터와 서버 데이터를 동기화를 위해서 사용할 수 있다. 나 같은 경우에는 서버와 앱 데이터를 동기화 시키기 위해서 N시간에 한번 식 데이터를 보낼 수 있도록 WorkManager를 사용했다. WorkManager 데이터 동기화 시 주의해야 할 점은 앱이 재시작 또는 휴대폰이 재부팅을 하더라도 반드시 수행하기 때문에 문제가 생길 수 있다. 글쓴이의 경우 반드시..
[안드로이드] 휴대폰 원격 공유를 개발하면서 생겼던 고민들 정리
안드로이드에서 화면 공유를 개발하면서 생겼던 고민들을 정리할려고 한다.화면 터치에 대한 고민처음에 화면 터치를 할려면 루팅이 필요하다고 생각했다. 하지만, Accessibility Service 클래스를 이용하면 화면 터치를 지원해준다고 한다. 또한 일부 휴대폰에서 ADB 명령을 이용해서 좌표 값을 보내주면 화면 터치를 지원해준다.화면 터치 기능에 대한 것은 아래 포스팅에서 정리를 했다. [안드로이드] 원격 터치 기능 정리원격으로 터치하는 기능을 만들기 위해서 방법들을 찾아봤는데, 앱 내부에서만 가능한 터치이거나, 루팅을 통해서 터치하는 방법이 많았다. 앱 내부 터치, 루팅 권한을 뺀 나머지 기능을 정리할dosomething9390.tistory.com화면 공유에 대한 고민화면 공유를 하기 위해서 Web..
JetPack Compose에서 Compose 멀티 플렛폼으로 전환
compose가 릴리즈되고, 멀티 플렛폼(Android, ios, 윈도우 앱, 홈페이지)서도 fork of compose를 지원해준다고 한다. JetPack Compose에서 fork of compose를 하기 위해서는 아래와 같이 설정을 해주어야 한다. KMP 마이그레이션 및 컴포즈 설정안드로이드에서 kotlin multiplatform와 호환하기 위해서 build.gradle.kt에서 추가/수정을 해야한다.// app 수준 build.gradle.ktplugins { id("com.android.application") // or id("com.android.library") // Replace `kotlin("android")` with: kotlin("multiplat..
[안드로이드] Rxjava + retrofit2 연결 도중 취소하기
연결 도중 취소해야하는 경우가 생기면 아래와 같은 코드를 사용하면 된다. private Disposable mDisposable; service.post(mData) .subscribeOn(Schedulers.io) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SingleObserver() { @Override public void onSubscribe(Diposable d) { // disposable을 지정 mDisposable = d; } ... }; // 취소를 해야하는 경우 if (mDisposable != null) mDisposable.dispose();
[안드로이드] 원격 터치 기능 정리
원격으로 터치하는 기능을 만들기 위해서 방법들을 찾아봤는데, 앱 내부에서만 가능한 터치이거나, 루팅을 통해서 터치하는 방법이 많았다. 앱 내부 터치, 루팅 권한을 뺀 나머지 기능을 정리할려고 한다. ADB 방식 시스템 앱의 경우 adb shell 방식을 사용할 수 있다. adb shell input tap x y 명령어를 내리면 그 좌표로 터치를 할 수 있다. Runtime runtime = Runtime.getRuntime(); runtime.exec("input tap " + x + " " + y); 단점으로는 속도가 3초, 5초뒤에 발생한다. (테블릿 성능이 안좋아서 그럴 수도 있다) 그리고 플레이 스토어에 올리지 못한다. 그래서 Accessibility Service를 사용해야한다. Accessi..
[안드로이드] MQTT 라이브러리 정리
MQTT 서버에 연결하기 위해서 Android App에서 개발한 것을 정리할려고 한다. MQTT 라이브러리 1. paho MQTT paho MQTT는 예전에 개발된 라이브러리이고, 지금은 개발이 중지된 것처럼 보인다. 예전에 개발한 라이브러리이여서 깃 issue에서는 android 12는 동작하지 않는다고 한다. 나도 android 10에서 개발하니 broadcast에서 자꾸 에러가 발생한다. (해결 방법은 따로 코드 수정을 해서 받으면 된다) GitHub - eclipse/paho.mqtt.android: MQTT Android MQTT Android. Contribute to eclipse/paho.mqtt.android development by creating an account on GitHub..
[안드로이드] DroidKnight 2023
Droid Knights 2023 Droid Knights 2023 드로이드나이츠는 기술 세션으로 개발자들의 경험을 공유하고 만남의 장을 만드는 컨퍼런스입니다. 2023.09.12(화). 코엑스 E홀에서 진행 예정입니다. www.droidknights.dev 드로이드 나이트 2023의 일정 이번에는 규모가 커진 드로이드 나이츠이다. 기대하고 있는 주제 3개를 뽑자면 테스트 잘하는 주니어 개발자 되기, 빈혈 도메인 모델과 쓸모없는 유스케이스, 그리고 비대한 뷰모델에 대해 생각해보기, A small leak can sink a great ship이 있다. 테스트 코드를 개발을 하고 있지만, 아직도 감을 못잡고 있어서 테스트 주제가 기대된다. 그리고 빈혈 도메인 모델, 쓸모 없는 유스케이스, 비대한 뷰모델은 ..