Beiträge von Ben

    Da du mit if (wenn du es schon so machst, nimm vllt lieber switch case) arbeitest, gehe ich davon aus das die buttons jeweils unterschiedliche aktionen auslösen.
    In diesem fall solltest du wirklich auch verschiedene click listener benutzen. Natürlich geht beides, aber deine Variante ist programmatisch nicht so sauber.

    Nein, da muss ich widersprechen.
    Ich erzeuge dynamisch neue Daten und Bilder und lösche veraltete. Ich müsste ständig auf dem Filesystem schreiben/lesen und in die DB schreiben/lesen. In meiner Variante werden die Bilder gleichzeitig mit den Dazugehörigen Daten gelöscht und neu geschrieben. Es ist einfach unnötig eine zweite Infrastruktur zu etablieren wenn es alles ohne Nachteile mit einer funktioniert. :P


    Einige posts im Netz meinten sogar das die Blobs in der DB sogar schneller sind als wenn man auf dem Filesystem arbeitet, das kann ich aber nich beurteilen. :)

    Ja das hab ich wohl missverständlich geschrieben, ich meinte, in dem beschriebenen Fall.
    Natürlich braucht man den Context nur, wenn auf dessen Methoden zugegriffen wird.

    Freu mich auch sehr über das neue Board :)
    Gefällt mir von den features her und vorallem schön zu sehen das hier aktiv an der Community geschraubt wird!

    ich vermute er versucht wirklich eine methode namens "aufteilen" aufzurufen, diese methode heißt in java aber "split".
    dann musst du natürlich noch definieren zu welcher Zeit diese Split Methode aufgerufen werden soll. Entweder wie Marco schon sagte, im onCreate oder du belegst einen Button mit einem onClickListener.

    Ich denke das problem ist das er den context von keiner activity durchgibt.
    Du brauchst immer einen Context, mit Android sozusagen weiß in welchem zusammenhang der aufruf steht. Meistens nimmt man als Context die aktive Activity.

    Das ist die where bedingung, Col_ID eine Konstant mit dem name der Spalte und das fragezeichen wird durch den inhalt des string arrays ersetzt.


    Edit:
    Ok Problem gelöst, es war ein ganz einfaches und vorallem dummes Problem *gg*.
    Die ID war einfach 0.
    Ich habe einfach vergessen beim schreiben in die DB die ID des Eintrags in meine Liste zu speichern, somit ist die ID die reingegeben wurde immer die standard ID meines Listeneintrags und die ist 0.


    Der Blob wird nun wunderbar gespeichert und DDMS in Eclipse zeigt mir mit dem Datenbank tool sogar direkt die gespeicherten Bilder an :)

    Wie blöd wär die Programmierung denn wenn es gleich jeder kann?
    Wenn du ein Haus bauen möchtest, schnippst du doch auch nicht einfach mit den Fingern und dein Haus steht.
    Wenn du es selber bauen willst, musst du lange Erfahrungen sammeln und Lernen. Wenn du es bauen lassen willst, musst du viel Geld in die Hand nehmen. Bei Software kann man dies 1 zu 1 übernehmen.

    Guten Abend liebe Community,



    auch ich wende mich mal wieder mit einer Frage an euch :)



    Mein Anliegen ist es, ein Bild als Bytearray in der Android SQLite zu speichern. (Ja ich könnte es auch ins Filesystem packen, aber ich kann eben auch die DB nehmen :P)
    Der Quellcode dazu sieht so aus:

    Java
    public static int editListEntry(Context context, String column, int id, byte[] image) {
    		ContentValues editedValues = new ContentValues();
    		editedValues.put(column, image);
    
    
    		return context.getContentResolver().update(DatabaseProvider.CONTENT_URI,
    				editedValues, Columns.COL_ID + " = ?", new String [] { String.valueOf(id) });
    	}


    Ich mache das über update, weil zur Zeit der Erstellung des Datenbankeintrags die Bilder noch nicht zur Verfügung stehen.
    Mein Problem ist nun, dass der Rückgabewert 0 ist und nicht 1. Bei einem Test ob die Bilder in der DB sind, ergab sich auch das nichts geupdated wurde.
    Ich weiß einfach nicht wieso, es kommt auch keine Fehlermeldung.


    Der Parameter "id" ist die ID des Datenbankeintrags der geupdated werden soll.
    Die Variable image enthält das Bytearray des Bildes, welches mit dieser Methode ermittelt wurde:


    Java
    private byte[] getByteArray(Bitmap bmp) {
    		ByteArrayOutputStream stream = new ByteArrayOutputStream();
    		bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    
    
    		return stream.toByteArray();
    	}


    Hat von euch einer eine Idee warum der returnwert von editListEntry 0 beträgt?


    LG.
    ChampS

    schau auf notebooksbilliger.de da kannst du genau auf das gerät filtern das du brauchst.
    Für android entwicklung gehen sogar netbooks (würde ich aber nicht empfehlen).


    nen i5 wäre gut, grafikkarte is nicht unbedingt nötig, ssd wäre von vorteil. Emulieren kannst du auch mit VMwarePlayer und nem Androidx86, dann brauchst du nicht jedesmal den Android emulator laden.

    Sorry für den Doppelpost aber Thema hat sich erledigt.


    Nach langem Try and Error, hab ich es geschafft die Datenpakete mit Wireshark abzufangen.
    Ich hab nun kein aktuelles android x86 genommen sondern die Version 4.3. Diese hab ich mit etwas Glück gerootet bekommen und die Apps installiert um wifi zu simulieren. Noch ein wenig Try and Error mit der Netzwerk konfig (fragt mich nich wie es am ende geklappt hat, aber es ging halt) und die App hat Daten an die Drohne gesendet. Leider ist die AR.Freeflight app dann abgestürzt, vermutlich wegen irgendwelcher Video natives die trotzallem nicht gingen.


    Thx für die Tipps marco, nun kenn ich für die Zukunft noch paar Android apps die packages capturen können :)

    Marcooo ich bin doch nich auf der Buttermilch hergeschwommen ;)
    Natürlich geht es wenn parrot für die app x86 shares objects mitliefert, das tun sie aber noch nicht.
    Bei Parrot anfragen hab ich versucht, finde mal ne email adresse, überall muss man seine telefonnummer oder adresse mit angeben, um mit dem support sprechen zu dürfen, nein danke.
    Ne direkte Support mail gibts nicht, hab schon ausgibig gesucht. Selbst wenn, würde das sicher etwas länger dauern, bis dahin is mein Projekt vorbei.


    Ich könnte auch tcpdump nutzen, aber hätte gern wireshark weil da gibts extra features für die parrot drohne.


    Und die Kommunikation über meinen Laptop laufen lassen hab ich schon probiert, die App erkennt dann die Drohnen nicht. Sie denkt die Drohnen sind nicht aktiv, was aber nicht der Fall ist. Das war gleich das erste was ich getestet habe, da das aber nicht funktioniert hat, bin ich auf den Emulator geswitcht. Nun muss nur die App noch laufen, die crasht halt gleich initial wenn man sie startet.


    Es gibt da einen emulator der arm auf x86 emuliert, der nennt sich libhoudini. Hab alle anleitungen befolgt zum installieren auf der VM, aber leider funktioniert das noch nicht. Ich vermute mal das waren veraltete shared objects die ich da in dem tutorial fand. Leider stand nämlich nicht dazu für welche arm architektur das ist, nur arm oder auch armv7, denn für JellyBean wird vermutlich was für armv7 benötigt.

    weil ich dann die pakete nicht mit wireshark capturen kann.


    Das ist schon klar, arm ist eine komplett andere cpu architektur, aber intel hat einen arm emulator der arm apps auf x86 ausführen kann.
    Bei den normalen Apps klappt das ohne problem, aber wenn natives im spiel sind, die für die app benötigt werden, wirds kompliziert.


    es geht darum, dass ich an meinem laptop eine verbindung zu der drohne aufbaue, diese über das mobile internet des emulators erreichbar ist, aber die app ein wlan voraussetzt. ich möchte praktisch die pakete mit wireshark capturen die die app vom emulator an die drohne sendet.

    Hallo meine lieben :)


    Vorweg, ich hab keinen zugriff auf den quellcode der app die ich teste.
    Es handelt sich dabei um die AR.Freeflight app von parrot.


    ich möchte auf dem Android emulator wifi simulieren, das ist nötig mit ich eine app nutzen kann, die ohne wifi nicht geht.
    Die app prüft nur ob wifi da ist, ich vermute sie wird auch mit dem normalen internet funktionieren und nur checken ob das wifi an ist.


    Dafür nutze ich das Xposed Framework und eine App namens FakeWifiConnection.
    Nun braucht das Xposed Framework aber Rootrechte und die muss ich nun in meinem Emulator erlangen.


    Es gibt haufenweise anleitungen im Web, wie man einen Emulator rootet. Leider funktionieren diese nur bis Android 2.3.3 und da funktioniert wiederum diese App die ich testen will nicht. Also nehm ich eine AVD mit Android 4.3.1 und installiere alle benötigten Apps. Dann rufe ich "adb remount" auf und schiebe mit push, su als "su" und nochmal als "daemonsu" in das system/xbin/ verzeichnis und gebe /system und /system/xbin/su bzw. /daemonsu dann 06755 chmod rechte. Anschließend installiere ich noch SuperSu für die verwaltung und teste dann ob ich root rechte habe. Xposed meint zumindest das es keine rootrechte bekommen kann. Es geht auch keine activity auf die fragt, ob ich der app rechte geben will. Also reboote ich, aber auch das ändert nichts. Nach dem reboot das selbe Spiel wieder.


    Nun steh ich ein bisschen auf dem Schlauch, weil ich nicht weiter weiß. Ich brauch dieses fakewifi unbedingt, und nebenbei einem emulator mal root verpassen wäre auch nicht schlecht. Hat von euch jemand eine Idee wie man das noch realisieren könnte?


    LG.


    Edit:
    Es gibt eine weitere Variante wie ich die App testen kann.
    Ich habe ein x86 Android in VMwarePlayer aufgesetzt und Rootrechte vergeben. Dort hat alles wunderbar funktioniert, Xposed funktioniert wunderbar, alle Apps die ich will bekommen root. Natürlich wärs zu einfach, wenn es einfach gehen würde....
    Denn in der Android X86 Umgebung bekomme ich bei Freeflight aufeinmal ständig einen unstatisfiedLinkError.
    Dann steht dort das /data/app-lib/libswscale.so nicht gefunden werden konnte. Über das Terminal hab ich nachgeschaut, die shared objects sind in dem ordner. Also denke ich das AndroidX86 diese nicht nutzen kann. Aber die anderen arm apps funktionieren doch auch, wieso kann der arm emulator keine arm natives laden :(?

    Ich weiß nicht ob das inzwischen gut geht aber schau mal ob JavaFx bereits qualitativ gut in Android genutzt werden kann.
    Libs kenn ich jetzt keine, würde micha ber auch für eine kostenlose gerade auch für kommerzielle projekte einsetzbare lib interessieren.

    mh mh you're right
    und unter sdk9 isses ja sowieso im mainthread erlaubt.
    Hoffe aber das Android trotzdem irgendwie deswegen ne Exception wirft.


    Naja einfache lösung ist es diesen rotz zu entfernen und AsyncTasks zu nutzen.
    Problem unbekannt, Lösung einfach.