Я решил поместить ответ о регистрации GPS в новое сообщение, чтобы сделать вещи чище.
Запись координат GPS
Первое, что нам нужно сделать, этодобавьте строку в наш AndroidManifest.xml, в которой говорится, что нам нужно разрешить записывать GPS-координаты:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" .... >
....
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
(я вставил эти ....
, чтобы показать, что пропускал некоторый контент)
Затем вы должны добавить android:onClick="functionToCall"
к каждому из тегов кнопки (см. Мой другой ответ для более подробной информации).Теги кнопок должны выглядеть примерно так:
<Button android:text="Start"
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="startButton"></Button>
<Button android:text="Stop"
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="stopButton"></Button>
Теперь вам нужно запросить у системы LocationManager
, которую мы можем дать LocationListener
для использования при получении местоположения.Мы дадим LocationManager
LocationListener
, когда нажата кнопка запуска, и удалим этого слушателя, когда нажата кнопка остановки.Это LocationListener
вызовет функцию для сохранения местоположения.
Вот код для этого:
package com.TrackLocation;
import java.util.ArrayList;
//Ommitted rest of the imports
public class TrackLocation extends Activity {
ArrayList<Location> recordedLocations = new ArrayList<Location>();
LocationManager locationManager;
LocationListener locationListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the manager from the system
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Create the locationListener that we will be adding and removing
locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
recordLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
}
public void recordLocation(Location loc) {
recordedLocations.add(loc);
}
public void startButton(View view) {
//Add the listener asking for GPS
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
public void stopButton(View view) {
locationManager.removeUpdates(locationListener);
}
}
Приведенный выше код не имеет большого значения со значениями (на самом делеВы даже не можете видеть местоположения без использования отладчика), но я хотел, чтобы это было как можно меньше.У меня есть более полная версия кода, который будет отображать местоположения в ListView
.Вот ссылка на эту более полную версию.