Android App Programmierung mit Eclipse etc. - Wer kennt sich aus?

  • Antworten:8
Barbara Schmidt
  • Forum-Beiträge: 15

28.12.2011, 15:31:17 via Website

Moin moin zusammen,

ich habe damit angefangen mich mal ein wenig mit der Android-Programmierung zu beschäftigen.
Hierfür habe ich ein eBook gefunden, welche einem sehr gut weiterbringen soll, doch leider taucht schon das erste Problem auf,
welches in dem eBook nicht behandelt wird.

Ich arbeite mit Eclipse und einem Android-Emulator.

Die erste Test-App nennt sich "SagHallo". So weit so gut. Ich habe nun etliche Male den Code durchforstet (ist ja nicht viel) und mit dem aus dem eBook vergliechen und mir fällt kein Fehler auf.

Mein Problem ist der, dass wenn ich das "SagHallo"-App auf den Emu. lade, wird das App zwar geöffnet, es kommt aber kein "Ton".
Ich gehe von daher davon aus, dass irgendwas falsch installiert / eingestellt wurde.

Gibt es hier den ein oder anderen, der mir evtl. zu Anfang mal zur Seite stehen würde, und mir ggf. bei dem ein oder anderen Problem helfen würde/könnte/möchte?

Würde ich sehr freuen.

Antworten
tom_cat
  • Forum-Beiträge: 11.132

28.12.2011, 15:37:25 via Website

Hallo Barbara, nicht wundern... ich schiebe Dich mal ins Entwickler-Forum, da passt die Frage besser.

Natürlicher Verstand kann fast jeden Grad von Bildung ersetzen, aber keine Bildung den natürlichen Verstand. Arthur Schopenhauer App Reviews nach Einsatzzweck und hier noch das: Das-AndroidPITiden-Buch

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

30.12.2011, 23:16:57 via Website

Das Testen mit dem Emulator vergisst du am besten, der macht fast immer andere Sachen als die Android Geräte selbst, bis jetzt ist noch keines meiner Apps auf dem Emulator richtig gelaufen. Wenn ich dich wäre würde ich schauen ob ich irgendwo ein günstiges Android Device her bekomme, es ist ja auch nicht schlimm wenn es nicht so leistungsfähig ist, dann siehst du wenigstens ob deine Apps auch auf älteren Geräten laufen.

EDIT:
Ich war mir gerade nicht sicher ob der Emulator überhaupt eine Tonausgabe hat und habs gerade noch mal ausprobiert, also bei gibt er Töne aus.
Poste doch einfach mal deinen Code und hast du auch geschaut ob beim LogCat eine Fehlermeldung ausgegeben wird? Den LogCat findest du, wenn du oben Rechts auf DDMS klickst.

— geändert am 30.12.2011, 23:32:57

Wolfgang S.

Antworten
Barbara Schmidt
  • Forum-Beiträge: 15

01.01.2012, 22:39:39 via Website

Momentan bleibt mir leider nichts anderes übrig, als mit dem Emulator zu testen, da ich noch kein Android-Handy besitze.
Bin aber auf der Suche nach einem AndroidGerät.

Habe allerdings grad erst angefangen mit dem lernen der Programmierung.

Von daher wäre es ja auch nicht schlecht, hier jemanden zu finden, der mir evtl. mal das ein oder andere per ICQ,MSN oder SKYPE erklärt.

1package de.androidnewcomer.saghallo;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.speech.tts.TextToSpeech;
6
7public class StartActivity extends Activity implements OnInitListener {
8
9 private TextToSpeech tts;
10
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16 tts = new TextToSpeech(this, this);
17 }
18
19@Override
20public void onInit(int arg0) {
21tts.setlanguage(Locale.GERMAN) ;
22tts.speak("Hallo!, TextToSpeech.QUEUE_FLUSH, null) ;
23
24}
25}

SO soll alles aussehen, wenn es fertig ist etc.

Tut sich aber bei mir rein gar nichts :(

Wie gesagt, schön wäre es, wenn jemand mir einwenig zur Seite stehen würde :)

Antworten
Felix
  • Forum-Beiträge: 259

02.01.2012, 01:20:37 via Website

Tach!

Von daher wäre es ja auch nicht schlecht, hier jemanden zu finden, der mir evtl. mal das ein oder andere per ICQ,MSN oder SKYPE erklärt.

Dann hast du zwar eine persönliche Beratung, aber nur einen Erklärer und keine vielen Mitleser, die eventuell Fehlerhaftes korrigieren und Ergänzungswürdiges hinzufügen.

SO soll alles aussehen, wenn es fertig ist etc.

Wenn man die offensichtlichen Fehler beseitigt, auf die einen Eclipse auch mit roten Unterkringelungen hinweist, ist sehr wohl ein kurzes Hallo zu hören. Wenn man mit dem Mauszeiger auf die rote Markierung fährt, bekommt man üblicherweise Hinweise eingeblendet, was man zur Beseitigung tun kann.

Tut sich aber bei mir rein gar nichts :(

Das ist unglaubwürdig. Rein gar nichts passiert immer nur dann, wenn man rein gar nichts macht. Zumindest ein Applikationsstart oder eine Exception im Logcat sollte zu sehen sein. Die einzelnen Fenster/Bereiche in Eclipse heißen View, man kann sie bei Nichtvorhandensein über Window->ShowView hinzufügen. Die Views Problems, Console und LogCat sind die wichtigsten. Die sollten unterhalb der Code-View zu finden sein. Wenn nicht, füg sie dir hinzu. Problems solltest du vor dem Programmstart beseitigen. Und wenn es nicht nur Warnings sind, musst du das sogar. In der Console siehst du beim Start, dass das Progamm übertragen wurde und deine Activity gestartet wurde. LogCat zeigt allgemeine Meldungen des Systems an. Das sind üblicherweise recht viele, beim Programmstart sollte sich aber automatisch ein Filter auf die nur zum Programm gehörigen Meldungen aktivieren.

Der Debugger ist eines der wichtigsten Hilfsmittel. Wie man damit umgeht, solltest du üben. Den Fall, dass sich angeblich nichts tut, kann man mittels Breakpoints überprüfen. Stoppt der Debugger an einem Breakpoint in einem Stück Code, das ausgeführt werden soll, dann tut sich also doch etwas. Wenn nicht, muss man Breakpoints in andere Teile des Codes setzen und die Ausführung dort verfolgen, notfalls auch schrittweise, Anweisung für Anweisung. Da man zum Debuggen andere Werkzeuge braucht als zum Coden, kann man rechts oben in Eclipse die Perspectives umschalten (ansonsten auch über das Window-Menü). An Perspectives solltest du mindestens Java und Debug kennen (DDMS ist auch noch nützlich, aber das braucht man als Anfänger noch nicht unbedingt).

Ein allgemeiner Hinweis zum Code: Activity hat keine Methode onInit(), man kann sie also nicht überschreiben – das @Override ist überflüssig. Wenn ein Interface implementiert wird, werden die darin vereinbarten Methoden üblicherweise hinzugefügt. Der Name onInit ist zwar ähnlich wie onCreate, man darf aber nicht von onCreates @Override auf eine Notwendigkeit bei anderen on…-Methoden schließen (auch wenn man oft genug solche unsinnigen @Overrides in Code-Beispielen findet).

Wenn du den Code nicht selbst entworfen hast, ist es bei Problemen günstig, die Quelle zu nennen. Dann kann man nämlich prüfen, ob die Quelle fehlerhaft ist oder nur das Übernehmen misslungen ist.


Felix

Antworten
Barbara Schmidt
  • Forum-Beiträge: 15

03.01.2012, 15:18:14 via Website

Hallo Felix,

danke dir für deine Antwort.

Mit "rein gar nichts" meinte ich natürlich nicht, dass sich "nichts" tut. Es war da drauf bezogen, dass der Effekt nicht erreicht wird.
Sprich: Das App sagt nicht Hallo.

Das App startet, es erscheint auch Der Title etc., aber eben kein Ton <----- da drauf war rein gar nichts bezogen :)

Mit Unterstützung suche ich keinen, der mir unbedingt alles macht und tut, sondern vielmehr die Begriffe wie
- Methode
- Klasse
- Objekt

genauer erklärt. Wie wo was hin kommt usw.
Es wird zwar vieles in de Buch erklärt, allerdings habe ich damit irgendwie meine Probleme.
Im übrigen handelt es sich um eine Buch von "Uwe Post", den Titel habe ich grad nicht zur Hand, da ich unterwegs bin,
reiche ich aber nach.

Das man rot unterstrichenes bei Eclipse korrigieren kann und muss, weiß ich, dies wurde auch getan ;)
Ich mache sonst mal einen Screenshot, da sieht man es dann vllt. genauer.

Antworten
Felix
  • Forum-Beiträge: 259

03.01.2012, 18:03:09 via Website

Tach!

Mit "rein gar nichts" meinte ich natürlich nicht, dass sich "nichts" tut. Es war da drauf bezogen, dass der Effekt nicht erreicht wird.
Sprich: Das App sagt nicht Hallo.

Das App startet, es erscheint auch Der Title etc., aber eben kein Ton <----- da drauf war rein gar nichts bezogen :)

Gut, das war die Anwender-Sicht. Und nun die Programmierer-Sicht. Setz einen Breakpoint auf die tts.speak-Zeile. Die Abarbeitung muss an der Stelle vorbeikommen und wegen des Breakpoint anhalten. Wenn es hält und auch der Step-Over ordnungsgemäß und ohne Meldung ausgeführt wird, scheint mit deinem Code soweit alles in Ordnung zu sein und das Problem wird anderswo liegen (Lautstärke runtergeregelt? Geht wenigstens die Test-Ausgabe in den Systemeinstellungen?). Wenn nicht, kommt die Abarbeitung gar nicht bis dorthin und du musst schauen, warum sie nicht dort landet. Von wo aus hätte es denn aufgerufen werden müssen? Warum unterbleibt das an der Stelle? Usw. usf.

Das man rot unterstrichenes bei Eclipse korrigieren kann und muss, weiß ich, dies wurde auch getan ;)
Ich mache sonst mal einen Screenshot, da sieht man es dann vllt. genauer.

Vom Code brauchst du keinen Screenshot, es reicht, wenn du den von dir verwendeten lauffähigen Code und keinen fehlerhaften postest. Ansonsten werden dir nur unnötig Fehler um die Ohren geworfen, die bei dir gar nicht vorhanden sind. Das ist für beide Seiten nicht erbauend.
Von der laufenden Anwendung brauchst du auch keinen Screenshot anzufertigen, denn die Sprachausgabe verwendet nur Code, der nichts mit einer sichtbaren Ausgabe zu tun hat.


Felix.

Antworten
Jerrydermich kennt
  • Forum-Beiträge: 1

14.01.2012, 14:49:06 via Website

Ja guten tach,
Das was du da so geschrieben hast ist ja toll,
nein ist es nicht das ist ja die einfachste version eine sprachausgabe zuerhalten die ich kenne.
dieses "programm" vunktionirt eh nicht auf dem Handy, nur auf dem Emulator da fehlt der text


@Override
de.androidnewcomer.helloworld;
Activity setconventview;
Button button = (View view);

Antworten
New Id
  • Forum-Beiträge: 1

25.07.2012, 17:10:49 via Website

Barbara Schmidt

1@Override
2public void onInit(int arg0) {
3tts.setlanguage(Locale.GERMAN) ;
4tts.speak("Hallo!, TextToSpeech.QUEUE_FLUSH, null) ;
5
6}
7}

Moin, du hast in der onInit Methode, den speak Aufruf nicht richtig.
Gänsefüße müssen umschließen einen String. z.B "TEXT"
So sollte es funktionieren.
tts.speak("Hallo!", TextToSpeech.QUEUE_FLUSH, null) ;

Antworten