So erhalten Sie Datei in Assets von Android NDK
Ich versuche, auf eine image-Datei in den Ordner "assets" aus der native Seite. Jetzt kann ich erfolgreich die Suche durch die Ordner "assets" und seine Unterverzeichnisse Auffinden der bestimmten Datei bin ich auf der Suche für:
AAssetDir* assetDir = AAssetManager_openDir(asset_manager, "images");
const char* filename;
while ((filename = AAssetDir_getNextFileName(assetDir)) != NULL)
{
__android_log_print(ANDROID_LOG_DEBUG, "Debug", filename);
}
AAssetDir_close(assetDir);
Ich bin auch mit OSG. Ich habe die Bild als textur auf meine shader mit dem folgenden code:
texture->setImage(osgDB::readImageFile(fileNameWithPath));
Aber, dass der Datei-name muss den absoluten Pfad so gut, da es nicht im gleichen Verzeichnis befindet. Jedoch fand ich heraus, dass ich nicht den absoluten Pfad für das Verzeichnis "assets", da es komprimiert ist zusammen mit der APK.
Ist, dass ich keinen Zugriff auf den absoluten Pfad, welchen anderen Weg könnte ich verwenden, um das image? Auch der Hinweis, ich will damit die Dateien in den asset-Ordner als appose zu der sd-Karte.
InformationsquelleAutor der Frage Robert | 2012-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Lesen das Bild von einem asset mit
AAssetManager_open
&AAsset_read
aber da asset liegt in der apk Sie nicht bekommen kann ein Dateipfad Namen für Sie - es ist auch komprimiert, da. Sie können zum speichern der Daten in eine Datei und Lesen aus, die später die Datei, oder Sie können Sie direkt verarbeiten, die Brocken, die Sie von Ihrem asset-Datei, wenn OSG ermöglicht.Vom hier:
InformationsquelleAutor der Antwort auselen
Eine weitere Sache, erwähnenswert ist, dass android stellt die Beschränkung auf die asset-Größe, die gelesen werden können, werden zur Zeit auf 1Mb. Falls Ihre Datei größer ist, als die, die Sie haben, um es zu teilen in Stücke. Hier ist meine funktionierende Lösung, die lädt die Datei in chunks zu Vektor von chars:
InformationsquelleAutor der Antwort wlochaty