static jdouble android_os_Parcel_readDouble(JNIEnv* env, jclass clazz, jlong nativePtr) { Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr); if (parcel != NULL) { return parcel->readDouble(); } return 0; }
int32_t MediaAnalyticsItem::readFromParcel(const Parcel& data) { // into 'this' object // .. we make a copy of the string to put away. mKey = data.readCString(); mSessionID = data.readInt64(); mFinalized = data.readInt32(); mTimestamp = data.readInt64(); int count = data.readInt32(); for (int i = 0; i < count ; i++) { MediaAnalyticsItem::Attr attr = data.readCString(); int32_t ztype = data.readInt32(); switch (ztype) { case MediaAnalyticsItem::kTypeInt32: setInt32(attr, data.readInt32()); break; case MediaAnalyticsItem::kTypeInt64: setInt64(attr, data.readInt64()); break; case MediaAnalyticsItem::kTypeDouble: setDouble(attr, data.readDouble()); break; case MediaAnalyticsItem::kTypeCString: setCString(attr, data.readCString()); break; case MediaAnalyticsItem::kTypeRate: { int64_t count = data.readInt64(); int64_t duration = data.readInt64(); setRate(attr, count, duration); } break; default: ALOGE("reading bad item type: %d, idx %d", ztype, i); return -1; } } return 0; }