2015-11-05 3 views
-1

Я разработал приложение для Android, в котором GPS включен в любое время. Теперь, как я могу найти широту и долготу пользователя. Пожалуйста, помогите мнеКак найти широту и долготу пользователя, когда GPS находится на

+4

Возможный дубликат [Как получить текущее местоположение GPS программно в Android?] (http://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-android) –

ответ

0

Чтобы получить доступ к текущей информации о местоположении через поставщиков местоположения, нам необходимо установить разрешения с файлом манифеста 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>