Xamarin 表单蓝牙 LE 不显示附近的可发现设备



我正在制作一个利用蓝牙功能的应用程序,例如扫描设备等。我检查了扫描标志并返回 true,但没有显示我正在测试的可发现设备。

我正在使用三星 J7 Pro 作为我的应用程序测试设备,并使用三星 J7 作为我想在发现的设备列表中看到的设备。

J7 已设置为可发现且蓝牙打开。

我的代码基于Monkey.BluetoothLE

这是我所拥有的:

声明

ObservableCollection<BluetoothViewModel> vm = new ObservableCollection<BluetoothViewModel>();
Android.Bluetooth.BluetoothManager _blManager;
Android.Bluetooth.BluetoothManager _blManager;
Robotics.Mobile.Core.Bluetooth.LE.Adapter _bleAdapter;

功能

public BluetoothPage()
{
InitializeComponent();
lvInfo.ItemsSource = vm;
var appContext = Android.App.Application.Context;
_blManager = (Android.Bluetooth.BluetoothManager)appContext.GetSystemService("bluetooth"); 
_blAdapter = _blManager.Adapter;
_bleAdapter = new Robotics.Mobile.Core.Bluetooth.LE.Adapter();
_bleAdapter.DeviceDiscovered += _bleAdapter_DeviceDiscovered;
_bleAdapter.ScanTimeoutElapsed += _bleAdapter_ScanTimeoutElapsed;
}
private void btnScanStopBluetooth_Click(object sender, EventArgs e)
{
if (!_bleAdapter.IsScanning)
{
if (!_blAdapter.IsEnabled)
{
_blAdapter.Enable();
DisplayInformation("Turning on bluetooth...");
while (!_blAdapter.IsEnabled)
{
//do nothing until enabled
}
}
vm.Clear();
btnScan.Text = "Stop Scan";
_bleAdapter.StartScanningForDevices();
}
else
{
btnScan.Text = "Start Scan";
_bleAdapter.StopScanningForDevices();
}
}
private void _bleAdapter_DeviceDiscovered(object sender, Robotics.Mobile.Core.Bluetooth.LE.DeviceDiscoveredEventArgs e)
{
count++;
vm.Add(new BluetoothViewModel
{
Name = e.Device.Name,
ID = e.Device.ID.ToString(),
RSSI = e.Device.Rssi.ToString()
});
}
private void _bleAdapter_ScanTimeoutElapsed(object sender, EventArgs e)
{
DisplayInformation("Scan Timeout");
_bleAdapter.StopScanningForDevices();
btnScan.Text = "Start Scan";
}
private void DisplayInformation(string line)
{
lblStatus.Text = line;
}

列表视图绑定到将显示发现设备的"vm"。 它不显示任何内容,计数始终为零,但我使用_bleAdapter.IsScanning检查了扫描标志,它返回 true。

编辑: 我尝试了其他蓝牙开源示例程序,例如

xamarin-bluetooth-le (BLE Explorer(

Bluetooth-Xamarin.Forms (DemoBluetooth(

他们似乎都没有列出该设备。当我在设置下使用内置蓝牙应用程序时,它会列出设备。我在这里错过了什么?

您是否授予了蓝牙和位置权限?

您必须在清单/或设置中授予权限,并且根据 sdk (23+( 还要求用户提供额外权限。 https://learn.microsoft.com/en-us/xamarin/android/app-fundamentals/permissions?tabs=windows

相关内容

  • 没有找到相关文章

最新更新