Я разработал приложение для Android, в котором GPS включен в любое время. Теперь, как я могу найти широту и долготу пользователя. Пожалуйста, помогите мнеКак найти широту и долготу пользователя, когда GPS находится на
ответ
Чтобы получить доступ к текущей информации о местоположении через поставщиков местоположения, нам необходимо установить разрешения с файлом манифеста android.
<manifest ... >
<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" />
</manifest>
ACCESS_COARSE_LOCATION используется, когда мы используем сеть провайдер местоположения для нашего Android приложения. Но ACCESS_FINE_LOCATION предоставляет разрешения для обоих поставщиков. Разрешение INTERNET должно использоваться сетевым провайдером.
Создание экземпляра LocationManager в качестве ссылки на услуги определения местоположения
Для любого фона Android Service, нам нужно получить ссылку для его использования. Аналогичным образом ссылка на службу определения местоположения будет создана с использованием метода getSystemService(). Эта ссылка будет добавлена с созданным экземпляром LocationManager следующим образом.
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Запрос текущее местоположение от LocationManager
После создания ссылки на службу расположение, обновления местоположения запрашиваются с помощью метода requestLocationUpdates() из LocationManager. Для этой функции нам нужно отправить тип поставщика местоположения, количество секунд, расстояние и объект LocationListener, по которому будет обновляться местоположение.
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Получать обновления местоположения от LocationListener об изменении местоположения
LocationListener будет уведомлено на основе расстояния, указанного интервала или количество секунд.
В этом примере представлено текущее обновление местоположения с использованием провайдера GPS. Весь код Android приложение выглядит следующим образом,
public class MainActivity extends Activity implements LocationListener{
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
TextView txtLat;
String lat;
String provider;
protected String latitude,longitude;
protected boolean gps_enabled,network_enabled;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtLat = (TextView) findViewById(R.id.textview1);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
txtLat = (TextView) findViewById(R.id.textview1);
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}
@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
}
}
файлы XML для разметки и андроида манифеста приведены ниже
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
</RelativeLayout>
Возможный дубликат [Как получить текущее местоположение GPS программно в Android?] (http://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-android) –