Android/Etc.
Jni를 사용하여 Asset 접근하기
berabue
2014. 1. 8. 12:42
|
먼저 Java에서 Context.getAssets();을 사용하여 AssetManager를 보내준다.
private static native void nativeCreated(AssetManager asset);
jni.c
#include <android/asset_manager.h> #include <android/asset_manager_jni.h> AAssetManager *mgr; void Java_pe_berabue_ex_GLView_nativeCreated(JNIEnv * env, jclass cls, jobject assetManager) { char *buf; int fileSize; mgr = AAssetManager_fromJava(GetEnv(), assetManager); AAsset* asset = AAssetManager_open(mgr, "tmp.txt", AASSET_MODE_UNKNOWN); // Asset 폴더안에 tmp.txt가 존재하면 if ( asset == NULL ) return; fileSize = AAsset_getLength(asset); if ( fileSize == 0 ) return; buf = (char *)malloc(sizeof(char)*fileSize); AAsset_read(asset, buf, fileSize); AAsset_close(asset); }
최소한의 소스만 적어보자면 위와 같다.
헤더파일을 포함시키고 Java에서 받아온 assetManager를 사용하면 된다.
android:minSdkVersion 9 이상 사용가능
|