[英]Xamarin Forms Bluetooth LE not showing nearby discoverable devices
我正在制作一個利用藍牙功能(例如掃描設備等)的應用程序。我檢查了掃描標志並返回true,但未顯示我正在測試的可發現設備。
我將Samsung J7 Pro用作我的應用程序測試設備,並將Samsung 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資源管理器)
藍牙Xamarin.Forms (DemoBluetooth)
他們似乎都沒有列出該設備。 當我在設置下使用內置的藍牙應用程序時,它會列出設備。 我在這里想念什么?
您是否已授予藍牙和位置許可?
您必須在“清單”或“設置”中授予許可權,並且根據sdk(23+),還要求用戶提供額外的許可權。 https://docs.microsoft.com/zh-CN/xamarin/android/app-fundamentals/permissions?tabs=windows
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.