【发布时间】:2020-05-03 23:51:35
【问题描述】:
我对 android 和 BLE 很陌生。目前,我正在尝试宣传一个在 android 低谷 BLE 中周期性变化的数据包。我使用了https://source.android.com/devices/bluetooth/ble_advertising 中提供的以下代码。
BluetoothLeAdvertiser advertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();
AdvertisingSetParameters parameters = (new AdvertisingSetParameters.Builder())
.setLegacyMode(true) // True by default, but set here as a reminder.
.setConnectable(false)
.setInterval(AdvertisingSetParameters.INTERVAL_HIGH)
.setTxPowerLevel(AdvertisingSetParameters.TX_POWER_HIGH)
.build();
AdvertiseData data = (new AdvertiseData.Builder()).setIncludeDeviceName(true).build();
final AdvertisingSet[] currentAdvertisingSet = new AdvertisingSet[1];
//final AdvertisingSet[] currentAdvertisingSet = {null};
AdvertisingSetCallback callback = new AdvertisingSetCallback() {
@Override
public void onAdvertisingSetStarted(AdvertisingSet advertisingSet, int txPower, int status) {
Log.i(LOG_TAG, "onAdvertisingSetStarted(): txPower:" + txPower + " , status: "
+ status);
currentAdvertisingSet[0] = advertisingSet;
}
@Override
public void onAdvertisingDataSet(AdvertisingSet advertisingSet, int status) {
Log.i(LOG_TAG, "onAdvertisingDataSet() :status:" + status);
}
@Override
public void onScanResponseDataSet(AdvertisingSet advertisingSet, int status) {
Log.i(LOG_TAG, "onScanResponseDataSet(): status:" + status);
}
@Override
public void onAdvertisingSetStopped(AdvertisingSet advertisingSet) {
Log.i(LOG_TAG, "onAdvertisingSetStopped():");
}
};
//start advertising
advertiser.startAdvertisingSet(parameters, data, null, null, null, callback);
//change the advertising packet
currentAdvertisingSet[0].setAdvertisingData(new AdvertiseData.Builder().setIncludeDeviceName(true).setIncludeTxPowerLevel(true).build());
但是当我尝试分配一个新的广告数据作为我得到的最后一行时
Attempt to invoke virtual method 'void android.bluetooth.le.AdvertisingSet.setAdvertisingData(android.bluetooth.le.AdvertiseData)' on a null object reference
错误和应用程序关闭,setLegacyMode true 和 false。 但是我已经在 public void onAdvertisingSetStarted 函数中分配了 advertisingSet。 我应该在这里做什么?
【问题讨论】:
标签: android bluetooth bluetooth-lowenergy beacon