Xamarin应用程序无法识别任何蓝牙设备(Plugin.BluetoothLE)

问题描述 投票:0回答:2

我正在使用Plugin.BluetoothLE结合arduino项目制作应用程序。因此对于移动应用程序,我正在使用Xamarin表单和Plugin.BluetoothLE库。问题是我的移动设备无法识别任何蓝牙设备。这是我在扫描设备的视图模型中的代码片段。

private void BtnFindHandler()
{
  if (CrossBleAdapter.Current.Status != AdapterStatus.PoweredOn)
  {
    Debug.WriteLine("Bluetooth is not turned on.");
      return;
  }

  if (CrossBleAdapter.Current.IsScanning)
    CrossBleAdapter.Current.StopScan();

  var scanner = CrossBleAdapter.Current.Scan().Subscribe(scanResult =>
  {
    if (scanResult.Device.Name != null)
      Debug.WriteLine(scanResult.Device.Name);
  });
}

这是我的Android清单文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.appname" android:installLocation="preferExternal">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28" />
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
  <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
    <application android:label="TestArduino.Android" android:icon="@mipmap/ic_launcher"></application>
</manifest>

同样在MainActivity.cs中,我明确要求用户提供一些权限,并且有相应的代码。

 protected override void OnCreate(Bundle bundle)
 {
   TabLayoutResource = Resource.Layout.Tabbar;
   ToolbarResource = Resource.Layout.Toolbar;

   base.OnCreate(bundle);

   global::Xamarin.Forms.Forms.Init(this, bundle);
   LoadApplication(new App(new AndroidInitializer()));

   RequestPermissions(new[]
   {
      Manifest.Permission.AccessCoarseLocation,
      Manifest.Permission.BluetoothPrivileged
      }, 0);
 }

[我也试图为我的应用设置手动权限,但没有成功。非常感谢你:)

android xamarin xamarin.forms xamarin.android bluetooth
2个回答
0
投票

您需要向用户询问Location权限并授予它。您清单中的蓝牙权限就足够了,无需询问用户。

您可以使用此PermissionsPlugin来实现。

如果您想知道为什么there is a debate as if it is a bug or a feature


0
投票

使用此插件。完美适用于蓝牙。https://www.nuget.org/packages/Jarvis.Connections.Bluetooth/

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