how to serialize for android.location class?

android, deserialization, java, location, serialization

Solution

Android's `Location` class already implements `Parcelable`. So you are better off with it rather than implementing your own Serialization.

Simply use the following to get `bytes` out from `Location`:

Parcel p = Parcel.obtain();
objLocation.writeToParcel(p, 0);
final byte[] b = p.marshall();      //now you've got bytes
p.recycle();

However, you should not save bytes (in persistent storage) from `Parecelable` object for later use because it is designed for high-performance IPC transport, and is not a general-purpose serialization mechanism.

Problem

I'm trying to serialize my location class (using android.location class) but, it gives me an error! ``` 11-21 21:25:37.337: W/System.err(3152): java.io.NotSerializableException: android.location ``` So, I tried to extend the `android.location.Location` class. ``` private class NewLocation extends Location implements Serializable { private String Provider; private double Latitude, Longitude, Altitude; private float bear; public NewLocation(Location l) { super(l); Provider = l.getProvider(); Latitude = l.getLatitude(); Longitude = l.getLongitude(); Altitude = l.getAltitude(); bear = l.getBearing(); } } ``` After that, i tried to serialize the extended class, but the same error. Here is the serialization code ``` public static byte[] serialize(Object obj) throws IOException { ByteArrayOutputStream bao = new ByteArrayOutputStream(); ObjectOutput oos = new ObjectOutputStream(bao); byte[] data = null; oos.writeObject(obj); oos.flush(); oos.close(); data = bao.toByteArray(); return data; } ``` why this error?

Original source

Related problems