diff options
author | ziadb <ziadb@google.com> | 2018-06-19 13:57:15 -0400 |
---|---|---|
committer | Ziad Ben Hadj-Alouane <ziadb@google.com> | 2018-06-19 19:10:54 +0000 |
commit | bceddbcb72605343aca01638f64d7a8e8cb9792d (patch) | |
tree | ed4eaaec1011ca860cd2c750c2f241472543824b /platform_tools/android/apps/arcore/src/main/java/org/skia/arcore/JniInterface.java | |
parent | 80452bee11ebe6708ea459ea34e526a44c04bdb0 (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.java | 82 |
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); + } +} |