private async void BtnConnect_Click(object sender, RoutedEventArgs e) { d("Button CONNECT clicked."); HrDevice = await BleHeartRate.FirstOrDefault(); if (HrDevice == null) { d("I was not able to find any HR device!"); return; } d("Found device: " + HrDevice.Name + " IsConnected=" + HrDevice.IsConnected); // we should always monitor the connection status HrDevice.DeviceConnectionStatusChanged -= HrDeviceOnDeviceConnectionStatusChanged; HrDevice.DeviceConnectionStatusChanged += HrDeviceOnDeviceConnectionStatusChanged; // we can create value parser and listen for parsed values of given characteristic HrParser.ConnectWithCharacteristic(HrDevice.HeartRate.HeartRateMeasurement); HrParser.ValueChanged -= HrParserOnValueChanged; HrParser.ValueChanged += HrParserOnValueChanged; // connect also battery level parser to proper characteristic BatteryParser.ConnectWithCharacteristic(HrDevice.BatteryService.BatteryLevel); // we can monitor raw data notified by BLE device for specific characteristic HrDevice.HeartRate.HeartRateMeasurement.ValueChanged -= HeartRateMeasurementOnValueChanged; HrDevice.HeartRate.HeartRateMeasurement.ValueChanged += HeartRateMeasurementOnValueChanged; // we could force propagation of event with connection status change, to run the callback for initial status HrDevice.NotifyConnectionStatus(); }
/// <summary> /// 获取电池信息 /// </summary> /// <param name="task"></param> private void handleBatteryInfo(TaskInfo task) { string cmd = "shell dumpsys battery"; string result = connect.ExecuteAdb(cmd); if (!String.IsNullOrEmpty(result) && !result.Contains("daemon started successfully ")) { manager.BatteryParser = BatteryParser.Parser(result); if (task.ResultHandler != null) { Image image = manager.BatteryParser.BatteryImage; string info = manager.BatteryParser.BatteryFormatInfo; task.ResultHandler.Invoke(image, info); } writeLog(string.Format("获取到电池信息")); } }
private async void HrDeviceOnDeviceConnectionStatusChanged(object device, BleDeviceConnectionStatusChangedEventArgs args) { d("Current connection status is: " + args.ConnectionStatus); await RunOnUiThread(async() => { bool connected = (args.ConnectionStatus == BluetoothConnectionStatus.Connected); if (connected) { TxtStatus.Text = HrDevice.Name + ": connected"; byte battery = await BatteryParser.Read(); TxtBattery.Text = String.Format("battery level: {0}%", battery); } else { TxtStatus.Text = "disconnected"; TxtBattery.Text = "battery level: --"; TxtHr.Text = "--"; } BtnStart.IsEnabled = connected; BtnStop.IsEnabled = connected; BtnReadInfo.IsEnabled = connected; }); }
private async void BtnReadInfo_Click(object sender, RoutedEventArgs e) { d("Reading DeviceInformation Characteristic ..."); var firmware = await HrDevice.DeviceInformation.FirmwareRevisionString.ReadAsString(); var hardware = await HrDevice.DeviceInformation.HardwareRevisionString.ReadAsString(); var producer = await HrDevice.DeviceInformation.ManufacturerNameString.ReadAsString(); var serialNumber = await HrDevice.DeviceInformation.SerialNumberString.ReadAsString(); var modelNumber = await HrDevice.DeviceInformation.ModelNumberString.ReadAsString(); d($" Producer : {producer}"); d(""); d($" Model : {modelNumber}"); d(""); d($" S/N : {serialNumber}"); d(""); d($" Firmware : {firmware}"); d(""); d($" Hardware : {hardware}"); d(""); // update also battery byte battery = await BatteryParser.Read(); TxtBattery.Text = $"battery level: {battery}%"; }