О storing data у вас есть различные варианты. Вы можете использовать database
, где вы опретите свои данные, прочитайте его и сможете прочитать его снова при следующем использовании своего приложения. Если вы хотите, чтобы данные были постоянными в текущем жизненном цикле приложения, я рекомендую использовать ArrayList
пользовательских объектов. Краткий пример ArrayList<LocationObject>
использования:
public class LocationObject {
private double lng;
private double lat;
private float speed;
private long time;
public LocationObject(long time, double lng, double lat, float speed) {
this.time = time;
this.lat = lat;
this.lng = lng;
this.speed = speed;
}
//put getters & setters here, press `Alt` and `Insert`, choose the getters and setters
}
В вашем управлении Activity
, инициализировать ArrayList
глобально (не внутри методы, но внутри ваш Activity.class
:
private ArrayList<LocationObject> locationList;
//in onCreate:
locationList = new ArrayList<LocationObject>();
//whenever you retrieve a location, create a LocationObject and store it into the List:
LocationObject currentLocation = new LocationObject(time, lng, lat, speed);
locationList.add(currentLocation);
Теперь, если вы хотите, чтобы получить последние 2 вы просто получите к ним доступ в список:
LocationObject lastLocation = locationList.get(locationList.size() - 2);
LocationObject currentLocation = locationList.get(locationList.size() - 1);
//to get the latitude, don't forget to create the getters&setters in your LocationObject.class!
double lastLat = lastLocation.getLat();
Редактировать: Чтобы сохранить только последнее значение, просто присвойте значения ag Локально объявленная переменная:
private Location oldLocation;
private float[] results;
private ArrayList<float> speedList;
//in oncreate:
speedList = new ArrayList<Float>();
private void updateWithNewLocation(Location location) {
String where = "";
results = new float[100]; //[100] means there can be 100 entries - decrease or increase the number depending on your output
if (location != null) {
double lng = location.getLongitude();
double lat = location.getLatitude();
float speed = location.getSpeed();
long time = location.getTime();
String timeString = getTimeString(time);
speedList.add(speed);
if(oldLocation != null){
Location.distanceBetween(oldLocation.getLatitude(), oldLocation.getLongitude(), lat, lng, results);
}
oldLocation = location;
Итак, в чем проблема? Вычисление расстояния, сохранение данных/ввод данных в массив/arraylist? – yennsarah
, если я использую distanceBetween, он требует двух местоположений, но я могу получить только каждый раз, я не знаю, как сохранить предыдущий. Кроме того, я новичок в android, я не хочу писать в этом коде, чтобы создать массив и сохранить скорость. Я знаю, что distanceBetween хранится в списке массивов. но я не знаю, как это сделать в этом методе, так как этот метод будет запускаться каждые 5 секунд, если данные будут перекрываться. –