Я читал много сообщений о stackoverflow об этом, но я не нашел ответа, который мне нужен. Поиск моего местоположения очень прост с использованием gps или с помощью сетевого провайдера, но есть проблема. Мое приложение сначала проверяет, активен ли gps, а если нет, я отправляю пользователя на страницу опций gps. После этого пользователь может вернуться к первому действию. Я использую текущее местоположение в этом действии и во втором действии. Я помещал слушателя только в первую активность и в функцию «onLocationUpdate()« Я сохраняю свою широту и долготу в своих глобальных переменных приложения. Если я запустил приложение, то я включил gps, а затем я открою второе действие, lat и lon равны 0.0, но если я начну действие, тогда я включил gps, а затем я жду 30 секунд, он работает. Существует ли один способ устранения этой задержки? Использование Network_Provider выполняется быстрее, но это не так точно, как gps!Android: как найти мое местоположение
Куски кода являются:
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsStatus = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!gpsStatus) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
this);
alertDialogBuilder.setTitle("The GPS is off!");
alertDialogBuilder
.setMessage("Turn on the GPS?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
Intent intent1 = new Intent();
intent1.setClassName(
"com.android.settings",
"com.android.settings.SecuritySettings");
startActivity(intent1);
dialog.cancel();
}
})
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, locationListener);
Эта часть предназначена для проверки, если GPS включен. Существует ли способ включения GPS без перехода на страницу настроек?
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) { // update
if (location != null) {
msg_r.setLatitude(location.getLatitude());
msg_r.setLongitude(location.getLongitude());
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
Это мой слушатель.
Там всегда будет задержка по времени при использовании GPS в качестве он должен сначала приобрести соединение, по крайней мере, с 4 спутниками, прежде чем он сможет указать местоположение. –