afficher la vidéo sur l’application Android en fonction de l’heure du serveur

J’ai une application Android où j’essaie de lire des vidéos en fonction de l’heure du serveur (pas l’heure de l’horloge de l’appareil Android qui pourrait être différente)

08:00:00 – 08:04:59 -> video_url_1

08:05:00 – 08:09:59 -> video_url_2

08:10:00 – 08:14:59 -> video_url_3

Ainsi, lorsque l’utilisateur ouvre l’application, si l’heure du serveur tombe dans la catégorie ci-dessus, les vidéos respectives sont lues, sinon une timer pour les secondes restantes est affichée en fonction de l’heure du serveur.

Si l’application Android est déjà ouverte, elle devrait alors commencer à lire la vidéo lorsque l’heure du serveur tombe dans l’une des catégories ci-dessus.

Faire un ping permanent sur le serveur pour son heure n’est pas une bonne option. Alors, comment pouvons-nous atteindre la fonctionnalité ci-dessus?

Je pense que Alarm Manager est votre solution.

Le stream serait le suivant:

  1. L’application Android s’ouvre et demande au serveur quelle est l’heure du serveur et quand est la prochaine vidéo.
  2. Calculez comment en combien de minutes ou de secondes le temps sera écoulé.
  3. Configurez une alarme dans l’appareil pour cette heure. Disons que l’heure du serveur est 8h45 et la prochaine vidéo est à 9h30. Donc, vous savez que 45 minutes doivent être écastings pour pouvoir lire la vidéo. Donc, l’alarme doit être déclenchée dans 45 minutes.
  4. Lorsque l’alarme est déclenchée, vérifiez à nouveau le serveur et, si tout se passe bien, lisez la vidéo et programmez votre prochaine alarme (pour la prochaine vidéo ou si le serveur veut maintenant lire la vidéo à un autre moment). puis recalculez le temps nécessaire pour passer et reprogrammer votre alarme.

Définissez l’exemple de gestionnaire d’alarme pour déclencher un récepteur de diffusion:

AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); Intent alarmIntent = new Intent(context, MyBroadCastReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); Calendar calendar = Calendar.getInstance(); // add here your calculate minutes or seconds or hours calendar.add(Calendar.MINUTE, 45); if (alarmManager != null) { alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); } 

Demandez ensuite à votre récepteur de diffusion de gérer toute autre action:

 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Do your magic, could be play the video or show a notification saying the video is ready to play } } 

Si vous souhaitez plus d’informations sur les alarmes dans Android, consultez ce lien:

https://developer.android.com/training/scheduling/alarms.html