summaryrefslogtreecommitdiff
path: root/native/android/input.cpp
diff options
context:
space:
mode:
authorChris Ye <lzye@google.com>2020-04-07 19:39:38 -0700
committerChris Ye <lzye@google.com>2020-04-09 14:18:25 -0700
commit3da1d20bcfb103f146ff67910d14b7b40f6f686f (patch)
treecb034cfb4d9ec7d87eea14b9976c8c81be3ab8b7 /native/android/input.cpp
parentac2a42c0391192b795e903acd3d8c7743e693670 (diff)
Add java-to-native converters for input events.
Add java-to-native converters for android.view.KeyEvent, android.view.MotionEvent. Bug: 116830907 Test: atest KeyEventTest, atest MotionEventTest Change-Id: Ib993afb08ef900d95e21907660f776ad2bd3d50e
Diffstat (limited to 'native/android/input.cpp')
-rw-r--r--native/android/input.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/native/android/input.cpp b/native/android/input.cpp
index fc521386e6e1..8eeb9555c51c 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -26,6 +26,8 @@
#include <android_runtime/android_app_NativeActivity.h>
#include <android_runtime/android_view_InputQueue.h>
+#include <android_view_MotionEvent.h>
+#include <android_view_KeyEvent.h>
#include <poll.h>
#include <errno.h>
@@ -50,6 +52,10 @@ int32_t AInputEvent_getSource(const AInputEvent* event) {
return static_cast<const InputEvent*>(event)->getSource();
}
+void AInputEvent_release(const AInputEvent* event) {
+ delete event;
+}
+
int32_t AKeyEvent_getAction(const AInputEvent* key_event) {
return static_cast<const KeyEvent*>(key_event)->getAction();
}
@@ -77,6 +83,14 @@ int64_t AKeyEvent_getDownTime(const AInputEvent* key_event) {
return static_cast<const KeyEvent*>(key_event)->getDownTime();
}
+const AInputEvent* AKeyEvent_fromJava(JNIEnv* env, jobject keyEvent) {
+ std::unique_ptr<KeyEvent> event = std::make_unique<KeyEvent>();
+ android::status_t ret = android::android_view_KeyEvent_toNative(env, keyEvent, event.get());
+ if (ret == android::OK) {
+ return event.release();
+ }
+ return nullptr;
+}
int64_t AKeyEvent_getEventTime(const AInputEvent* key_event) {
return static_cast<const KeyEvent*>(key_event)->getEventTime();
@@ -269,6 +283,15 @@ float AMotionEvent_getHistoricalAxisValue(const AInputEvent* motion_event,
axis, pointer_index, history_index);
}
+const AInputEvent* AMotionEvent_fromJava(JNIEnv* env, jobject motionEvent) {
+ MotionEvent* eventSrc = android::android_view_MotionEvent_getNativePtr(env, motionEvent);
+ if (eventSrc == nullptr) {
+ return nullptr;
+ }
+ MotionEvent* event = new MotionEvent();
+ event->copyFrom(eventSrc, true);
+ return event;
+}
void AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
int ident, ALooper_callbackFunc callback, void* data) {