Beiträge von AppsThatMatter

    Hallo zusammen,


    ich bin schon seit dem Kindesalter am Programmieren und übe den Beruf seit über 10 Jahren aus. Was mir vorallem damals sehr schwer gefallen ist, ist der Austausch mit anderen Entwicklern bzw. überhaupt andere Entwickler kennenzulernen.
    Dabei meine ich nicht eine Fragestellung zu einem bestimmten Problem - das funktioniert ganz gut mit Stackoverflow, Forum etc., sondern eher den aktiven Austausch mit Gleichgesinnten - so eine Art Community. Das war auch mit ein Grund warum ich damals angefangen habe einen Youtube Kanal aufzubauen, denn ich denke auch in den Social Medias ist das Thema viel zu schwach präsent.


    Also, zu meiner eigentlichen Frage:
    Wie kommt ihr mit Gleichgesinnten in den Austausch, wie bleibt ihr auf dem aktuellen Stand und wie erlernt ihr am besten neue Themen?
    Geht ihr dafür regelmäßig auf Meetups, folgt ihr gute Blogs oder Newsletter (welche?), kennt ihr vielleicht gute Facebook Communities etc.? Konferenzen, Hackathons, Podcasts (welche könnt ihr weiterempfehlen)?


    Bin echt gespannt auf euer Feedback und auf neue Ideen ^^


    Viele Grüße
    Jonas

    Du kannst in den XML Dateien kein Java code einbauen. Also dein "Environment.getExternalStorageDirectory().toString()" wird an der Stelle nicht ausgeführt. Lass das dort weg und füg es im Java code nachträglich hinzu.

    Zuerst machst du eine SurfaceView. Die onDraw Method kannst du überschreiben um dann auf das Canvas (2d) zu malen. Diese Methode wird bis zu 60 mal pro Sekunde aufgerufen. Dadurch kannst du dann die Bewegungen im Spiel machen.


    Bei so einem Spiel bewegt sich normalerweise nicht der Spieler (Vogel) sondern der Hintergrund. Der Vogel verändert nur die Höhe (von oben nach unten).


    Ich denke dazu gibt es gute Beispiele im Internet. Google am besten mal nach Android canvas example oder sowas.


    Viel Spaß und Erfolg ;)

    also wenn du die app im store hast (z.b. als Alpha Version nur für freigeschaltete User möglich) dann werden die Abstütze ja geloggt und in der Developer Console angezeigt.


    Außerdem kann ich mich daran erinnern, dass ich die logcat auch auf einem nicht-gerooteten Device auslesen konnte. Einfach mal nach logcat im Play Store suchen und ausprobieren

    stimmt... er geht eins zu hoch. so müsste es funktionieren.
    Solche Fehler kannst du übrigens ganz easy finden wenn du dein Programm debuggst. Schau mal hier rein: https://developer.android.com/studio/debug/index.html



    Um zu beurteilen ob du generell den "richtigen" Weg gehst müsste ich verstehen was genau du denn vorhast. Wenn du einfach nur zwischen festgelegten Strings wechseln willst, kannst du das schon so machen. Ein Tipp noch: Klassennamen IMMER mit Großbuchstaben beginnen, sonst bekommt man Augenkrebs ;)


    das liegt daran dass es die Methode .size() nicht gibt bei primitiven Arrays. Das muss aber dann vorher schon ein Fehler gegeben haben, denn ich habe das nur von deinem Beispiel übernommen. Versuche es mit .length anstatt .size() das wird funktionieren

    ohne jetzt die Sinnhaftigkeit in Frage stellen zu wollen, müsste es so funktionieren:




    (nicht getestet)

    Hi Miklas,


    ich finde es cool dass ihr sowas in der Schule macht.
    Aber die Aussage, dass ihr das selbst nicht machen könnte kann ich nicht so stehen lassen ;)


    Wäre vielleicht ein guter Zeitpunkt für dich damit anzufangen soetwas zu lernen. So schwer ist es nicht und es wird dir richtig viel bringen in der Zukunft, wenn du dich so früh schon mit Programmieren (egal ob App oder Game) beschäftigst ;)


    Viele Grüße
    Jonas

    es gibt unendlich viele Möglichkeiten und Kombinationen das zu realisieren. Deswegen bekommst du auch unterschiedliche Antworten. Es kommt auch auf viele Faktoren an wie z.B. welche Skills hast du, welche Sprache bevorzugst du, und viel mehr.


    Nur als Beispiel, wenn dein Raspberry und App Zugriff auf das Internet haben, würde ich mir einen online database service nehmen. Dann musst du selbst extrem wenig aufsetzen und kannst die Daten über einfache APIs von deim Raspberry zur DB und von dort auf die Android App laden.


    Dafür könntest du Firebase benutzen (https://firebase.google.com/)

    Erstmal auch ein Willkommen von meiner Seite.
    Wenn du ganz neu bist würde ich dir empfehlen vlt erstmal ein Buch durch zu machen, als sich direkt reinzustürzen. Ein gutes Grundverständnis als Basis würde sicherlich gut tun.


    Ansonsten könnte ich dir bei deinem Vorhaben die library Rajawali empfehlen. Das ist ein 3d Framework.


    Viele Grüße und viel Spaß

    ja genau das meinte ich.


    Wegen den memory leaks, versuche ich mal ganz kurz dir das zu erklären.


    Alle Objekte die erzeugt werden, haben ja einen gewissen Speicherplatz im Memory. Dieser ist begrenzt. Immer wenn du das Keyword "new" benutzt wird also ein Speicher "reserviert".
    In manchen Programmiersprachen musst du dich darum kümmern, dass der Speicherplatz wieder freigegeben wird, sobald du das objekt nicht mehr brauchst (mit dem Keyword "delete" in C++).


    In Java passiert das automatisch auf eine gewisse magische Art. Und zwar macht das der sogenannte Garbage Collector (kurz GC).
    Sobald er Lust hat, löscht er also die Objekte im Speicher, wenn er denkt dass diese nicht mehr gebraucht werden.


    Wie weiss er welche Objekte noch gebraucht werden und welche nicht?
    Wenn es keine Referenzen mehr auf ein Objekt gibt, wird er es löschen.


    Jetzt gibt es (mittlerweile eher seltene) Fälle wo du in einer inneren Klasse Referenzen auf die äußere (Activity) Klasse hälst z.B. weil du eine View aus dem Layout referenzierst. Wenn du jetzt ein rotation change machst, wird ja das Layout neu aufgebaut. Der GC kann aber deine alte View nicht löschen und da hängt dann eine riesige Kaskade dahinter...


    Hier gibt es einen englischen Artikel über das Thema:
    http://android-developers.blog…voiding-memory-leaks.html


    Viele Grüße
    Jonas

    also mal ganz abgesehen von dem Sinn des Codes, würde ich das so formulieren:


    • AsynchUtil ist eine Klasse (btw: diese kenne ich gar nicht) -> richtig
    • AsynchUtil.runAsynchronously ruft die statische Methode runAsynchronously der Klasse AsynchUtil auf -> richtig
    • genau. Die Methode erwartet einen Parameter von dem Typ Runnable. Runnable ist übrigens ein Interface.
    • Jetzt wird direkt an der Stelle des Parameters ein Objekt von einer sogenannte anonymen Klasse erzeugt und zwar "inline" - also direkt da wo der Parameter benutzt wird.

      • Du definierst also zuerst eine Klasse, die von dem Typ Runnable abgeleitet wird bzw. das Interface Runnable implementiert. Diese neue Klasse hat keinen Namen, ist also anonym.
      • Direkt an selber Stelle instanziierst du ein Object von dieser anonymen Klasse.
      • Du könntest das ganze auch einfach ganz traditionell über eine eigene richtige Klasse, also mit einer eigenen Datei, machen.
      • Der Vorteil bei dieser inline anonymen Klasse ist, dass du von ihr heraus auf alle Objekte des Eltern Objekts Zugriff hast.
      • Achtung, hier kann man schnell ein memory leak machen!

    Zugegeben, das war jetzt sehr schnell, aber ich hoffe ich konnte dir helfen. Ansonsten frage nochmal nach ;)

    Wie der Kollege schon geschrieben hat, wäre die Fehlermeldung sinnvoll.


    Was mir allerdings noch auffällt an deinem Code ist die Zeile 66:


    Code
    if(Safe.getInt("Data1", 0) >= 0)

    Wenn noch keine Daten gespeichert sind, wird er als default value "0" nehmen. Also würde er nie in deinen else-Fall kommen, wo du die Meldung anzeigst, dass noch nichts gespeichert wurde. ;)