| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package io.v.android.libs.discovery.ble; |
| |
| import android.bluetooth.le.AdvertiseCallback; |
| import android.bluetooth.le.AdvertiseData; |
| import android.bluetooth.le.AdvertiseSettings; |
| import android.bluetooth.le.BluetoothLeAdvertiser; |
| import android.util.Log; |
| |
| import java.nio.ByteBuffer; |
| import java.util.Map; |
| import java.util.TreeMap; |
| import java.util.UUID; |
| |
| import io.v.v23.discovery.Service; |
| import io.v.v23.discovery.VAdvertisement; |
| |
| public class BlePlugin { |
| private Map<Integer, VAdvertisement> mAdvertisements; |
| private Map<Integer, VScanner> mScannersById; |
| |
| private Map<UUID, VScanner> mScannersByServiceId; |
| |
| private BluetoothLeAdvertiser mBluetoothLeAdvertiser; |
| |
| |
| |
| private void readvertise() { |
| int hash = mAdvertisements.hashCode(); |
| |
| AdvertiseData.Builder builder = new AdvertiseData.Builder(); |
| ByteBuffer buf = ByteBuffer.allocate(9); |
| buf.put((byte) 8); |
| buf.putLong(hash); |
| builder.addManufacturerData(1001, buf.array()); |
| AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder(); |
| settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED); |
| settingsBuilder.setConnectable(true); |
| mBluetoothLeAdvertiser.startAdvertising(settingsBuilder.build(), builder.build(), |
| new AdvertiseCallback() { |
| @Override |
| public void onStartSuccess(AdvertiseSettings settingsInEffect) { |
| super.onStartSuccess(settingsInEffect); |
| Log.i("vanadium", "Successfully started " + settingsInEffect); |
| } |
| |
| @Override |
| public void onStartFailure(int errorCode) { |
| super.onStartFailure(errorCode); |
| Log.i("vanadium", "Failed to start advertising " + errorCode); |
| } |
| }); |
| } |
| } |