Android AltBeacon库和Android Beacon API提供了用于设置广告功能来广告信标的选项。可用设置为高,中,低和超低。在测试期间,我发现超低和低之间的可见度范围没有任何区别。我想了解每个功率水平的可见度范围。我需要考虑其他设置来提高广告功能和可见度范围吗?关于不同的广告功率和频率对电池的影响有什么想法?我该如何决定使用什么设置以及何时使用?
void startBeacon(){
if (!beaconTransmitter.isStarted()) {
try {
String id1 = editTextUUID.getText().toString();
String id2 = "1";
String id3 = "2";
final String advertizeMode =
((RadioButton) findViewById(advrtzFreqRadioButtonGroup.getCheckedRadioButtonId()))
.getText().toString();
if (advertizeMode.equals("LOW_POWER")) {
beaconTransmitter.setAdvertiseMode(ADVERTISE_MODE_LOW_POWER);
} else if (advertizeMode.equals("BALANCED")) {
beaconTransmitter.setAdvertiseMode(ADVERTISE_MODE_BALANCED);
} else if (advertizeMode.equals("LOW_LATENCY")) {
beaconTransmitter.setAdvertiseMode(ADVERTISE_MODE_LOW_LATENCY);
}
final String advertizePower =
((RadioButton) findViewById(advrtzPowerRadioButtonGroup.getCheckedRadioButtonId()))
.getText().toString();
if (advertizePower.equals("ULTRA_LOW")) {
beaconTransmitter.setAdvertiseTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_ULTRA_LOW);
} else if (advertizePower.equals("LOW")) {
beaconTransmitter.setAdvertiseTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_LOW);
} else if (advertizePower.equals("MEDIUM")) {
beaconTransmitter.setAdvertiseTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM);
} else if (advertizePower.equals("HIGH")) {
beaconTransmitter.setAdvertiseTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH);
}
int transmissionPower = Integer.parseInt(editTextTxPower.getText().toString());
beacon = new Beacon.Builder()
.setId1(id1)
.setId2(id2)
.setId3(id3)
.setManufacturer(0x0118)
.setTxPower(transmissionPower)
.setDataFields(Arrays.asList(new Long[]{0l}))
.build();
beaconTransmitter.startAdvertising(beacon);
Log.d(TAG, "startAdvertising started");
textViewStatus.setText("startAdvertising started...");
} catch (Exception e) {
Log.d(TAG, e.getMessage());
textViewStatus.setText("Error:" + e.getMessage());
}
} else {
Log.d(TAG, "Already dvertising");
textViewStatus.setText("Already startAdvertising...");
}
button.setText("Stop Beacon");
}
答案 0 :(得分:0)
不同的发射器功率设置由基础的Android OS API提供,并且不特定于Android信标库。.不同功率水平之间的实际差异会因设备型号而有很大差异。例如,在Nexus 4(我用来测试该API的第一台设备)上,在任何范围内根本无法检测到超低水平。我会说,由于缺乏可靠性,对于任何生产目的都不建议使用这种超低设置。
高设置通常在所有设备上都相似,因为它受到监管机构的限制,以防止在较高(非法)功率水平下产生无线电干扰。它确实会根据每个设备的天线,天线的位置和外壳情况而有所不同,通常在一米处大约为-59 dBm。
即使在满功率的情况下,广告信标也不会造成大量电话电池消耗。与其他耗电来源(如单元待机,屏幕或CPU活动)相比,所消耗的能量微不足道。使用的功率是如此之低,难以测量。令人惊讶但真实!
除高以外的电源设置用例很少。有时对测试很有用。低功率电平对于限制检测范围也很有用,但是通过在接收侧使用最小RSSI阈值可以更可靠地处理此问题,因为将发送器置于最大功率可以提供更高的信噪比和更可靠的检测。只有在用例中无法控制接收器代码(添加最小RSSI过滤器)的情况下,才应降低发射器功率以限制检测范围。