我正在制作一个利用蓝牙功能的应用程序,例如扫描设备等。我检查了扫描标志并返回 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