Аппаратная или операционная система не зависит от iBeacon. Вы можете передать пакет iBeacon с Android, iOS, MacOS, Linux, Windows 10 и многих встроенных платформ.
Вот фотография, показывающая передачу с Android Nexus 5X и обнаружение на iPhone 6:
Здесь нет особого трюка, но, безусловно, можно все испортить, чтобы он не работал. Две наиболее распространенные ловушки:
Передатчик должен быть настроен на использование кода производителя Apple Bluetooth LE 0x004c
Передатчик должен отправлять тот же ProximityUUID (он же ID1), который приемник iOS настроен на обнаружение с использованием настроенного CLBeaconRegion.
Приведенная выше настройка использует приложение BeaconScope на Android (с использованием Android Beacon Library для передачи iBeacon) и приложение Locate (использование CoreLocation для обнаружения iBeacon ) на iOS.
Используя AndroidBeaconLibrary, настроить этот передатчик так просто:
Beacon beacon = new Beacon.Builder()
.setId2(1) // Major for beacon
.setId3(1) // Minor for beacon
.setManufacturer(0x004C) // Apple
.setTxPower(-56) // Power in dB
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
transmitter = new BeaconTransmitter(context, beaconParser);
transmitter.startAdvertising(beacon, new AdvertiseCallback() {
@Override
public void onStartFailure(int errorCode) {
Log.i(Settings.DEBUG, "Advertisement start failed with code: " + errorCode);
}
});