moko-geo
Библиотека moko-geo предоставляет возможность отслеживать геолокацию пользователя из общего кода.
Состав библиотеки
geo— базовый модуль сLocationTracker;geo-compose— интеграция с Compose Multiplatform.
LocationTracker
Основной класс LocationTracker использует PermissionsController из moko-permissions для запроса разрешений и позволяет управлять процессом отслеживания.
Общий код
class TrackerViewModel(
val locationTracker: LocationTracker
) : ViewModel() {
init {
viewModelScope.launch {
locationTracker.getLocationsFlow()
.distinctUntilChanged()
.collect { location ->
println("new location: $location")
}
}
}
fun onStartPressed() {
viewModelScope.launch { locationTracker.startTracking() }
}
fun onStopPressed() {
locationTracker.stopTracking()
}
}
Android
val locationTracker = LocationTracker(
permissionsController = PermissionsController(applicationContext)
)
val viewModel = TrackerViewModel(locationTracker)
viewModel.locationTracker.bind(lifecycle, this, supportFragmentManager)
Compose
val locationTracker = LocationTracker(
permissionsController = PermissionsController(applicationContext)
)
val viewModel = TrackerViewModel(locationTracker)
BindLocationTrackerEffect(locationTracker = locationTracker)
iOS
let viewModel = TrackerViewModel(
locationTracker: LocationTracker(
permissionsController: PermissionsController(),
accuracy: kCLLocationAccuracyBest
)
)