Собственный класс для отслеживания местоположения с помощью LocationManagerApi не работает ⇐ Android
-
Anonymous
Собственный класс для отслеживания местоположения с помощью LocationManagerApi не работает
Я написал класс для отслеживания положения смартфона. Для этого я использую LocationManagerAPI. Это мой класс:
import android.annotation.SuppressLint импортировать android.content.Context импортировать android.location.Location импортировать android.location.LocationListener импортировать android.location.LocationManager импортировать android.util.Log класс NetworkLocationTracker { частная переменная широта: Double = 0,0 частная переменная долгота: Double = 0,0 частная переменная locationManager: LocationManager частный вар locationListener: LocationListener? = ноль конструктор (контекст: Контекст) { this.locationManager = context.getSystemService(Context.LOCATION_SERVICE) как LocationManager this.locationListener = объект: LocationListener { переопределить fun onLocationChanged(location: Location) { setLatitude(location.latitude) setLongitude(location.longitude) } } } @SuppressLint("Миссингпермиссион") весело startLocationTracking() { if(this.locationListener!= null) { this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0L, 0f, this.locationListener как LocationListener) } } весело stopLocationTracking() { если (this.locationListener != null) { this.locationManager.removeUpdates(this.locationListener как LocationListener) this.locationListener = ноль } } весело getLatitude(): Double { верните эту.широту } весело getLongitude(): Double { верните это.долгота } fun setLatitude(latitude: Double) { this.latitude = широта } весело setLongitude(долгота: Double) { this.longitude = долгота } } Вот код, который я использую для тестирования класса:
var nlt = NetworkLocationTracker(this) nlt.startLocationTracking() for(i в 1..10) { Thread.sleep(1000) Log.d("Отладка", "${nlt.getLatitude()} ${nlt.getLongitude()}") } nlt.stopLocationTracking() Когда я запускаю тестовый код, я получаю только значения 0,0 и 0,0 для позиции.
Я активировал службу определения местоположения и не получаю никаких сообщений об ошибках. Разрешения также обрабатываются правильно. Может ли кто-нибудь найти ошибку в моем классе и подсказать?
Я написал класс для отслеживания положения смартфона. Для этого я использую LocationManagerAPI. Это мой класс:
import android.annotation.SuppressLint импортировать android.content.Context импортировать android.location.Location импортировать android.location.LocationListener импортировать android.location.LocationManager импортировать android.util.Log класс NetworkLocationTracker { частная переменная широта: Double = 0,0 частная переменная долгота: Double = 0,0 частная переменная locationManager: LocationManager частный вар locationListener: LocationListener? = ноль конструктор (контекст: Контекст) { this.locationManager = context.getSystemService(Context.LOCATION_SERVICE) как LocationManager this.locationListener = объект: LocationListener { переопределить fun onLocationChanged(location: Location) { setLatitude(location.latitude) setLongitude(location.longitude) } } } @SuppressLint("Миссингпермиссион") весело startLocationTracking() { if(this.locationListener!= null) { this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0L, 0f, this.locationListener как LocationListener) } } весело stopLocationTracking() { если (this.locationListener != null) { this.locationManager.removeUpdates(this.locationListener как LocationListener) this.locationListener = ноль } } весело getLatitude(): Double { верните эту.широту } весело getLongitude(): Double { верните это.долгота } fun setLatitude(latitude: Double) { this.latitude = широта } весело setLongitude(долгота: Double) { this.longitude = долгота } } Вот код, который я использую для тестирования класса:
var nlt = NetworkLocationTracker(this) nlt.startLocationTracking() for(i в 1..10) { Thread.sleep(1000) Log.d("Отладка", "${nlt.getLatitude()} ${nlt.getLongitude()}") } nlt.stopLocationTracking() Когда я запускаю тестовый код, я получаю только значения 0,0 и 0,0 для позиции.
Я активировал службу определения местоположения и не получаю никаких сообщений об ошибках. Разрешения также обрабатываются правильно. Может ли кто-нибудь найти ошибку в моем классе и подсказать?
Мобильная версия