안드로이드 ble 전문가 님들에게 질문 합니다

조회수 2627회
mAdvSettings = new AdvertiseSettings.Builder()
        .setAdvertiseMode( AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY )
        .setTxPowerLevel( AdvertiseSettings.ADVERTISE_TX_POWER_HIGH )
        .setConnectable( false )
        .build();

ParcelUuid pUuid = new ParcelUuid( UUID.fromString( "CDB7950D-73F1-4D4D-8E47-C090502DBD63"));
mAdvData = new AdvertiseData.Builder()
        .addServiceUuid( pUuid )
        .addServiceData( pUuid, "aa".getBytes( Charset.forName( "UTF-8" ) ) )
        .build();

mAdvScanResponse = new AdvertiseData.Builder()
    .setIncludeDeviceName(true)
    .build();

....

  mAdvertiser = mBluetoothAdapter.getBluetoothLeAdvertiser();
  mAdvertiser.startAdvertising(mAdvSettings, mAdvData, mAdvScanResponse, mAdvCallback);

안드로이드 코드에서 위 와 같이 advertsing 메세지를 만들어 beacon 신호를 만들고자합니다 그래서 setConnectable 을 false로 주어 non-connectable 상태로 만드려고했는데

nordic 에서 판매하는 BLE dongle로 ble 패킷을 확인해보니 아래와 같이 Advertising Type이 Discoverable 으로 나옵니다.

제가 주변에 테스트 중인 비콘 모듈에서는 Advertising Type 이 non-connectable 로 잘 표시됩니다.

하지만 Samsubng Galaxy S7 edge 에서 위에 남긴 코드로 돌리면 Discoverable type으로 표시되구요.. 이를 non-connectable type으로 변경하기 위해서는 어떻게 해야하며

변경을 하지 못한다고 한다면 Discoverable type과 non-connectable type의 차이점을 알고 싶습니다.

이미지

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 해결 하였습니다.

    mAdvertiser.startAdvertising(mAdvSettings, mAdvData, mAdvScanResponse, mAdvCallback);

    이부분에서 mAdvScanResponse 파라미터를 사용하지 않는 startAdvertising 메서드를 사용하면 non=connectable type으로 전송되되군요. ^

    mAdvertiser.startAdvertising(mAdvSettings, mAdvData, mAdvCallback); 요롷게

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)