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



我正在使用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);
});
}

这是我的安卓清单文件。

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

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

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

您可以使用此权限插件来实现这一点。

如果你想知道为什么会有争论,就好像它是一个错误或一个功能

只需打开手机上的GPS。显然,在某些设备上,仅请求并允许位置权限是不够的。

使用此插件。 非常适合蓝牙。 https://www.nuget.org/packages/Jarvis.Connections.Bluetooth/

最新更新