|
먼저 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 이상 사용가능
|
'Android > Etc.' 카테고리의 다른 글
BaseAdapter 커스텀 사용 시 터치가 안되는 문제 (0) | 2014.01.22 |
---|---|
ListView 스크롤 시 아이템 위치가 바뀌는 문제 (0) | 2014.01.20 |
NDK 개발 시 C, C++ 함수 호출 차이점 (0) | 2013.08.10 |
NDK 개발 시 디버깅하기 (0) | 2013.05.31 |
note: the mangling of 'va_list' has changed in GCC 4.4 (0) | 2013.03.20 |