Um aktiv im Android Forum teilnehmen zu können, musst Du Dich bei AndroidPIT registriert haben.
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 23.06.2010 13:25:42
Hallo allerseits,
ich beschreibe hier mal mein Anliegen und hoffe das vielleicht jemand dabei ist der mir bei der Entwicklung einer kleinen Android-App hilft. Mein eigentliches Problem, ich kann nicht Java programmieren und auch dieses ganze objektorientierte leuchtet mir einfach nicht ein. Sprich, ich bin Laie und kann es nicht selber. Ich würde vielleicht noch eine einfache GUI in Eclipse hinbekommen, mehr aber auch nicht. Die App die ich möchte ist wirklich kein großer Aufwand und auch grafisch habe ich keinerlei Ansprüche. Im Grunde benötige eine erste Activity zur Eingabe von 3 Variablen mit einem Start Button. Die erste Variable gibt eine Anzahl an (z.B. 5), die zweite und die dritte Variable gibt eine Zeit in Sekunden an (z.B. 30 sek. und 45 sek.). Nach dem Start soll einfach nach jeder abgelaufenen Zeit (z.B. nach 30 Sekunden) ein Ton/Geräusch/Signal ertönen. Und nach 5 mal ist alles vorbei. Ist jetzt vielleicht nicht sofort zu verstehen was ich hier will, aber wenn jemand bereits wäre mir zu helfen, erstelle ich auch gerne ein UML oder sonstiges und beschreibe noch einmal im Detail was ich meine! Besten Dank im Voraus und schöne Grüße ;-) |
Alex W. ![]() Rang: Schülersprecher Beiträge: 84 Eintrittsdatum: 04.03.2010 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 23.06.2010 20:09:48 — geändert am 23.06.2010 20:11:49
Ich verstehe das mit allen 30 sek einen Ton abspielen, 5 mal, aber wofür die zweite Angabe der Zeit?
Bin grad dabei Java/Android zu lernen und würde mich dem gerne annehmen. Wenn Du mir einen Ton gibst, und das mit der zweiten Zeit erklärst kann ich vlt helfen. |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 24.06.2010 09:19:36
Hey hey super,
besten Dank! Ich werde das ganze mal genau beschreiben wofür ich es benötige, dann versteht man es auch besser. Ich benötige es beim Sport. Und zwar muss ich für gewisse Leistungsprüfungen trainieren. Diese sehen wie folgt aus. Es wird auf einer Laufbahn um ein Fußballfeld gelaufen (400 Meter). Relevant ist jetzt aber erst einmal nur die Hälfte also 200 Meter. Diese 200 Meter sind ein "Hit". Daher heißt diese Prüfung auch Hit-Test. So ein Hit besteht aus einer Kombination aus sprinten (150m) und eine kurzen Regenerationsphase (50m). Allerdings müssen exakt die Zeiten eingehalten werden. 2 Hits sind daher eine Runde um das Spielfeld. Daher wäre eine kleine App super, die mir einfach immer ein kleines Signal gibt wann die Zeit abgelaufen ist, und ich wieder sprinten muss, oder wieder langsam gehen kann! Die Zeiten sind aber nicht immer gleich, daher muss es Variabel bleiben, genauso wie die Anzahl der zu laufenden Hits. Beispiel. Der Test geht los, ich muss nun 150m sprinten und nach z.B. 30 Sekunden kommt der erste Ton, dann weiß ich ob ich schnell genug war und im Zeitfenster liege, oder ob ich etwas zu langsam war und beim nächsten mal schneller sein muss. Wenn nun die Zeit (z.B. 25 sek.) für die Regenartion um sind, kommt der nächste Ton und ich weiß das ich wieder los sprinten muss. Hört sich im Grunde total einfach an, aber das schwirigste an der Geschichte ist es, das richtige Tempo zu finden. Sonst geht einem zu schnell die Puste aus, und nach dem 30. Hit biste blatt xD Ich hoffe das ist erst einmal ausreichend genug! Wie gesagt, besten Dank! |
Alex W. ![]() Rang: Schülersprecher Beiträge: 84 Eintrittsdatum: 04.03.2010 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 24.06.2010 12:27:47
Ah ok, ich denke ich verstehe.
Ich hoffe ich hab das bis über das Wochenende fertig, kann leider erst Samstag anfangen. Aber ich werde mich daran setzen, versprochen :-) Also nochmal zur Wiederholung: Du startest die App und es fängt an den ersten Zeitwert zu zählen (bsp 30 sek). nach den 30 sek kommt der ton. dann ist für den zweiten Zeitwert lang Ruhe angesagt. Wenn dieser zweite Zeitwert um ist, spielt das Programm wieder einen Ton damit Du weist es geht los. Jetzt fängt das Programm wieder bei 0 an. Ja? Gruß Alex |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 24.06.2010 13:04:08
Hey Alex,
nur keine Hektik! Ich glaube nämlich ich bekomme es auch fast selber hin. Habe mal angefangen mich mit Android Entwicklung und Java Tutorials auseinander zu setzen! Und habe mittlerweile die ersten Spielereien hin bekommen. Z.B. ein Eingabefeld und einen Button, wenn man den Button drückt kommt das Eingegebene via Toast auf den Bildschirm. Hört sich lächerlich an, war aber für mich ein Meilenstein bis dort hin xD Vllt. wollen wir es ja so machen, bevor du dir die ganze Arbeit der App-Entwicklung machen musst, ich werde versuchen soweit zu kommen wie ich es schaffe, und wenn ich mal nicht weiter komme, frage ich dich um Rat? Was hältst du davon? Gruß Kevin P.S.: |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 24.06.2010 22:00:21
Hab schon meine ersten zwei Fragen.
Danke MfG |
Alex W. ![]() Rang: Schülersprecher Beiträge: 84 Eintrittsdatum: 04.03.2010 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 26.06.2010 12:05:50
Hi, klar das ist ok. hier hab ich dir eine einfache sound app als Beispiel wie man sound abspielt. Hier per onlick, nicht wie du es brauchst, aber vlt hilft es dir.
1public class PlaySound extends Activity implements OnClickListener {
2 /** Called when the activity is first created. */ 3 int soundId = 0; 4 SoundPool soundPool; 5 AudioManager audioManager; 6 boolean playedSound = false; 7 private Button clickBtn; 8 //Button button = (Button) findViewById(R.id.Button1); 9 @Override 10 public void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.main); 13 clickBtn = (Button) findViewById(R.id.Button1); 14 clickBtn.setOnClickListener(this); 15 soundPool = new SoundPool( 5, AudioManager.STREAM_MUSIC, 0); 16 audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 17 18 try 19 { 20 AssetFileDescriptor descriptor = getAssets().openFd( "vuvuzela_sound_solo_mp.mp3" ); 21 soundId = soundPool.load( descriptor, 1 ); 22 } 23 catch( Exception ex ) 24 { 25 //Log.d( "Sound Sample", "couldn't load sound 'shot.wav'" ); 26 throw new RuntimeException( ex ); 27 } 28 } 29 30 31 public void onClick(View v) 32 { 33 34 int volume = audioManager.getStreamVolume( AudioManager.STREAM_MUSIC ); 35 soundPool.play(soundId, volume, volume, 1, 0, 1); 36 playedSound = true; 37 38 } 39} |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 28.06.2010 08:45:56
super
funktioniert bestens, muss es nur noch anpassen! thx |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 28.06.2010 09:42:07
Yeah die Implementierung hat super geklappt! Besten Dank
Kann mir jemand noch bei dem Punkt "Wie kann ich meine Schleife eine bestimmte Sekundenzahl pausieren lassen?" weiter helfen? Vllt. gibt es ja auch eine andere möglichkeit soetwas zu realisieren...? Gruß Kevin |
Mac Systems ![]()
Rang: Android GoldSenior Beiträge: 1.007 Eintrittsdatum: 21.06.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 28.06.2010 13:01:59
Zeig mal deine Schleife und den Kontext in dem sie rennt, einfach mittels Thread#sleep da was zu machen ist meist nicht das was man machen sollte.
----- |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 28.06.2010 14:56:06
servus,
habe es mittlerweile so geregelt. Eine erste Version läuft auch bereits auf meinem Magic, ist allerdings noch nicht das Gelbe vom Ei! 1while (counter++ < hits) {
2 //Schleife für sprint! 3 soundPool.play(sprinten, volume, volume, 1, 0, 1); 4 try { 5 Thread.sleep((sprint-10)*1000); 6 } catch (InterruptedException e) { 7 // TODO Auto-generated catch block 8 e.printStackTrace(); 9 } 10 soundPool.play(zehn, volume, volume, 1, 0, 1); 11 } |
Mac Systems ![]()
Rang: Android GoldSenior Beiträge: 1.007 Eintrittsdatum: 21.06.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 28.06.2010 16:44:03
Und jetzt musst du uns noch sagen welchen Thread du da zum schlafen bringst ?
Du könntest auch einen TimerTask oder ähnliches benutzen, ist evtl. flexiblere/bessere Lösung
----- |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 29.06.2010 15:16:27 — geändert am 29.06.2010 15:19:17
Phu gute Frage? Wie gesagt, ich habe vorher noch nie Objektorientiert programmiert
Habe momentan leider nicht die Zeit dazu mich da auch voll rein zu hängen (leider)...! Im Grunde erfüllt die App nun meine Grundvoraussetzungen, zwar nicht schön und gut, aber es klappt! Problem z.B. wenn ich die Schleife starte (kann durch aus mal eine halbe Stunde lang sein das Training) ist der Start-Button so lang aktiv (sprich der Screen blockiert) bis die Schleife zu ende ist. Ist natürlich nervig, denn dann hilft nur das Killen der App. Aber wie gesagt, mehr bzw. besser kann ich es nicht! Wenn ihr möchtet kann ich ja mal die ganze Activity posten oder euch schicken, aber ich weiß nicht ob ihr dann lachen, oder heulen werdet Bzw. kann ich auch die .apk online stellen, aber eigentlich gehört so eine "nicht zu beendende App" nicht auch noch veröffentlicht Ggf. werde ich doch nochmal auf das Angebot von aaa w. zurück kommen müssen, mir die App zu erstellen! |
Mac Systems ![]()
Rang: Android GoldSenior Beiträge: 1.007 Eintrittsdatum: 21.06.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 29.06.2010 16:36:32
Ich dachte mir schon das deine APP einfriert, daher auch die Thread Frage.
Nein, poste einfach mal den Code der die Schleife startet, daraus sollte der Thread Kontext ersichtlich werden!
----- |
Alex W. ![]() Rang: Schülersprecher Beiträge: 84 Eintrittsdatum: 04.03.2010 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 29.06.2010 17:43:29
Jo, stell mal Deinen Code rein :-) Dann werden wir Dir bestimmt helfen können.
Gruß Alex |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 30.06.2010 07:34:41
Tja dann schaut euch mal mein Durcheinander an
Über Kritik wäre ich sehr dankbar (bin schließlich totaler Anfänger), aber dann bitte mit kurzer Erklärung! Thx Hier auch nochmals als .java Datei ! 1package de.hit.test;
2 3import android.app.Activity; 4import android.content.Context; 5import android.content.res.AssetFileDescriptor; 6import android.media.AudioManager; 7import android.media.SoundPool; 8import android.os.Bundle; 9import android.view.View; 10import android.view.View.OnClickListener; 11import android.widget.Button; 12import android.widget.EditText; 13 14public class EingabeActivity extends Activity implements OnClickListener { 15 /** Called when the activity is first created. */ 16 int sprinten = 0; 17 int gehens = 0; 18 int ziel = 0; 19 int zehn = 0; 20 int vier = 0; 21 int zwei = 0; 22 SoundPool soundPool; 23 AudioManager audioManager; 24 private Button button; 25 private Button exit; 26 27 @Override 28 public void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.main); 31 32 button = (Button) findViewById(R.id.button); 33 button.setOnClickListener(this); 34 exit = (Button) findViewById(R.id.exit); 35 exit.setOnClickListener(this); 36 37 soundPool = new SoundPool( 5, AudioManager.STREAM_MUSIC, 0); 38 audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 39 40 try { 41 AssetFileDescriptor descriptor = getAssets().openFd( "sprint.wav" ); 42 sprinten = soundPool.load( descriptor, 1 ); 43 44 AssetFileDescriptor descriptor2 = getAssets().openFd( "ziel.wav" ); 45 ziel = soundPool.load( descriptor2, 1 ); 46 47 AssetFileDescriptor descriptor3 = getAssets().openFd( "zehn.wav" ); 48 zehn = soundPool.load( descriptor3, 1 ); 49 50 AssetFileDescriptor descriptor4 = getAssets().openFd( "vier.wav" ); 51 vier = soundPool.load( descriptor4, 1 ); 52 53 AssetFileDescriptor descriptor5 = getAssets().openFd( "zwei.wav" ); 54 zwei = soundPool.load( descriptor5, 1 ); 55 56 AssetFileDescriptor descriptor6 = getAssets().openFd( "gehen.wav" ); 57 gehens = soundPool.load( descriptor6, 1 ); 58 } 59 catch( Exception ex ) { 60 //Log.d( "Sound Sample", "couldn't load sound 'shot.wav'" ); 61 throw new RuntimeException( ex ); 62 } 63 } 64 65 66 public void onClick(View v) { 67 //Variable hits für die Anzahl der Hits 68 EditText hitsvar = (EditText) findViewById(R.id.hits); 69 String hitsvar2 = hitsvar.getText().toString(); 70 int hits = Integer.valueOf( hitsvar2 ).intValue(); 71 //Variable sprint für die Zeit zum sprinten 72 EditText sprintvar = (EditText) findViewById(R.id.sprint); 73 String sprintvar2 = sprintvar.getText().toString(); 74 int sprint = Integer.valueOf( sprintvar2 ).intValue(); 75 //Variable gehen für die Zeit zum gehen 76 EditText gehenvar = (EditText) findViewById(R.id.gehen); 77 String gehenvar2 = gehenvar.getText().toString(); 78 int gehen = Integer.valueOf( gehenvar2 ).intValue(); 79 //Variable für Counter 80 int counter = 0; 81 82 83 84 if (v == button) { 85 int volume = audioManager.getStreamVolume( AudioManager.STREAM_MUSIC ); 86 try { 87 Thread.sleep(5000); 88 } catch (InterruptedException e) { 89 // TODO Auto-generated catch block 90 e.printStackTrace(); 91 } 92 93 while (counter++ < hits) { 94 //Schleife für sprint! 95 soundPool.play(sprinten, volume, volume, 1, 0, 1); 96 try { 97 Thread.sleep((sprint-10)*1000); 98 } catch (InterruptedException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 102 soundPool.play(zehn, volume, volume, 1, 0, 1); 103 104 try { 105 Thread.sleep(6000); 106 } catch (InterruptedException e) { 107 // TODO Auto-generated catch block 108 e.printStackTrace(); 109 } 110 soundPool.play(vier, volume, volume, 1, 0, 1); 111 112 try { 113 Thread.sleep(2000); 114 } catch (InterruptedException e) { 115 // TODO Auto-generated catch block 116 e.printStackTrace(); 117 } 118 soundPool.play(zwei, volume, volume, 1, 0, 1); 119 120 try { 121 Thread.sleep(2000); 122 } catch (InterruptedException e) { 123 // TODO Auto-generated catch block 124 e.printStackTrace(); 125 } 126 127 128 if (counter == hits) { 129 soundPool.play(ziel, volume, volume, 1, 0, 1); 130 } else { 131 //Schleife für gehen! 132 soundPool.play(gehens, volume, volume, 1, 0, 1); 133 try { 134 Thread.sleep((gehen-10)*1000); 135 } catch (InterruptedException e) { 136 // TODO Auto-generated catch block 137 e.printStackTrace(); 138 } 139 soundPool.play(zehn, volume, volume, 1, 0, 1); 140 141 try { 142 Thread.sleep(6000); 143 } catch (InterruptedException e) { 144 // TODO Auto-generated catch block 145 e.printStackTrace(); 146 } 147 soundPool.play(vier, volume, volume, 1, 0, 1); 148 149 try { 150 Thread.sleep(2000); 151 } catch (InterruptedException e) { 152 // TODO Auto-generated catch block 153 e.printStackTrace(); 154 } 155 soundPool.play(zwei, volume, volume, 1, 0, 1); 156 157 try { 158 Thread.sleep(2000); 159 } catch (InterruptedException e) { 160 // TODO Auto-generated catch block 161 e.printStackTrace(); 162 } 163 } 164 } 165 } 166 167 if (v == exit) { 168 System.exit(0); 169 } 170 } 171} |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 11.08.2010 16:38:36
hallo zusammen,
so inzwischen ist einiges an zeit vergangen, aber ich habe immer mal wieder etwas weiter gebastelt. und eigentlich habe ich jetzt schon eine richtig gut funktionierende app. aber könnte mir jemand bei tts (text-to-speech) helfen. ich würde gern das ein oder andere ausgeben lassen. kann ich irgendwie recht einfach eine weitere klasse bilden und dieser den inhalt übergeben der gesprochen werden soll? habt ihr da vllt. schon etwas parat? |
Jochen Rühl ![]()
Rang: Android HiWi Beiträge: 129 Eintrittsdatum: 27.10.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 11.08.2010 20:34:39 — geändert am 11.08.2010 20:48:47
Hi,
parat habe ich gerade nichts, aber mit diesem Beispiel sollte es recht einfach sein: TextToSpeech Beispiel Gruß Jochen |
Kevin D. ![]() Rang: Android Junior Beiträge: 18 Eintrittsdatum: 24.11.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 12.08.2010 12:47:22
danke
diese seite hatte ich auch schon gefunden, komme damit aber nicht klar. liegt aber wohl eher an meinem mangelnden wissen. bin froh jetzt zwei activitys hinbekommen zu haben ;) |
Jochen Rühl ![]()
Rang: Android HiWi Beiträge: 129 Eintrittsdatum: 27.10.2009 |
RE: Hilfe bei der Entwicklung einer kleinen App gesucht verfasst am 13.08.2010 09:43:43
Hi,
ok, ich versuche es mal für Dich einfach zu machen. Ist vielleicht nicht die "reine Lehre" aber sollte funktionieren. Hier mal die Klasse, die die TTS Initialisierung und die Sprachausgabe übernimmt: 1import java.util.Locale; 2import java.util.concurrent.CountDownLatch; 3 4import android.content.Context; 5import android.speech.tts.TextToSpeech; 6 7public class TextToSpeechService implements TextToSpeech.OnInitListener { 8 private int status; 9 private CountDownLatch countdownLatch; 10 private TextToSpeech textToSpeech; 11 12 public Integer init(Context context) { 13 countdownLatch = new CountDownLatch(1); 14 textToSpeech = new TextToSpeech(context, this); 15 16 // Wait for service to initialize 17 try { 18 countdownLatch.await(); 19 } catch (InterruptedException e) { 20 e.printStackTrace(); 21 status = TextToSpeech.ERROR; 22 } 23 24 return status; 25 } 26 27 public Integer speak(String text, Locale locale) { 28 if(textToSpeech != null) { 29 int result = textToSpeech.setLanguage(locale); 30 if (result == TextToSpeech.LANG_MISSING_DATA || 31 result == TextToSpeech.LANG_NOT_SUPPORTED) { 32 return result; 33 } else { 34 textToSpeech.speak(text, 35 TextToSpeech.QUEUE_ADD, 36 null); 37 38 return TextToSpeech.SUCCESS; 39 } 40 } 41 42 return TextToSpeech.ERROR; 43 } 44 45 public int getStatus() { 46 return status; 47 } 48 49 @Override 50 public void onInit(int status) { 51 this.status = status; 52 countdownLatch.countDown(); 53 } 54} In Deine Aktivity könntest Du das dann so einbinden: 1TextToSpeechService tts = new TextToSpeechService(); 2if(tts.init(getApplicationContext()) == TextToSpeech.SUCCESS) { 3 tts.speak("Hallo", Locale.getDefault()); 4} Die Verzögerung bei der Initialisierung sollte nicht zu gravierend sein. Hoffe das hilft Dir weiter... Gruß Jochen |