Приложение Xamarin не распознает ни одно устройство Bluetooth (Plugin.BluetoothLE) - PullRequest
0 голосов
/ 18 января 2020

Я использую Plugin.BluetoothLE для создания приложения в сочетании с проектом Arduino. Поэтому для мобильного приложения я использую формы Xamarin и библиотеку Plugin.BluetoothLE. Проблема в том, что мое мобильное устройство не распознает ни одно устройство Bluetooth. Это мой фрагмент кода из модели представления, где я сканирую устройства.

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

Также я пытался установить ручное разрешение для моего приложения, но безуспешно. Большое спасибо:)

Ответы [ 3 ]

0 голосов
/ 19 января 2020

Используйте этот плагин. Работает отлично для блютуса. https://www.nuget.org/packages/Jarvis.Connections.Bluetooth/

0 голосов
/ 20 марта 2020

Просто включите GPS на своем телефоне. По-видимому, на некоторых устройствах недостаточно просто запрашивать и разрешать разрешения для местоположения.

0 голосов
/ 18 января 2020

Вам необходимо запросить у пользователя разрешение Location и предоставить его. Разрешения Bluetooth в вашем манифесте достаточно, нет необходимости запрашивать их у пользователя.

Вы можете использовать этот PermissionsPlugin для реализации этого.

И если вы хотите знать, почему идет дискуссия, как будто это ошибка или особенность

...