public void setupAlarmReserve(ref List <AlarmReserve> _insertList, List <AlarmParam> _alarmList) { LocalNotificationManager.Instance.ClearLocalNotification(); _insertList.Clear(); DateTime datetimeNow = TimeManager.GetNow(); foreach (AlarmParam param in _alarmList) { if (param.status == 0) { continue; } //Debug.Log ( string.Format( "serial:{0} repeat_type:{1}",param.serial, param.repeat_type)); if (param.repeat_type == 0) { DateTime checkDate = TimeManager.Instance.MakeDateTime(param.time); //string strCheckDate = string.Format ("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", datetimeNow.Year, datetimeNow.Month, datetimeNow.Day, checkDate.Hour, checkDate.Minute); //Debug.Log (TimeManager.Instance.GetDiffNow (strCheckDate).TotalSeconds); string strCheckDate = param.time; TimeSpan time_span = TimeManager.Instance.GetDiffNow(strCheckDate); AlarmReserve insert_data = new AlarmReserve(); if (0 < time_span.TotalSeconds) { insert_data.m_strTime = strCheckDate; insert_data.m_iVoiceType = param.voice_type; insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow(insert_data.m_strTime).TotalSeconds; _insertList.Add(insert_data); } else { } /* * こっちは旧式 * else { * * DateTime tomorrowDateTime = TimeManager.GetNow(); * tomorrowDateTime = tomorrowDateTime.AddDays (1); * string strTomorrow = string.Format ("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", tomorrowDateTime.Year, tomorrowDateTime.Month, tomorrowDateTime.Day, checkDate.Hour, checkDate.Minute); * insert_data.m_strTime = strTomorrow; * } * insert_data.m_iVoiceType = param.voice_type; * insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow (insert_data.m_strTime).TotalSeconds; * _insertList.Add (insert_data); */ } else { int iNowWeek = TimeManager.Instance.GetWeekIndex(TimeManager.StrGetTime()); for (int i = 0; i < DataManagerAlarm.Instance.STR_WEEK_ARR.Length; i++) { if (0 < (param.repeat_type & (1 << i))) { // 曜日にひっかかった string strStartDate = ""; int iOffset = i - iNowWeek; DateTime checkDate = TimeManager.Instance.MakeDateTime(param.time); if (iOffset == 0) { string strCheckDate = string.Format("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", datetimeNow.Year, datetimeNow.Month, datetimeNow.Day, checkDate.Hour, checkDate.Minute); TimeSpan time_span = TimeManager.Instance.GetDiffNow(strCheckDate); if (0 < time_span.TotalSeconds) { } else { iOffset = 7; } } else if (iOffset < 0) { iOffset += DataManagerAlarm.Instance.STR_WEEK_ARR.Length; } else { // そのまま } DateTime nextDateTime = TimeManager.GetNow(); nextDateTime = nextDateTime.AddDays(iOffset); for (int count = 0; count < 10; count++) { string strNext = string.Format("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", nextDateTime.Year, nextDateTime.Month, nextDateTime.Day, checkDate.Hour, checkDate.Minute); strStartDate = strNext; AlarmReserve insert_data = new AlarmReserve(); insert_data.m_strTime = strNext; insert_data.m_iVoiceType = param.voice_type; insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow(insert_data.m_strTime).TotalSeconds; _insertList.Add(insert_data); // 次の準備 nextDateTime = nextDateTime.AddDays(7); } } } } _insertList.Sort((a, b) => (int)(a.m_lTime - b.m_lTime)); } foreach (AlarmReserve reserve in _insertList) { LocalNotificationManager.Instance.AddLocalNotification(reserve.m_lTime, ConfigManager.Instance.GetEditPlayerSettingsData().projectData.m_strProductName, "時刻になりました"); } return; }
private void setupAlarmReserve(ref List <AlarmReserve> _insertList, List <AlarmParam> _alarmList, bool _bSnooze) { #if UNITY_ANDROID && !UNITY_EDITOR LocalNotificationManager.Instance.ClearLocalNotification(); #endif _insertList.Clear(); DateTime datetimeNow = TimeManager.GetNow(); foreach (AlarmParam param in _alarmList) { if (param.status <= 0) { continue; } //Debug.Log ( string.Format( "serial:{0} repeat_type:{1}",param.serial, param.repeat_type)); if (param.repeat_type == 0) { //DateTime checkDate = TimeManager.Instance.MakeDateTime (param.time); //string strCheckDate = string.Format ("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", datetimeNow.Year, datetimeNow.Month, datetimeNow.Day, checkDate.Hour, checkDate.Minute); //Debug.Log (TimeManager.Instance.GetDiffNow (strCheckDate).TotalSeconds); string strCheckDate = param.time; TimeSpan time_span = TimeManager.Instance.GetDiffNow(strCheckDate); AlarmReserve insert_data = new AlarmReserve(); if (0 < time_span.TotalSeconds) { insert_data.m_strTime = strCheckDate; insert_data.m_iVoiceType = param.voice_type; insert_data.m_iSnoozeType = param.snooze; insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow(insert_data.m_strTime).TotalSeconds; _insertList.Add(insert_data); } else { } /* * こっちは旧式 * else { * * DateTime tomorrowDateTime = TimeManager.GetNow(); * tomorrowDateTime = tomorrowDateTime.AddDays (1); * string strTomorrow = string.Format ("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", tomorrowDateTime.Year, tomorrowDateTime.Month, tomorrowDateTime.Day, checkDate.Hour, checkDate.Minute); * insert_data.m_strTime = strTomorrow; * } * insert_data.m_iVoiceType = param.voice_type; * insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow (insert_data.m_strTime).TotalSeconds; * _insertList.Add (insert_data); */ } else { int iNowWeek = TimeManager.Instance.GetWeekIndex(TimeManager.StrGetTime()); for (int i = 0; i < DataManagerAlarm.Instance.STR_WEEK_ARR.Length; i++) { if (0 < (param.repeat_type & (1 << i))) { // 曜日にひっかかった //string strStartDate = ""; int iOffset = i - iNowWeek; DateTime checkDate = TimeManager.Instance.MakeDateTime(param.time); if (iOffset == 0) { string strCheckDate = string.Format("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", datetimeNow.Year, datetimeNow.Month, datetimeNow.Day, checkDate.Hour, checkDate.Minute); TimeSpan time_span = TimeManager.Instance.GetDiffNow(strCheckDate); if (0 < time_span.TotalSeconds) { } else { iOffset = 7; } } else if (iOffset < 0) { iOffset += DataManagerAlarm.Instance.STR_WEEK_ARR.Length; } else { // そのまま } DateTime nextDateTime = TimeManager.GetNow(); nextDateTime = nextDateTime.AddDays(iOffset); for (int count = 0; count < 10; count++) { string strNext = string.Format("{0}-{1:D2}-{2:D2} {3:D2}:{4:D2}:00", nextDateTime.Year, nextDateTime.Month, nextDateTime.Day, checkDate.Hour, checkDate.Minute); //strStartDate = strNext; AlarmReserve insert_data = new AlarmReserve(); insert_data.m_strTime = strNext; insert_data.m_iVoiceType = param.voice_type; insert_data.m_iSnoozeType = param.snooze; insert_data.m_lTime = (long)TimeManager.Instance.GetDiffNow(insert_data.m_strTime).TotalSeconds; _insertList.Add(insert_data); // 次の準備 nextDateTime = nextDateTime.AddDays(7); } } } } _insertList.Sort((a, b) => (int)(a.m_lTime - b.m_lTime)); } // アプリ起動中おセットはローカル通知あしない if (_bSnooze == true) { foreach (AlarmReserve reserve in _insertList) { int iLoop = 1; long lOffset = 0; switch (reserve.m_iSnoozeType) { case 0: iLoop = 10; lOffset = 5 * 60; break; case 1: iLoop = 5; lOffset = 10 * 60; break; default: iLoop = 1; lOffset = 0; break; } // アプリ起動中はスヌーズしない if (_bSnooze == false) { iLoop = 1; } Debug.Log(string.Format("loopnum={0}", iLoop)); for (int i = 0; i < iLoop; i++) { LocalNotificationManager.Instance.AddLocalNotification( reserve.m_lTime + i * lOffset, ConfigManager.Instance.GetEditPlayerSettingsData().projectData.m_strProductName, "時刻になりました", GetAssetName(reserve.m_iVoiceType, true) ); } } } return; }