Это мой код для получения координат GPS.
if (Build.VERSION.SDK_INT >= 23) {
getPermissions();
} else
doGPS();
private void getPermissions() {
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
} else
doGPS();
}
public static boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
if (permsRequestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getPermissions();
}
}
public void doGPS() {
try {
mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mlocListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
getCordinate(location.getLatitude(),location.getLongitude());
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
}
Сначала он проверяет разрешение, а когда предоставляет, звонит по телефону getGps
У меня есть этот код в моем манифесте:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Требуется всегда вызывать метод getCordinate
, он вообще не доходит до onLocationChanged
.
Я проверил другие приложения, такие как карта Google, и он правильно получил координаты.
что с ним не так?
обновление 1:
что-то странное, когда я нахожусь в месте без движения, это не работает, но когда я начинаю двигаться, это работает, как я могу заставить его получить координату, пока я не двигаюсь?