Startseite › Foren › Deutsches LiveCode-Forum › Wecker
Schlagwörter: Wecker
- Dieses Thema hat 25 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren von Oliver122.
-
AutorBeiträge
-
-
September 30, 2021 um 21:18 Uhr #37037
Hallo zusammen,
ich möchte eine Wecker App machen, kann aber den Alarm nicht stoppen. Ich habe es folgendermaßen gemacht:
on aktuallisieren set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then zeitprüfen end if send aktuallisieren to me in 1 seconds end aktuallisieren
on zeitprüfen set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then revSpeak "Der HERR ist mein Hirte, mir wird nichts mangeln." #Er weidet mich auf einer grünen Aue und führet mich zum frischen Wasser.Er erquicket meine Seele. Er führet mich auf rechter Straße um seines Namens willen." end if send aktuallisieren to me in 1 seconds end zeitprüfen
Man hat die Möglichkeit über einen “Weiterschlafen” die Weckzeit 10 min. weiterzudrücken oder mit einenm anderen Knopf, den Wecker abzustellen, indem man fld Weckzeit deaktiviert.
Das Problem ist folgendes:
Drückt man eine der beiden Tasten, direkt nach dem der Wecker angefangen hat, liest er den Text noch dreimal. Drückt man nach ca. einer Minute, dauert es ewig.
Ich habe es auch mit einer WAV Datei versucht und stop playing “Datei”. Das funktioniert aber auch nicht.
Kann jemand helfen.
Grüße Oliver
-
September 30, 2021 um 21:31 Uhr #37039
Hi Oliver,
benutzt Du einen Player oder -> play ac “Dein Sound.wav”
ac = Abkürzung für audioclipWenn Player:
... stop player "dein playername hier" ...
Wenn importierter Audioclip, dann einfach nur:
... play stop ...
Gruß
Klaus
-
Oktober 2, 2021 um 13:34 Uhr #37110
Whow!
Mit diesem Thema hast Du mich daran erinnert, daß ich so etwas einmal angefangen habe. Allerdings bin ich über das grundlegende Interface nicht hinausgekommen 😉
Dank Deinem Hinweis habe ich nun begonnen, ein Code-Gerüst zu erstellen. Und bin aus allen Wolken gefallen: Das ist ja viel aufwendiger, als ich mir das vorgestellt hatte!
Meine Idee war:
- Das Interface soll so einfach wie möglich sein, da das Ding auch aufm Tablet laufen soll. Also so wenig Controls wie möglich.
- Da sowieso eine Zeitmessung drin ist, 3 Funktionen:
– Wecken (“Wecker”, Eingabe: Uhrzeit, mit ‘Snooze’),
– Countdown (“Eieruhr”, Eingabe: Minuten, mit Unterbrechen) und
– Zeitnahme (“Stopuhr”, Eingabe: mit Unterbrechen);
Die Art der Zeit-Eingabe bestimmt, welche Funktion läuft. - Eine Scrollbar, die den Fortschritt graphisch anzeigt.
- Möglicherweise 2 oder mehr gestaffelte “Alarme” – erst leise, dann lauter?
- Bedienung, wenn möglich, nur per Maus/ Touch.
Was fehlt?
Dafür brauche ich folgende variable Werte:
- Das Aktualisierungsintervall für den Timer;
- Eine max. “Läutdauer” – das Ding soll ja nicht Tage lang wecken …
- Die Zeit, wie lange “Snooze” wartet, bis es wieder los geht.
- Einen Wert, wie oft “Snooze” benutzt werden kann.
- Einen Wert, wann auf den nächsten Alarm gewechselt wird.
- Informationen, was bei den einzelnen Alarmen passieren soll.
Puh, schon eine ganze Menge. Diese Informationen sollten veränderbar sein, aber, einmal eingestellt, erhalten bleiben. Also braucht es ein “Preferences”-System.
Um das alles zu bedienen, braucht es min. 3 Karten:
- Zentrale, wo die Alarme gestartet/ gestoppt werden & wo eine Zustands-Übersicht angezeigt wird.
- Zeiteingabe.
- 1 oder mehrere “Preferences”.
Interessant. Schon beim Aufschreiben hier sind mir einige Sachen eingefallen, an die ich vorher gar nicht gedacht hatte 😉
Habe ich noch etwas übersehen?Beide, sowohl mein Koch-Timer als auch mein Reisewecker, bereiten sich gerade auf den wohlverdienten Ruhestand vor und sehen nicht mehr sooo gesund aus. Ersatz muß her, aber ich bin da etwas eigen – was so auf dem Markt ist, taugt mir alles nicht richtig. Also selber bauen, fürs Tablet!
Darum werde ich dieses Projekt fertigstellen, früher oder später.
Sollte jemand daran interessiert sein, ich bin offen für Wünsche & Vorschläge (soweit sie Sinn machen & zu dem passen, was ich mir vorstelle).Ich schreibe das mit der 6.7.10/Win32 Community edition. Also GPL v3 & damit für jeden verwendbar, der das mit seinem Gewissen & den für ihn geltenden Lizenzbestimmungen vereinbaren kann.
Bei Interesse werde (in Deutsch kommentierte) Versionen auf meinem Webspace zur Verfügung stellen. Da dabei einige Tricks aus meinen kommerziellen Projekten einfliessen werden, könnte das auch als Programmier-Beispiel interessant sein.
Interesse? Melden! Viel Spaß!
-
Oktober 3, 2021 um 17:14 Uhr #37152
Hallo Klaus,
es funktioniert irgendwie nicht. Ich benutze ein ac.
Habe das mal zusammengeschrieben.on aktuallisieren set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then play klangpfad&"alarm.wav" send aktuallisieren2 to me in 1 seconds end if send aktuallisieren to me in 1 seconds end aktuallisieren on aktuallisieren2 if item 1 of fld "Weckzeit" <> item 1 of fld "Uhr" or item 2 of fld "Weckzeit" <> item 2 of fld "Uhr" or the visible of fld "Weckzeit" = false then play stop send aktuallisieren to me in 1 seconds end if if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then set the twelvehourtime to false put the long time into fld "Uhr" send aktuallisieren2 to me in 1 seconds end if end aktuallisieren2
Das Problem:
Wenn die drei Bedingungen eintreten, sagt er ca. 5 die ersten zwei Worte des ac und hängt sich dann auf.
Die Uhr läuft zwar weiter, aber ist nicht mehr bedienbar.
Wenn man hingegen die Weckzeit um 13:59 und 58 sec. auf 13:59 einstellt, sagt er die ersten zwei Worte, bis 14:00, also wenn die Bedingung nicht mehr passt und fängt dann an, den Clip richtig abzuspielen und lässt sich dann auch nicht mehr stoppen.Grüße Oliver
-
Oktober 5, 2021 um 13:26 Uhr #37269
Hi Oliver,
ich bin mir nicht sicher, denke aber, daß sich hier die Befehle sammeln** und irgendwann verscuht werden, von der Engine abgearbeitet zu werden.
**Es werden jede Sekunde ZWEI Befehle geSENDet, das könnte das Problem sein.
Ich denke, Du benötigst nur EINEN Handler wie hier, der sollte alles abdecken.
Bitte die Kommentare lesen!on aktualisieren set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" ## Weckzeit erreicht, nun den Sound abspielen if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then ## Zusammengesetzte Pfad- und Objektnamen immer in Klammern! play (klangpfad & "alarm.wav") else ## Sound anhalten, es gibt auch keine Fehlermeldung, wenn gerade kein Sound spielt! play stop ## Was, wenn Dein Wecksound länger als eine Sekunde dauert? ## dann wird er gnadenlos abgewürgt! Willst Du das? ## Wenn nicht, einfach den ELSE Falls ganz weglassen end if ## Zu SENDende Befehle immer in Anführungszeichen! send "aktualisieren" to me in 1 seconds end aktuallisieren
Gruß
Klaus
-
Oktober 6, 2021 um 15:53 Uhr #37351
Hi Klaus,
das hat mich weitergebracht und funktioniert mit einer kleinen Änderung unter Win 10 einwandfrei.
Das ganze soll aber unter Android laufen und ich habe jetzt erst gesehen, dass play stop nicht unter Android funktioniert.Wie kann man das denn für Android machen? Ich habe bisher nichts passendes gefunden.
Gruß Oliver
-
Oktober 6, 2021 um 15:57 Uhr #37354
Ich hatte s mit
mobileStopPlayingOnChannel (klangpfad & "alarm.wav")
versucht. Das wirft aber nur einen Fehler aus.
-
Oktober 6, 2021 um 16:05 Uhr #37355
Hi Oliver,
unter Android geht es auch mit PLAY aber mit dem Zusatz FILE:
... play file (klangpfad & "alarm.wav") ...
Einen so gestarteten Sound anhalten:
... play EMPTY ...
Gruß
Klaus
-
Oktober 6, 2021 um 16:29 Uhr #37356
Hi Klaus,
danke jetzt funktioniert es. Ist nur schwierig drauf zu kommen, wenn der Befehl nicht zu finden ist.
Gruß Oliver
-
Oktober 6, 2021 um 18:52 Uhr #37363
Naja, es gibt genau drei Einträge im Dictionary zu PLAY.
Und bei jedem steht das Betriebsystem dabei, auf dem der Befehle funktioniert. -
Oktober 8, 2021 um 17:10 Uhr #37451
Hallo zusammen,
im Grunde funktioniert jetzt alles einwandfrei. Wenn der Bildschirm aber ausgeschaltet, wird klingelt er nicht. Muss man extra programmieren und wenn ja wie, dass der Wecker auch anspringt, wenn das Gerät auf Standby, bzw. Bildschirm aus ist?
LG.
Oliver -
Oktober 8, 2021 um 18:17 Uhr #37456
Nur der Bildschirm ausgeschaltet oder das ganze Gerät?
-
Oktober 8, 2021 um 18:19 Uhr #37457
Hi Klaus,
nur der Bildschirm.
LG. Oliver
-
Oktober 8, 2021 um 18:30 Uhr #37458
Hm, ixh dachte, dann sollte es funktionieren.
Tut mir leid, ich muss die Frage weitergebe, so gut kenne
ich mich noch nicht mit Handies aus.Hattest du eigentlich meine Mail bezüglich Deines “zaehler.livecode” erhalten?
-
Oktober 8, 2021 um 18:50 Uhr #37459
Ja habe ich, wenn das die war , wo ich geschrieben habe, dass ich das Ding erstmal liegen lasse.
Ich kümmere mich später um die App. Den Wecker hatte ich meiner Frau versprochen.
Solange der Bildschirm an ist, funktioniert alles. Man kann, soviel ich gesehen habe, aber nur einstellen, das der Bildschirm nicht ausgeht, wenn das Gerät am Netz ist. Der Bildschirm kann ja ausgehen, aber klingeln sollte der Wecker schon.
Danke Klaus.
Kann jemand anders was hierzu sagen?
-
Oktober 8, 2021 um 18:54 Uhr #37460
Ja habe ich, wenn das die war , wo ich geschrieben habe, dass ich das Ding erstmal liegen lasse.
Wahrscheinlich, aber eine kurze Empfangsbestätigung wäre schon ein feiner Zug…
-
Oktober 8, 2021 um 20:07 Uhr #37461
Hi Oliver,
“Aufwecken” kann man seine App mit mobileCreateLocalNotification.
Verhindern, dass der Bildschirm ausgeht, geht mit “mobileLockIdleTimer”.
Happy Skripting
Torsten -
Oktober 8, 2021 um 20:27 Uhr #37462
Hi zusammen,
@ Klaus ja da hast du Recht. Sorry.
@ Torsten danke probiere ich gleich mal.
-
Oktober 8, 2021 um 20:41 Uhr #37463
Hi Torsten,
es ist dann eigentlich nur in dem handler sinnvoll:
on aktuallisieren set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and the visible of fld "Weckzeit" = true then put random(8) into DieZahl play (klangpfad & DieZahl & ".wav") looping aktuallisieren2 else play stop # für Android #play empty send aktuallisieren to me in 1 seconds end if end aktuallisieren
Ich vermute nach random. Aber wie muss es dann aussehen? Wenn die if Bedingung erfüllt ist, sucht sich das Programm einen ac aus 8 aus und spielt diesen. Wie muss es aussehen, das des auch bei ausgeschaltetem Bildschirm funktioniert?
Ich habe mir das angesehen. mobileCreateLocalNotification angesehen, verstehe das aber gar nicht.
Danke im Voraus.
-
Oktober 8, 2021 um 20:55 Uhr #37464
Ich habe es unter die if Bedingung geschrieben:
mobileCreateLocalNotification the seconds + 10, true, "0"
Fehler: can’t find handler. Aber er ist doch in einem.
-
Oktober 9, 2021 um 15:18 Uhr #37493
Hallo zusammen,
aktuell sieht es bei mir so aus:
on aktuallisieren set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and item 3 of fld "Weckzeit" = item 3 of fld "Uhr" and the visible of fld "Weckzeit" = true then put random(8) into DieZahl put fld "Weckzeit" into sendezeit if the environment is "mobile" then #mobileCancelAllLocalNotifications mobileCreateLocalNotification sendezeit, true play (klangpfad & DieZahl & ".wav") looping aktuallisieren2 end if else play empty send aktuallisieren to me in 1 seconds end if end aktuallisieren
Ich habe es natürlich auch versucht ohne mobileCancelAllLocalNotifications auszukommentieren und noch andere Varianten.
Aber egal wie ich es mache. Das Ergebnis ist immer, dass das Programm, beim Erreichen der Weckzeit beendet wird.
Kann hier jemand weiterhelfen?
Grüße Oliver
-
Oktober 9, 2021 um 18:52 Uhr #37502
Hi Klaus,
danke für deine Mail vom 05.10. Ich wusste nicht, dass du die weiter oben gemeint hast.
Die hatte ich nicht gesehen und deshalb auch nicht geantwortet.Habe jetzt erst in die Mails geschaut.
Danke das du sich damit befasst. Damit mache ich mich in jedem Fall auch noch vertraut.
Der Wecker funktioniert ja soweit. Nur das mit dem Standy klappt nicht. Habe den Wecker aber meiner
Frau versprochen. Deshalb möchte ich den erstmal hinbekommen.Grüße Oliver
-
Oktober 10, 2021 um 17:49 Uhr #37547
Hi Oliver,
alles klar!
OK, spontane Idee:
1. weckzeit, also der Parameter, der bestimmt, wann die LOCAL Notification abegeschickt werden soll muss in SEKUNDEN angegeben werden nicht im SMPTE Format 00:01:02.“the seconds” = JETZT! Wie in -> put the seconds
Daher musst Du die eigentlich Weckzeit erst wieder in Sekunden umrechnen und als Parameter angeben.2. Es fehlen eine Menge an wichtigen Parameter bei -> mobileCreateLocalNotification
3. Bin ich mir nicht sicher, ob das überhaupt so funktionieren wird!
Also wenn beim Ruhezustand schon z.B -> play FILE (klangpfad & “alarm.wav”)
nicht abgearbeitet wird, warum sollte der Rest dann funktionieren?Aber wie gesagt, ich habe keine erfahrung mit mobileCreateLocalNotification,
daher bitte jemand anderer hier kompetent übernehmen, danke!Gruß
Klaus
-
Oktober 10, 2021 um 18:25 Uhr #37551
Hast Du es schon mal mit “send” probiert?
Im Sinne von
send "play_alarm" to me in XYZ seconds
wobei die Sekunden eben die Differenz zwischen der Zielzeit und der Zeit des Speicherns des Alarms ist?
Happy Scripting
Torsten -
Oktober 10, 2021 um 18:25 Uhr #37552
Hi Klaus,
danke für die Info.
So wie ich das jetzt geändert habe, müsste mobileCreateLocalNotification in Sekunden angegeben sein.
Das Programm geht aber, bei Erreichen, der Zeit einfach aus.Was die fehlenden angaben angeht. So wie ich das Dictonary verstehe, sind es nur Textteile, die z.B. gesendet werden soll. Aber hier soll ja nichts geschrieben werden, sondern nur das Handy aus dem Ruhemodus
gehen und der Wecker klingeln.Was play FILE (klangpfad & “alarm.wav”) angeht. File lasse ich weg, weil es nicht funktioniert. Ohne File geht es.
Der Wecker kommt ja nur nicht aus dem Ruhemodeus. Lasse ich mobileCreateLocalNotification weg und
das Gerät ist noch nicht im Ruhemodus, funktioniert alles.Zu Punkt 3: Ist die If nicht erfüllt, läuft ja nur die Uhr. Ich hoffe, weiß aber nicht ob er das im Ruhezustand macht
global weckenaddieren, klangpfad, programmPfad, DieZahl, sendezeit on openstack put specialFolderPath ("resources") into programmPfad put programmPfad &"/klang/" into klangpfad aktuallisieren end openstack on aktuallisieren local mobileCreateLocalNotification set the twelvehourtime to false put the long time into fld "Uhr" set the itemDelimiter to ":" if item 1 of fld "Weckzeit" = item 1 of fld "Uhr" and item 2 of fld "Weckzeit" = item 2 of fld "Uhr" and item 3 of fld "Weckzeit" = item 3 of fld "Uhr" and the visible of fld "Weckzeit" = true then put random(8) into DieZahl put the seconds into sendezeit if the environment is "mobile" then #mobileCancelAllLocalNotifications mobileCreateLocalNotification sendezeit, true play (klangpfad & DieZahl & ".wav") looping aktuallisieren2 end if else play empty send aktuallisieren to me in 1 seconds end if end aktuallisieren on aktuallisieren2 set the twelvehourtime to false put the long time into fld "Uhr" send aktuallisieren2 to me in 1 seconds end aktuallisieren2 on weckeran if the hilited of btn "Weckerein" = false then hide fld "Weckzeit" play empty send aktuallisieren to me in 1 seconds else show fld "Weckzeit" put "06:30:00" into fld "Weckzeit" end if end weckeran on WZeitEinstellung show grp "WZeitEinstellen" put "06:30:00" into fld "Field2" of grp "WZeitEinstellen" end WZeitEinstellung on EinstellungFertig put fld "Field2" of grp "WZeitEinstellen" into fld "Weckzeit" hide grp "WZeitEinstellen" send aktuallisieren to me in 1 seconds end EinstellungFertig on Schlafdauer play empty send aktuallisieren to me in 1 seconds set the itemDelimiter to ":" if item 1 of fld "Weckzeit" < 23 and (item 2 of fld "Weckzeit" + 10) >59 then wecken1 end if if item 1 of fld "Weckzeit" = 23 and (item 2 of fld "Weckzeit" + 10) >59 then wecken2 end if if item 1 of fld "Weckzeit" < 23 and (item 2 of fld "Weckzeit" + 10) <= 59 or item 1 of fld "Weckzeit" = 23 and (item 2 of fld "Weckzeit" + 10) <=59 then wecken3 end if if weckenaddieren < 10 then put 0 before weckenaddieren end if put weckenaddieren into item 2 of fld "Weckzeit" end Schlafdauer on wecken1 set the itemDelimiter to ":" add 1 to item 1 of fld "Weckzeit" put item 2 of fld "Weckzeit" into weckenaddieren add 10 to weckenaddieren subtract 60 from weckenaddieren end wecken1 on wecken2 set the itemDelimiter to ":" put 0 into item 1 of fld "Weckzeit" put item 2 of fld "Weckzeit" into weckenaddieren add 10 to weckenaddieren subtract 60 from weckenaddieren end wecken2 on wecken3 set the itemDelimiter to ":" put item 2 of fld "Weckzeit" into weckenaddieren add 10 to weckenaddieren end wecken3
@ Torsten. Kannst du hier helfen?
-
Oktober 10, 2021 um 18:26 Uhr #37553
Das ist jetzt einfach mal das ges. Skript.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.