Exemplo n.º 1
0
        /// <summary>
        /// 領域から出た際にステータスを更新します。
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="region"></param>
        public override void RegionLeft(CLLocationManager manager, CLRegion region)
        {
            Console.WriteLine("Exit [{0}] Region", region.Identifier);
            var adapter = new DbAdapter_iOS();

            if (region.Identifier.Equals(RegionList.研究室.Identifier))
            {
                //研究室領域から退出
                UpdateStatus(Status.学内.GetStatusId());
                adapter.AddDeviceLog("在室状況を「学内」に更新", $"領域[{RegionList.研究室.Name}]から退出");
            }
            else
            {
                //学内領域から退出
                var gregion = RegionList.CampusAllRegions
                              .Where(r => r.Identifier.Equals(region.Identifier))
                              .First();
                adapter.UpdateGeofenceStatus(UserDataModel.Instance.DeviceId, gregion.DbIdentifierName, false);

                adapter.AddDeviceLog($"領域[{gregion.Name}]から退出");

                if (manager.Location != null)
                {
                    AddLocationLog(manager.Location, "LastUpdate", false);
                }
                else
                {
                    manager.RequestLocation();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 領域に侵入した際にステータスを更新します。
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="region"></param>
        public override void RegionEntered(CLLocationManager manager, CLRegion region)
        {
            var adapter = new DbAdapter_iOS();

            if (region.Identifier.Equals(RegionList.研究室.Identifier))
            {
                //研究室領域に侵入
                UpdateStatus(Status.在室.GetStatusId());
                adapter.AddDeviceLog("在室状況を「在室」に更新", $"領域[{RegionList.研究室.Name}]に侵入");
            }
            else
            {
                //学内領域に侵入
                var gregion = RegionList.CampusAllRegions
                              .Where(r => r.Identifier.Equals(region.Identifier))
                              .First();

                adapter.UpdateGeofenceStatus(UserDataModel.Instance.DeviceId, gregion.DbIdentifierName, true);
                adapter.AddDeviceLog("ジオフェンス状態を更新", $"領域[{gregion.Name}]に侵入");

                if (manager.Location != null)
                {
                    AddLocationLog(manager.Location, "LastUpdate", true);
                }
                else
                {
                    manager.RequestLocation();
                }
            }
        }