From 0b8800684da10f1b66e56deaa14d21905b289896 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Mon, 16 Apr 2012 13:34:28 +0200 Subject: Make Geopoint parcelable --- main/src/cgeo/geocaching/geopoint/Geopoint.java | 38 +++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'main/src/cgeo/geocaching/geopoint') diff --git a/main/src/cgeo/geocaching/geopoint/Geopoint.java b/main/src/cgeo/geocaching/geopoint/Geopoint.java index b916e51..ff97a4c 100644 --- a/main/src/cgeo/geocaching/geopoint/Geopoint.java +++ b/main/src/cgeo/geocaching/geopoint/Geopoint.java @@ -11,6 +11,8 @@ import org.json.JSONArray; import org.json.JSONObject; import android.location.Location; +import android.os.Parcel; +import android.os.Parcelable; import java.math.BigDecimal; import java.math.RoundingMode; @@ -18,7 +20,7 @@ import java.math.RoundingMode; /** * Abstraction of geographic point. */ -public final class Geopoint implements ICoordinates { +public final class Geopoint implements ICoordinates, Parcelable { public static final double deg2rad = Math.PI / 180; public static final double rad2deg = 180 / Math.PI; public static final float erad = 6371.0f; @@ -84,6 +86,17 @@ public final class Geopoint implements ICoordinates { } /** + * Create new Geopoint from Parcel. + * + * @param in + * a Parcel to read the saved data from + */ + public Geopoint(final Parcel in) { + latitude = in.readDouble(); + longitude = in.readDouble(); + } + + /** * Get latitude in degree. * * @return latitude @@ -233,7 +246,7 @@ public final class Geopoint implements ICoordinates { /** * Returns formatted coordinates with default format. * Default format is decimalminutes, e.g. N 52° 36.123 E 010° 03.456 - * + * * @return formatted coordinates */ @Override @@ -510,4 +523,25 @@ public final class Geopoint implements ICoordinates { return this; } + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeDouble(latitude); + dest.writeDouble(longitude); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public Geopoint createFromParcel(final Parcel in) { + return new Geopoint(in); + } + + public Geopoint[] newArray(final int size) { + return new Geopoint[size]; + } + }; + } -- cgit v1.1