#c# #android #xamarin #bluetooth-lowenergy
#c# #Android #xamarin #bluetooth -низкое энергопотребление
Вопрос:
Я новичок в Xamarin forms и C #. Я пытаюсь сканировать устройства BLE, используя собственный API Xamarin forms, прилагаемый код. Я использую Xiomi note 5 под управлением Android 9.
using Android.Bluetooth;
using Android.Bluetooth.LE;
using Android.Runtime;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Xamarin.Forms;
namespace bletest
{
// Learn more about making custom code visible in the Xamarin.Forms previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(false)]
public class MyScanCallback : ScanCallback
{
public override void OnBatchScanResults(IList<ScanResult> results)
{
base.OnBatchScanResults(results);
}
public override void OnScanResult([GeneratedEnum] ScanCallbackType callbackType, ScanResult result)
{
base.OnScanResult(callbackType, result);
}
public override void OnScanFailed([GeneratedEnumAttribute] ScanFailure errorCode)
{
base.OnScanFailed(errorCode);
}
}
public class newbtle
{
private readonly BluetoothAdapter _ba;
private readonly BluetoothLeScanner _sc;
private readonly MyScanCallback _scCb;
public newbtle()
{
_ba = BluetoothAdapter.DefaultAdapter;
_sc = _ba.BluetoothLeScanner;
_scCb = new MyScanCallback();
}
public void BleScan()
{
if (_ba.Enable() == true)
{
_sc.StartScan(_scCb);
}
}
public void BleScanStop()
{
_sc.StopScan(_scCb);
_sc.FlushPendingScanResults(_scCb);
_ba.Disable();
}
public string GetScanMode()
{
return _ba.ScanMode.ToString();
}
public string GetStateMode()
{
return _ba.State.ToString();
}
}
public partial class MainPage : ContentPage
{
newbtle bt = new newbtle();
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
bt.BleScan();
}
private void Button_Clicked_1(object sender, EventArgs e)
{
bt.BleScanStop();
}
}
}
Когда выполняется вызов bt.BleScan, обратный вызов не вызывается, когда bt.BleScan вызывается во второй раз без выключения сканера, OnScanFailed вызывается с «уже активной ошибкой».
Когда я запускаю утилиту BLE explorer на том же мобильном устройстве в той же среде, она сканирует несколько устройств BLE.
Любое предложение, в чем может быть проблема? Спасибо
Комментарии:
1. Просто дважды проверьте, есть ли в вашем приложении все необходимые для выполнения пермы? Курс определения местоположения и fine и администратор bluetooth?
2. У него есть точное местоположение и местоположение курса, а также разрешения Bluetooth.