Пример #1
0
    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;
    }
Пример #2
0
    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;
    }