마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

한 번 등록하여 페어링된 블루투스 장치를 가져오는 방법을 알고 싶습니다.

0 추천
현재 휴대폰의 블루투스 설정에서 장치의 비밀번호(00000)를 입력하여 등록된 디바이스로 등록시킨 상황입니다.(페어링된 상태라고 봐도 무방할까요?)

그런데 장치를 사용하기 위해서 장치와 관련된 앱을 실행하면 그 안에서 다시 휴대폰으로 advertising하고 있는 기기들 중에서 직접 선택을 해야 합니다.

혹시 한 번 페어링된 기기는 앱실행시 바로 자동으로 연결될 수 있도록 하는 방법이 있을 까요?

요약하자면

이미 휴대폰에 한 번 등록(페어링시켜놓은)된 장치를 앱내에서 다시 수동으로 선택할 필요 없이 페어링됐던 장치정보를 가져와서 자동으로 연결시킬 수 있는 방법이 있는지 궁금합니다.
꿈대생 (170 포인트) 님이 2018년 7월 17일 질문

1개의 답변

0 추천
 
채택된 답변

Advertising 이란 용어를 쓴 것을 보니 Bluetooth 4.x BLE를 의미하는 것 같네요.
확실한 답은 못드릴 것 같습니다. 그런 시도를 해 보진 않았네요.

우선,
해당 앱이 접속부터 처리한다고 한다면,
앱의 코드를 바꾸지 않고는 불가능하겠죠.
 
혹시, 코드를 바꾼다고 하더라도 될 지는 모르겠습니다.
왜냐하면, Bluetooth 통신을 하려면 연결 정보를 알아야 합니다.
시스템에서 접속된 BT Device의 정보를 일개 앱에게 던져 주진 않을 것 같습니다.
 
안그러면, 시스템이나 타 앱에서 연결한 BT 디바이스를 해킹하는 것을 막을 수 없기 때문이죠.
그렇게 되면 모든 앱이 BT 디바이스와 통신하는 데이터를 다 열어 볼 수 있다는 것이 되겠죠.
 
그게 가능하다면, 사용자의 허락을 받아서 현재 연결된 BT 디바이스 접속 정보를 OS가 일개 앱에서 넘겨주는 기능이 있어야 합니다. 잠깐 찾아 봤는데 관련 내용으로는 검색 결과가 안나오네요. (정말 잠시 찾아보았습니다)
Will Kim (43,170 포인트) 님이 2018년 7월 18일 답변
꿈대생님이 2018년 7월 19일 채택됨
답변정말 감사합니다. 선생님께서 말씀하신대로 BLE를 사용하고 있는 것 맞습니다.
그런데 제가 다른 곳에 문의해본 바로는 BluetoothAdapter에서 한 번 페어링된 기기 정보를 저장하고 있어서 그것을 사용하여 앱실행시 그 정보를 사용해서 연결시킬 수 있다고 하는데 혹시 BluetoothAdapter가 정말 그런 정보를 갖고 있는지, 아니면 제가 BluetoothAdapter에 대해서 잘못 알고 있는것인지 궁금합니다.
저도 계속해서 검색은 해보는데 관련된 내용을 찾기가 힘드네요ㅜ
저도 그런 코드는 본 적이 없습니다. 이미 연결된 정보를 가지고 올 수 있다면 좋겠지만..
이렇게는 가능하죠.
앱에서 해당 BLE 디바이스를 찾아서 연결을 끊고, 다시 붙일 수는 있습니다.
혹시 정말 죄송한데 앱에서 BLE디바이스를 찾아서 연결을 끊고 다시 붙이는 코드를 참고할 수 있는 링크가 있을까요? 아니면 구글링시 어떤식으로 검색을 하는 것이 수원할지 알려주실 수 있으신가요
제가 예전에 아래를 참고 한 것 같네요.

https://github.com/kaviles/BLE_Tutorials

여기에서 Scanner_BTLE.java 부분이 BLE를 스캔해서 발견하면 callback을 호출합니다.

    // Device scan callback.
    private BluetoothAdapter.LeScanCallback mLeScanCallback =
            new BluetoothAdapter.LeScanCallback() {

                @Override
                public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {

다만, 안드로이드의 BLE는 플랫폼 버전 19, 20 일때와, 21이상일때로 나누어지는데, 이 샘플이 어느 영역인지는 지금 기억 안나네요.

아... 하위 버전 용 샘플이네요. 이 구조를 가지고 가면서 상위버전용 샘플을 찾아서 머지해야 합니다. 최신 핸드폰에서는 동작 안할 수 있습니다.

이걸 다 머지해서 완벽하게 오픈소스로 공유한 예제는 2년전에 발견하지 못했습니다.
지금은 블루투스 쪽 프로젝트를 안해서 좀 그렇네요.

게다가 BLE쪽은 샘플만 가지고는 힘든게, 디바이스가 있어야지만, 동작하므로, Open Source로 진행하기가 쉽지 않죠.

시간되면 하겠는데 말이에요~
정말 감사합니다. 참고하겠습니다ㅜ!
...