android - Rad Pack Seattle的所有蓝牙信标示例均失败

标签 android delphi crash bluetooth-lowenergy sample

我正在尝试与Rad Pack Seattle学习蓝牙信标。因此,我尝试了所有信标样本,但是似乎都不起作用。我在三个不同的PC(2个Windows 7和一个Server 2012)上尝试了全部6个代码,并在4个不同的Android智能手机(LG和诺基亚)上运行代码。我在所有PC上都安装了新版本的Seattle。
大多数样本会在几秒钟内失败。有时它们冻结,有时它们崩溃,其中一个似乎正在运行,但是只是看不到我将其引导到的信标(而且我知道它是有效的,因为我有一些完成的程序可以找到我想要的信标)等。其中之一是我认为最简单的一条(只有12行),但失败了,并提示“重复记录”。
因此,我开始认为Rad Pack Seattle有问题。但这不可能是真的,所以我想一定是我在做点什么。但是呢不幸的是,很少有人问。
如果我在错误的地方提问,请指出正确的方向。
任何提示将不胜感激-很多。 ;-)
波尔克
这是简单信标演示

Blockquote

Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Beacon, FMX.Layouts, FMX.Memo,
  System.Beacon.Components, FMX.StdCtrls, FMX.Controls.Presentation, FMX.ScrollBox;

type
  TForm1 = class(TForm)
    Beacon1: TBeacon;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Beacon1BeaconEnter(const Sender: TObject; const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
    procedure Beacon1BeaconExit(const Sender: TObject; const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Beacon1BeaconEnter(const Sender: TObject; const ABeacon: IBeacon;
  const CurrentBeaconList: TBeaconList);
begin
  Memo1.Lines.Add('New Beacon');
  Memo1.Lines.Add(Format( 'UUID: %s Major: %d Minor: %d',[ABeacon.GUID.ToString, ABeacon.Major, ABeacon.Minor]));
  Memo1.Lines.Add('Current Beacons count :' + Length(CurrentBeaconList).toString);
end;

procedure TForm1.Beacon1BeaconExit(const Sender: TObject; const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
  Memo1.Lines.Add('Beacon exited');
  Memo1.Lines.Add(Format( 'UUID: %s Major: %d Minor: %d',[ABeacon.GUID.ToString, ABeacon.Major, ABeacon.Minor]));
  Memo1.Lines.Add('Current Beacons count :' + Length(CurrentBeaconList).toString);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Beacon1.Enabled := True;
end;

end.

最佳答案

根据Embarcadero的文档(如下),似乎仅从Windows 10开始支持Bluetooth Beacon。
http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_Beacons
这就解释了Windows 7的情况(我也遇到过这种情况;然后我在Windows 10上尝试了几个,发现它们可以工作,检测到信标)。
不幸的是,似乎没有有关Windows Server最低版本的信息。
查看Microsoft文档(如下)中表格中的10.0 *版本号,也许它至少需要Windows Server 2016。
https://docs.microsoft.com/en-us/windows/win32/sysinfo/operating-system-version
有关更多信息(如果有帮助的话),我在64位Windows 10上使用Delphi 10.2(东京)。
我尝试的示例项目是“AllBeaconsScanner”。在使用目标平台64位Windows构建之后,它运行良好。
在我的机器上,示例项目的路径如下。C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\Beacons\ExtendedBeaconScanner

关于android - Rad Pack Seattle的所有蓝牙信标示例均失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63294227/

相关文章:

excel - 是否可以获取Excel工作表函数的调用堆栈?

ios - 应用在启动时崩溃

android - 如何将视频播放为动态壁纸 android?

delphi - 为什么使用 FreeMem/Dispose 例程释放内存,却没有减少内存?

windows - 如何使用 delphi 导入(合并)reg 文件?

delphi - 调用一个名称由另一个过程设置的过程(通过事件)

python - 如何存储控制台最后显示的值?

android: 当我点击后退按钮时应用程序崩溃 (activitygroup + TabWidget)

java - 安卓、Java套接字

android - 如何正确暂停AudioTrack并恢复平稳播放?