자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
 

위험지역 경보 시스템 #1 - 비콘을 이용해 위험지역 진입 경보앱 만들기

 

위험지역 경보시스템 비콘을 이용해서 위험지역 진입시 경보음이 울리는 앱을 만들었는데

안드로이드 핸드폰에 어플을 배포하고 실행했으나

비콘 제조업체에서 제공한 어플로 비콘의 UUID를 찾았지만

만든 앱에서는 비콘이 인식되지 않는것 같습니다. 

이럴때에는 어떻게 해결해야하는거일까요?

 

unit MainForm4;

 

interface

 

uses

  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,

  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Ani,

  FMX.Layouts, System.Beacon, System.Beacon.Components, FMX.Media,

  FMX.Objects, FMX.StdCtrls, FMX.Controls.Presentation, System.IOUtils,

  System.Bluetooth;

 

type

  TForm1 = class(TForm)

    ToolBar1: TToolBar;

    Label1: TLabel;

    Switch1: TSwitch;

    Image1: TImage;

    StatusBar1: TStatusBar;

    Label2: TLabel;

    Rectangle1: TRectangle;

    Layout1: TLayout;

    Label3: TLabel;

    lblDistance: TLabel;

    MediaPlayer1: TMediaPlayer;

    FloatAnimation1: TFloatAnimation;

    Beacon1: TBeacon;

    Timer1: TTimer;

    procedure Beacon1BeaconEnter(const Sender: TObject; const ABeacon: IBeacon;

      const CurrentBeaconList: TBeaconList);

    procedure Beacon1BeaconExit(const Sender: TObject; const ABeacon: IBeacon;

      const CurrentBeaconList: TBeaconList);

    procedure Switch1Switch(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { Private declarations }

    FIsWarning: Boolean;

// 경고 중인가?

    FDangerAreaStaySecs,

// 위험지역에 머무른 시간(초)

    FDangerAreaOutSecs: Integer;

// 위험지역에서 벗어난 시간(초)

    FBeacon: IBeacon;

  procedure StartWarning;

// 위험지역 진입 경고 시작

  procedure StopWarning;

// 위험지역 진입 경고 중지

 

  procedure StartSiren;

// 사이렌 시작

  procedure StopSiren;

// 사이렌 중지

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.fmx}

 

{ TForm1 }

 

procedure TForm1.Beacon1BeaconEnter(const Sender: TObject;

  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);

begin

  FBeacon := ABeacon;

end;

 

procedure TForm1.Beacon1BeaconExit(const Sender: TObject;

  const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);

begin

  FBeacon := nil;

end;

 

procedure TForm1.StartSiren;

begin

  MediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'alert.mp3');

  MediaPlayer1.Play;

end;

 

procedure TForm1.StopSiren;

begin

  MediaPlayer1.Stop;

end;

 

procedure TForm1.StartWarning;

begin

  Rectangle1.Visible := True;

  FloatAnimation1.Enabled := True;

 

  StartSiren;

end;

 

procedure TForm1.StopWarning;

begin

  Rectangle1.Visible := False;

  FloatAnimation1.Enabled := False;

 

  StopSiren;

end;

 

procedure TForm1.Switch1Switch(Sender: TObject);

begin

  Beacon1.Enabled := Switch1.IsChecked;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

var

  InDangerArea: Boolean;

// 위험지역에 있는가?(비콘과의 거리가 1m 이내인가?)

begin

   if Assigned(FBeacon) then

  begin

    InDangerArea := FBeacon.Distance <= 1;

 

 

// 경고 중 아님

 

// 위험지역에 3초간 머무른 경우 경고 시작

    if not FIsWarning then

    begin

      if InDangerArea then

        Inc(FDangerAreaStaySecs)

      else

        FDangerAreaStaySecs := 0

      ;

 

      if FDangerAreaStaySecs >= 3 then

      begin

        FIsWarning := True;

        StartWarning;

        FDangerAreaStaySecs := 0

      end;

    end

 

// 경고 중

 

// 위험지역을 3초 이상 벗어난 경우 경고 중단

    else if FIsWarning then

    begin

      if not InDangerArea then

        Inc(FDangerAreaOutSecs)

      else

        FDangerAreaOutSecs := 0;

 

      if FDangerAreaOutSecs >= 3 then

      begin

        FIsWarning := False;

        StopWarning;

        FDangerAreaOutSecs := 0;

       end;

    end;

 

 

// 위험지역과의 거리를 표시

    lblDistance.Text := FBeacon.Distance.ToString;

    Label3.Text := '주면에 노약자와의 거리: ' + FBeacon.Distance.ToString + ' m';

  end;

end;

 

end.

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 17233
공지 유용한 관련 사이트 관리자2 2014.03.20 56113
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99549
1653 MacOS, iOS시뮬레이터로 어플 테스트중인데, dlopen(libmidas.dylib, 1): image not found .... [2] samsmin 2020.03.04 177
1652 안녕하세요. Undo에 관한 질문입니다. [1] 벌꿀이 2020.11.12 177
1651 델파이와 전자정부프레임워크와 연동이 가능한가요? [1] 드레곤 2016.05.25 178
1650 Tools > Options > Form Designer > Embedded designer 설정 기능이 없네요 [2] file 신현아빠 2018.01.26 178
1649 델파이 비콘 여러개의 거리값을 텍스트로 어떻게 나타내나요? [1] 손태희 2019.04.26 178
1648 [IoT 세미나] 비콘이 사용자를 인식할 수는 없나요? Humphery 2015.09.03 179
1647 비주얼 C++ 헤더파일 델파이 변환관련 도움을 부탁드립니다. 시후 2017.02.09 179
1646 델파이 10 에서 립모션 설정 방법좀 알고 싶습니다. [1] 한사람 2016.12.12 180
1645 XE10.2 에서는 Report Tool 이 없나요? [1] midas 2018.08.06 180
1644 모바일에서 datasnap을 이용해 데이터를 가져올때 [2] 종결자 2019.12.16 180
1643 Delphi 10.1 Berlin AnyCpu 설정 방법 [2] Bishop 2017.04.10 181
1642 idtcpserver 서버 찾기 superman 2016.06.25 181
1641 iOS 인증서 관련문의입니다. [2] silkroad99 2017.10.16 181
1640 델파이 Rio 버젼 FramedScrollBox 세로스크롤 버그문제 문의합니다. file silkroad99 2018.12.20 181
1639 Datasnap(midas) 사용시 조회 자료를 ADOQuery 에 넣고 싶습니다. [1] 블랙 2019.06.13 181
1638 [베를린 웨비나] 버전이 너무 자주 바뀌는데 앞으로의 정책이나 방향에 대한 것은 없나요. 험프리 2016.05.04 182
1637 델파이 설치 시 제품 키 유효기간을 알고싶습니다. [1] 얼짱나 2018.08.13 182
1636 델파이 10.2 안드로이드 SDK 추가 [1] 마로 2019.02.18 182
1635 현재 델파이 XE5 쓰고 있는데요 스트링그리드 문제 해결 방법좀 공유 부탁드립니다. file 에크토바 2019.05.22 182
1634 Delphi7 횟수재한 [1] 모든길 2019.10.08 182