在运行时访问Android摄像头对象(Unity,Vuforia)

在运行时访问Android摄像头对象(Unity,Vuforia),android,unity3d,camera,java-native-interface,vuforia,Android,Unity3d,Camera,Java Native Interface,Vuforia,我正在为使用Vuforia增强现实框架的Android应用程序编写Unity 我需要手动改变相机曝光以达到更好的增强效果。问题是Vuforia隐藏了所有与摄像头相关的工作,并使其无法从外部访问 Vuforia本身也使用JNI与设备的摄像头配合使用 当我尝试在Android插件中执行下一步操作时: Camera camera = Camera.open(); 我得到了CAMERA_ERROR_executed异常:“由于高优先级用户的使用,摄像头已断开连接。” 使用JNI或任何其他方法获取当前摄

我正在为使用Vuforia增强现实框架的Android应用程序编写Unity

我需要手动改变相机曝光以达到更好的增强效果。问题是Vuforia隐藏了所有与摄像头相关的工作,并使其无法从外部访问

Vuforia本身也使用JNI与设备的摄像头配合使用

当我尝试在Android插件中执行下一步操作时:

Camera camera = Camera.open();
我得到了CAMERA_ERROR_executed异常:“由于高优先级用户的使用,摄像头已断开连接。”

使用JNI或任何其他方法获取当前摄影机对象是否有任何方法


谢谢您的帮助。

您真的不能,因为Vuforia正在使用摄像头。如果Vuforia SDK中有一部分使用Java从相机获取图像,则需要对其进行反向工程。然后,您可以使用
AndroidJavaClass
窃取已经打开的相机实例。同样,为了做到这一点,您需要能够看到Java插件中定义的变量。谢谢您的回答。“然后,您可以使用
AndroidJavaClass
使已打开的相机实例保持静止。”这正是我所需要的。你知道怎么做吗?是的,但就像我说的,你首先必须看到类中需要反汇编的变量。找到类的名称,然后将其传递给
AndroidJavaClass
构造函数。使用
GetStatic
函数查找该类的实例。有了它,您可以使用
get
GetStatic
获取相机实例,具体取决于它是
static
还是不作为
AndroidJavaObject
存储。最后,您现在可以访问相机变量或从Unity调用其函数。有关Unity
WebCamTexture
内容的完整示例,请参见Vuforia,但它应该告诉您代码应该是什么样子。请记住,如果不分解Vuforia插件的Java部分,就无法实现这一点。我认为他们同时使用C++和java。您只需要在Java端查看变量。