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

BLE Advertising 해보신분 도움좀 부탁드립니다.

0 추천

5.0 이상 단말에서 Bluetooth Advertising을 구현하고 있습니다.

저번 질문에 답변주신분의 도움으로 구현 성공했습니다.

그런데 Advertiser를 이용해 startAdvertising 해주는 부분에서 문제가 있습니다.

BluetoothLeAdvertiser.startAdvertising(AdvertiseSettings settings, AdvertiseData advertiseData, AdvertiseCallback callback)

여기서 첫번째 파라메터로 settings를 , 두번째로 data를 넘기는데

 

data를 만드는 방법은 다음과 같습니다.

mBTAdvertiser.startAdvertising(
                    BleUtil.createAdvSettings(true, 0),
                    BleUtil.createIBeaconAdvertiseData(
                            UUID.fromString("01020304-0506-0708-1112-131415161718"),
                            (short) 257, (short) 514, (byte) 0xc5),
                    mAdvCallback);
여기서
 
 

"01020304-0506-0708-1112-131415161718" 이 의미하는게 뭔지,

257, 514는 뭔지, tx값을 왜 0xc5로 주는지

 

createIBeaconAdvertiseData() 부분은

 

 public static AdvertiseData createIBeaconAdvertiseData(UUID proximityUuid, short major,
            short minor, byte txPower) {
        if (proximityUuid == null) {
            throw new IllegalArgumentException("proximitiUuid null");
        }
        byte[] manufacturerData = new byte[23];
        ByteBuffer bb = ByteBuffer.wrap(manufacturerData);
        bb.order(ByteOrder.BIG_ENDIAN);
        bb.put((byte) 0x02);
        bb.put((byte) 0x15);
        bb.putLong(proximityUuid.getMostSignificantBits());
        bb.putLong(proximityUuid.getLeastSignificantBits());
        bb.putShort(major);
        bb.putShort(minor);
        bb.put(txPower);
 
        AdvertiseData.Builder builder = new AdvertiseData.Builder();
        builder.addManufacturerData(0x004c, manufacturerData);
        AdvertiseData adv = builder.build();
        return adv;
    }
 
이렇게 돼 있는데
여기는 안의 내용이 뭔지 하나도 모르겠습니다.
 
제가 원하는 데이터로 구성을 하고싶은데
각각의 의미를 모르니 적용하는데 너무 힘듭니다..
 
byte[] manufacturerData = new byte[23];의 의미와
ByteBuffer bb = ByteBuffer.wrap(manufacturerData); 이것의 의미
 
bb.put 하는 데이터의 의미를 아시는분은 도움좀 부탁드립니다

 

 
음무 (17,820 포인트) 님이 2015년 3월 18일 질문

2개의 답변

+1 추천
 
채택된 답변
우선은 답변이 아니라서 죄송하구요

 

이 정도 됐으면 솔직히 물어서 해결하려고 하기에는 한계에 다다른듯 합니다.

도움을 주신분이나 아니면 구인을 해서 적당한 가격을 제시하고 의뢰를 하시거나

아니면 교육과정을 듣거나 독학을 해서 프로그래밍 언어 기초부터 다진 후

개발을 시작하는 방법이 나을 듯 합니다.
Gradler (109,780 포인트) 님이 2015년 3월 18일 답변
음무님이 2015년 3월 18일 채택됨
맞는말씀같습니다. 자료를 찾아봐도 잘 안보이고 영어로된 사이트를 더듬더듬 찾아봐도 영어 실력이 낮아서인지 잘 안보이네요 ..
아무튼 감사합니다
0 추천
파라미터 이름이 있으니 당연히 물어보신 내용들은 UUID, major, minor, txPower값일 겁니다.

물어보시는 내용들로 보아, 질문하시는 분은 BLE쪽 작업을 하시면서 BLE쪽 내용을 전혀 모르시는 것 같습니다

BLE쪽 내용을 좀 찾아보시면 여러 질문들이 사라질 것 같네요.

일단 제가 아는 선에서 설명을 드리자면, UUID는 그 기기를 구분하기 값입니다(라고 하지만, 실제로 변경도 가능하고 세트로 된 제품들은 같은 UUID를 갖습니다)

세트로 된 제품들이 같은 UUID를 갖기에 동일 UUID에서 또 구분하기 위해서 major와 minor 번호를 사용합니다.

txPower는 말 그대로 출력이죠. BT신호를 얼마나 강하게 출력할까여서 꼭 0xC5일 필요는 없을 겁니다. 출력의 허용범위는 스펙을 보셔야 할 듯
cc1232 (35,280 포인트) 님이 2015년 3월 19일 답변
...