Активы Android и NDK - PullRequest
       1

Активы Android и NDK

6 голосов
/ 01 марта 2012

Я пытаюсь прочитать простой текстовый файл из моего собственного кода.

  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);   
    

Проблема в том, что fdменьше 0 !!!

Кто-нибудь может помочь с этим?

1 Ответ

5 голосов
/ 01 марта 2012

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_read, либо AAsset_getBuffer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...