이 글에서는 다음 내용이 포함됩니다.

  • 비콘에 대해 소개합니다.
  • TBeacon 컴포넌트를 소개합니다.
  • 비콘에 대해 더 알아볼 수 있는 데모와 참고자료를 소개합니다.

 

이제 비콘 컴포넌트를 이용해 근거리 위치기반 서비스를 개발할 수 있습니다.

비콘(Beacon)은?

비콘은 일정 주기로 작은 데이터(일명 광고 데이터)를 주변으로 송출하는 장비입니다. 비콘이 제공하는 광고 데이터에는 "Manufacturer Specific Data(기업 고유 데이터)"를 포함합니다. 이 정보를 통해 주변의 블루투스 LE 장비는 페어링 및 접속 없이 비콘을 식별하고 거리를 계산할 수 있습니다.

 

이제 여러분은 비콘을 이용해 다음의 예시에서 볼 수 있는 근거리 위치기반 서비스를 개발할 수 있습니다.

  • 환자가 병원 방문 시 환자의 모바일기기가 비콘을 인식하고 접수대에 자동으로 방문을 알려줍니다.
  • 공장내의 위험지역에 작업자가 들어오면 작업자의 모바일기기에 위험을 통지하는 알람을 울리고, 방문로그를 남겨 시설관리자가 작업동선을 조정할 수 있어 사고를 사전에 방지할 수 있습니다.
  • 진열상품 근처에 고객이 다가오면 고객의 모바일 기기에 상품정보 또는 할인쿠폰 등을 전달하는 앱을 만들 수 있습니다.
비콘(iBeacon)에 대해서는 아래 링크에서 잘 설명하고 있습니다. 비콘을 좀 더 이해할 수 있는 자료여서 공유합니다.

비콘 컴포넌트(TBeacon)

 

RAD Studio에서 비콘을 인식하기 위해서 TBeacon 컴포넌트를 이용합니다.

❑ 비콘타입

비콘은 iBeacon과 AltBeacon 2종류의 표준(신호 형식)이 있습니다.

  • iBeacon : 애플 사에서 주도하는 비콘 표준입니다. iBeacon은 표준 모드로 간주됩니다.
  • AltBeacon : 대체 비콘이라고도 하는 오픈 표준입니다. 사양은 http://altbeacon.org에 공개되어 있습니다.
TBeacon에서는 Mode 속성을 통해 Standard(iBeacon), Alternative(AltBeacon)을 선택할 수 있습니다.

(참고로 iBeacon을 애플에서 주도해 iOS에서만 사용할 수 있다고 생각할 수 있지만 모든 플랫폼에서 지원합니다.)

❑ 비콘 등록

비콘에서 제공하는 광고데이터를 받기위해서는 TBeacon 컴포넌트에 비콘의 정보를 등록해야 합니다.

MonitorizedRegions 속성을 통해 UUID, Major, Minor를 등록합니다.(UUID, Major, Minor 값은 비콘 제조사의 전용앱을 통해 설정할 수 있습니다. 기본 값은 제조사 웹사이트 등을 통해 안내합니다.)

  • UUID : 비콘의 그룹을 식별할 수 있는 고유 식별자
  • Major, Minor : 개별 비콘을 식별할 수 있는 값. 특정 UUID로 지정되는 지역 내부 영역을 식별합니다. Major는 UUID로 정의되는 지역의 부분영역을 식별합니다. Minor는 Major 영역의 더 작은 부분을 식별합니다.

❑ 비콘 컴포넌트 이벤트

다음 이벤트를 통해 비콘의 동작을 알 수 있습니다.

  • OnBeaconEnter : 새로운 신호 영역에 들어갈 때마다 발생합니다.
  • OnBeaconExit : 비콘 지역에서 나올 때마다 발생합니다.
  • OnBeaconProximity : 근접 ( Proximity )의 값이 변경 될 때마다 발생합니다.
    레벨 설명
    Inmediate 1 0.5 m 미만
    Near 2 0.5 m 이상 1.5 m 이하
    Far 3 1.5 m보다 먼
    Away 4 판정 불능
  • OnCalcDistance : 거리 ( Distance )가 계산되기 직전에 발생합니다.
  • OnEnterRegion : 등록 된 지역에서 비콘에 처음 도달 가능하게 될 때 발생합니다.
  • OnExitRegion : 지역에 등록 된 모든 신호가 도달 불능이되었을 때 발생합니다.

❑ 플랫폼 지원

플랫폼 지원 상황

Windows

 

Mac OS X

YesC + 11Feature.png

iOS

YesC + 11Feature.png

Android

YesC + 11Feature.png

Windows 플랫폼에서는 광고 데이터에 엑세스 할 수 없기 때문에 비콘 API를 사용할 수 없습니다.

→ 더 자세한 내용은 엠바카데로 기술문서: Using Beacons(한글번역)에서 확인하세요.

* RAD 스튜디오 10.1 베를린 부터 윈도우 10에서 비콘을 지원합니다.

 - 자세히 보기: http://docwiki.embarcadero.com/RADStudio/Berlin/en/What%27s_New#Bluetooth_LE_and_Beacon_Support_on_Windows_10

비콘 데모 소개

❑ RAD Studio XE8 기본샘플

RAD Studio XE8 설치 시 제공되는 기본샘플에서 비콘 데모를 확인할 수 있습니다.

Object pascal : C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Object Pascal\Mobile Samples\Device Sensors and Services\Bluetooth\Beacons

CPP : C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\CPP\Mobile Samples\Device Sensors and Services\Bluetooth\Beacons

❑ Beacon Proximity Demo(Sarina DuPont)

델파이 시니어 프로젝트 매니저 Sarina DuPont가 제공하는 샘플입니다.(http://community.embarcadero.com/index.php/blogs/entry/building-proximity-aware-application-with-rad-studio-xe8)

BeaconDiscoveryDemo


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
unit BeaconForm;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Beacon,
  System.Beacon.Components, FMX.StdCtrls, FMX.Controls.Presentation,
  FMX.ListBox, FMX.Layouts;
 
type
  TBeaconDiscoverForm = class(TForm)
    StartDiscoveryBtn: TButton;
    CancelDiscoveryBtn: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    BeaconDistance: TLabel;
    ToolBar1: TToolBar;
    Label5: TLabel;
    BeaconDiscoveryList: TListBox;
    ListBoxGroupHeader1: TListBoxGroupHeader;
    ListBoxItem1: TListBoxItem;
    ListBoxItem2: TListBoxItem;
    ToolBar2: TToolBar;
    Beacon1: TBeacon;
    procedure StartDiscoveryBtnClick(Sender: TObject);
    procedure CancelDiscoveryBtnClick(Sender: TObject);
    procedure Beacon1BeaconProximity(const Sender: TObject;
      const ABeacon: IBeacon; Proximity: TBeaconProximity);
    procedure Timer1Timer(Sender: TObject);
    procedure Beacon1BeaconEnter(const Sender: TObject; const ABeacon: IBeacon;
      const CurrentBeaconList: TBeaconList);
  private
    { Private declarations }
    FBeacon : IBeacon;
  public
    { Public declarations }
  end;
 
var
  BeaconDiscoverForm: TBeaconDiscoverForm;
 
implementation
 
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}
{$R *.iPhone47in.fmx IOS}
{$R *.Macintosh.fmx MACOS}
 
procedure TBeaconDiscoverForm.Beacon1BeaconEnter(const Sender: TObject;
  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
begin
  if ABeacon <> nil then;
 
end;
 
procedure TBeaconDiscoverForm.Beacon1BeaconProximity(const Sender: TObject;
  const ABeacon: IBeacon; Proximity: TBeaconProximity);
begin
  if Proximity = TBeaconProximity.Near  then
  begin
    FBeacon := ABeacon;
    Label1.Text := 'Beacon: '+ FBeacon.GUID.ToString+'   Major:'+FBeacon.Major.ToString+' Minor:'+FBeacon.Minor.ToString;
  end;
end;
 
procedure TBeaconDiscoverForm.StartDiscoveryBtnClick(Sender: TObject);
begin
  Beacon1.StartScan;
  Timer1.Enabled := True;
end;
 
procedure TBeaconDiscoverForm.CancelDiscoveryBtnClick(Sender: TObject);
begin
  Beacon1.StopScan;
  Timer1.Enabled := False;
end;
 
procedure TBeaconDiscoverForm.Timer1Timer(Sender: TObject);
begin
    if FBeacon <> nil then
    BeaconDistance.Text := FBeacon.Distance.ToString + 'm';
end;
 
end.

소스 다운로드: http://cc.embarcadero.com/item/30188

한번에 윈도우, 맥, iOS, 안드로이드, 사물인터넷(IoT)을 개발할 수 있는

 

관련 글

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 22591
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21024
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23082
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28881
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30050
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25397
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46348
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182316
1397 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152367
1396 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 112780
1395 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 84738
1394 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71988
1393 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54176
1392 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50405
1391 Find the O/S Language Type c2design 2014.07.30 48421
1390 RAD Studio Resource Center 박병일 2012.01.26 46645
1389 CD-ROM 열고 닫기 박병일 2011.12.22 44787
1388 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38644
1387 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32514
1386 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29499
1385 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23342
1384 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 23197