智能工厂.apk(点击下载) / EddystoneTelemetryAccessor.java
package org.altbeacon.beacon.utils;
import android.annotation.TargetApi;
import android.util.Base64;
import android.util.Log;
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconParser;
public class EddystoneTelemetryAccessor {
private static final String TAG = "EddystoneTLMAccessor";
public byte[] getTelemetryBytes(Beacon beacon) {
if (beacon.getExtraDataFields().size() < 5) {
return null;
}
byte[] beaconAdvertisementData = new BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_TLM_LAYOUT).getBeaconAdvertisementData(new Beacon.Builder().setDataFields(beacon.getExtraDataFields()).build());
Log.d(TAG, "Rehydrated telemetry bytes are :" + byteArrayToString(beaconAdvertisementData));
return beaconAdvertisementData;
}
@TargetApi(8)
public String getBase64EncodedTelemetry(Beacon beacon) {
byte[] telemetryBytes = getTelemetryBytes(beacon);
if (telemetryBytes == null) {
return null;
}
String encodeToString = Base64.encodeToString(telemetryBytes, 0);
Log.d(TAG, "Base64 telemetry bytes are :" + encodeToString);
return encodeToString;
}
private String byteArrayToString(byte[] bArr) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bArr.length; i++) {
sb.append(String.format("%02x", Byte.valueOf(bArr[i])));
sb.append(MinimalPrettyPrinter.DEFAULT_ROOT_VALUE_SEPARATOR);
}
return sb.toString().trim();
}
}