static jlong nativeReadFromParcel(JNIEnv *env, jobject clazz, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (!parcel) { return 0; } int32_t deviceId = parcel->readInt32(); if (parcel->errorCheck()) { return 0; } sp<KeyCharacterMap> kcm = KeyCharacterMap::readFromParcel(parcel); if (!kcm.get()) { return 0; } NativeKeyCharacterMap* map = new NativeKeyCharacterMap(deviceId, kcm); return reinterpret_cast<jlong>(map); }