我正在制作一个利用蓝牙功能的应用程序,如扫描设备等。我检查了扫描标志并返回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(演示蓝牙)
他们似乎都没有列出设备。当我在设置下使用我的内置蓝牙应用程序时,它会列出设备。我在这里错过了什么?
您是否已获得蓝牙和位置许可?
您必须在Manifest /或Settings中授予权限,并根据sdk(23+)还要求用户获得额外权限。 Bluetooth-Xamarin.Forms