我正在开发一个位置感知应用程序(Android 4.2+),我在其中存储位置以创建路线 Route类基本上是Stack的包装器,具有一些额外的功能,例如具有路径的JSON版本和唯一ID。
这是我的路线类
import android.location.Location;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
import java.util.Stack;
public class Route {
private final static String TAG = "Route Class";
private boolean locked;
private String routeID;
private Stack route;
private JSONObject jsonRoute;
public Route(final String routeID){
Log.v(TAG, "Initializing new Route with ID "+routeID);
this.routeID = routeID;
route = new Stack<Location>();
jsonRoute = new JSONObject();
// Initialize JSON Route with Route ID
try {
jsonRoute.put("Route", routeID);
} catch(JSONException e) {
e.printStackTrace();
}
locked = false;
}
public void add(final Location location) {
Log.v(TAG, "Adding a new location to Route "+routeID);
route.push(location);
//JSON
JSONArray array = new JSONArray();
JSONObject temp = new JSONObject();
try {
temp.put("Latitude", location.getLatitude());
temp.put("Longitude", location.getLongitude());
temp.put("Time", location.getTime());
temp.put("Speed", location.getSpeed());
array.put(temp);
// Start with Location 0
jsonRoute.put("Location"+(route.size()-1), array);
} catch (JSONException e) {
e.printStackTrace();
}
}
public Location removeLast() {
Log.v(TAG, "Removing last location");
jsonRoute.remove("Location"+(route.size()-1));
return (Location) route.pop();
}
public Location getLast() {
return (Location) route.peek();
}
public int size() {
return route.size();
}
public boolean empty() {
return route.empty();
}
public String getRouteID() {
return routeID;
}
public Iterator iterator() {
return route.iterator();
}
public void lock() {
locked = !locked;
}
public boolean locked() {
return locked;
}
}
我的问题在于ID;我希望能够创建和删除路由,将它们存储在手机中并将它们上传到RESTful服务。到目前为止,我已经考虑过为this solution创建视图ID,但我想要的是:
我原以为我可以使用当前日期创建一个ID,例如20141013加上附加的n个数字来确定当天的路线编号,足够长的时间不会弄乱其他结果。但是,如果我关闭应用程序并再次打开它,这仍然会产生问题,因为它将再次从1开始追加。我基本上希望能够通过手机和API中存储的数据对它们进行排序,并在需要时加载旧路由。
是否有人遇到过类似的问题?我愿意接受任何建议,不仅是ID本身,还有整个Route类。
提前致谢!