Android 장치가 iBeacon으로 작동 할 수 있습니까?


78

Android 기기가 iBeacon 역할을하고 다른 Android 기기가 해당 범위에 들어올 때를 파악할 수 있습니까? 다른 Android 기기에서 블루투스를 켜야합니까?

고객이 내 매장을 방문했는데 기기에 내 앱이 설치되어 있지 않은 경우 iBeacon이 작동 할 수 있습니까? 아니면 먼저 앱을 설치해야합니까? 매일 매장을 방문하는 고객이 너무 많은데, 내 앱이 설치되어 있지 않으면 iBeacon 컨셉이 작동하나요?


"IBeacon"에서 벗어나 일반적인 용어로 나누고 조사를해야합니다.
JoxTraex 2013 년

@JoxTraex 나는이 튜토리얼을 읽었습니다 : devfright.com/ibeacons-tutorial-ios-7-clbeaconregion-clbeacon 하지만 혼란 스럽기 때문에 여기에서 질문하십시오. 이것에 대한 아이디어가 있으면 저를 도와주세요.
Hardik Joshi

이 링크를 확인하여 Android 5.0 휴대 전화를 iBeacon 기기로 바꾸세요. developer.radiusnetworks.com/2014/11/18/…
Zack S

답변:


75

Android 5 이상 에서 가능하며 Android Beacon Library 에서 비콘 으로 전송하기위한 오픈 소스 코드를 찾을 수 있습니다 . Google Play 스토어 의 Beacon Scope 앱 에는 모든 기능을 갖춘 버전의 비콘 송신기가 있습니다.

다음은 Android Beacon 라이브러리를 사용하여 iBeacon을 전송하는 예입니다.

Beacon beacon = new Beacon.Builder()
        .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
        .setId2("1")
        .setId3("2")
        .setManufacturer(0x004c)
        .setTxPower(-59)
        .build();
BeaconParser beaconParser = new BeaconParser()
        .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 
beaconTransmitter.startAdvertising(beacon);

루팅 된 Android 4.4.3 기기 에서 비콘으로 전송할 수도 있지만 시스템 권한으로 설치된 앱이 필요합니다.

BluetoothLE를 사용하는 Android 4.3 장치는 iBeacon을 볼 수 있지만 iBeacon으로 작동하지는 않습니다. Android 4.3은 주변 장치 모드를 지원하지 않기 때문입니다. 삼성 Android 기기에는 별도의 독점 SDK가 포함되어 있지만 기기가 iBeacon으로 작동하는 것도 허용하지 않습니다. 참조 : Samsung Android 기기를 iBeacon으로 광고하도록 설정 ) iOS 기기 는 iBeacon으로 작동 할 수 있습니다.

일반적으로 iBeacon 기술은 전화기가 다른 전화기를 볼 수 있도록 설계되지 않았습니다. 그러나 휴대폰이 iBeacon 역할을하고 주변의 다른 iBeacon을 찾도록하는 사용자 지정 앱을 만들어 iOS에서 제안한 것을 수행 할 수 있습니다. 이렇게하면 앱을 사용하는 모든 사람이 근처에서 동일한 앱을 사용하는 다른 사람을 볼 수 있습니다. 모든 전화기는 블루투스를 켜야합니다.

두 번째 질문에 답하려면 Android 또는 iOS 모바일 장치에 iBeacon을 활용하기위한 앱이 설치되어 있어야합니다. 특정 작업을 수행하도록 특별히 프로그래밍 된 앱이 설치되어 있지 않으면 현재 두 운영 체제 모두 iBeacon을 볼 때 아무 작업도 수행하지 않습니다. 따라서 매장에 도착한 고객은 앱이 이미 설치되어 있어야합니다. 그렇지 않으면 iBeacon과 상호 작용할 수 없습니다.


1
이것도! "BLE Peripheral Mode"-> android-developers.blogspot.com/2014/06/… 참조
Alexis

1
You can also transmit as a beacon on rooted Android 4.4.3 devices, but it requires an app installed with system privileges. 어떻게 할 수 있습니까?
Raiv

2
새 질문을 게시하면 댓글로 설명 할 공간이 충분하지 않습니다.
davidgyoung 2014

훌륭하고 유익한 답변. 하지만이 문장에 대해서는 의문이 있습니다. "Android에서이 작업을 수행하는 것은 현재 삼성 기기에서만 가능합니다." 약간 위에서 Samsung SDK는 장치가 iBeacon처럼 작동하는 것을 허용하지 않는다고 말합니다 (그리고 동일한 답변을 가진 질문에 대한 링크). 그렇다면 ... Android SDK에서 허용하지 않고 Samsung SDK도 이러한 기능을 수행 할 수없는 경우 삼성 장치가 iBeacon처럼 작동 할 수 있습니까?
petersaints

1
그것은 중요한 설명입니다. Android 5.x +에서 전송하려면 칩셋 지원이 필요할뿐만 아니라 ROM 지원도 필요합니다. 예를 들어 Nexus 5 기기는 칩셋을 지원하지만 Google은 공식 ROM에서 지원을 비활성화했습니다. 나는 여기에 지원하는 것으로 알려진 장치의 목록이 아니라 지원 전송을 컴파일 : altbeacon.github.io/android-beacon-library/...
davidgyoung을

17

, Android 기기는 iBeacon으로 작동 할 수 있습니다. 나는 android 5.X 및 AltBeacon library를 사용하여 이것을 달성합니다 . Radius Networks의 AltBeacon 라이브러리는 Android를 비콘 이미 터 및 수용체로 빌드하는 클래스도 제공합니다. 다음은 iBeacon으로 Android에서 작동하는 코드입니다.

 Beacon beacon = new Beacon.Builder()
        .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6") // UUID for beacon
        .setId2("1") // Major for beacon
        .setId3("5") // Minor for beacon
        .setManufacturer(0x004C) // Radius Networks.0x0118  Change this for other beacon layouts//0x004C for iPhone
        .setTxPower(-56) // Power in dB
        .setDataFields(Arrays.asList(new Long[] {0l})) // Remove this for beacon layouts without d: fields
        .build();

BeaconParser beaconParser = new BeaconParser()
        .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");

BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 
beaconTransmitter.startAdvertising(beacon, new AdvertiseCallback() {

            @Override
            public void onStartFailure(int errorCode) {
                Log.e(TAG, "Advertisement start failed with code: "+errorCode);
            }

            @Override
            public void onStartSuccess(AdvertiseSettings settingsInEffect) {
                Log.i(TAG, "Advertisement start succeeded.");
            }
        });

iBeacon으로 안드로이드를 검색하는 사용자에게 도움이되기를 바랍니다. jj


공유해 주셔서 감사합니다. :)
Hardik Joshi

루팅 된 기기가 필요합니까?
Amitabh

아니요, 장치를
루팅

반응 네이티브에서 어떻게할까요?
user43286

코르도바에서 이것을 구현하는 방법?
Atul Verma 2017 년

7

순수 Android SDK. 제 3 자 코드 없음-오픈 소스 실사에 적합

byte[] payload = {(byte)0x02, (byte)0x15, // this makes it a iBeacon
            (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, // uuid
            (byte)0x00, (byte)0x00,  // Major
            (byte)0x00, (byte)0x00}; // Minor


    AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
    dataBuilder.addManufacturerData(0x004C, payload); // 0x004c is for Apple inc.
    AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();

    settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY);
    settingsBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH);
    settingsBuilder.setConnectable(false);

    mAdvertiser.startAdvertising(settingsBuilder.build(), dataBuilder.build(), this);

페이로드의 해당 위치에 UUID 마이너 시장을 배치하되 처음 2 바이트는 그대로 둡니다.


답변 해 주셔서 감사합니다.하지만 tx 파워로 페이로드에 추가 바이트를 추가 한 후에 만 ​​작동합니다.
José Pereda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.