How to set the listener together upon discovered listener and nearable is in motion

@Override protected void onResume() {
super.onResume();
beaconManager.setNearableListener(new BeaconManager.NearableListener()
{
@Override public void onNearablesDiscovered(List nearables)
{
updateCurrentNearable(nearables);
displayCurrentNearableInfo();
}
});

private void displayCurrentNearableInfo() {
StringBuilder builder = new StringBuilder()
.append(“Identifier: “).append(currentNearable.identifier).append(”\n”)
.append(“Major: “).append(currentNearable.region.getMajor()).append(”\n”)
.append(“Minor: “).append(currentNearable.region.getMinor()).append(”\n”)
.append(“Advertising interval: “).append(“2000”).append(“ms\n”)
.append(“Broadcasting power: “).append(currentNearable.power.powerInDbm).append(” dBm\n”)
.append(“Battery level: “).append(currentNearable.batteryLevel.toString()).append(”\n”)
.append(“Firmware: “).append(currentNearable.firmwareVersion).append(”\n\n”)
.append(“Temperature: “).append(String.format(”%.1f\u00b0C”, currentNearable.temperature)).append(”\n”)
.append(“In Motion: “).append(currentNearable.isMoving ? “Yes” : “No”).append(”\n\n”)
.append(String.format(“Motion Data: x: %.0f y: %.0f z: %.0f”, currentNearable.xAcceleration, currentNearable.yAcceleration, currentNearable.zAcceleration)).append("\n")
.append("Orientation: ").append(currentNearable.orientation.toString());

for (Nearable n : nearables) {
  if (n.isMoving) {
    // do something
  }
}
1 Like

But I already have

private void updateCurrentNearable(List<Nearable> nearables) {
  for (Nearable nearable : nearables) {
    if (nearable.equals(currentNearable) )
    {
      currentNearable = nearable;
    }
  }
}

So you only want to know a particular nearable is on motion? (Here: currentNearable?)

Then how about:

private void updateCurrentNearable(List<Nearable> nearables) {
  for (Nearable nearable : nearables) {
    if (nearable.equals(currentNearable) && nearable.isMoving)
    {
      currentNearable = nearable;
    }
  }
}