JNI获得资产文件路径

时间:2016-12-12 14:30:40

标签: android java-native-interface opencv3.0 android-assets

我正在尝试将两个带有初始化数据的.xml文件添加到我的Android应用的APK中。在JNI C ++代码中,我想获取文件的路径,以便我可以打开并读取文件。

我真的需要这个路径,因为文件是用OpenCV函数打开的,它可以访问文件。

我已经有了这个:

(java文件)

public native void assetLoad(AssetManager mgr);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_vision_camera);

    assetManager = getResources().getAssets();
    assetLoad(assetManager);
}

(cpp文件)

JNIEXPORT void JNICALL
Java_primalpond_com_sensibleopencv_vision_1camera_assetLoad(JNIEnv *env, jobject instance,
                                                        jobject mgr) {

    AAssetManager *assMgr = AAssetManager_fromJava(env, mgr);


}

现在如何提取文件的两个路径?这些文件名为classifications.xml和images.xml,位于/ src / assets文件夹中

1 个答案:

答案 0 :(得分:3)

  

现在如何提取文件的两个路径?

文件没有路径。资产是开发计算机上的文件。它们不是Android设备文件系统上的文件。相反,它们是APK文件中的条目。

您的选择是:

  • 了解如何使OpenCV适应Java InputStreamString或其他内容(因此您的Java代码仍然可以正常使用资源),或者

  • 使用Java在本地文件系统上制作这些文件的副本(例如getFilesDir(),因此OpenCV可以使用这些副本。