• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Timerprobleme bei iPhone. Brauche schnellstens Hilfe

Seit Wochen bastel ich nun an meinem ersten Wherigo. Mit Androiden funktioniert alles perfekt. Doch leider musste ich jetzt feststellen das die ganzen Timerfunktionen beim iPhone überhaupt nicht funktionieren. Ich weiß das es schon den ein oder anderen Forenbeitrag zu dem Thema gibt aber das hat mich bisher leider auch nicht weiter geholfen.

Zur Funktion:
Der Spieler soll innerhalb einer bestimmten Zeit eine Strecke zurücklegen. Erreicht er die Zone vor Ablauf des Countdowns nicht muss er die Straßrunde gehen.

Die vorgegebene Zeit beträgt 110 Sekunden die der Spieler auch auf dem Display verfolgen kann. Das iPhone hingegen zeigt nach 67 Sekunden das ich in der vorgegebenen Zeit die Zone nicht erreicht habe und die Strafrunde gehen muss.
Hab gelesen das bei der Countdownfunktion des iPhones immer wieder Probleme auftreten können also habe ich es nun mit INTERVALL statt COUNTDOWN versucht. Klappt auch alles wunderbar außer die Zone wird nun tatsächlich in den 110 Sekunden nicht erreicht, dann wird ständig der Bildschirm "DU WARST ZU LANGSAM" eingeblendet aber das Spiel lässt sich nun nicht weiter spielen weil immer ein und der selbe Bildschirm angezeigt wird. Denke mal es wird am INTERVALL-Timer liegen da der ja bei Ablauf der Zeit nicht selbstständig aus geht wie beim Countdown.
Aber es muss doch irgend eine Möglichkeit geben das zu realisieren.

Vielen Dank
Totalblue
 

Anhänge

  • Screenshot Timerintercountdown.jpg
    Screenshot Timerintercountdown.jpg
    46,9 KB · Aufrufe: 1.277
  • Screenshot Timerintervall.jpg
    Screenshot Timerintervall.jpg
    52,9 KB · Aufrufe: 1.277

AoiSora

Geocacher
Warum hast du beim Intervall 12345 Sekunden als Dauer?

Kann jetzt für Urwigo nicht 100% sichere Aussagen treffen, aber ich kenn es so, dass der Intervalltimer niemals anhält, es sei denn, man hält ihn selbst an (im Gegensatz zum Countdown, der nach Ablauf selbst anhält).
Die Dauer beim Intervall gibt eigentlich an, in welchen Abständen ein Event ausgelöst wird.
Ich mach das halt so, dass ich den Intervalltimer auf 1 Sekunde stelle. Beim Event wird eine Variable jedesmal um 1 hochgezählt. Diese Variable vergleiche ich dann mit meinen Zeitlimits. Wenn sie drüber ist passiert halt Fall A und wenn drunter dann Fall B.
Achja und beim Erreichen der Zielzone bzw. der max. Zeit den timer stoppen
 
OP
T

Team TotalBlue

Geocacher
Hallo AoiSora,
ich habe deinen Vorschlag "Timerintervall erhöhen und vergleichen" gerade ausprobiert (Bild im Anhang) aber leider habe ich da genau das selbe Problem wie bein herunterzählen, das nach abgelaufenem Timer immer wieder "IHRE ZEIT IST ABGELAUFEN" erscheint. Drücke ich dann auf WEITER kommt wieder der selbe Text. Das Spiel soll an der Stelle ja noch lange nicht enden. Brauche einen Vorschlag das der Spieler nach abgelaufenem Timerintervall trotzdem weiterspielen kann ohne das er den Bildschirm sieht. Bitte helft mir. Hab so lange am Rechner verbracht um die Cartridge zu erstellen und jetzt liegt es nur noch an dem Timerproblem.
Wäre schade wenn den Cache nur Androiden spielen können.
LG TotalBlue
 

Anhänge

  • Intervalltimer aufsteigend.jpg
    Intervalltimer aufsteigend.jpg
    55,5 KB · Aufrufe: 1.228

jonny65

Geomaster
Pass mal die beiden Zonen aus dem Beispiel
http://www.das-wherigo-handbuch.de/index.php?title=Programmierbeispiele/Codesnipsel#Timer

an deine Location daheim an, laufs mit dem iPhone ab und guck ob das so geht wie gewünscht.
 
OP
T

Team TotalBlue

Geocacher
Danke Jonny,
im Simulator klappt das suuuuuper.
Ich probier das gleich mal in natura aus.
Vielen Dank im voraus. :D

Melde mich ob geklappt hat.
 
OP
T

Team TotalBlue

Geocacher
Also...ich sag mal so.
Laut dem Beispiel von http://www.das-wherigo-handbuch.de/index.php?title=Programmierbeispiele/Codesnipsel#Timer funktioniert es auf dem Androidgerät als auch auf dem iPhone. Leider läuft die Zeit beim iPhone nur doppelt so langsam ab wie es sein sollte. Mit anderen Worten hat der Spiele über die doppelte Zeit um die Strecke der beiden Stationen zu erreichen. :(
Ich gebs auf. :(
Muss wohl am iPhone bzw. am iPhone-Player liegen. :kopfwand:
 

jonny65

Geomaster
Reproduzierbar ? Ist das IMMER so ? Wenn ja, musst du einen Weg finden, das Gerät zu erkennen.
Wenn iPhone dann setz den Zeitzähler z.b auf 40, wenns ein andres Gerät ist, dann auf 80.
Wie gesagt, nur wenn es eindeutig und immer auftritt, was ich mir ehrlich gesagt überhaupt nicht vorstellen kann, denn dann müsste in allen Wherigos dieser Welt so eine Fallunterscheidung bei Verwendung von Timern benutzt werden.
 
OP
T

Team TotalBlue

Geocacher
Habe das Problem nun so gelöst.
Anfangs wählt der Nutzer zwischen Apple oder Androidgerät.
Beim Androiden läuft somit alles wie es sein sollte...heißt...visueller ablaufender Timer entspricht dem realen Countdown.
Beim iPhone läuft der Timer herunter aber die Zeit wird nicht visuell angezeigt....legedlich als Nachricht auf dem Display.....du hast ... Sekunden um zu fliehen.
Nochmal danke für eure Bemühungen.
LG TotalBlue
 

Charlenni

Geomaster
Äh, wenn es halb so schnell abläuft, warum dann beim iPhone nicht die halbe Zeit geben, also z.B. statt 60 s nur 30 s. Die brauchen ja dann auch 60 s zum Ablaufen. Und angegeben werden dann nicht Sekunden, sondern eine beliebige Einheit, z.B. Ticks.
 

jonny65

Geomaster
War ja mein Reden, aber mit Timern kennt sich hier offenbar keiner aus und/oder es haben alle hier nur Oregons. Auch zu meinem Telefonbeispiel weiß niemand Rat, genau DAS wäre ja die Möglichkeit es rauszukriegen. Klingelt das Tel und wenn ja in welchem Intervall.
Ich brauch das auch dringend für einen Countdown einer Bombe, parallel dazu läuft eine Sirene und beim Ablauf kommt die Explosion. Genau das soll natürlich zusammenfallen, also Sirene, Explosion, Soundende und Meldung/Bild am Schluss. Exakt 20 Sekunden geht das MP3 und dann ist es natürlich Müll, wenn der Timer (in Wirklichkeit) 40 Sekunden läuft. Dann kommt "Zeit bis zur Detonation : 20 Sekunden" in dem Augenblick wo die Bombe hochgeht.
Wie ist das Erkennungsmuster beim iPhone (Environment / Platform) ?
 

Charlenni

Geomaster
Warum nicht eine Sounddatei für die Sirene, welche bei Ablauf der Zeit mit Wherigo.Command("StopSound") gestoppt wird und gleich die Sounddatei mit Sirene und Explosion startet. Die Sounddatei mit der Sirene sollte dann aber auch das langsamste Gerät abdecken, also genügend lange sein.
 

jonny65

Geomaster
Echt einfach "IPHONE" ? Keine kryptischen Sachen ? Und die andren Smartphones dies so gibt, haben die alle den gleichen String oder unterschiedliche ? Würde aber wohl reichen, wenn man Garmin und iPhone hat für Fallunterscheidungen.

2 Sounddateien wäre ne Idee, der angezeigte Countdown wäre dann halt wohl trotzdem nix, außer wir schaffen es noch rauszukriegen wie iPhone und die andren ticken, im Simu passt es auf die Sekunde genau.
Der Spieler mit dem "langsamen" Timer wird aber doch Vorteile haben, bei ihm geht die Sirene doppelt so lang.
 

docfred

Geocacher
Das mit den langsamen Timern ist ein Bug des IPhone-Players.
Da alle anderen richtig funktionieren, reicht es auf IPHONE zu prüfen. Dann die halbe Zeit setzen.

Gesendet von meinem HTC Sensation Z710e mit Tapatalk 2
 

Charlenni

Geomaster
Nun ja, die eigentliche Zeichenkette ist noch etwas länger. Aber da die Version des Betriebssystemes hier nicht weiter interessiert und im Laufe der Zeit eher hinderlich ist, ist es so am Besten.

Das mit der Sirene ist doch keine Schwierigkeit. Wenn Du einen Timer mit 60 Sekunden hast, dann überprüfst Du vor dem Start auf ein iPhone und wenn Du eines vorfindest, dann halbierst Du die Zeit. Fertig. Haarig wird es erst, wenn der Fehler im Player korrigiert wird ;-)
 

jonny65

Geomaster
Mit der Timerhalbierung ist inzwischen klar, muss das nur noch mal sicher verifizieren, v.a ob es noch mehr Macken gibt. Intervall und Timerneustart ist mir auch noch nicht ganz geheuer, weswegen ich auch alles auf Countdown umgestellt hab, selbst predästinierte Intervallevents wie Telefonklingeln oder minütlicher Verlust von Lebensenergie.

An Bugfixes seitens WIG Player hab ich auch schon gedacht. Die Message "Du hast für die 100 Meter genau 20 Sekunden Zeit" (was ja dann beim iPhone 10 entspricht) erscheint dann nachwievor, aber der iPhone Spieler hat dann auf einmal nur 10 (echte) Sekunden Zeit, weil 1 Sekunde wieder 1 Sekunde is :D :D

Hoffentlich kommt also kein Bugfix :/
 

jonny65

Geomaster
Ich hab mal 2 iPhone User testen lassen und das Ergebnis ist sehr ernüchternd. Beide Timertypen funktionieren nicht so wie sollten. Intervall soll alle 4 Sekunden eine Aktion auslösen. Dabei hab ich sowohl onStart als auch onElapsed belegt. Auch der Typ Countdown der nach 4 Sekunden erneut aufgerufen funzt nicht. In dem Fall wird die Aktion nur 1 mal ausgeführt, danach nicht mehr.
Es gehen also alle Intervallaktionen nicht wie Telefonklingeln, Abstandsanzeige (Du bist noch 50, 40, 30 .... Meter vom Ziel entfernt), alle 30 Sekunden verliert man Lebensenergie in einer unsichtbaren Zone usw usw

Mit der Zeit eines Timerticks ist es so wie vermutet, 1 Timertick (1 echte Sekunde) = 2 Sekunden. Gerade bei so Dingen wie Warterzeit oder "Wettläufen" muss das berücksichtigt werden.
Es würde sonst nach 40 (echten) Sekunden angezeigt werden "Du hast die Strecke in 20 Sekunden zurückgelegt". Synchronisation von Zeit, Sound und Meldungen ist natürlich auch nicht gegeben.

Workaround z.b bei Countdown ebenfalls wie vermutet Timerzeit halbieren und pro Tick bei einer Variablen 2 abziehen. In einer Anzeige würde dann halt erscheinen "Du hast noch 20....18.....16 Sekunden Zeit", Timerzeit in dem Beispiel auf 10 Sekunden. Variable RestZeit auf 20 setzen und dann RestZeit=RestZeit-2. Eine Sounddatei die für die Dauer des Countdwon laufen soll (z.b Sirene) muss aber 20 Sekunden lang sein !

Da beide Tester unabhängig das gleiche berichten und das ganze (alle Fälle) auf dem Garmin und Simulator funktoniert, denk ich diese Erkenntnis ist repräsentativ.
 

jonny65

Geomaster
Es gibt neue Erkenntnisse bzgl. Timer und iPhone, die ich hier der Allgemeinheit kundtun will. Charlenni (vielen Dank nochmal) hat auf 2 Geräten (iPhone 4 und 4s) mal eine Testcartidge von mir laufen lassen und die Timerzeiten mit den "wahren" verglichen. Da kam nun raus, daß nur im absolut untersten Zeitbereich, also 5 oder sogar nur 3 Sekunden und weniger Unterschiede deutlich sind. Bei längeren Zeiten, also z.b 20 Sekunden und mehr fällt das so gut wie gar nicht mehr ins Gewicht. Die Testcartridge befindet sich im Anhang. Achja, wer ne Idee hat einen Intervalltimer (mit 1 Intervall) geschickter zu stoppen :???: , bitte posten :/

Also, hier die Ergebnisse. Erste Spalte ist die eingestellte Zeit, die zweite Spalte ist die gemessene Zeit vom Display, die dritte die mit der Stoppuhr gemessene.
iPhone 4S

Countdown
1 s -> 1.3 s -> 2.0 s
5 s -> 5.8 s -> 6.5 s
10 s -> 10.2 s -> 10.9 s
20 s -> 21.0 s -> 22.0 s
30 s -> 30.4 s -> 31.2 s
60 s -> 60.2 s -> 63.2 s

Intervall
1 s -> 1.2 s -> 2.0 s
5 s -> 5.2 s -> 6.0 s
10 s -> 10.8 s -> 11.6 s
20 s -> 20.8 s -> 21.6 s
30 s -> 31.0 s -> 31.7 s
60 s -> 60.4 s -> 61.1 s

iPhone 4

Countdown
1 s -> 1.9 s -> 3.0 s
5 s -> 6.0 s -> 7.2 s
10 s -> 11.1 s -> 12.6 s
20 s -> 20.4 s -> 21.1 s
30 s -> 31.1 s -> 32.2 s
60 s -> 60.6 s -> 61.7 s

Intervall
1 s -> 1.9 s -> 3.1 s
5 s -> 6.1 s -> 7.2 s
10 s -> 11.4 s -> 12.8 s
20 s -> 21.0 s -> 22.2 s
30 s -> 31.1 s -> 32.3 s
60 s -> 60.3 s -> 61.4 s
 

Anhänge

  • zeitmessung.zip
    45 KB · Aufrufe: 8

Charlenni

Geomaster
Klar. Man muss einfach den Timer im OnTick ereignis wieder stoppen.

Code:
function ztimerTimer1:OnTick()
  ztimerTimer1:Stop()
  -- Was man sonst noch machen möchte
end
 

jonny65

Geomaster
Dann mal alle die Hefte weg, wir schreiben eine Klassenarbeit.
Gegeben ist ein Item "Anzeige" mit dem Kommando "Los", dieses startet einen Intervalltimer mit 5 Sekunden Dauer. Desweiteren eine numerische Variable "Zaehler" mit Initialwert 0. Nun die Aufgabe : Was zeigt die Itembeschreibung nach 5 Sekunden an und was nach 10 ? Zur Veranschaulichung noch das Diagramm. Ihr habt 2 Minuten Zeit zum überlegen.:/

intervalltimerstop.jpg
 
Oben