# dateien laden nur aus jar?



## pups (10. Apr 2009)

Hallo, ich habe ein Programm welches viele Bilder beinhaltet, c.a. 3000 die ca. 5 Mb insgesamt groß sind.

Diese Bilder werrden in meinem Programm verwendet, jedoch um auf diese zugreifen zu können muss ich sie direkt in das jar File einbinden.

D.h. wenn ich mein Programm auf dem Handy starte muss ich ca. 2 min warten bis es startet weil die jar so "rießig" ist. 

Gibt es denn Möglichkleiten direkt auf das file System zuzugreifen? Zumindest auf dem Ordner in dem man sich befindet, und dies am besten ohne lästige Sicherheitsabfrage? Ich habe ein E70 von nokia mit dem Symbian 60 v3.

Bin dankbar für jeden Tipp,danke


----------



## slawaweis (10. Apr 2009)

pups hat gesagt.:


> D.h. wenn ich mein Programm auf dem Handy starte muss ich ca. 2 min warten bis es startet weil die jar so "rießig" ist.


das sollte eigentlich nicht passieren. Ich habe auch mal eine J2ME-Anwendung geschrieben, die sehr viele kleine Grafiken enthalten hat und 4MB groß war. Die Anwendung ist sofort gestartet, außer man versuchte selber alle Grafiken am Anfang auf einmal zu laden. Dann dauerte es schon bis zu 10 Minuten.



pups hat gesagt.:


> Gibt es denn Möglichkleiten direkt auf das file System zuzugreifen? Zumindest auf dem Ordner in dem man sich befindet, und dies am besten ohne lästige Sicherheitsabfrage? Ich habe ein E70 von nokia mit dem Symbian 60 v3.


ja, über das FileConnection API. J2ME besteht ja aus verschiedenen Bausteinen, wobei nicht jedes Handy jeden Baustein unterstützt. Das E70, wie hier nachzulesen:

Device Details -- Nokia E70

unterstützt das JSR 75 FileConnection API:

Getting Started with the FileConnection APIs

über das man auf den Handy-Speicher zugreifen kann. Aber ohne Sicherheitsabfrage(n) geht es nicht, außer man signiert seine Anwendung. Doch Vorsicht, auf einem anderen Gerät kann das ganze Programm abstürzen, weil dieses Gerät das FileConnection API nicht unterstützt (oder nicht kennt).

Slawa


----------



## pups (10. Apr 2009)

hm die jar lösung ist natürlich schon eleganter als ne sicherheitsabfrage... Kann man denn auf dem Handy einstellen dass das Programm vertrauenswüürdig ist? Oder muss man sich Software wirklich offiziell signieren lassen?


Aber zurück zu den jars. muss man explizit sagen dass er die Dateien nicht laden soll?

Weil eigentlich steht in meinem Laufzeit Code nur folgendes wnen ich ein bild angezeigt haben will.


          image = Image.createImage("bildWasAuchImmer.jpg");
        } catch (java.io.IOException e) {
                e.printStackTrace();
        }
       bild.setImage(image);


----------



## slawaweis (10. Apr 2009)

pups hat gesagt.:


> hm die jar lösung ist natürlich schon eleganter als ne sicherheitsabfrage... Kann man denn auf dem Handy einstellen dass das Programm vertrauenswüürdig ist? Oder muss man sich Software wirklich offiziell signieren lassen?


99,99% aller Java-Anwendungen auf J2ME Basis die ich kenne, sind nicht signiert. Ja, man muss sich seine Software offiziell signieren lassen. Das kostet eine Menge und lohnt nur selten, z.B. wenn man eine Software entwickelt, wo die User ihre persönlichen Daten eingeben müssen.



pups hat gesagt.:


> Aber zurück zu den jars. muss man explizit sagen dass er die Dateien nicht laden soll?
> 
> Weil eigentlich steht in meinem Laufzeit Code nur folgendes wnen ich ein bild angezeigt haben will.
> 
> ...



man muss es nicht explizit sagen. Ich habe damals für den N-Gage entwickelt und da wurden die Grafiken nur geladen, wenn man diese selber angefordert hat. Passierte es während der Startphase der Anwendung, dann dauerte es lange. Wenn man die Grafiken erst auf Anforderung des Users geladen hat, dann gab es kleine Pausen während der Ausführung, aber der Start erfolgte blitzschnell. Das N-Gage entpackte aber auch die JAR-Archive bei der Installation, so dass die ganzen Dateien direkt zu Verfügung standen. Wie es das E70 handhabt, weis ich leider nicht.

Slawa


----------



## pups (10. Apr 2009)

hm wie hast du denn festgestellt dass er alle Dateien entpackt hat? Ich seh leider nur unter dem Punkt installationen mein Programm,aber nicht wo die Dateien eigentlich liegen?Auch über diesen Dateimanager ist nichts erkennbar, so als wären die Installationen irgendo versteckt...? Das dumme ist meine Anwenung wächst noch um ein paar Mb und ich habe die befürchtung dass Sie dann garnicht mehr starten wird  bzw nur nach sehr langer Zeit...


----------



## slawaweis (10. Apr 2009)

pups hat gesagt.:


> hm wie hast du denn festgestellt dass er alle Dateien entpackt hat? Ich seh leider nur unter dem Punkt installationen mein Programm,aber nicht wo die Dateien eigentlich liegen?Auch über diesen Dateimanager ist nichts erkennbar, so als wären die Installationen irgendo versteckt...? Das dumme ist meine Anwenung wächst noch um ein paar Mb und ich habe die befürchtung dass Sie dann garnicht mehr starten wird  bzw nur nach sehr langer Zeit...


ich habe es damals mit dem FExplorer herausgefunden, einem Dateimanager-Tool für Symbian. Die Midlets lagen damals unter C:\System\MIDP\ oder E:\System\MIDP\ (Speicherkarte).

Wann lädst Du eigentlich die Grafiken? Was passiert alles beim Start des Programms? Den viele Sachen können den Start ausbremsen, wie z.B. der Zugriff auf System-Properties, WLAN-/Bluetooth-Anforderung oder eine Internetverbindung.

Slawa


----------



## pups (10. Apr 2009)

am anfang wird nur ein bild geladen und nicht besonderes gemacht, aber ich schätze das wohl alle bilder geladen werden, weil dass umschalten der Bilder unverzüglich geht.

Also am Anfang wird ein Bild angezeigt, und dann kann man ein Suchmenü auswählen und nach einem anderen Bild suchen. Also alle möglichen Bilder stehen in einem fest programmierten array in Strings. Nun wenn man danach sucht wirds eigentlich erst geladen...


edit.:

Also es gibt nen Ordner private/blahblah/ und dort drin liegt mein .jar Datei einfach so rum. Jedoch braucht die Installation auf irgend einen Grund trotzdem ewig... Wenn die Datei nur kopiert würde, würde das eig. keinen Sinn machen. Aber so scheints zu sien, dass da nichts entpackt ist...


----------



## MiDniGG (14. Apr 2009)

Um es wenigstens etwas schneller zu machen könntest Du statt jpg das png-format nehmen. Weiß nicht ob Du das evtl. schon hast bin mal von Deinem bsp. ausgegangen...

```
image = Image.createImage("bildWasAuchImmer.jpg");
} catch (java.io.IOException e) {
e.printStackTrace();
}
bild.setImage(image);
```

*Edit:* Außer Deine jpgs sind natürlich schon entsprechend komprimiert, dann dürfte das besser sein ^^


----------

