0
我试图用BLE框架来测试广告BLE - 我怎么能检查做广告
// Get LE advertise Object
BluetoothLeAdvertiser bluetoothLeAdvertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
// Setting LE advertise
AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)
.setTimeout(0)
.setConnectable(true)
.build();
// UUIDs
ParcelUuid serviceUUID = new ParcelUuid(UUID.fromString(SERVICE_UUID));
// Setting LE advertise data
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(serviceUUID)
.build();
// Start advertising
bluetoothLeAdvertiser.startAdvertising(advertiseSettings, advertiseData, advertiseCallback);
上面的代码工作正常,但我发现,如果我再次调用此方法,中央设备将显示2相同名称设备,当我再次调用该方法时,它将成为3个中央名称相同的设备,所以我尝试在Android上搜索BLE API,但找不到任何方法可以检测到广告已经存在BluetoothLeAdvertiser,有什么方法检测广告已经存在?
编辑:
/**
* Advertise callback
*/
private AdvertiseCallback advertiseCallback = new AdvertiseCallback() {
@Override
public void onStartFailure(int errorCode) {
super.onStartFailure(errorCode);
GlobalVariable.logInfo(BLEUtility.class.getName(), String.format("Advertising start failed (%d)", errorCode));
}
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
super.onStartSuccess(settingsInEffect);
GlobalVariable.logInfo(BLEUtility.class.getName(), "Advertising start succeed");
}
};
不幸的Android没有做广告检查方法,所以只设置一个标志,真正当onStartSuccess
所以唯一的办法就是设置一个标志...确定... – user3814793
@ user3814793哪里是你advertiseCallback?我认为这是key.Just用一个成员来存储它,你将只能启动一个广告。 –
什么是“mLeAdvertisers”? – user3814793