根据服务器的时钟时间在Android应用上显示视频

时间:2018-03-21 10:42:08

标签: android server

我有一个Android应用程序,我试图根据服务器的时钟时间播放视频(不是Android设备的时钟时间可能会有所不同)

  

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

因此,当用户打开应用程序时,如果服务器的时钟时间属于上述类别,则播放相应的视频,否则将根据服务器的时钟显示剩余秒数的计时器时间。

如果Android应用已经打开,那么当服务器的时钟时间属于以上任何类别时,它应自动开始播放视频。

持续ping服务器的时钟时间不是一个好选择。那么我们如何才能实现上述功能呢?

1 个答案:

答案 0 :(得分:2)

我认为Alarm Manager是您的解决方案。

流程如下:

  1. Android应用程序打开并向服务器请求服务器时间是什么以及下一个视频的时间。
  2. 计算完成时间的分钟数或秒数。
  3. 在此设备中设置闹钟。我们假设服务器时间是8:45,下一个视频是9:30。所以你知道45分钟必须通过才能播放视频。所以警报应该在45分钟内触发。
  4. 当触发闹钟时,再次检查服务器,如果没问题,播放视频并安排下一个闹钟(对于下一个视频或者服务器现在想要在另一个时刻播放视频),如果用户假装时间,则重新计算需要通过的时间并重新安排闹钟。
  5. 设置闹钟管理器示例以触发广播接收器:

    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);
    }
    

    然后让你的广播接收器处理任何其他动作:

    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
        }
    }
    

    如果您想了解有关Android中警报的更多信息,请查看以下链接:

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