blob: 1592bb2a4e43273da794d352efff8b94914387f5 [file] [log] [blame]
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);
}
}