Beiträge von matthias

    Hoi,


    habs jetzt so weit hin bekommen. Man braucht erstmal Maven und das Android Maven Plugin.
    Da das momentan nur SDK Version 16 unterstützt muss man folgenden Befehl ausführen, um das SDK 17 rein zu bügeln:


    Code
    mvn install:install-file \
        -Dfile=$ANDROID_HOME/platforms/android-17/android.jar \
        -DgroupId=com.google.android \
        -DartifactId=android \
        -Dversion=17 \
        -Dpackaging=jar


    (Das $ANDROID_HOME ggf. einfach durch den absoluten Pfad ersetzen)


    Nun, da das Plugin eben für Version 16 ist, in Version 17 aber das Tool aapt verschoben wurde, muss man noch Links setzen

    Code
    ln -s $ANDROID_HOME/build-tools/17.0.0/aapt $ANDROID_HOME/platform-tools/aapt
    ln -s $ANDROID_HOME/build-tools/17.0.0/lib $ANDROID_HOME/platform-tools/lib


    Nun klickt man unter Eclipse Rechtsklick aufs Projekt > Configure (ganz unten) > Convert to Maven Project und passt dann sein pom.xml an



    So, und das ist jetzt ganz wichtig: das RequiredProject MUSS mit Java 1.6 gebuildet werden, sonst ist es nicht mit Android kompatibel und wird beim builden des .apk Files einfach weg gelassen. Betritt man dann später in der App die entsprechende Code-Stelle, in der eigentlich etwas aus dem RequiredProject benutzt werden soll, schmiert er einfach mit einem NoClassDefFoundError ab!


    Wurde das alles beachtet kann man mittels Rechtsklick aufs Projekt > Run As ... > Maven build ... folgende Parameter einstellen:


    Goals: clean install android:generate-sources android:deploy android:run
    Parameter (Rechts button "Add...") :
    Name: android.sdk.path
    Wert: $ANDROID_HOME (oder den absoluten Pfad zum sdk Ordner)
    Im Tab JRE habe ich noch einmal explizit Alternate JRE: Java SE 6 ausgewählt


    Mit einem Klick auf Run dauert es einige Zeit und er buildet alles mit Dependencies, schiebt es auf ein angeschlossenes Device und startet die App.


    Meine nächsten Schritte: Versuchen das ganze via Hudson builden zu lassen ;)



    Gruß,
    matze

    Hmm,


    so genau weiß ich jetzt nicht, was ich gemacht hab ... hab nochmal in Library/Saved irgendwas das org.eclipse.xxx raus geworfen, mit dem Befehl "android" geschaut ob Updates da sind und 2 installiert, Eclipse nochmal gestarten und mir nen Kaffee geholt ...


    Komme wieder und nix is mehr rot ^^ Klasse R vorhanden, ausgezeichnet

    Hi Leute,


    weiß nich wie ich das immer schaffe ... aber ich habe gerade die dritte Installation von Eclipse erfolgreich geschrottet. Aktuelle Projekte tun nicht mehr und wenn ich ein neues anlege fehlt die Klasse R.java im gen-Ordner.


    Für IntelliJ fehlt mir irgendwie die Muse ... weiß jemand wie ich Eclipse doch noch dazu überreden könnte, mir R wieder zu generieren?


    Typische Schritte wie Project Clean, Projekt Close und Open, Eclipse neu starten usw. hat nichts geholfen bisher. Das ADT Plugin und was da sonst noch so rum wuselt hab ich schon 3 mal neu installiert, neue Eclipse Kepler M7 geladen, unter Library/Cache und Preferences jeweils das org.eclipse.xxx verschoben, mir fällt gerade nichts mehr ein.



    Gruß,
    matze

    Hoi,


    joa, Comparator haut eig. ganz gut ab ...


    Bissl verwirrt bin ich dennoch, du gibst echt wenig Einblick in deine Struktur. Vermutlich bewusst, aber echt nicht leicht da zu helfen. Wenn du deinen Cursor mit richtig sortieren Adressen durchläufst und daraus Adressobjekte machst, die du dann der reihe nach in die ArrayList hängst, hätte das ganze eigentlich auch sortiert sein müssen ....



    Gruß,
    matze

    Hoi,


    ich seh bei dem bisschen Code keinen Grund, wieso es nicht sortiert sein sollte ...


    Willst du vll. mal den Bereich posten, in dem du getAllAdressen aufrufst und an die Liste übergibst und auch die Methode getAllAdressen selbst?



    Gruß,
    matze

    xD was lernen wir daraus? Eigentlich können wir nur entnehmen besser zu argumentieren :D


    Muss irgendwann mal testen was das Maximum ist, das mein Konstrukt so reisst ... vll. morgen ;)

    Hoi,


    hab nochmal nach geguckt, wie groß die Bilder bei mir sind bevor ich sie verwurste ...


    Im Falle Facebook bekommt man ja glaub pro Bild 9 Größen ... da such ich mir mittels

    Java
    if (thumb.getWidth() <= SplashScreen.deviceWidth && thumb.getWidth() > (SplashScreen.deviceWidth / 2)) {
    		file = thumb.getSource();
    		break;
    }


    das am besten Passende raus.


    Bei den Offline-Bildern ist das Größte 1024x1024 und 698KB groß ... selbst bei diesen Werten hatte ich vor meinem riesen Optimierungsaufwand schon die höchsten Probleme ^^


    Wär cool, wenn du berichten würdest, ob der Teuer-Extern-Mensch das mit der MapView locker flockig hin bekommt ;)



    Gruß,
    matze

    Hoi,


    in deinem Fall ist es wohl am bequemsten einfach die View zu übergeben, in der du deine NewsItems anzeigen willst.


    Hab mal grad einen AsyncTask von mir raus gesucht, an dessen Beispiel man das recht schön sieht. Nimm statt der ImageView einfach deine View



    Hab mal das nicht relevante zeug weitesgehend raus geworfen aber du siehst, ich übergebe einen String und eine ImageView. Der String ist der Pfad zu einem Bild, das ich mir lade. Wenn die doInBackground fertig ist, ist das bitmap gesetzt und ich kann es in der onPostExecute in meine ImageView einsetzen.


    In deinem Fall wäre der String wohl die URL zum RSS-Feed / zur XML Datei und die ImageView irgend eine Liste, der Rest ist ziemlich ähnlich ;)



    Gruß,
    matze

    Hoi,


    entweder du gibst der doInBackground einen return-Value und verwurstest die Daten dann an der Stelle, an der du das ganze auf rufst (mit .get() abholen) oder aber du gibst deinem NewsDownloaderTask tatsächlich den Context/die View mit, die du dann als Member- Variable speicherst.



    Gruß,
    matze

    Hoi,


    es ist ein ganz normales Java Projekt, das man als solches auch starten könnte. Also kein fertiges .jar File. Bei normalen Java Projekten kann man ja (unter Eclipse) Rechtsklick aufs Projekt > Properties > Java Build Path bestehende Projekte im Workspace hinzufügen und dann dessen Klassen im eigenen Projekt mit benutzen. Bis zu einem bestimmten Grad funktioniert das auch, jedoch verschluckt er sich denke ich daran, dass das eingebundene Projekt mittels Maven widerum JAR-Files einbindet. Bei dem, das ich aufrufe, kann eine Exception fliegen, die in einem von Maven nachgeladenen jar-File ist, und mein Android Projekt sagt jetzt diese Exception wird nur indirekt referenziert .... bisserl verzwickt ;)



    Gruß,
    matze


    UPDATE:
    Hab mal bisserl weiter in Richtung Maven recherchiert und ein Tutorial gefunden, bei dem ein Android Maven Plugin verwendet wird.
    Hab das jetzt mal so weit verfolgt und mit Maven gebaut. Funktioniert auch an sich, jedoch nippelt er bei der entsprechenden Stelle im Code sang und klanglos mit einem NoClassDefFoundError ab ...


    Bin also dem Ziel etwas näher, irgendwas fehlt aber noch

    Hoi,


    ich hab da ein Java Projekt, das ich bei Bedarf in Projekte einbinde und einfach nur benutze. Das würd ich jetzt gern auch in mein Android Projekt werfen, damit ich das nicht doppelt machen muss. Es ist ein ganz normales Java Projekt. Habs mal in den Java Build Path wie gewohnt geklickt, allerdings behauptet er jetzt er würde eine Klasse nicht kennen

    Zitat

    cannot be resolved. It is indirectly referenced from required .class files


    Weiß jemand, wie man da richtig vorgeht? Oder gibts da keine Möglichkeit? In den Properties gibt es keinen Reiter Android, in dem ich "Is Library" anhaken könnte. Im Projekt, in das ich es einbinden will, taucht es auch nicht als Auswahl auf.



    Gruß,
    matze

    xD Ok alles klar.


    In einem vorherigen Projekt hatte ich Facebook-Alben(Wunsch vom Chef) mit eingebunden, diese im Splashscreen geladen und dann mit diversen ImageLoadern die auf AsyncTasks aufbauen verwurstet ... hat einiges an nerven gekostet :D


    Von Bitmap verkleinern skalieren zu Blob, in DB, aus DB in Stream zu Bitmap hin und her, immer mit Device Height und Width auslesen, damit das ganze möglichst brauchbar skaliert wird ... aber wenn man nichts skalieren darf fällt halt 3/4 Code weg ^^


    Naja, soll sich teuer Extern damit auseinander setzen ;)



    Gruß,
    matze

    Hoi,


    naja du kannst ja in der onCreate einer Activity sagen

    Java
    setContentView(R.layout.activity_main);


    Wenn du jetzt vor das ganze eine Auswahl schnallst und das R.layout.activity_main dann je nachdem was ausgewählt wurde einsetzt, wird eine andere XML-Layout-Datei verwendet.


    Was genau das jetzt bringt oder ob ich dich überhaupt richtig verstehe, weiß ich allerdings nicht :D



    Gruß,
    matze

    Hoi,


    die Frage wieso du musst kann ich mir wohl nicht verkneifen ... wieso musst du ein riesiges Bild anzeigen, dass auf einem kleinen Display selbst wenn der Speicher es reisst trotzdem zu Problemen führt?


    Hab mir ein paar "ImageLoader" gebastelt für mein vorheriges Projekt, mithilfe derer ich Bilder aus dem assets-folder oder auch Online ziehe, decodiere, komprimiere, verkleinere, thumbnails erzeuge, als Blob in die DB speichere und auslese ...


    Also wo liegt das Bild und darf es wirklich nicht kleiner werden? Feste Breite/Höhe, nix verändern? Für welche Android-Versionen? Da bin ich fürchterlich aufs Maul gefallen, weil man unter 3.0 glaube ich wars jeden sch... recyclen muss und ein removeView() auch nicht langt sondern man da teilweise echt dynamisch die Child-Objekte raus kramen darf um die dann zu recyclen.


    Hast du schonmal solch ein Konstrukt getestet?


    Gruß,
    matze

    Hoi,


    njoa du könntest auf dem entsprechenden Server apache und php aufsetzen, mit php exec ein Shellscript anstoßen, das führt die Status-Abfrage aus und returnt einen Status-Code, den du in PHP auswertest und raus echost. Das ganze rufst du von Android aus auf und wertest das Result aus ...


    Gemäß dem Fall es gibt eine Möglichkeit das ganze via Terminal abzufragen ... bei Apache2 z.B.

    Code
    service apache2 status
    Apache2 is running (pid 981).



    Gruß,
    matze