闹铃

来源:互联网 发布:数据挖掘是什么专业 编辑:程序博客网 时间:2024/04/30 08:24

private String monToFriAlarm = "1,2,3,4,5";//设置闹铃周一至周五

private long alarm_id = 0;//标识PendingIntent第二个参数

//存入数据库

ContentValues cv = new ContentValues();
cv.put("monToFriAlarm", monToFriAlarm);
SQLiteDatabase db = helper.getWritableDatabase();
 alarm_id = db.insert("huodong", null, cv);

//设置闹铃时间

Calendar btAlarmCalendar = Calendar.getInstance();

btAlarmCalendar.set(Calendar.HOUR_OF_DAY, 12);
btAlarmCalendar.set(Calendar.MINUTE, 0);
btAlarmCalendar.set(Calendar.SECOND, 0);
btAlarmCalendar.set(Calendar.MILLISECOND, 0);


//设置闹铃

Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("alarm_id", alarm_id+"");

PendingIntent sender = PendingIntent.getBroadcast(this,(int) alarm_id, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);

int nowDay = UtilDqq.getNowWeek();
            int setDay = 0;
            String[] setStr = monToFriAlarm.split(",");
            int[] dayOfNum = Util.getDayOfNum(setStr);
            setDay = Util.getResultDifferDay(dayOfNum, nowDay);
            int differDay = Util.compareDayNowToNext(nowDay, setDay);
            if (differDay == 0) {
                if (Util.differSetTimeAndNowTime(btAlarmCalendar
                        .getTimeInMillis())) {
                    am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis(),
                            sender);
                }
                else {
                    am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis()
                            + Util.getDifferMillis(7), sender);
                }
            }
            else {
                am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis()
                        + Util.getDifferMillis(differDay), sender);
            }

Util{

public static Map<String, Integer> nowWeek = new HashMap<String,Integer>();
     private static void addNowWeek() {
            // TODO Auto-generated method stub
            nowWeek.put("1", 7);
            nowWeek.put("2", 1);
            nowWeek.put("3", 2);
            nowWeek.put("4", 3);
            nowWeek.put("5", 4);
            nowWeek.put("6", 5);
            nowWeek.put("7", 6);
            
        }

public static int getNowWeek(){
            Calendar nowCal=Calendar.getInstance();
            Date nowDate=new Date(System.currentTimeMillis());
            nowCal.setTime(nowDate);
            int nowNum=nowCal.get(nowCal.DAY_OF_WEEK);
            String nowNumStr=String.valueOf(nowNum);
            UtilDqq.addNowWeek();
            int nowDayOfWeek=0;
            if(nowNumStr!=null){
                nowDayOfWeek=nowWeek.get(nowNumStr);
            }
            return nowDayOfWeek;
        }

        public static int[] getDayOfNum(String[] str)
            {
                int[] dayOfInt = new int[str.length];
                for(int i=0;i<str.length;i++){
                    dayOfInt[i] = getSetDay(str[i]);
                }
                return dayOfInt;
            }
        public static int getSetDay(String str)
            {
                    if(str.equals("1")){
                        return 1;
                    }
                    if(str.equals("2")){
                        return 2;
                    }
                    if(str.equals("3")){
                        return 3;
                    }
                    if(str.equals("4")){
                        return 4;
                    }
                    if(str.equals("5")){
                        return 5;
                    }
                    if(str.equals("6")){
                        return 6;
                    }
                    if(str.equals("7")){
                        return 7;
                    }
                    return 0;
            }





 public static boolean differSetTimeAndNowTime(long setTime)
            {
                if(setTime >= getNowTimeMinuties()){
                    return true;
                }else{
                    return false;
                }
            }

public static int getResultDifferDay(int[] in,int nowDay)
            {
                 int result = 0;
                 for(int i=0;i<in.length;i++){
                     if(in[i] >= nowDay){
                         result = in[i];
                         break;
                     }
                 }
                 
                 if(result == 0){
                     result = in[0];
                 }
                 return result;
            }
         public static int getResultDifferDay1(int[] in,int nowDay)
            {
                 int result = 0;
                 for(int i=0;i<in.length;i++){
                     if(in[i] > nowDay){
                         result = in[i];
                         break;
                     }
                 }
                 
                 if(result == 0){
                     result = in[0];
                 }
                 return result;
            }

          public static int compareDayNowToNext(int nowDay,int nextDay){
                if(nextDay > nowDay){
                    return (nextDay-nowDay);
                }else if(nextDay == nowDay){
                    return 0;    
                }else{
                    return (7-(nowDay-nextDay));
                }
            }

         public static boolean differSetTimeAndNowTime(long setTime)
            {
                if(setTime >= getNowTimeMinuties()){
                    return true;
                }else{
                    return false;
                }
            }
        
          public static long getNowTimeMinuties()
            {
                return System.currentTimeMillis();
            }
          
          public static long getDifferMillis(int differDays)
            {
                return differDays * 24 * 60 * 60 * 1000;
            }

}



//接收

public class AlarmReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        String alarm_id=intent.getExtras().getString("alarm_id");
        Intent alaramIntent = new Intent(context, BabyPlanAlarmAgainSetting.class);
        alaramIntent.putExtra("alarm_id", alarm_id);
        alaramIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(alaramIntent);
    }


public class BabyPlanAlarmAgainSetting extends BaseActivity_dqq {

Intent alermIntent = getIntent();
        String alarm_id= alermIntent.getStringExtra("alarm_id");

SQLiteDatabase db=helper.getReadableDatabase();
        Cursor cursor = db.query("huodong", new String[]{"_id","monToFriAlarm"}, "_id=?", new String[]{String.valueOf(alarm_id)}, null, null, null,null);

if(cursor.moveToNext()){

monToFriAlarm = cursor.getString(cursor.getColumnIndex("monToFriAlarm"));

}

String[] setStr = monToFriAlarm.split(",");
                int[] dayOfNum = UtilDqq.getDayOfNum(setStr);
                setDay = UtilDqq.getResultDifferDay1(dayOfNum, nowDay);
                int differDay = UtilDqq.compareDayNowToNext(nowDay, setDay);
                if (differDay == 0) {
                    am.set(AlarmManager.RTC_WAKEUP,
                            UtilDqq.getNowTimeMinuties()
                                    + UtilDqq.getDifferMillis(7), sender);
                } else {
                    am.set(AlarmManager.RTC_WAKEUP,
                            UtilDqq.getNowTimeMinuties()
                                    + UtilDqq.getDifferMillis(differDay),
                            sender);
                }

new AlertDialog.Builder(this)
        .setTitle("闹铃")
        .setMessage("闹铃时间到!!!")
        .setPositiveButton("我知道了", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                player.stop();
                finish();
            }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                player.stop();
                finish();
            }
        }).show();


}
    
}

0 0
原创粉丝点击