Jak se dostat na aktuální čas v nativním kódu pro Android?

hlasů
20

Napadlo mě, jestli existuje jednoduchý způsob, jak získat aktuální čas v nativním kódu Android. V optimálním případě by to bylo něco, co srovnatelné s System.getTimeMillies (). Budu používat pouze to, jak dlouho některé volání funkce bude trvat tak dlouho, proměnné s aktuální čas v milisekundách bude optimálním řešením pro mě.

Díky předem!

Položena 30/09/2010 v 16:24
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
23

Pro líné, přidejte do horní části kódu:

#include <time.h>

// from android samples
/* return current time in milliseconds */
static double now_ms(void) {

    struct timespec res;
    clock_gettime(CLOCK_REALTIME, &res);
    return 1000.0 * res.tv_sec + (double) res.tv_nsec / 1e6;

}

Nazvěme to takhle:

double start = now_ms(); // start time

// YOUR CODE HERE

double end = now_ms(); // finish time

double delta = end - start; // time your code took to exec in ms
Odpovězeno 14/01/2013 v 03:55
zdroj uživatelem

hlasů
13

Pro rozlišení mikrosekundy můžete použít gettimeofday (). To používá „čas nástěnné hodiny“, který pokračuje v postupu, když je zařízení v režimu spánku, ale je vystavena náhlým posunům vpřed nebo vzad, pokud je síť aktualizuje hodiny daného zařízení.

Můžete také použít clock_gettime (CLOCK_MONOTONIC). To používá monotónní hodiny, které nikdy mílové kroky vpřed nebo vzad, ale přestane počítat, když je přístroj spí.

Skutečná rozlišení časovačů je závislé na zařízení.

Oba jsou POSIX API, nikoli Android specifické.

Odpovězeno 01/10/2010 v 19:23
zdroj uživatelem

hlasů
3

Dalším z nich pro líné, tato funkce vrací aktuální čas v nanosekundách použitím CLOCK_MONOTONIC

#include <time.h>
#define NANOS_IN_SECOND 1000000000

static long currentTimeInNanos() {

    struct timespec res;
    clock_gettime(CLOCK_MONOTONIC, &res);
    return (res.tv_sec * NANOS_IN_SECOND) + res.tv_nsec;
}
Odpovězeno 21/03/2017 v 14:29
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more