새로운 글
새로운 덧글

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

  • 비콘에 대해 소개합니다.
  • 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)을 개발할 수 있는

 

관련 글

번호 제목 글쓴이 날짜 조회 수
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 관리자 2017.02.06 164
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 208
공지 데브기어 강의 - 2017년 5월~2017년 7월 관리자 2015.01.22 5305
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 7865
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 5월 2일 업데이트) 험프리 2014.01.16 145248
752 [고객 사례- 쇼핑, 모바일앱, 델파이] 매일 최저가 상품을 보여주는 'Daily Offer' 관리자 2017.06.21 54
751 RAD서버로 개발은 확장하면서도 비용을 절감하는 방법 (RAD서버 라이선스 유형별 정리) file 관리자 2017.06.20 122
750 [REST API][실습] 데이터셋 기반 REST API 개발하기 험프리 2017.06.13 90
749 이 달의 기술자료 - 2017년 06월 file 험프리 2017.05.30 192
748 [발표자료] REST API 웹서비스 연동 관리자 2017.05.29 167
747 [REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) 험프리 2017.05.23 196
746 [REST API][실습] REST API 서버 개발하기(엔드포인트 구현, RAD 서버 이용) 험프리 2017.05.23 215
745 [REST API] REST API 이해하기 험프리 2017.05.23 270
744 델파이 코드 분석 도구 험프리 2017.05.16 175
743 애플 개발자 프로그램 구독하지 않고 XCode8을 설정해 iOS앱을 배포하는 방법 험프리 2017.05.15 231
742 안드로이드에서 커스텀 폰트 사용하기 - 델파이 10.2 도쿄 험프리 2017.05.15 86
741 [고객 사례- 조명, 델파이] 나이아가라 폭포 야간 조명 [1] 관리자 2017.05.10 565
740 [업데이트][핫픽스][10,2 도쿄] 툴체인 이슈 핫픽스 험프리 2017.05.10 147
739 [RAD서버] EMS 패키지 프로젝트 시작하기 험프리 2017.04.28 92
738 [RAD서버] EMS 서버 운영환경에 설치하기(독립형 실행파일) 험프리 2017.04.28 129
737 이 달의 기술자료 - 2017년 05월 file 험프리 2017.04.26 181
736 리눅스 서버용 GUI 응용프로그램 만들기(10.2 도쿄 & FMXLINUX 이용) 관리자 2017.04.25 260
735 [환경설정] 아마존 EC2 이용해 리눅스 서버 환경 구축하기 험프리 2017.04.20 176
734 [환경설정] 아마존 EC2 이용해 윈도우 서버 환경 구축하기 [1] 험프리 2017.04.13 202
733 [발표자료] What's NEW! RAD Studio 10.2 도쿄 험프리 2017.04.13 148


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..