Android 기기가 iBeacon 역할을하고 다른 Android 기기가 해당 범위에 들어올 때를 파악할 수 있습니까? 다른 Android 기기에서 블루투스를 켜야합니까?
고객이 내 매장을 방문했는데 기기에 내 앱이 설치되어 있지 않은 경우 iBeacon이 작동 할 수 있습니까? 아니면 먼저 앱을 설치해야합니까? 매일 매장을 방문하는 고객이 너무 많은데, 내 앱이 설치되어 있지 않으면 iBeacon 컨셉이 작동하나요?
답변
예 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과 상호 작용할 수 없습니다.
답변
예 , 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
답변
순수 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 바이트는 그대로 둡니다.