使用 JNI 反射调用 Android SurfaceControl 构造函数
使用 JNI 反射调用 android.view.SurfaceControl 构造函数 public SurfaceControl(SurfaceSession session, String name, int w, int h, int format, int flags) 的步骤如下:
-
导入
jni.h头文件和android/view/SurfaceControl类所在的SurfaceControl.h头文件。 -
获取
SurfaceControl类:jclass clazz = env->FindClass("android/view/SurfaceControl"); -
获取构造函数的 ID:
jmethodID constructorId = env->GetMethodID(clazz, "<init>", "(Landroid/view/SurfaceSession;Ljava/lang/String;IIII)V"); -
准备参数:
- 获取
SurfaceSession对象:jobject surfaceSessionObject = ...; - 获取
name字符串对象:jstring nameStringObject = env->NewStringUTF(name); - 准备其他参数:
jint width = w; jint height = h; jint pixelFormat = format; jint flagsValue = flags;
- 获取
-
调用构造函数:
jobject surfaceControlObject = env->NewObject(clazz, constructorId, surfaceSessionObject, nameStringObject, width, height, pixelFormat, flagsValue); -
返回
SurfaceControl对象:return surfaceControlObject;
原文地址: https://www.cveoy.top/t/topic/nxQ5 著作权归作者所有。请勿转载和采集!