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

  • 비콘에 대해 소개합니다.
  • 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 14390
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21065
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
923 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 10. 그래픽들 관리자 2019.03.29 1044
922 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 9. 함수들 관리자 2019.03.29 1679
921 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 8. 프로시저들 관리자 2019.03.29 624
920 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 7. 중접된 If...Then...Else 문. 작업 해결 실습하기 관리자 2019.03.29 674
919 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 6. 프로그램에서 조건에 따라 실행. If...Then...Else 문 관리자 2019.03.29 896
918 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 5. 논리 표현들. Boolean 타입 변수들. 논리 연산들 관리자 2019.03.29 617
917 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 4. 표준 수학 함수들 관리자 2019.03.29 655
916 n[도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 3. 변수들, 변수의 타입들, 타입 변환하기 관리자 2019.03.29 702
915 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 2. 버튼 누름, 이벤트 다루기 관리자 2019.03.29 815
914 이 달의 기술자료 - 2019년 04월 file 험프리 2019.03.28 737
913 [엠바카데로 Feature Friday]10.3.1에서의 iPhone X, iPad Pro 해상도 지원 관리자 2019.03.21 363
912 이 달의 기술자료 - 2019년 03월 file 험프리 2019.02.27 513
911 [10.3 리오][업데이트1] 재설계한 RAD서버 콘솔 UI : API 분석 용이 & Ext JS로의 마이그레이션 지원 관리자 2019.02.22 491
910 [10.3 리오][업데이트1] VCL, FMX용 새로운 스타일 15종 지원 관리자 2019.02.22 1349
909 [10.3 리오][업데이트1] iOS 12, iPhone X 시리즈 디바이스들 지원 관리자 2019.02.22 427
908 [10.3 리오][업데이트1] 새로운 IDE 생산성 도구: 북마크 & 탐색기 관리자 2019.02.22 618
907 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 0. 책 소개. 저자 소개. 목차 관리자 2019.02.20 2407
906 [10.3 리오][업데이트 1] What's NEW! 신기능 자세히 보기 험프리 2019.02.18 1986
905 암호화 라이브러리 LockBox 컴포넌트 사용하기 [3] file 험프리 2019.02.18 2569
904 [발표자료] 20190214 델파이 24주년 기념 세미나: 델파이 앱 현대화 방안 - 다양한 데이터 서비스 연동하기 file 관리자 2019.02.15 477