일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 1회용 플라스틱컵
- withContext
- TowmonUSB 연결오류
- var 와 val
- Room 데이터베이스 업데이트
- 코틀린 트리거 버튼
- 코틀린 이미지저장 #파일저장
- 셀룰로오스-g-폴리락타이드 공중합체
- 스레드 #코루틴
- 모의위치 주입
- compse collectAsState
- 안드로이드스튜디오 jdk
- 플라스틱 생분해
- json 저장
- 안드로이드 스튜디오 애뮬레이터
- 코루틴 job
- 안드로이드 sms
- 비콘스캐닝
- bluetoothmanager
- 안드로이드 mvvm
- apk이름변경
- #큐구조 #큐다운로드
- livedata
- 라이브데이터 postValue
- TwomonUSB
- 안드로이드 비콘
- 1회용컵
- viewmodelscope
- compse state
- 토글 험수
- Today
- Total
목록분류 전체보기 (51)
EnjoyLife
결론: 안드로이드 14에서 LocationManager 의 removeTestProvider,setTestProviderEnabled 함수를 사용못하게 막아놨기 때문에 사용불가하다.사용해도 "java.lang.IllegalArgumentException: gps provider is not a test provider" 오류가 발생한다.FusedLocationProviderClient 의 fusedClient.setMockMode(false) 호출만으로도 충분히 모의위치 주입 해제가 된다. 구글지도앱을 실행해도 실제 위치로 이동한것을 볼수 있다. // 100% 오류 발생 addedProviders.forEach { provider -> try { loc..
fun isServiceRunning(serviceClass: Class): Boolean { val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as? android.app.ActivityManager ?: return false return try { activityManager.getRunningServices(Int.MAX_VALUE) .any { it.service.className == serviceClass.name } } catch (e: Exception) { false } }
✅ 백그라운드 최적화 핵심 체크리스트Foreground Service 필수: - 항상 startForeground() 호출, 알림 고정 - 절대 일반 Service로 실행하지 말 것서비스 분리: - “계속 살아 있어야 하는 비콘 감지(BeaconService)”는 Foreground - “일회성 작업(모의위치 주입)”은 짧게 실행 후 stopSelf()로 종료메모리 릭/과다 WakeUp 방지: - CoroutineScope(Dispatchers.Default)로 주기 작업 - 주기 체크(예: 2초) 외 불필요한 Timer, Handler, Alarm 사용 XDoze 모드/절전 예외 적용: - Foreground Service는 일반 절전 모드에서 살아남지만, - Doze 모드 심화(충전+화면 꺼짐)에서는..
신규 Android 앱을 만들 때는 JDK 17을 사용하는 것을 권장드립니다. 그 이유를 정리해 보면 다음과 같습니다.LTS(장기 지원) 안정성JDK 17은 2021년 9월에 나온 LTS 버전으로, 버그 픽스·보안 업데이트가 최소 2029년까지 지원됩니다.JDK 21 역시 LTS이지만 출시(2023년 9월)가 비교적 최근이라, Android 생태계 전반에서 아직 검증·호환성 테스트가 충분히 이뤄지지 않았습니다.Android Gradle Plugin(AGP) 호환성현 시점(2025년 기준) Android Studio·AGP 공식 문서 상으로는 JDK 17까지 안정적으로 지원됩니다.JDK 21을 쓰려면 Gradle 8.5 이상, AGP 8.5 이상으로 모두 업그레이드해야 하는데, 일부 서드파티 플러그인이나 ..
1.모의위치 주입 Android에서 모의 위치 API는 주로 LocationManager를 사용하여 테스트 목적으로 가짜 GPS 위치를 주입하는 데 사용됩니다. 이를 통해 개발자는 앱의 위치 기반 기능을 테스트할 수 있습니다. 주요 개념과 사용 방법은 다음과 같습니다:1. 모의 위치 제공자 추가 addTestProvider 메서드를 사용하여 모의 위치 제공자를 추가합니다. 이 제공자는 GPS, 네트워크 등과 같은 실제 위치 제공자를 모방합니다. private lateinit var locationManager: LocationManagerlocationManager.addTestProvider( LocationManager.GPS_PROVIDER, // GPS 제공자 false, fal..

결론은 불가능하다. 구글정책에 의해 (아래 링크 참고) 기본SMS앱에 사용자가 등록한 앱이 아니면 브로드캐스트리시버로 문자를 읽을때 필요한 권한인 READ_SMS, RECEIVE_SMS, SEND_SMS 이 권한 자체를 사용할수 없다. 본인이 직접 SMS앱을 만들어서 사용자가 그 앱을 기본SMS앱으로 등록시켜서 사용하게 하면 된다.그러면 단말기에서 온 SMS문자를 다 읽을수 있다. 링크를 들어가 정책내용을 보면 아래 부분에 명확하게 명시해 줬다. " 그 권한과 관련된 핵심 기기 기능을 위한 사용자의 기본 핸들러로 등록되어야 합니다. 예를 들어 통화 관련 권한에 액세스하려면 앱이 예외 사례를 충족하지 않는 한, 앱을 사용자의 기본 휴대전화 핸들러 또는 어시스턴트 핸들러로 등록해야 합니다." " 앱은 ..
비콘(Beacon) 스캔 기능을 Android에서 직접 구현할 때 기본이 되는 주요 BLE(Bluetooth Low Energy) API는 다음과 같습니다:BluetoothManager & BluetoothAdapterBluetoothManager를 통해 시스템 블루투스 서비스(BLUETOOTH_SERVICE)를 얻고,BluetoothAdapter로 디바이스의 블루투스 상태(on/off) 확인 및 BLE 스캐너 객체를 가져옵니다.kotlin복사편집val btManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager val btAdapter = btManager.adapter BluetoothLeScannerBluetoothAdapt..
획득 방식BluetoothAdapter.getDefaultAdapter()예전부터 있던 static 메서드로, “기본” 블루투스 어댑터 인스턴스를 바로 반환합니다.Android 12(API 31) 이전에는 흔히 쓰였으나, 이후 deprecated 되어 앞으로는 사용하지 않는 것이 권장됩니다.BluetoothManagerAndroid 4.3(API 18)부터 도입된 시스템 서비스(API)를 통해 얻습니다.Context.getSystemService(Context.BLUETOOTH_SERVICE)로 BluetoothManager를 받아오고, 거기서 adapter 프로퍼티로 어댑터를 꺼냅니다.생명주기 관리BluetoothAdapter.getDefaultAdapter()는 단순히 어댑터 객체를 반환만 합니다.B..