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

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

 

안녕하세요. 올라오고 있는 태풍이 걱정되는 날이네요.

 

 

 

현재 개발은 도쿄로 진행중입니다.

 

블루투스 장치를 검색하고 그걸 선택하면 페어링, 연결 후

 

시리얼포트 서비스로 문자열을 주고받는 앱을 만들고있습니다.

 

지금 문제가 생긴 부분은 블루투스 컴포넌트에 있는 Pair 메소드를 불러서 위 사진처럼

 

해당 디바이스와 페어링을 시도하는 액티비티가 나옵니다.

 

 

그런데 이 액티비티에서 비밀번호을 입력하고 확인버튼을 눌렀을때!

 

저 액티비티가 사라졌을 때의 타이밍? 이벤트를 얻어야하는데 어떻게 접근하는지 몰라서 질문드립니다.

 

현재 해당 부분의 소스코드는 이렇습니다. 리스트에 있는 디바이스를 누르면 호출되는 프로시져입니다.

 

procedure TForm1.lst1ItemClick(const Sender: TCustomListBox;

  const Item: TListBoxItem);

var

  i : Integer;

 

begin

  //검색된 장치를 누르면 바로 페어링

  Bluetooth1.Pair(FScanedDevices.Items[Item.Index]);

 

  //페어링 비밀번호 입력하라는 창이 뜨는데 입력 완료할때까지 대기해야함

 

  //그런데 페어링 액티비티가 떠있어도 이 다음으로 소스는 진행된다...

 

  //검색 리스트에서 누른 이름과 페어링 리스트의 이름과 비교하여 페어링 리스트 인덱스 얻음

  // *페어링 액티비티에서 비밀번호 입력과 확인을 누르지 않았어도 소스는 진행되가지고 

  // *PairedDevices에 저장된 리스트는 없다... 그런데 for문에서 참조하려고 하니 오류 발생 

  for i := 0 to Bluetooth1.PairedDevices.Count - 1 do

  begin

    if Item.Text = Bluetooth1.PairedDevices.Items[i].DeviceName then

    begin

      TargetPaireNo := i;

      Break;

    end;

  end;

 

  ShowMessage('OK');

 

  }

end;

 

  

소스상에 for문 위쪽에 적힌 주석을 보시면 이해되실겁니다.

 

Bluetooth1.Pair를 해서 페어링 액티비티가 나왔는데 사용자가 비밀번호를 입력할때까지 대기해야하지만

 

그 방법을 몰라서 소스는 계속 진행되고 for문에서 아무것도 없는 페어링 디바이스 리스트를 참조하니깐 오류가 납니다.

 

 

 

페어링 액티비티에서 확인을 눌렀는지 안눌렀는지 알수 있는 방법이 있을까요?

 

혹은 좀더 나은 개발 아이디어가 있을까요? ㅜㅜ