2016-12-12 5 views
0

私のAndroid AppのAPKに初期化データを含む2つの.xmlファイルを追加しようとしています。 JNI C++コードでは、ファイルへのパスを取得して、ファイルを開いて読み込めます。JNIアセットファイルパスを取得

実際には、ファイルにアクセスする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); 


} 

が今どのように私は、ファイルへの2つのパスを抽出していますか?ファイルはclassifications.xmlとimages.xmlと呼ばれ、/ src/assetsフォルダに格納されています

答えて

3

ここでファイルへの2つのパスを抽出するにはどうすればよいですか?

ファイルへのパスはありません。アセットは開発マシンのファイルです。彼らはAndroidデバイスのファイルシステム上のファイルではありません。代わりに、APKファイルのエントリです。

あなたの選択肢は以下のとおりです。

  • (ので、あなたのJavaコードがまだ正常に資産を扱うことができます)は、Java InputStreamString、または何か他のもので動作するようにOpenCVのを適応させる方法を図アウト、または

  • Javaの
  • 使用OpenCVのは、それらのコピーで作業することができますので、ローカルファイルシステム(例えば、getFilesDir()上でそれらのファイルのコピーを作成する。

関連する問題