static jboolean nativeSendKeyEvent(JNIEnv* env, jclass clazz, jlong senderPtr, jint seq, jobject eventObj) { sp<NativeInputEventSender> sender = reinterpret_cast<NativeInputEventSender*>(senderPtr); KeyEvent event; android_view_KeyEvent_toNative(env, eventObj, &event); status_t status = sender->sendKeyEvent(seq, &event); return !status; }
static jlong nativeSendKeyEvent(JNIEnv* env, jobject clazz, jlong ptr, jobject eventObj, jboolean predispatch) { InputQueue* queue = reinterpret_cast<InputQueue*>(ptr); KeyEvent* event = queue->createKeyEvent(); status_t status = android_view_KeyEvent_toNative(env, eventObj, event); if (status) { queue->recycleInputEvent(event); jniThrowRuntimeException(env, "Could not read contents of KeyEvent object."); return -1; } if (predispatch) { event->setFlags(event->getFlags() | AKEY_EVENT_FLAG_PREDISPATCH); } queue->enqueueEvent(event); return reinterpret_cast<jlong>(event); }