Android – Cómo contar el tiempo durante un largo período

En mi aplicación quiero medir la cantidad de tiempo que el acelerómetro está en reposo.

Por ejemplo, si establezco un umbral de 0.4 m / s y la velocidad del acelerómetro siempre está por debajo de esto significa que el teléfono está en reposo (el umbral es para dar cuenta de la fluctuación en los valores).

Quiero ser capaz de contar la cantidad de tiempo que el teléfono está en reposo y al llegar a una cierta cantidad de tiempo en reposo, a continuación, reaccionar a ese evento.

Ya tengo el acelerómetro funcionando bien, sólo necesito contar esta vez y no estoy familiarizado con cómo hacer esto, ¿alguien puede ayudarme aquí? Gracias por adelantado

Solución:

start = System.currentTimeMillis(); if (vectorTotal > 10.1 || vectorTotal < 9.5){ timelimit = (System.currentTimeMillis()+ 10000); } else if (start >= timelimit){ checkUser(); timelimit = (System.currentTimeMillis()+ 10000); } 

¿Su aplicación está en primer plano?

Al principio:

 long start = System.currentTimeMillis(); 

Guarde este valor en la base de datos o en las preferencias si es necesario.

Al final:

 long end = System.currentTimeMillis(); 

Entonces:

 long passedTime = end - start; 

Usted podría fijar una alarma cada vez que usted está sobre el umbral y cuando la alarma finalmente se enciende usted hace lo que usted desea.

Haga algo como esto cuando inicie su actividad:

 am = (AlarmManager) getSystemService(ALARM_SERVICE); timeoutInMillis = 60000; Intent timeoutIntent = <create the intent you want to run here>; timeoutPendingIntent = PendingIntent.getService(this, 0, timeoutIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

Y luego cada vez que el acelerómetro está por encima de su umbral:

 am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeoutInMillis, timeoutPendingIntent ); 

No olvide borrar la alarma cuando salga de su actividad:

 am.cancel(timeoutPendingIntent); 

Creo que probablemente está buscando una solución de Servicio / Actividad dual donde el Servicio se ejecuta en segundo plano contando lo que quiera contar y proporcionando esta información a la Actividad cuando la solicite.

En cuanto al tiempo de conteo, eso es simplemente manipular el retorno de System.currentTimeMillis() como apunta DKIT Android.

Puedes usar

En el servicio se escuchan los eventos desde el acelerómetro, en cada evento se cancela la alarma anterior y se establece nuevo. Al llegar a una cierta cantidad de tiempo – obtendrá intención de alarma.

  • Detener temporizador sin destruir y volver a crear - Android
  • Cómo administrar la expiración de prueba sin conexión para una aplicación de Android?
  • ¿Cambia el tiempo de uso de Android a Celsius?
  • Convertir cadena al formato de sello de tiempo de MySQL en php
  • Capturar / Interceptar los intentos de Android durante el tiempo de ejecución
  • Quiero obtener tiempo de la red GSM
  • Android: obtenga tiempo hasta que Runnable se ejecute a través de Handler
  • ¿Cómo puedo obtener la fecha y la hora del proveedor de la red?
  • El tiempo de conexión expiro
  • SetMinDate (...) para DatePicker no funciona cuando se invoca una segunda vez
  • ¿Cómo puedo mostrar la hora en formato 24 horas usando un TextClock?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.