2 votes

Mesure du temps de service

J'ai un service, qui utilise MediaSession pour la lecture des flux. Je veux collecter le temps, combien ce service joue de la musique et ensuite l'envoyer au serveur. J'utilise le code suivant (simplifié) :

public class MyService extends MediaBrowserServiceCompat {

  private Long startTime;

  public class MediaPlayerListener extends PlaybackInfoListener {

    @Override
    public void onPlaybackStateChange(PlaybackStateCompat state) {
       session.setPlaybackState(state);

       switch (state.getState()) {
           case PlaybackStateCompat.STATE_PLAYING:
               startTime = SystemClock.elapsedRealtime();
               startForeground(MediaNotificationManager.NOTIFICATION_ID, notification);
               break;
           case PlaybackStateCompat.STATE_STOPPED:
               long timediff = SystemClock.elapsedRealtime() - startTime;
               stopForeground(true);
               stopSelf();
               // timediff is being sent to the server here 
               break;
       }
   }
}

Le service fonctionne comme prévu, mais pas les rapports de temps. Sur le serveur, certains des temps d'écoute sont corrects, mais certains sont très élevés, plus de 200 heures. Comme ce service est utilisé pour écouter des flux, il n'est pas possible ou réaliste de calculer une telle valeur. Je suis donc convaincu que ce rapport n'est pas bon. J'ai également essayé de remplacer SystemClock con System#currentTimeMillis mais les valeurs sont également très importantes. Quelqu'un pourrait-il me dire comment mesurer correctement le temps d'écoute ou me fournir quelques bonnes pratiques ?

0voto

A. Kultala Points 16

Essayez d'envoyer la différence de temps au serveur avant d'appeler stopSelf(). Parfois, il peut ne pas avoir assez de temps pour l'envoyer. stopSelf() arrête le service dès que possible. Un autre service pour gérer l'envoi de la différence de temps ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X