Allegro al_get_time-Zeit-Einheit auf Android

  • 5 Antworten
  • Neuster Beitrag
CrazyC

CrazyC

Neues Mitglied
Threadstarter
Schreibe ein Allegro 5-Programm für Android. Die Allegro-Bibliothek hat eine al_get_time-Funktion, die die verstrichene Anzahl an Millisekunden oder Mikrosekunden seit dem Initialisieren der Allegro-Bibliothek wiedergibt.
Welche von den beiden Zeit-Einheiten wird verwendet?
Wird die Android-Methode System.currentTimeMillis von Allegro verwendet?
Es heißt in der API-Referenz von Allegro, dass der verwendete Treiber dies bestimmt. Wie ist das auf Android?
 
Zuletzt bearbeitet:
swa00

swa00

Moderator
Teammitglied
Hallo CrazyC,

i.d.R. unterstützen wir an dieser Stelle eher den Support reiner nativen sprachorientierten Java/Kotlin Implementationen.
Ich denke, deine Frage ist besser in den entsprechenden Allegro Foren oder direkt im Git untergebracht.

Viel Erfolg
 
Zuletzt bearbeitet:
CrazyC

CrazyC

Neues Mitglied
Threadstarter
Allegro sagt, der Driver, damit ist wohl der Treiber für den Timer Chip gemeint der im Phone eingebaut ist, bestimmt ob es millis oder micros oder nanos oder was auch immer sind. Deswegen wollte ich wissen, ob das in Android phones immer gleich ist, da ich das Programm eh nur für Android schreibe.
Der Treiber gehört zum Linux Kernel der Android-Phones. Deswegen Frage ich das hier. Bin etwas verunsichert, es gibt im Android Framework die Methode System.currentTimeMillis, aber ich habe irgendwo gelesen, dass es sein kann, dass es trotzdem nicht immer millis sind, die von dieser Methode zurückgegeben werden. Was ist denn nun richtig?
 
J

jogimuc

Erfahrenes Mitglied
aber ich habe irgendwo gelesen, dass es sein kann, dass es trotzdem nicht immer millis sind,
Hallo
Nicht immer Millisekunden genau würde ich sagen.

Verdeutliche dir mal wie ein Computer die Zeit bestimmt. Der Tackt wird von einen nicht so sehr genauen Quarz erzeugt. Ein CRC Chip zählt den Takt und löst nach ihm vorgegebenen Zählerstand einen Interrupt aus. Der den Zeit Zähler im Kernel erhöht und vom Treiber abgefragt werden kann. Das ist eigentlich in fast allen Computer Systemen so. Da der Tackt nun nicht so extrem genau ist, ein 2GHz Quarz nicht genau diese Frequenz hat, gibt es immer keine unterschiede. Ist halt keine AtomUhr. Das sind aber höchstens nanno sek von denen wir sprechen.

Um immer die genaue Urzeit zu haben fragt das Handy auch immer die Zeit Server im Netz ab die mit der AtomUrh geupdatet werden.
Beitrag automatisch zusammengefügt:

Die genauste Zeit wirst du wohl bekommen wenn du selber mit NDK Methoden den Treiber oder gar den Kennel abfragt.

Für was brauchst du so eine genaue Zeit wen ich fragen darf?
 
Zuletzt bearbeitet:
CrazyC

CrazyC

Neues Mitglied
Threadstarter
Ich schreibe ein und dasselbe Programm mit RFO-BASIC für Android, libGDX (in Java mit der A-IDE für Android) Allegro (in C über C4DROID C-Compiler für Android mit Allegro plugin) und SFML (in C++ auch über C4DROID). Bis auf SFML bieten alle vier 'Werkzeuge' die Möglichkeit, Timer zu erstellen. Die Millisekunden-Zahl bieten dagegen alle an. Alle Anleitungen behaupten, es sind auch definitiv Millisekunden, außer Allegro, dort wird behauptet, es hängt vom verwendeten Treiber ab, ob es Mikrosekunden oder Millisekunden sind. Nun dachte ich, dass es bei Allegro-Programmen für Android automatisch Millisekunden sind (weil das Android-Framework ja die Methode System.currentTimeMillis hat, welche ja aussagt, dass es Millisekunden sind).
Da ich eben nur für Android entwickle, habe ich gehofft, dass sich herausstellt, dass es bei Android's Linux-Kernel immer Millisekunden sind. Dass vielleicht das Kernel (der Treiber) die Zahl immer in Millisekunden anbietet oder dass die vier Werkzeuge, die ich benutze, eh am Ende System.currentTimeMillis aufrufen/verwenden (wie z. B. libGDX).
Habe im Netz geschaut, habe aber nichts Eindeutiges zu Android gefunden.
Will mein Programm-Loop timen (in Millisekunden), dazu benötige ich die Einheit des Zählers.
 
Zuletzt bearbeitet:
Oben Unten