// Save device public async void SaveDevice(BleDeviceInfo Device) { Log.Debug(TAG, "Save Device " + Device.DeviceAddress); var SaveTask = MyBleController.SaveDeviceAsync(Device); try { await SaveTask; if (SaveTask.IsCompleted) { if (SaveTask.Exception == null) { Log.Debug(TAG, "Save Device success"); } else { Log.Debug(TAG, "Save Device Failed " + SaveTask.Exception.Message); } } } catch (Exception ex) { Log.Debug(TAG, "Save Device Failed " + ex.Message); } }
// Delete device public async void DeleteDevice(BleDeviceInfo Device, int pos) { Log.Debug(TAG, "Delete Device " + Device.DeviceAddress); var DeleteTask = MyBleController.DeleteDeviceAsync(Device); try { await DeleteTask; if (DeleteTask.IsCompleted) { if (DeleteTask.Exception == null) { Log.Debug(TAG, "Delete Device success"); BleDeviceInfoList.RemoveAt(pos); Adapter.NotifyDataSetChanged(); } else { Log.Debug(TAG, "Delete Device Failed " + DeleteTask.Exception.Message); } } } catch (Exception ex) { Log.Debug(TAG, "Delete Device Failed " + ex.Message); } }
public override void OnDeviceDiscover(BleDeviceInfo Device) { Log.Debug("BleController", "onDeviceDiscover : " + Device.DeviceName); if (!BLEControllerActivity.IsAdded(Device)) { BLEControllerActivity.BleDeviceInfoList.Add(Device); } BLEControllerActivity.Adapter.NotifyDataSetChanged(); }
//Check if the device is added static public bool IsAdded(BleDeviceInfo Device) { foreach (BleDeviceInfo device in BleDeviceInfoList) { if (device.DeviceAddress == Device.DeviceAddress) { return(true); } } return(false); }
/// <summary> /// 監聽到藍芽裝置時之觸發事件 /// </summary> /// <param name="watcher"></param> /// <param name="eventArgs"></param> private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs) { bleDeviceInfo = new BleDeviceInfo(); // Get iBeacon specific data bleDeviceInfo.BeaconData = eventArgs.Advertisement.iBeaconParseAdvertisement(eventArgs.RawSignalStrengthInDBm); // The received signal strength indicator (RSSI) bleDeviceInfo.rssi = eventArgs.RawSignalStrengthInDBm; // Get Device BluetoothAddress (To HEX) bleDeviceInfo.bluetoothAddress = eventArgs.BluetoothAddress.ToString("X"); afterReceivedAction(); return; }
/// <summary> /// 同時符合以下三種情況才開門 /// 1.接收之 Beacon RSSI 高於門檻值 /// 2.紅外線動作感測器感測到使用者 /// 3.掃描到的Device存於資料庫中 /// </summary> /// <param name="beaconData"></param> /// <returns></returns> private bool OpenDoorValidationByDeviceInfo(BleDeviceInfo bleDeviceInfo) { string deviceKey = bleDeviceInfo.bluetoothAddress; int rssi = bleDeviceInfo.rssi; // 如果掃描到有beacon資料 if (bleDeviceInfo.BeaconData.UUID != String.Empty) { deviceKey = bleDeviceInfo.BeaconData.UUID; rssi = bleDeviceInfo.BeaconData.Rssi; } // Device Bluetooth Address From DB var matchDevice = ( from x in userDevicesInfoList where x.DEVICE_KEY.IndexOf(deviceKey, StringComparison.OrdinalIgnoreCase) >= 0 && //忽略大小寫 x.EXTEND_VALUE <= rssi //rssi 大於預設值 select x); if (matchDevice.Count() == 0) { return(false); } #if (ARM) // PIR Sensor if (!phyDeviceController.IsPIRSensorDetected()) { return(false); } #endif return(true); }
public override View GetView(int position, View convertView, ViewGroup parent) { var view = convertView; FoundDevicesAdapterViewHolder holder = null; BleDeviceInfo Device = FoundDevices.ElementAt(position); if (view != null) { holder = view.Tag as FoundDevicesAdapterViewHolder; } if (holder == null) { var inflater = context.GetSystemService(Context.LayoutInflaterService).JavaCast <LayoutInflater>(); view = inflater.Inflate(Resource.Layout.Child_layout, parent, false); holder = new FoundDevicesAdapterViewHolder(view); view.Tag = holder; } holder.DeviceName.Text = Device.DeviceName; holder.Address.Text = Device.DeviceAddress; return(view); }
public async Task SaveDeviceAsync(BleDeviceInfo bleDeviceInfo) => await SaveDevice(bleDeviceInfo).CastTask();
public async Task DeleteDeviceAsync(BleDeviceInfo bleDeviceInfo) => await DeleteDevice(bleDeviceInfo).CastTask();