Beiträge von block_

    Müsste ich den Handler alle 2 Sekunden "refreshen"?
    oder bin ich da auf dem falschen Weg?


    Das liegt nicht an dem Handler, sondern generall an deiner Architektur.


    Zum Server:
    Der Server ist (normalerweis) ein Programm das ohne Unterbrechnung läuft. Bei dir wird alle einmal im Konstruktor abgehandel und wieder beendet.
    Zu erst solltest du den Server ebenfalls in einem Thread lauf lassen, da ab Android 3.0(?) eine Exception geworfen wird. Das liegt daran das gewisse Methoden den aktuellen Thread, den Ui-Thread, blockieren und die somit die grafische Oberfläche "hängt".


    In der run-Methode erstellst du mittels einer while-Schleife und einer geeigneten Abrruchbedingung (Interrupt oder ähnliches) den eigentlichen Server-Code - das warten auf einen Client, Erstellung der Streams usw. (Im Konstruktor alles initialisieren und vorbereiten was du brauchst, damit der Server seine Arbeit verrichten kann. Darunter fällt auch dein Timer, der ja schon Teil des Servers sein sollte und nicht in der Main extra erstellt wird. Die Main sollte nur den Server starten.)
    Nicht vergessen, wenn der Server beendet werden soll, alles ordentlich zu schließen - Streams und den Socket.


    Wie vorher erwähnt gibt es Methoden die den Thread blockieren. In deinem Code wird nach dem sich ein Client verbunden hat auf eine Nachricht des Clients gewartet (die readline() blockiert bis die Nachricht gelesen wurde). Erst danach wird die aktuelle Zahl an den Client gesendet. Je nachdem was du vorhast, kann ja sein, dass das von dir so gewollt ist, empfiehlt es sich für den Empfang von Nachrichten des Clients ebenfalls ein extra Thread zu erstellen, sodass die Methoden sich nich gegenseitig blockieren. So wird auch unabhängig davon, ob der Client eine Nachricht senden will oder nicht, die aktuelle Zahl gesendet.


    Zum Client:
    So wie du den Client jetzt implementiert hast, wird vom Server auch nur was empfangen wenn auf den Senden-Button geklickt wurde. Es wird jedesmall eine neue Verbindung aufbauen. Besser wäre es nur einmal eine Verbindung aufzubauen und dann über die Verbindung Nachrichten senden und empfangen. Hier empfiehlt es sich das Empfangen in einen seperaten Thread auszulagern. Das Senden kann dabei im Ui-Thread bleiben da keine Methode diesen blockieren würde. Da der Server in einer (Endlos-)Schleife läuft wird nicht nur einmal die Zahl empfangen und auch nicht erst nachdem der Client eine Nachricht geschickt hat, sondern solange die Verbindung zum Server besteht.


    Noch ein paar Tipps:

    • Variablennamen werden am Anfang klein geschrieben
    • Keine neue Klassen innerhalb vom Code, das macht das Lesen nur schwieriger
    • Möglichst keine Warnungen ignorieren. Die Lint-Warnung besagt das es zu einem Leak führen kann, also den Handler static machen.


    Hoffe das ist halbwegs verständlich und hilft dir etwas. Was mir damals auch geholfen hat ist diese Seite hier: Client/Server-Anwendung.


    block_

    Ich hab mit einem Kollegen auch eine App geschrieben, die Daten über das WLAN senden soll. Mit dem Emulator testen geht/ging jedenfalls nicht. Das ist soweit ich sagen nicht möglich, jedenfalls hab ich keine Lösung dafür gefunden. Der Emulator teilt sich zwar die Internetverbindung mit dem Host, aber sobald man irgendwas mit WLAN machen will gehts nicht. Musst wohl oder übel ein weiteres Gerät finden.


    Aber vllt weiß ja doch noch jemand mehr.


    block_


    Bittesehr :)


    block_

    Bei mir hilft der Eintrag in der Manifest immer.
    Ich habs eben mal getestet und beim Laden von "www.google.com" wird, wegen einem Redirect auf "www.google.de", der Standart-Browser von Android geöffnet und nicht die Seite im WebView geladen. Auf den Browser haben die die Einstellungen für die Orientation natürlich keine Auswirkung. Eventuell ist dies ja bei dir auch der Fall.


    Der direkte Aufruf von "www.google.de" hat aber wie gewünscht die Seite im WebView geladen. Damit alle Adressen im WebView geladen werden, muss man einen WebViewClient setzen.


    Hier mal mein Test-Code:



    Vielleicht bringts dich ja weiter.


    block_

    Ich versteh nicht ganz genau was du meinst, aber müssen es Buttons in der Liste sein? Einfacher wäre doch ein Klick auf ein ListItem.


    Code
    @Override
        protected void onListItemClick(ListView l, View v, int position, long id)
        {
            // hier dein Code
        }


    block_

    Mein Problem ist jetzt aber, dass es bisher immer darum ging ein Objekt (z.B. eine Kugel) über einen festen Hintergrund zu bewegen. Nun möchte ich ja aber eigentlich den Hintergrund bewegen,...


    Den Hintergrund zu bewegen ist meiner Meinung nach nicht sinnvoll. Wenn man sich die virtuelle Welt betrachtet, auch wenn sie in diesem Fall "nur" 2D sein soll, so kann doch eine Verschiebung der ganzen Welt sehr viele Berechnungen anstoßen, je nachdem wieviele Objekte sich darauf befinden.
    Besser wäre es, wenn du doch dein Objekt in der Mitte bewegst, während die Kamera immer auf dieses Objekt gerichtet ist und sich mit dem Objekt verschiebt.


    Wie hast du vor das ganze umzusetzen? Alles selbst machen oder OpenGLES bzw. ein Framework zu verwenden? (libGDX, AndEngine,..)
    Sowohl in OpenGL als auch in den Frameworks gibt es meines Wissens nach ein Camera-Objekt(/Methode), welches du auch ganz einfach durch die Welt bewegen kannst.


    block_

    Es gibt die Klasse URLDecoder, damit lässt sich die url in eine etwas mehr lesbare Form bringen.


    Code
    String url = "/url?sa=t&source=web&cd=4&ved=0CF8QFjAD&url=http%3A%2F%2Fwww.gesetze-im-internet.de%2Fbundesrecht%2Fbgb%2Fgesamt.pdf";
            String decodeUrl = URLDecoder.decode(url);
            String fileName = decodeUrl.substring(decodeUrl.lastIndexOf("/")+1, decodeUrl.length());
            System.out.println("decodeUrl: " + decodeUrl);
            System.out.println("file: " + fileName);


    Ausgabe:

    Code
    decodeUrl: /url?sa=t&source=web&cd=4&ved=0CF8QFjAD&url=http://www.gesetze-im-internet.de/bundesrecht/bgb/gesamt.pdf
    file: gesamt.pdf


    block_

    Für den LayoutInflater muss deine innere Klasse muss static sein, um unabhängig vom Zustand der äußeren Klasse zu sein.


    Wenn du den Konstruktor noch mit einfügst, werden die Attribute aus dem XML-File durch den super()-Aufruf weitergereicht und du kannst du die üblichen Attribute wie layout_width usw. benutzen.


    Code
    public Panel(Context context, AttributeSet attr)
        {
            super(context, attr);
        }


    block_

    Zitat

    08-01 18:40:42.536: E/AndroidRuntime(489): Caused by: java.lang.NullPointerException
    08-01 18:40:42.536: E/AndroidRuntime(489): at manager.scg.EventPlayers.<init>(EventPlayers.java:51)


    Vielleicht hätte ich das "Caused by: .." noch dazu schreiben sollen :P


    Aufjedenfall wird in Zeile 51 die NPE geworfen. (Der Doppelklick müsste auf dieser Zeile funktionieren)


    block_

    Du kannst in dem Layout jetzt ganz einfach deine View mit einbauen.
    Da das bei dir eine innere Klasse ist:

    Code
    ...
    <view
      class="dein.package.TestCanvas$Panel" 
    ... />
    ...


    Ansonsten:

    Code
    ...
    <dein.package.Panel 
    ... />
    ...


    block_

    Wenn du nur ein '=' benutzt, dann weist du spezi einen neuen Wert zu. Deshalbt gelangst du auch immer nur in den true-Teil.
    Du musst das '==' benutzen oder noch kürzer einfach

    Code
    if (spezi) 
            add = "*" + txt_eingabe.getText() + " (1)";
    else if (spezi)
            add = txt_eingabe.getText() + " (0)";


    block_

    Ich denke das Problem liegt hierbei, dass du versuchst die temp.txt in einem Bereich zu erstellen, in der du keine Schreibrechte besitzt (wahrscheinlich das Root-Verzeichnis).


    Versuch mal:

    Code
    foutstream = openFileOutput("temp.txt", Context.MODE_PRIVATE);


    Das erstellt dir die Datei im Internal-Storage.


    Zum nachlesen: Storage


    block_

    Auch hier danke für den Tipp, hab mich sofort angemeldet.
    Die Mobile Developer kenn ich ja auch, hab die paar mal gelesen, als sie hier bei uns in der FH rumlag. Die ist echt interessant gewesen, aber 15€ für ein Heft ist doch etwas viel. Das sie die mit der Web Developer zusammengelegt haben (habe die auch mal angelesen) find ich echt schade.


    Vielleicht hat ja noch jemand irgendwelche Tipps parat :)


    block_