Beiträge von Marco Feltmann

    Ich war 2013 bei den iOS 7 Game Tech Talks in Berlin.
    Hat damit nur am Rande was zu tun: dort saßen auch Vertreter des AppStore Teams, welche man mit Fragen löchern konnte.


    Und ich habe die Erfahrung gemacht, dass es sich nur dann lohnt, wenn man wirklich ein paar brennende Fragen hat.


    Die Vorträge sind meist allgemeines lalala blablabla blubblubb von irgendwelchen so genannten Marketing-Experten, die von App-Entwicklung absolut keine Ahnung haben und glauben sie wüssten wovon sie reden.


    Und irgendwie erzählen Sie alle dasselbe:

    • Freemium (kostenlos mit zukaufbaren Optionen) taugt nix. Zwar relativ hohe Downloadzahlen aber sehr geringer Gewinn.
      Wird nur dann eingesetzt, wenn Du auf Grund der Masse von unterschiedlichen Spielen, deren Erstellung Dich möglichst wenig Zeit kostet, sehr viele unterschiedliche Installationen pro Nutzer laufen lassen kannst.
    • Payed Apps (also einmalig kaufbar) ist ein bisschen besser. Weniger Downloadzahlen aber immerhin ein fester Betrag. Kommt nur kein weiteres Geld rein.
    • Paymium (also einmalig kaufbar mit zukaufbaren Optionen) sind wohl das Beste. Wenige Downloadzahlen und ein fester Betrag sowie kontinuierlich fließendes Geld.
    • All das funktioniert aber nur, wenn Deine App so geil ist, dass sie sich via Mundpropaganda, Blogs etc.pp. quasi von allein verkauft.
      Tipps zur Ranking-Beeinflussung bekommst Du da jedenfalls keine Anderen.


    Davon ab: scheinbar nutzen wirklich viele den Amazon Store. Ich nicht. Amazon und deren Politik missfällt mir einfach.

    Impressum ist immer eine gute Idee, vor Allem, wenn die App Geld kostet.
    Haftungsausschluss ist ebenfalls immer eine gute Idee.


    Gewerbeanmeldung brauchst Du nicht unbedingt. Wenn die App Geld kostet, musst Du das mit Deiner Einkommenssteuererklärung verwursteln.
    Für solche Dinge würde ich aber mindestens das Finanzamt und gegebenenfalls sogar einen Steuerberater bemühen.

    Also eine Zeile 30 sehe ich da nicht, muss mich also darauf verlassen, dass Du das richtig deutest. ;)


    Was mich wunderst:
    Du arbeitest mit einem Fragment.


    Das ist gut und richtig so und hat Eclipse Dir sicherlich so vorgeschlagen.
    Dann versuchst Du die Inhalte Deines Layouts zu manipulieren. Vermutlich ist das der Punkt, an dem das Tutorial greift.


    Und das muss so nicht funktionieren.
    Vermultich (!) lädst Du zunächst das activity_main.xml, welches wohl auch dem Tutorial entsprungen ist.
    Dann wird alles darunter komplett weggeworfen, weil die fragment_main.xml geladen wird.
    (onViewCreate() Deiner PlaceholderFragment() Klasse)


    Und +schwubs+ kann hinter der ID 'anzeige' kein Objekt mehr gefunden werden.
    Da Du auf jeden Fall mit Fragmenten arbeiten solltest, empfehle ich Dir ein anderes Tutorial zu suchen. ;)


    Alternativ nimm Deine Anpassungen zurück und arbeite diese entsprechend in die PlaceholderFragment Klasse statt der Activity ein.
    (Das wäre der richtige Weg.)

    Nicht ganz. ;)


    Das JSON Format ist eigentlich gar nicht so einfach wie man denkt. Du musst das Format ein wenig zerlegen.


    Vermutlich meinst Du so etwas:


    {} steht für ein JSON Objekt, während [] ein Array darstellt.


    Du hast also ein Wurzelobjekt {}.
    Dieses hat eine einzige Eigenschaft namens 'contacts'.


    Eigenschaften bestehen aus einem Schlüssel (der Name, hier: contacts) und einem Wert (irgend einem JSON Objekt).


    Übersetzt würde das obige Beispiel lauten:

    +hm+
    Sich von Logos Anderer derart inspirieren lassen finde ich persönlich ja ein bisschen mau, aber sei's drum.


    Das lässt sich ganz prima mit einem Vektor-Grafikprogramm realisieren.
    InkScape wäre ein gutes, kostenloses Programm dafür.


    Natürlich bieten sie auch eine großartige Community und viele Möglichkeiten zum Lernen der Anwendung und des Designens.


    Solltest Du allerdings für Design gänzlich unbegabt sein (typische Programmiererkrankheit…), wäre es vielleicht sinnvoller die Aufgabe an einen Grafiker/Designer/Illustratoren zu übergeben.
    (Du willst ja auch nicht, dass der Pixelschubser plötzlich anfängt eine App zu schreiben, wenn er Dich dafür bezahlen könnte. +g+)

    Ich kann da nur auf das Internet verweisen, da ich so viel mit Bluetooth noch nicht gemacht habe.


    Diese Antwort geht davon aus, dass die hart codierte UUID ein Problem sein könnte.
    http://stackoverflow.com/a/16529726


    Ansonsten gibt es da wohl noch einen kleinen Hack.
    http://stackoverflow.com/a/3397739


    Eventuell hilft es auch (wenn der Code denn funktioniert) die Exception abzufangen.


    Also im Prinzip ein Hack wie dieser:

    Java
    BluetoothSocket tmp = null;
    try {
      tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    }
    catch (IOException e) {
      Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
      tmp = (BluetoothSocket) m.invoke(device, 1);}
    finally {
      tmp.connect();
    }

    Habs nach ungefähr 3 Tagen intensiven Umherprobierens aufgegeben und bin auf Eclipse umgestiegen.
    Zumal ich da noch den Bonus habe, dieselbe IDE auch für C/C++ nutzen zu können.


    C/C++ Entwicklung ist meines Wissens mit Android Studio nicht möglich.


    [Kogoro]
    Naja, viel muss das NDK ja auch nicht können. Solange man nicht auf die wagemutige Idee kommt anstelle in Java nur in C++ schreiben zu wollen, dürfte es keinerlei Probleme geben.
    Für reine OpenGL/OpenSL Anwendungen würde ich den nativen Weg via NDK tatsächlich bevorzugen.
    Sobald Du aber an dringend benötigte Funktionen ran musst (beispielsweise Netzwerkstatus lesen, Bluetooth Verbindung aufbauen, zu den Google Play Services verbinden) wirds dann haarig.
    Die einzige Dokumentation sind die Header Files im entsprechenden Verzeichnis des NDK.

    Im Falle 'Bild neben Text' würde ich fast auf das XML Element
    android:drawableLeft="@drawable/objekt1" #
    des TextView ausweichen.
    Lässt sich soweit ich weiß auch im Code ziemlich einfach setzen.


    Jedenfalls kann ich mir auch nicht vorstellen, dass es damit ein Problem geben könnte.
    Andererseits ist im vorletzten Screenshot halb eine OutOfMemory Exception beim Erstellen eines ImageView zu erkennen.


    Ist Dein Bild eventuell ein bisschen zu groß? ;)


    Ja, bis Ende 2006 habe ich in Mecklenburg gelebt. Knapp 50km nordwestlich von Schwerin. :)

    Also das Ganze kann man so lesen:


    'InflateException: Objekt der Klasse <unbekannt> aus binärem XML in Zeile #6 konnte nicht erstellt werden.'


    Der wichtige Punkt ist dann MyListAdapter.getView, denn das ist von Dir.


    Und darin findet man:
    getLayoutInflater().inflate(R.layout.item_view, …


    Wenn Du also mal in item_view.xml schaust, was da so in Zeile #6 als Objekt eingetragen ist, kommst Du der Lösung sicherlich einen Schritt näher.


    (Wann wurde eigentlich meine ehemalige Landeshauptstadt zum Weltkulturerbe erklärt?)

    Also für mich sind die Links allesamt tot. -.-


    Ja, ich weiß was Du meinst.
    Ich habe davon auch keine Ahnung. Die Jungs von Google haben aber Monate und Jahre darauf investiert, ihr UI zu designen.
    Mit Weltklassedesignern, Userstudien etc.pp.


    Insofern nutze ich einfach deren Vorgaben.

    Hallo Katharina und willkommen im Forum!


    Vielen Dank, dass Du so ausführlich Deine Codeabschnitte mit uns teilst.
    Für die Fehlersuche wäre es noch ausgesprochen hilfreich, wenn Du die Inhalte aus dem LogCat Fenster mit uns teilen würdest.
    Und zwar den Part, der in fettem Rot geschrieben ist und zur Kategorie 'error' gehört.


    Eventuell hätte auch das Layout 'listview_layout.xml' geholfen.


    So können wir leider nur raten.
    Aber eventuell reicht das schon.


    Ich vermute, Deine App stürzt mit einer NullPointerException in der Zeile ab, die ' list.setAdapter(adapter);' enthält.
    (Zeile 40 in Deinem Beispiel.)
    Das würde dann passieren, wenn findViewById() nichts findet, null zurückliefert und Du dann übersetzt 'null.setAdapter(adapter);' auszuführen versuchst.


    Im Gegensatz zu Objective-C mag Java Nachrichten an null überhaupt nicht und quittiert dies mit einem Absturz.
    findViewById() findet dann kein View, wenn diese ID nicht im angegebenen Layout zu finden ist.


    Schau also bitte mal in Deine listview_layout.xml, welche ID Du Deiner ListView wirklich gegeben hast.
    Vermutlich ist R.id.listView1 im Layout activity_main.xml oder einem anderen Layout definiert, weshalb sie noch als Möglichkeit angeboten wird.


    Sollte dies nicht das Problem sein, so schick uns doch bitte noch den Auszug aus der LogCat mit. :)


    Gruß Marco

    Sozusagen.
    Es gibt Anbieter wie beispielsweise n-fon, die Dir eine Art SIP-basierte Telefonanlage zur Verfügung stellen. Da zahlst Du dann je nachdem wie viele Nutzer Du drauflassen möchtest.
    Natürlich kannst Du Dir auch Asterisk, Gemeinschaft oder eine ähnliche Open Source VoIP Telefonanlage installieren. Eventuell findest Du auch irgendwo einen Open Source SIP Server ohne Telefonanlagenfunktionalität.


    Dann musst Du allerdings eine ganze Menge Geld für Hosting, Bandbreite und Priorisierung ausgeben.
    Kurz gesagt: einen eigenen Serverdienst zur Verfügung zu stellen kostet auf die eine oder andere Art und Weise viel Geld.

    Nun, Du könntest Dich durch die dazugehörigen RFCs wühlen, beginnend bei RFC 3261.


    Es wird vermutlich Monate bis Jahre dauern, alle SIP Funktionalität zu implementieren…


    Ein Tutorial gibt es für so etwas meines Wissens nicht, weil es sich dabei schon um ein Entwicklungsprojekt handelt, welches tiefe Kenntnisse bei der Programmierung erfordert. Einen schnellen Erfolg würde ich also erst einmal ausschließen. ;)

    Damit greifst Du höchstens auf die Variablen Deiner Application zu.
    Das willst Du nicht.
    Schließlich definierst Du damit so etwas wie eine globale Variable.
    Das willst Du erst recht nicht.


    Generell ist es eine schlechte Idee auf die Werte von Instanzvariablen irgendwelcher Objekte zugreifen zu wollen.
    Entweder Du implementierst ein paar Setter- und Getter Methoden in Deine Subklassen von Activity, oder Du startest Activities mit ein paar notwendigen Extras und bekommst die Ergebnisse durch startActivityForResult().


    Alles Andere ist mutmaßlich der völlig falsche Weg.