Я создаю приложение, использующее функцию Bluetooth, например, устройства сканирования и т. Д. Я проверил флаг сканирования и возвращает значение true, но не показываю обнаруживаемое устройство, которое я тестирую.
Я использую Samsung J7 Pro в качестве устройства для тестирования приложений и Samsung J7 в качестве устройства, которое я хочу видеть в списке обнаруженных устройств.
J7 уже установлен как видимый и с включенным Bluetooth.
Я основал свои коды в 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.
EDIT:
Я пробовал другие примеры программ с открытым исходным кодом для Bluetooth, таких как
xamarin-bluetooth-le (BLE Explorer)
Bluetooth-Xamarin.Forms (DemoBluetooth)
Ни один из них, кажется, не перечисляет устройство. Когда я использую мое встроенное приложение Bluetooth в настройках, оно отображает список устройств. Что мне здесь не хватает?