/// <summary>
    /// 表示を更新
    /// </summary>
    public void OnUpdateView()
    {
        AlarmSaveObject savedata = AlarmDataManager.instance.GetAlarm(this.viewAlarmIndex);

        this.titleText_.text        = savedata.title;
        this.timeText_.text         = savedata.time[3].ToString("00") + ":" + savedata.time[4].ToString("00");
        this.sumdayFlagImage_.color = (savedata.isActivateOnDayOfWeek[0]) ?
                                      this.alarmSettingButtonsManager_.sundayActiveColor :
                                      this.alarmSettingButtonsManager_.sundayDeactiveColor;
        this.mondayFlagImage_.color = (savedata.isActivateOnDayOfWeek[1]) ?
                                      this.alarmSettingButtonsManager_.mondayActiveColor :
                                      this.alarmSettingButtonsManager_.mondayDeactiveColor;
        this.tuesdayFlagImage_.color = (savedata.isActivateOnDayOfWeek[2]) ?
                                       this.alarmSettingButtonsManager_.tuesdayActiveColor :
                                       this.alarmSettingButtonsManager_.tuesdayDeactiveColor;
        this.wednesdayFlagImage_.color = (savedata.isActivateOnDayOfWeek[3]) ?
                                         this.alarmSettingButtonsManager_.wednesdayActiveColor :
                                         this.alarmSettingButtonsManager_.wednesdayDeactiveColor;
        this.thursdayFlagImage_.color = (savedata.isActivateOnDayOfWeek[4]) ?
                                        this.alarmSettingButtonsManager_.thursdayActiveColor :
                                        this.alarmSettingButtonsManager_.thursdayDeactiveColor;
        this.fridayFlagImage_.color = (savedata.isActivateOnDayOfWeek[5]) ?
                                      this.alarmSettingButtonsManager_.fridayActiveColor :
                                      this.alarmSettingButtonsManager_.fridayDeactiveColor;
        this.saturdayFlagImage_.color = (savedata.isActivateOnDayOfWeek[6]) ?
                                        this.alarmSettingButtonsManager_.saturdayActiveColor :
                                        this.alarmSettingButtonsManager_.saturdayDeactiveColor;
    }
    public void OnChangeView(int _alarmIndex)
    {
        AlarmSaveObject data = AlarmDataManager.instance.GetAlarm(_alarmIndex);

        this.titleText_.text   = data.title;
        this.messageText_.text = data.message;
    }
    /// <summary>
    /// 新規作成
    /// </summary>
    private void Create() {
        Debug.Log("Create alarm data.");

        // TODO: サイズを変更できるようにしたい
        int size = 4;
        this.saveData_.alarmArray_ = new AlarmSaveObject[4];

        for(int i=0; i<size; ++i) {
            AlarmSaveObject data = new AlarmSaveObject();
            data.id = i + 1;
            data.title = "Alarm" + data.id.ToString();
            this.saveData_.alarmArray_[i] = data;
        }
    }
    /// <summary>
    /// アラーム設定の設定
    /// </summary>
    /// <param name="_index">設定するインデックス</param>
    /// <param name="_saveObject">設定データ</param>
    public void SetAlarm(int _index, AlarmSaveObject _saveObject) {
        bool isKill = this.saveData_.alarmArray_[_index].isActive;
        int killId = this.saveData_.alarmArray_[_index].id;

        this.saveData_.alarmArray_[_index] = _saveObject;

        if(_saveObject.isActive) {
            this.ResetAlarm(_index);
        }
        else if(isKill) {
            if(this.isConnectAndroid_) {
                this.androidConnector_.KillAlarm(killId);
            }
        }
    }
    /// <summary>
    /// 保存していたアラームの開始
    /// </summary>
    /// <param name="_index">アラームインデックス</param>
    public void StartSavedAlarm(int _index) {
        AlarmSaveObject alarm = this.saveData_.alarmArray_[_index];
        if(alarm.isActive) {
            DateTime time = new DateTime(
                alarm.time[0], alarm.time[1], alarm.time[2],
                alarm.time[3], alarm.time[4], alarm.time[5]
            );

            Debug.Log("Start : " + time.ToString());
            if(this.isConnectAndroid_) {
                // アンドロイド端末に通知
                this.androidConnector_.SetAlarm(alarm.id, time);
            }
        }
    }
    /// <summary>
    /// アラームのチェック
    /// </summary>
    /// <param name="_index">アラームインデックス</param>
    /// <returns>true:時間になった false:時間になっていない</returns>
    private bool CheckAlarm(int _index) {
        AlarmSaveObject alarm = this.saveData_.alarmArray_[_index];

        // 年が小さすぎる値のときは無視
        if(alarm.time[0] < 1000) {
            return false;
        }

        if(alarm.IsActivateOnDayOfWeek(DateTime.Now.DayOfWeek)) {
            DateTime time = new DateTime(
                alarm.time[0], alarm.time[1], alarm.time[2],
                alarm.time[3], alarm.time[4], alarm.time[5]
            );

            if(time <= DateTime.Now) {
                // 過ぎている
                return true;
            }
        }
        return false;
    }
    /// <summary>
    /// アラームの再設定
    /// </summary>
    /// <param name="_index">アラームインデックス</param>
    public void ResetAlarm(int _index) {
        AlarmSaveObject alarm = this.saveData_.alarmArray_[_index];
        if(alarm.isActive) {
            DateTime time = new DateTime(
                DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
                alarm.time[3], alarm.time[4], alarm.time[5]
            );

            if(alarm.IsActivateOnDayOfWeek(DateTime.Now.DayOfWeek)) {
                // 今日が対象のとき
                if(time > DateTime.Now) {
                    this.saveData_.alarmArray_[_index].time[0] = DateTime.Now.Year;
                    this.saveData_.alarmArray_[_index].time[1] = DateTime.Now.Month;
                    this.saveData_.alarmArray_[_index].time[2] = DateTime.Now.Day;
                    Debug.Log("Set : " + time.ToString());

                    // まだすぎていないなら今日に設定する
                    if(this.isConnectAndroid_) {
                        this.androidConnector_.SetAlarm(alarm.id, time);
                    }
                    return;
                }
            }
            // 1週間分調べる
            for(int i=0; i<7; ++i) {
                time = time.AddDays(1.0);
                if(alarm.IsActivateOnDayOfWeek(time.DayOfWeek)) {
                    this.saveData_.alarmArray_[_index].time[0] = time.Year;
                    this.saveData_.alarmArray_[_index].time[1] = time.Month;
                    this.saveData_.alarmArray_[_index].time[2] = time.Day;
                    Debug.Log("Set : " + time.ToString());
                    // 設定
                    if(this.isConnectAndroid_) {
                        this.androidConnector_.SetAlarm(alarm.id, time);
                    }
                    return;
                }
            }
        }
    }