库地址:https://github.com/saki4510t/UVCCamera
1.不能打开摄像机(使用ndk16版本编译)
把libuvccamera/src/main/jni/Application.mk的编译选项取消注释
#NDK_TOOLCHAIN_VERSION := 4.9
修改为
NDK_TOOLCHAIN_VERSION := 4.9
2.不能停止预览(线程一直阻塞)
把libuvccamera/src/main/jni/libuvc/include/libuvc/libuvc_internal.h定义的缓存大小修改为默认大小(5)
#define LIBUVC_NUM_TRANSFER_BUFS 10
修改为
#define LIBUVC_NUM_TRANSFER_BUFS 5
3.停止预览时程序奔溃
JNI DETECTED ERROR IN APPLICATION: jmethodID was NULL
相关修改见此JNI DETECTED ERROR IN APPLICATION: jmethodID was NULL · Issue #244 · saki4510t/UVCCamera · GitHub
即在
void UVCPreview::do_capture_callback(JNIEnv *env, uvc_frame_t *frame) 方法和
void CallbackPipeline::do_capture(JNIEnv *env) 方法在调用
iframecallback_fields.onFrame之前进行判空操作,为了避免多线程的情况,所以采用局部变量
jmethodID来临时保存调用的回调JAVA方法