Main Menu

jPCT-AE Dateien laden

Started by Datetime, June 23, 2011, 04:49:29 PM

Previous topic - Next topic

Datetime

Hallo,

soweit funktioniert alles ganz gut aufm PC, nun wollte ich mal testen wie ich auf Android zurecht komme.
Hier habe ich auch gleich ein Problem mit dem Laden von Dateien, wo müssen diese sich befinden ?

Auf dem PC erstelle ich in meinem Workspace ein Verzeichnis "data" und packe da meine Modelle, Texturen und co rein und lese von dort aus.
Wenn ich das bei Android versuche wird das Programm automatisch beendet.

MFG
Datetime

EgonOlsen

Am besten packst du Texturen und Modelle in den Ordner res/raw. Vermutlich gibt es in deinem Projekt res aber nicht raw..dann legst du raw einfach an. Nach dem Reinkopieren musst in Eclipse u.U. auf dem Projekt F5 drücken, um das Plugin zum Neugenerieren von "R" zu bringen. Zugriff erfolgt dann über den Inputstream...etwa so:


getResources().openRawResource(R.raw.<Name der Ressource>);


Mach nicht den Fehler und lege Texturen z.B. in drawable ab. Das erscheint eigentlich sinnvoll, aber Android kann die dort abgelegten Bilder nach belieben beim Laden skalieren und das mögen die Texturen nicht.

Du musst auch beachten, dass die Größe der Dateien in raw durch Android begrenzt ist (~1 MB/Datei?). Sind sie zu groß, bricht das Laden mit einer Exception ab. Um das zu lösen bietet sich gerade bei Modellen an, diese zu zippen und den gezippten Stream zu laden. Etwa so:


ZipInputStream zis = new ZipInputStream(getResources().openRawResource(R.raw.dragon));
zis.getNextEntry();


Bringt das nichts, hilft es, die Dateiendung in .mp3 zu ändern, auch wenn es gar kein Mp3 ist. Android erlaubt bei Mp3 viel größere Dateien als bei anderen Formaten...

EgonOlsen

P.S.: Generell empfehle ich, auf Android serialisierte Versionen der Modelle zu laden. Dazu werden diese mit der Desktop-Version geladen, build() ausgeführt und das Resultat dann mit dem DeSerializer auf Platte geschrieben. Diese Dateien sind etwas groß, lassen sich aber prima zippen und auf Android mit maximaler Geschwindigkeit und minimalem Speicherverbrauch laden. Das Wiki enthält noch ein paar Info zu Thema: http://www.jpct.net/wiki/index.php/Differences_between_jPCT_and_jPCT-AE#Performance_and_memory_issues.2C_serialized_objects