Line Simple Beacon

https://github.com/line/line-simple-beacon/blob/master/README.en.md

Android Sample Code

Beacon.java

public interface Beacon {

    AdvertiseData createAdvertiseData();
}

LineBeacon.java

public class LineBeacon implements Beacon {

    private static final Integer LINE_BEACON_MANUFACTURER = 0x02C1;
    private static final String LINE_BEACON_SERVICE_UUID = "0000fe6f-0000-1000-8000-00805f9b34fb";
    private static final String LINE_BEACON_HWID = "{YOUR_LINE_BEACON_HWID}";
    private static final String LINE_BEACON_ADVERTISE_DATA_HEX_STRING = "02%s7f00";

    private BeaconSettings mBeaconSettings;

    public LineBeacon(BeaconSettings beaconSettings) {
        mBeaconSettings = beaconSettings;
        if (mBeaconSettings == null) {
            mBeaconSettings = new BeaconSettings();
            mBeaconSettings.HWID = LINE_BEACON_HWID;
        }
    }

    @Override
    public AdvertiseData createAdvertiseData() {
        ParcelUuid serviceUuid = ParcelUuid.fromString(LINE_BEACON_SERVICE_UUID);

        AdvertiseData advertiseData = new AdvertiseData.Builder()
                .addServiceUuid(serviceUuid)
                .addServiceData(serviceUuid, BluetoothService.hexStringToByteArray(
                        String.format(LINE_BEACON_ADVERTISE_DATA_HEX_STRING, mBeaconSettings.HWID)
                ))
                .setIncludeTxPowerLevel(mBeaconSettings.IsIncludeTxPowerLevel)
                .setIncludeDeviceName(mBeaconSettings.IsIncludeDeviceName)
                .build();

        return  advertiseData;
    }
}

BeaconSettings.java

public class BeaconSettings {

    public static final int BEACON_TYPE_LINE = 1;

    public int Type;

    public String HWID;

    public boolean IsIncludeTxPowerLevel;
    public boolean IsIncludeDeviceName;

    public int TxPowerLevel;
    public int AdvertiseMode;
    public boolean IsConnectable;

    public BeaconSettings(){
        Type = BEACON_TYPE_LINE;
        HWID = "";
        IsIncludeTxPowerLevel = false;
        IsIncludeDeviceName = false;

        TxPowerLevel = AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM;
        AdvertiseMode = AdvertiseSettings.ADVERTISE_MODE_BALANCED;
        IsConnectable = false;
    }
}

Start advertising in fragment or activity.

    public void startTransmitBeacon(BeaconSettings beaconSettings) {

        Beacon beacon = SimpleBeaconFactory.createBeacon(beaconSettings);

        AdvertiseData advertiseData = beacon.createAdvertiseData();

        AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
                .setTxPowerLevel(beaconSettings.TxPowerLevel)
                .setConnectable(beaconSettings.IsConnectable)
                .setAdvertiseMode(beaconSettings.AdvertiseMode)
                .build();

        if (isBluetoothEnabled()) {
            if (mBluetoothAdapter.isMultipleAdvertisementSupported()) {
                mBluetoothAdapter.getBluetoothLeAdvertiser().startAdvertising(advertiseSettings, advertiseData, new AdvertiseCallback() {
                    @Override
                    public void onStartSuccess(AdvertiseSettings settingsInEffect) {
                        super.onStartSuccess(settingsInEffect);
                    }

                    @Override
                    public void onStartFailure(int errorCode) {
                        super.onStartFailure(errorCode);
                    }
                });
            }
        }
    }

results matching ""

    No results matching ""