0

次のようなAndroidアプリケーションのネイティブ部分にオブジェクトを作成しています。

CascadeClassifier face_cascade;
face_cascade.load( "haarcascades/haarcascade_frontalface_alt2.xml" );

純粋なC++では、ソースのほかにhaarcascade_frontalface_alt2.xmlhaarcascadesフォルダーに配置します。しかし今、私はそれをどこに置くべきか本当に混乱していますか?jni / haarcascadesディレクトリにありますか?またはどこか他の場所?
前もって感謝します。

4

1 に答える 1

1

Androidアプリケーションは、ファイルシステムのルートを現在のディレクトリとして開始します。また、Androidアプリをデプロイするときは、通常、ファイルをres/rawディレクトリまたはassetsJavaプロジェクトのディレクトリに配置します。assetsネイティブコードから直接アクセスできます( http://www.costrategix.com/blog/reading-files-from-android-assets-folder-using-c-ndk/およびAssetManagerとネイティブコードを参照)。

Androidは、さまざまなアプリのファイルアクセスを分離し、それぞれがプライベートファイルを保存できるようにします。Androidアプリ/sdcard/は、通常、はるかに多くのスペースがあるため、ファイルストレージにを使用することがよくあります。また、ネイティブコードがSDカード上のファイルを見つけるのは簡単です。ただし、注意してください/sdcard/。状況によっては、一部のデバイスに存在しない場合があります。多くの場合、Androidシステムには、代わりに使用できる環境変数があります。 EXTERNAL_STORAGEただし、このパスを見つけるための公式にサポートされている方法は、JavaAPIを使用することです。

Javaから現在のディレクトリを操作することはできませんが、そのためにJNIを使​​用できます。

とにかく、ネイティブコードにはJavaコードと同じファイルアクセス許可があります。

于 2013-02-24T18:30:53.663 に答える