자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 안드로이드 어플 개발중 블루투스 페어링 액티비티 제어
2018.08.23 18:16
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요. 올라오고 있는 태풍이 걱정되는 날이네요.
현재 개발은 도쿄로 진행중입니다.
블루투스 장치를 검색하고 그걸 선택하면 페어링, 연결 후
시리얼포트 서비스로 문자열을 주고받는 앱을 만들고있습니다.
지금 문제가 생긴 부분은 블루투스 컴포넌트에 있는 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문에서 아무것도 없는 페어링 디바이스 리스트를 참조하니깐 오류가 납니다.
페어링 액티비티에서 확인을 눌렀는지 안눌렀는지 알수 있는 방법이 있을까요?
혹은 좀더 나은 개발 아이디어가 있을까요? ㅜㅜ
댓글 0
Delphi 안드로이드 어플 개발중 블루투스 페어링 액티비티 제어
2018.08.23 18:16
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요. 올라오고 있는 태풍이 걱정되는 날이네요.
현재 개발은 도쿄로 진행중입니다.
블루투스 장치를 검색하고 그걸 선택하면 페어링, 연결 후
시리얼포트 서비스로 문자열을 주고받는 앱을 만들고있습니다.
지금 문제가 생긴 부분은 블루투스 컴포넌트에 있는 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문에서 아무것도 없는 페어링 디바이스 리스트를 참조하니깐 오류가 납니다.
페어링 액티비티에서 확인을 눌렀는지 안눌렀는지 알수 있는 방법이 있을까요?
혹은 좀더 나은 개발 아이디어가 있을까요? ㅜㅜ