微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 BLE 设备数据读入 xamarin android 平板电脑应用

如何解决将 BLE 设备数据读入 xamarin android 平板电脑应用

我是 xamarin 和 BLE 设备的新手,正在尝试创建一个安卓表格应用程序来连接和读取我从亚马逊购买的血压设备。我环顾四周,得到了许多测试代码,但我无法获得任何名称或连接到应用程序扫描的任何设备。 我正在使用 10" android 平板电脑,pie 9.0,api 28,通过 USB 电缆连接到 Windows 笔记本电脑。 这是我的清单

<?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.app1">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
    <application android:label="App1.Android" android:theme="@style/MainTheme"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <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-feature  android:name = " android.hardware.bluetooth_le "  android:required = " true " />   
</manifest>

这里是主页代码

        public MainPage()
        {
            InitializeComponent();
       
            _bluetoothAdapter = CrossBluetoothLE.Current.Adapter;
            _bluetoothAdapter.Devicediscovered += (s,a) =>
            {
                _gattDevices.Add(a.Device);
            };
        }

并扫描按钮代码

private async void ScanButton_Clicked(object sender,EventArgs e)
{

    ScanButton.IsEnabled = false;
    var locationPermissionStatus = await Crosspermissions.Current.CheckPermissionStatusAsync(Permission.Location);

    if (locationPermissionStatus != PermissionStatus.Granted)
    {
        if (await Crosspermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
        {
            await displayAlert("Permission required","Application needs location permission","OK");
        }

        var requestLocationPermissionStatus = await Crosspermissions.Current.RequestPermissionsAsync(new[] { Permission.Location });

        var locationPermissionPersent = requestLocationPermissionStatus.FirstOrDefault(x => x.Key == Permission.Location);
        if (locationPermissionPersent.Value != null)
            if (locationPermissionPersent.Value == PermissionStatus.Granted) locationPermissionStatus = PermissionStatus.Granted;
    }

    if (locationPermissionStatus != PermissionStatus.Granted)
    {
        await displayAlert("Permission required","OK");
        return;
    }

    _gattDevices.Clear();

    await _bluetoothAdapter.StartScanningForDevicesAsync();
    listView.ItemsSource = _gattDevices.ToArray();
    ScanButton.IsEnabled = true;
}

这里是项目选择代码

private async void FoundBluetoothDevicesListView_ItemSelected(object sender,selecteditemchangedEventArgs e)
{
    if (_bluetoothAdapter.IsScanning)
        await _bluetoothAdapter.StopScanningForDevicesAsync();

    IDevice selectedItem = e.SelectedItem as IDevice;

    try
    {
        ConnectParameters para = new ConnectParameters(true,true);
        await _bluetoothAdapter.ConnectToDeviceAsync(selectedItem,para);
        //await _bluetoothAdapter.ConnectToDeviceAsync(selectedItem);
        //await Navigation.PushAsync(new BluetoothDataPage(selectedItem));
        await displayAlert("Notice","connected","success !");
    }
    catch (DeviceConnectionException err)
    {
        await displayAlert("Notice",err.Message,"Error !");
    }

}

已授予所有适当的权限。 扫描运行时,没有名称显示 ID,当我选择一个项目时,“成功”对话框永远不会弹出,代码永远不会到达,它挂在连接调用上!我试图扫描我的 iphone 并且代码甚至没有得到 iphone 名称。任何帮助都受到高度赞赏。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。