private int GetIntentId() { int val = dataStore.getInt("intentId", 0); dataEditor.putInt("intentId", val + 1); dataEditor.commit(); LogUtil.LogString("send id"); return val; }
private boolean GetTodayOrTommorowByTime(int hour, int minutes) { Calendar calendar = Calendar.getInstance(); boolean isTommorow = false; if (calendar.get(Calendar.HOUR_OF_DAY) > hour) { isTommorow = true; } else if (calendar.get(Calendar.HOUR_OF_DAY) == hour) { if (calendar.get(Calendar.MINUTE) > minutes) { isTommorow = true; } } LogUtil.LogString("istommorow" + isTommorow); return isTommorow; }
private void SetAlarm(int hour, int minute, boolean ytommorrow, String type) { LogUtil.LogString("d_hour" + hour + "d_minutes" + minute); // 設定時間と今の時間を比較してアラームが鳴るのが今日か明日かを決定 boolean isTommorow = GetTodayOrTommorowByTime(hour, minute); // 設定時間の曜日を取得 String dayOfWeek = GetDayOfWeekByTime(isTommorow); // 調べた曜日にアラームが設定されているか確認 if (DOWMap.get(dayOfWeek)) { Calendar cal = Calendar.getInstance(); if (isTommorow) { cal.add(Calendar.DATE, 1); } if (ytommorrow) { cal.add(Calendar.DATE, 1); } cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.MINUTE, minute); SetAlarmByDate(cal, type); } else { LogUtil.LogString(dayOfWeek + "day is not setting"); } }
public void SetAlarms() { LogUtil.LogString("set alrams"); // 設定値を読み込み ReadDataStore(); // dalarmは普通に設定 SetAlarm(d_dekiAlarmHour, d_dekiAlarmMinutes, false, "DEKI"); // dekiとyabaを比較してyabaの方が時間が前なら1日ずらす boolean ytommorow = false; if ((d_yabaAlarmHour < d_dekiAlarmHour) || (d_yabaAlarmHour == d_dekiAlarmHour && d_yabaAlarmMinutes < d_dekiAlarmMinutes)) { ytommorow = true; } SetAlarm(d_yabaAlarmHour, d_yabaAlarmMinutes, ytommorow, "YABA"); }
private void ReadDataStore() { appContext = MyApplication.getAppContext(); dataStore = appContext.getSharedPreferences("DataStore", appContext.MODE_PRIVATE); dataEditor = dataStore.edit(); d_isAlarmSetting = dataStore.getBoolean("isAlarmSet", false); d_dekiAlarmHour = dataStore.getInt("dekiAlarmTimeHour", -1); d_dekiAlarmMinutes = dataStore.getInt("dekiAlarmTimeMinutes", -1); d_yabaAlarmHour = dataStore.getInt("yabaAlarmTimeHour", -1); d_yabaAlarmMinutes = dataStore.getInt("yabaAlarmTimeMinutes", -1); // map情報を読み込み try { File file = new File(appContext.getDir("data", appContext.MODE_PRIVATE), "map"); ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file)); DOWMap = (HashMap) ois.readObject(); LogUtil.LogString(DOWMap.toString()); } catch (Exception e) { } }
private void SetAlarmByDate(Calendar settingCal, String type) { // 時間をセット Calendar calendar = settingCal; // 秒は0にしとく calendar.set(Calendar.SECOND, 0); // context appContext = MyApplication.getAppContext(); Intent intent = new Intent(appContext, AlarmBroadcastReceiver.class); // intentにidを渡す intent.putExtra("intentId", GetIntentId()); intent.putExtra("alarmType", type); PendingIntent pending = PendingIntent.getBroadcast(appContext, GetIntentId(), intent, 0); // アラームをセットする AlarmManager am = (AlarmManager) appContext.getSystemService(appContext.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending); LogUtil.LogString("set alarm" + CalendarUtil.GetCalendarInfo(calendar)); Toast.makeText(MyApplication.getAppContext(), "SetAlarm", Toast.LENGTH_LONG).show(); if (type == "YABA") { yabaCalendarDate = settingCal; } }