Я пытаюсь получить широту и долготу от GPS в телефоне Android. Основная проблема в том, что я не могу получить его от этого конкретного провайдера, как бы я ни пытался. Но если я попробую другого провайдера (Сеть), я могу получить координаты просто отлично.
TLDR -> ПРОБЛЕМА: Я не могу получить Местоположение / координаты из GPS_PROVIDER
на телефоне Android. Как мне их получить?
Я пробовал getLastKnownLocation()
, requestSingleUpdate(...)
и requestLocationUpdates(...)
.
Кажется, что константа всех этих попыток заключается в том, что они работают с провайдером сети, но не работают с GPS_PROVIDER
.
RequestSingleUpdate
и requestLocationUpdates
не генерируют сообщения, а getLastKnownLocation
возвращает NULL с GPS.
Я также уже попросил разрешения во время выполнения и поместил их в манифест.
В моем манифесте у меня есть по этому вопросу:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.location.gps" />
Это моя основная активность:
public class MainActivity extends AppCompatActivity {
private LocationManager myManager;
private MyLocListener loc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 0);
loc = new MyLocListener();
myManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (myManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, loc);
}
}
}
}
И мой слушатель:
public class MyLocListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Latitude :", "" + location.getLatitude());
Log.e("Longitude :", "" + location.getLongitude());
}
}
@Override
public void onProviderEnabled(String provider){
}
@Override
public void onProviderDisabled(String provider){
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
}
}
Таким образом, я не получаю никаких обновлений с помощью GPS, но, как я уже сказал, если я меняю провайдера на NETWORK, он работает просто отлично, и я периодически начинаю получать координаты на консоли времени выполнения.
Еще одна вещь, которую следует учитывать, это то, что я тестирую это без движения и внутри здания. Может быть, это как-то связано с этим ... Я не знаю
В любом случае, любая помощь или знания по этому поводу будут приветствоваться! СПАСИБО!