web-dev-qa-db-ja.com

AndroidデバイスはiBeaconとして機能できますか?

AndroidデバイスはiBeaconとして機能し、他のAndroidデバイスがその範囲内にあるかどうかを判断できますか?それらの他のAndroid =デバイスでBluetoothをオンにする必要がありますか?

顧客が私の店に来て、自分のデバイスに私のアプリをインストールしていない場合、iBeaconは動作しますか、それとも最初にアプリをインストールする必要がありますか?毎日多くのお客様が私たちのショップを訪れていますが、私のアプリをインストールしていない場合、iBeaconコンセプトは機能しますか?

75
Hardik Joshi

UPDATE:これはAndroid 5.0で可能になり、 open-source code forビーコンとしての送信 2.1+バージョンの Android Beacon LibraryLocate アプリのビーコン送信機のフル機能バージョンもありますGoogle Playストア: rooted Android 4.4.3デバイス でビーコンとして送信することもできますが、システム権限でインストールされたアプリが必要です。古いOSバージョンの場合、以下をお読みください。

Android Beacon Libraryで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);

BluetoothLEを搭載したAndroid 4.3デバイスは、iBeaconsを認識できますが、iBeaconsとしては動作しません。Android 4.3は周辺モードをサポートしていません。SamsungAndroidまた、デバイスがiBeaconsとして機能することも許可しません。 Make Samsung Android device advertise as a iBeacon )ただし、iOSデバイスはiBeaconsとして機能できます。

通常、iBeaconテクノロジーは、電話が他の電話を見るためのものではありません。しかし、iPhoneをiBeaconとして機能させ、周囲のiBeaconsを探すカスタムアプリを作成することで、iOSで提案したことを実行できます。これにより、アプリを持っている人なら誰でも、近くに同じアプリを持っている人を見ることができます。すべての電話でBluetoothをオンにする必要があります。 これをAndroidで実行することは、現在Samsungデバイスでのみ可能です。

2番目の質問に答えるには、はい、モバイルデバイス、両方AndroidまたはiOS、iBeaconsを利用するアプリをインストールする必要があります。現在、どちらのオペレーティングシステムも、アプリがインストールされ、何かを行うように特別にプログラムされているため、店舗に到着する顧客はアプリを既にインストールしておく必要があります。そうしないと、iBeaconsを操作できません。

71
davidgyoung

はい、AndroidデバイスはiBeaconとして機能できます。これを実現するには、Android 5.Xおよび AltBeaconライブラリ 。Radius NetworksのAltBeaconライブラリは、ビルドするためのクラスを提供しますAndroidビーコンエミッタおよびレセプタとしても機能します。 for Android as iBeacon:

 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.");
            }
        });

Android as iBeacon。jjを検索するユーザーに役立つことを願っています

16
Yogesh

Pure Android SDK。ゼロのサードパーティコード-​​オープンソースのデューデリジェンスに最適

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バイトはそのままにします。

0
Zbigniew Mazur