status_t getParameter(int key, Parcel *reply) { Parcel data; data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor()); data.writeInt32(key); return remote()->transact(GET_PARAMETER, data, reply); }
status_t resume() { Parcel request; request.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor()); Parcel reply; remote()->transact(RESUME, request, &reply); return reply.readInt32(); }
status_t suspend() { Parcel request; request.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor()); Parcel reply; remote()->transact(SUSPEND, request, &reply); return reply.readInt32(); }
status_t getMetadata(bool update_only, bool apply_filter, Parcel *reply) { Parcel request; request.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor()); // TODO: Burning 2 ints for 2 boolean. Should probably use flags in an int here. request.writeInt32(update_only); request.writeInt32(apply_filter); remote()->transact(GET_METADATA, request, reply); return reply->readInt32(); }
static void android_os_Parcel_writeInterfaceToken(JNIEnv* env, jclass clazz, jint nativePtr, jstring name) { Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr); if (parcel != NULL) { // In the current implementation, the token is just the serialized interface name that // the caller expects to be invoking const jchar* str = env->GetStringCritical(name, 0); if (str != NULL) { parcel->writeInterfaceToken(String16((const char16_t*)str, env->GetStringLength(name))); env->ReleaseStringCritical(name, str); } } }
virtual status_t pullBatteryData(Parcel* reply) { Parcel data; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); return remote()->transact(PULL_BATTERY_DATA, data, reply); }