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

问题描述 投票:1回答:1

我正在制作一个利用蓝牙功能的应用程序,如扫描设备等。我检查了扫描标志并返回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”,将显示已发现的设备。它没有显示任何内容,并且count总是为零,但是我使用_bleAdapter.IsScanning检查了扫描标志,它返回true。

编辑:我尝试过蓝牙等其他开源示例程序

xamarin-bluetooth-le(BLE Explorer)

qazxsw poi(演示蓝牙)

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

c# android xamarin mobile bluetooth
1个回答
0
投票

您是否已获得蓝牙和位置许可?

您必须在Manifest /或Settings中授予权限,并根据sdk(23+)还要求用户获得额外权限。 Bluetooth-Xamarin.Forms

© www.soinside.com 2019 - 2024. All rights reserved.