Получение первой GPS-координаты (перед перемещением) в Android
Я создаю приложение, которое требует местоположения GPS (или некоторого местоположения).
Однако после настройки прослушивателя и всего остального я никогда не получаю это первое местоположение GPS, я имею в виду местоположение, когда я открываю программу (и просто бездействую).
Я могу получить последнее известное местоположение, но так как GPS выключен, когда программа не запущена (или так кажется), то я не знаю, является ли это правильное местоположение
Когда я открываю карты Google, требуется всего несколько секунд, прежде чем он перейдет к фактическому местоположению, он выдает сообщение об "ожидании местоположения", поэтому я не знаю, что я делаю неправильно (или если это нормально). Это мой код GPS:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager loc = null;
LocationListener listener;
loc = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE) ;
Context context = getApplicationContext();
Location last = loc.getLastKnownLocation(LocationManager.GPS_PROVIDER) ;
Toast toast = Toast.makeText(context, "GPS:" + last , Toast.LENGTH_LONG );
toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER, 0, 0);
toast.show();
listener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, "Status changed", Toast.LENGTH_LONG );
toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER, 0, 0);
toast.show();
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, "GPS enabled", Toast.LENGTH_LONG );
toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER, 0, 0);
toast.show();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, "GPS disabled", Toast.LENGTH_LONG );
toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER, 0, 0);
toast.show();
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location == null) return ;
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, "coords:" + location, Toast.LENGTH_LONG );
toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER, 0, 0);
toast.show();
}
};
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
String bestProvider = loc.getBestProvider(criteria, true);
loc.requestLocationUpdates(bestProvider, 1000, 0, listener) ;
Итак, мой вопрос: есть ли какой-то способ вызова чего-либо и получения текущих координат GPS, или последнее известное местоположение содержит точные координаты, если GPS включен (но не работает - под чем я подразумеваю мигание в верхней части)? А как насчет того, когда я использую getbestprovider, тогда я не знаю, был ли последний использованный GPS или WIFI или что-то еще.