package cn.scau.scautreasure.util; import android.content.Context; import java.util.Calendar; import java.util.List; import cn.scau.scautreasure.helper.ClassHelper_; import cn.scau.scautreasure.model.ClassModel; /** * Created by robust on 14-4-9. */ public class ClassUtil { /**上课-小时*/ private static final int[] HOURS_ON = {8, 8, 10, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21}; /**上课-分钟*/ private static final int[] MINUTES_ON = {0, 50, 5, 55, 30, 20, 30, 20, 35, 25, 30, 20, 10}; /**下课-小时*/ private static final int[] HOURS_OVER = {8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 20, 21, 21}; /**下课-分钟*/ private static final int[] MINUTES_OVER = {45, 35, 50, 40, 15, 5, 15, 5, 20, 10, 15, 5, 55}; /** * 上课时间 * @param c 时间,设置好小时和分钟 * @param node 节次 */ public static void genClassBeginTime(Calendar c, int node){ c.set(Calendar.HOUR_OF_DAY, HOURS_ON[node-1]); c.set(Calendar.MINUTE, MINUTES_ON[node-1]); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } /** * 下课时间 * @param c 时间,设置好小时和分钟 * @param node 节次 */ public static void genClassOverTime(Calendar c, int node){ c.set(Calendar.HOUR_OF_DAY, HOURS_OVER[node-1]); c.set(Calendar.MINUTE, MINUTES_OVER[node-1]); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } /** * 判断当前是否处于上课期间,使用二分查找 * @param context * @return */ public static boolean isDuringClassNow(Context context){ long cur = System.currentTimeMillis(); long lt, ht; ClassHelper_ helper = ClassHelper_.getInstance_(context); List<ClassModel> klasses = helper.getDayLessonWithParams(new DateUtil().getDayOfWeek()); int low = 0; int high = klasses.size() - 1; int mid; Calendar c = Calendar.getInstance(); String[] nodes; while(low <= high){ mid = (high + low) / 2; nodes = klasses.get(mid).getNode().split(","); genClassBeginTime(c, Integer.parseInt(nodes[0])); lt = c.getTimeInMillis(); genClassOverTime(c, Integer.parseInt(nodes[nodes.length - 1])); ht = c.getTimeInMillis(); if(lt <= cur && ht >= cur){ return true; } else if(lt > cur){ high = mid - 1; } else { low = mid + 1; } } return false; } }