Android资产和NDK

时间:2012-03-01 12:31:08

标签: android-ndk

我正在尝试从我的原生代码中读取一个简单的文本文件。

  1. 我将file.txt放在资产文件夹
  2. 在我的活动中,我正在创建资产管理器:assetManager = getAssets(); 然后我将assetManager传递给我的本机方法(如原生音频示例中所示):

    AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
    AAsset* asset = AAssetManager_open(mgr, "file.txt", AASSET_MODE_UNKNOWN);
    AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
    
    off_t start, length;
    
    int fd = AAsset_openFileDescriptor(asset, &start, &length);   
    
  3. 问题是fd小于0 !!!

    有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:5)

AAsset_openFileDescriptor仅适用于未压缩的文件(如mp3,jpg,png等)。它写在文档(asset_manager.h头文件)中:

/**
 * Open a new file descriptor that can be used to read the asset data.
 *
 * Returns < 0 if direct fd access is not possible (for example, if the asset is
 * compressed).
 */
int AAsset_openFileDescriptor(AAsset* asset, off_t* outStart, off_t* outLength);

使用AAsset_readAAsset_getBuffer