当前位置: 首页 > 知识库问答 >
问题:

Xamarin形成蓝牙LE,不显示附近可发现的设备

杜诚
2023-03-14

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

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

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

我的代码基于Monkey。蓝牙

以下是我所拥有的:

声明

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;
}

listview绑定到将显示发现的设备的“vm”。它不显示任何内容,计数始终为零,但我使用bleAdapter检查了扫描标志。如果正在扫描,则返回true。

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

xamarin蓝牙le(BLE浏览器)

蓝牙-Xamarin。表单(Demo蓝牙)

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

共有1个答案

高夜洛
2023-03-14

您是否已授予蓝牙和定位权限?

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

 类似资料:
  • 问题内容: 我正在尝试使用Linux上的Python 列出所有附近的/可发现的蓝牙设备, 包括已经配对的 蓝牙设备。 我知道如何使用其地址列出设备的服务,并且可以成功连接: 如果我不指定任何条件,则阅读PyBluez文档时,我希望附近的任何设备都能显示出来: “如果未指定任何条件,则返回检测到的所有附近服务的列表。” 我现在唯一需要的是能够列出已经配对的设备,无论它们是打开,关闭,附近还是不打开。

  • 问题内容: 我正在寻找一种以编程方式列出我的设备所找到的附近任何蓝牙设备(可发现)的方法。我无法找到有关在Swift3.0中执行此调用的任何信息或教程。这篇QA帖子讨论了使用Swift 1.0查找这些设备并在Xcode 6(而不是最新版本8)中进行构建。 我尽力将代码从1.0转换为3.0语法,但是在运行以下代码时,Playground不返回任何内容: 问题答案: 正确使用IOBluetooth 下

  • 我有一个蓝牙设备,它正在测量力并基本上发送一个值。有一个android应用程序可以连接到它,但我想开发自己的应用程序,因为我想添加一些功能。我设法连接到它,但不知道哪个服务或特征是具有我需要的号码的服务或特征。有人可能知道它可能是其中的哪一个? 服务00001801-0000-1000-8000-00805f9b34fb 服务00001800-0000-1000-8000-00805f9b34fb

  • 我试图用BLE API扫描附近的蓝牙设备,但它似乎不起作用 我已经在清单中添加了权限 以下内容在创建对象时 创建扫描仪回调对象并进一步扫描 在logcat中,我只看到以下内容 这是我的app build gradle } 有人能指出我在这里遗漏了什么吗?

  • 我试图在Linux上使用Python列出所有附近/可发现的蓝牙设备,包括已经配对的设备。 我知道如何使用设备地址列出设备的服务,并且可以成功连接: 阅读PyBluez文档,如果我不指定任何标准,我希望附近的任何设备都会出现: 如果未指定条件,则返回检测到的所有附近服务的列表 我现在唯一需要的是能够列出已经配对的设备,无论它们是开着的、关着的、附近的还是没有的。很像我在所有设置中得到的列表-- 顺便

  • 我正在编写一个Android应用程序,它应该可以通过蓝牙发现设备。 我没有得到任何例外,但设备只是没有找到,即使我的windows pc找到他们(并可以找到自己)。 我肯定他们是好的,但我两种方法都试过了。当然我也分别试过了。 下面是我的ListActivity,它搜索设备: 日志显示扫描后MLEDeviceListAdapter:0和扫描后isEmpty():true。 则从不调用该日志(onS