Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- apk이름변경
- 데이터바인딩
- json 저장
- 1회용컵
- 1회용 플라스틱컵
- 셀룰로오스-g-폴리락타이드 공중합체
- 안드로이드 sms
- 라이브데이터 postValue
- 플라스틱 생분해
- compse collectAsState
- 일회용 플라스틱
- TwomonUSB
- viewmodelscope
- 안드로이드 스튜디오 애뮬레이터
- TowmonUSB 연결오류
- 코틀린 이미지저장 #파일저장
- withContext
- 코루틴 job
- livedata
- var 와 val
- bluetoothmanager
- #큐구조 #큐다운로드
- 스레드 #코루틴
- 생분해성 플라스틱
- 코틀린 트리거 버튼
- compse state
- 토글 험수
- Room 데이터베이스 업데이트
- 안드로이드 비콘
- 안드로이드 mvvm
Archives
- Today
- Total
EnjoyLife
모의 위치 주입및 해제 본문
1.모의위치 주입
Android에서 모의 위치 API는 주로 LocationManager를 사용하여 테스트 목적으로 가짜 GPS 위치를 주입하는 데 사용됩니다. 이를 통해 개발자는 앱의 위치 기반 기능을 테스트할 수 있습니다. 주요 개념과 사용 방법은 다음과 같습니다:
1. 모의 위치 제공자 추가
addTestProvider 메서드를 사용하여 모의 위치 제공자를 추가합니다. 이 제공자는 GPS, 네트워크 등과 같은 실제 위치 제공자를 모방합니다.
private lateinit var locationManager: LocationManager
locationManager.addTestProvider(
LocationManager.GPS_PROVIDER, // GPS 제공자
false, false, false, false,
true, true, true,
ProviderProperties.POWER_USAGE_LOW,
ProviderProperties.ACCURACY_FINE
)
locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true)
val mockLocation = Location(LocationManager.GPS_PROVIDER).apply {
latitude = 37.7749 // 위도
longitude = -122.4194 // 경도
accuracy = 1f // 정확도
time = System.currentTimeMillis() // 현재 시간
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
elapsedRealtimeNanos = System.nanoTime()
}
}
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, mockLocation)
2.모의 위치 해제
locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false)
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER)
(실제 위치 업데이트)
private fun startRealLocationUpdates() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
) { return }
val request = LocationRequest.Builder(
Priority.PRIORITY_HIGH_ACCURACY,
5000L
).setMinUpdateDistanceMeters(1f).build()
fusedClient.requestLocationUpdates(
request,
locationCallback,
Looper.getMainLooper()
)
}