3

我想使用 ICS/JB 相机应用程序具有的全景模式。我已经下载了源代码(带有资源)并设法解决了所有代码编译错误,但是一旦我在我的设备上启动应用程序(运行 JB),我就会收到这个错误:

10-25 14:42:53.617: E/AndroidRuntime(23147): FATAL EXCEPTION: GLThread 2586
10-25 14:42:53.617: E/AndroidRuntime(23147): java.lang.UnsatisfiedLinkError: Native method not found: com.app.camera.panorama.MosaicRenderer.reset:(IIZ)V
10-25 14:42:53.617: E/AndroidRuntime(23147):    at com.app.camera.panorama.MosaicRenderer.reset(Native Method)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at com.app.camera.panorama.MosaicRendererSurfaceViewRenderer.onSurfaceChanged(MosaicRendererSurfaceViewRenderer.java:49)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1505)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

我确实有一个 libjni-mosaic 库,位于 armeabi-v7a/armeabi/x86 中,它似乎可以很好地加载它,但它可能不包含 MosaicRenderer 实现的方法。

我也尝试编译 CyanogenMod 相机应用程序https://github.com/CyanogenMod/android_packages_apps_Camera/tree/ics但我得到了同样的错误......

相机本身可以用于静止图像和视频录制,但是一旦我更改为全景模式,它就会崩溃。

谁能指出我正确的 jni-mosaic lib 或者我做错了什么?为了让我的应用程序使用 JNI/SO 文件,我需要做些什么吗?

4

2 回答 2

1

您将 Java 类 MosaicRenderer 移动到包com.app.camera.panorama中,但该mosaic_renderer_jni.cpp文件仍然具有引用的本机方法com.android.camera.panorama,例如

JNIEXPORT void Java_com_android_camera_panorama_MosaicRenderer_reset(

您应该更改本机代码中的函数名称以反映新的包名称,例如

JNIEXPORT void Java_com_app_camera_panorama_MosaicRenderer_reset(
于 2012-10-27T03:04:23.680 回答
0

如果有人仍然对构建谷歌的原生相机应用程序感兴趣,我建议你这个存储库https://android.googlesource.com/platform/packages/apps/Camera2/它不需要构建所有 android OS 代码。它对我很有帮助很多。

于 2014-02-07T13:11:26.523 回答