Я использую следующий код, чтобы получить пользователи Откуда:Android расположение петли
public class MainActivity extends ActionBarActivity {
//=========================================== On Create ========================================
@
Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//======================================= Location =========================================
LocationManager mlocManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
}
public class MyLocationListener implements LocationListener {@
Override
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " +
"Latitude = " + loc.getLatitude() +
"Longitude = " + loc.getLongitude();
Toast.makeText(getApplicationContext(),
Text,
Toast.LENGTH_SHORT).show();
}@
Override
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(),
"Gps Disabled",
Toast.LENGTH_SHORT).show();
}@
Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(),
"Gps Enabled",
Toast.LENGTH_SHORT).show();
}@
Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
Когда я запустить приложение, оно переходит в бесконечный цикл отображения местоположения пользователя. Как я могу показать это местоположение только один раз одним нажатием кнопки?
На самом деле я использую AsyncTask: D, потому что я Макин g приложение погоды, которое ожидает загрузки данных и отображает текущую погоду. Я обрезал код выше и добавил в свой PreExecute с помощью Async, поэтому я предполагаю, что каждый раз, когда Async называется, он получит местоположение. Однако он не работал, как я ожидал. Если я запустил приложение с отключенным местоположением, он установит lon и lat как 0,0. Как это исправить? –
Невозможно получить местоположение от GPS с отключенным режимом местоположения. Вы можете использовать 'getLastKnownLocation()' в связи с регистрацией слушателя. Просто не забудьте использовать разумные значения при регистрации вашего слушателя, чтобы вы не постоянно использовали GPS-радио. Кроме того, вы можете использовать сетевое расположение, если GPS недоступен, в котором используется меньше батареи. –
Если я запрашиваю обновление местоположения, тогда мне нужно использовать регистр другого класса. В моем случае выше это было 'LocationListener mlocListener = new MyLocationListener();' Есть ли обходной путь к нему? –