새로운 글
새로운 덧글

자유롭게 질의 및 응답을 할 수 있는 게시판이며 어느 누구도 답변을 달아야만 하는 의무는 없습니다. 
  • 제품설치/등록/제품 오류 문의: 설치/등록 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.

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2019.4~2019.7 관리자 2015.01.22 6346
공지 유용한 관련 사이트 관리자2 2014.03.20 43673
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 85013
23 델파이 비콘 여러개의 거리값을 텍스트로 어떻게 나타내나요? [1] 손태희 2019.04.26 55
22 파이어몽키 Mediaplayer에서 지원하지 않는 Media [3] 해신여화 2019.04.29 43
21 자료실 jar 연동하는것을 보고서.. [1] file 광수생각 2019.04.30 301
20 java2op 로 변환후에... 오류 광수생각 2019.05.02 25
19 delphi svn 에서 add to version control 시 에러 [1] 가나다 2019.05.03 20
18 interbase 에서 remote server 만드는법 [1] file 델파이꿈나무 2019.05.05 30
17 버튼을 누르면 폼으로 이동하는 걸 어떻게 하나요? [1] 손태희 2019.05.06 44
16 비콘 여러개를 잡아 거리값을 출력하는 소스나 참고할 자료가 있을까요? 손태희 2019.05.06 21
15 bpl을 동적으로 활용해서 DBConnection 공유하는 방법을 알고싶습니다. [1] 맛재현 2019.05.07 31
14 폼의 시작 이벤트 변경 원인 (소스포함) [5] file 젠틀 2019.05.07 147
13 브레이크 포인트 무작동 [2] file 젠틀 2019.05.07 73
12 Delphi XE 10.2.3 의 TLineTransitionEffect.OffsetProp 의 Getter, Setter 에 버그가 있습니다 [1] DarkRyu 2019.05.08 33
11 컴퍼넌트 등록관련 질문드립니다. [1] 투덜이스머프 2019.05.09 24
10 CG32.DLL을 찾을 수 없습니다 [3] 손보라 2019.05.10 37
9 동적으로 폼을 생성하는 방법 문의 [2] 미스터리 2019.05.10 59
8 델파이 MIDAS.DLL Error loading 관련문의 보내드립니다. 미소 2019.05.14 22
» RAD Studio 10.3 비콘관련 문의드립니다. [2] 정은은은 2019.05.14 51
6 ADOconnection 에서 MDB 파일 연결 질문입니다... [2] 초보델팡이 2019.05.15 38
5 문의 드립니다 [2] 투덜이스머프투 2019.05.17 30
4 ADOQuery Insert 후 Refresh 할 수 있나요?? [6] 초보델팡이 2019.05.20 34



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