aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java
diff options
context:
space:
mode:
authorGravatar ziadb <ziadb@google.com>2018-06-19 13:57:15 -0400
committerGravatar Ziad Ben Hadj-Alouane <ziadb@google.com>2018-06-19 19:10:54 +0000
commitbceddbcb72605343aca01638f64d7a8e8cb9792d (patch)
treeed4eaaec1011ca860cd2c750c2f241472543824b /platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java
parent80452bee11ebe6708ea459ea34e526a44c04bdb0 (diff)
SkAR: drawing text, shapes, rotation modes enabled, translating objects
To run this app, you need to create an out directory as such: bin/gn gen out/arm64 --args='ndk="NDK_PATH" target_cpu="ABI"' For now, the only supported ABI is arm64 Change-Id: I012f0c6a0550d80a0028f42177d5ca72974d848d Bug: skia: Reviewed-on: https://skia-review.googlesource.com/130980 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Ziad Ben Hadj-Alouane <ziadb@google.com>
Diffstat (limited to 'platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java')
-rw-r--r--platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java b/platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java
new file mode 100644
index 0000000000..1592bb2a4e
--- /dev/null
+++ b/platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java
@@ -0,0 +1,82 @@
+package org.skia.arcore;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.AssetManager;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.opengl.GLUtils;
+import android.util.Log;
+
+import java.io.IOException;
+
+/**
+ * JNI interface to native layer.
+ */
+public class JniInterface {
+ static {
+ System.loadLibrary("hello_ar_native");
+ }
+
+ private static final String TAG = "JniInterface";
+ static AssetManager assetManager;
+
+ public static native long createNativeApplication(AssetManager assetManager);
+
+ public static native void destroyNativeApplication(long nativeApplication);
+
+ public static native void onPause(long nativeApplication);
+
+ public static native void onResume(long nativeApplication, Context context, Activity activity);
+
+ /**
+ * Allocate OpenGL resources for rendering.
+ */
+ public static native void onGlSurfaceCreated(long nativeApplication);
+
+ /**
+ * Called on the OpenGL thread before onGlSurfaceDrawFrame when the view port width, height, or
+ * display rotation may have changed.
+ */
+ public static native void onDisplayGeometryChanged(
+ long nativeApplication, int displayRotation, int width, int height);
+
+ public static native void onObjectRotationChanged(long nativeApplication, int rotation);
+
+ public static native void onAction(long nativeApplication, float value);
+
+ /**
+ * Main render loop, called on the OpenGL thread.
+ */
+ public static native void onGlSurfaceDrawFrame(long nativeApplication);
+
+ /**
+ * OnTouch event, called on the OpenGL thread.
+ */
+
+ public static native void onTouchTranslate(long nativeApplication, float x, float y);
+
+ public static native boolean onTouchedFirst(long nativeApplication, float x, float y, int drawMode);
+
+ public static native void onTouchedFinal(long nativeApplication, int type);
+
+
+ /**
+ * Get plane count in current session. Used to disable the "searching for surfaces" snackbar.
+ */
+ public static native boolean hasDetectedPlanes(long nativeApplication);
+
+ public static Bitmap loadImage(String imageName) {
+
+ try {
+ return BitmapFactory.decodeStream(assetManager.open(imageName));
+ } catch (IOException e) {
+ Log.e(TAG, "Cannot open image " + imageName);
+ return null;
+ }
+ }
+
+ public static void loadTexture(int target, Bitmap bitmap) {
+ GLUtils.texImage2D(target, 0, bitmap, 0);
+ }
+}