Skip to content

Commit

Permalink
[android] Consolidate region resolving code
Browse files Browse the repository at this point in the history
  • Loading branch information
cco3 committed Jul 8, 2015
1 parent a657bfc commit 842ec38
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public void onLeScan(final BluetoothDevice device, final int rssi, final byte[]

PwoMetadata pwoMetadata = createPwoMetadata(url);
pwoMetadata.setBleMetadata(device.getAddress(), rssi, uriBeacon.getTxPowerLevel());
pwoMetadata.bleMetadata.updateRegionInfo();
reportPwo(pwoMetadata);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@
import android.widget.ListView;
import android.widget.TextView;

import org.uribeacon.scan.util.RangingUtils;
import org.uribeacon.scan.util.RegionResolver;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -322,12 +319,6 @@ public void onRefresh() {

@Override
public void onPwoDiscovered(PwoMetadata pwoMetadata) {
if (pwoMetadata.hasBleMetadata()) {
BleMetadata bleMetadata = pwoMetadata.bleMetadata;
mNearbyDeviceAdapter.updateItem(pwoMetadata.url, bleMetadata.deviceAddress, bleMetadata.rssi,
bleMetadata.txPower);
}

if (!mUrlToPwoMetadata.containsKey(pwoMetadata.url)) {
mUrlToPwoMetadata.put(pwoMetadata.url, pwoMetadata);
PwsClient.getInstance(getActivity()).findUrlMetadata(pwoMetadata, this, TAG);
Expand Down Expand Up @@ -358,19 +349,12 @@ private void fadeInListView() {

// Adapter for holding beacons found through scanning.
private class NearbyBeaconsAdapter extends BaseAdapter {

public final RegionResolver mRegionResolver;
private List<PwoMetadata> mPwoMetadataList;

NearbyBeaconsAdapter() {
mRegionResolver = new RegionResolver();
mPwoMetadataList = new ArrayList<>();
}

public void updateItem(String url, String address, int rssi, int txPower) {
mRegionResolver.onUpdate(address, rssi, txPower);
}

public void addItem(PwoMetadata pwoMetadata) {
mPwoMetadataList.add(pwoMetadata);
}
Expand Down Expand Up @@ -459,18 +443,17 @@ private void updateDebugView(PwoMetadata pwoMetadata, View view) {
txPowerView.setText(txPowerString);

String deviceAddress = bleMetadata.deviceAddress;
int rssi = mRegionResolver.getSmoothedRssi(deviceAddress);
int rssi = bleMetadata.getSmoothedRssi();
String rssiString = getString(R.string.ranging_debug_rssi_prefix) + rssi;
rssiView.setText(rssiString);

double distance = mRegionResolver.getDistance(deviceAddress);
double distance = bleMetadata.getDistance();
String distanceString = getString(R.string.ranging_debug_distance_prefix)
+ new DecimalFormat("##.##").format(distance);
distanceView.setText(distanceString);

int region = mRegionResolver.getRegion(deviceAddress);
String regionString = getString(R.string.ranging_debug_region_prefix)
+ RangingUtils.toString(region);
String region = bleMetadata.getRegionString();
String regionString = getString(R.string.ranging_debug_region_prefix) + region;
regionView.setText(regionString);
} else {
txPowerView.setText("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package org.physical_web.physicalweb;

import org.physical_web.physicalweb.PwoMetadata.BleMetadata;
import org.physical_web.physicalweb.PwoMetadata.UrlMetadata;

import android.app.Notification;
Expand All @@ -36,8 +35,6 @@
import android.view.View;
import android.widget.RemoteViews;

import org.uribeacon.scan.util.RegionResolver;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
Expand Down Expand Up @@ -81,7 +78,6 @@ public class PwoDiscoveryService extends Service
private boolean mIsBound = false;
private long mScanStartTime;
private Handler mHandler;
private RegionResolver mRegionResolver;
private NotificationManagerCompat mNotificationManager;
private HashMap<String, PwoMetadata> mUrlToPwoMetadata;
private List<PwoDiscoverer> mPwoDiscoverers;
Expand Down Expand Up @@ -143,7 +139,6 @@ private void initialize() {
}
mPwoResponseCallbacks = new ArrayList<>();
mHandler = new Handler();
mRegionResolver = new RegionResolver();
mUrlToPwoMetadata = new HashMap<>();
mCanUpdateNotifications = false;
}
Expand Down Expand Up @@ -235,11 +230,6 @@ public void onPwoDiscovered(PwoMetadata pwoMetadata) {
for (PwoResponseCallback pwoResponseCallback : mPwoResponseCallbacks) {
pwoResponseCallback.onPwoDiscovered(storedPwoMetadata);
}

if (pwoMetadata.hasBleMetadata()) {
BleMetadata bleMetadata = pwoMetadata.bleMetadata;
mRegionResolver.onUpdate(bleMetadata.deviceAddress, bleMetadata.rssi, bleMetadata.txPower);
}
}

private void startSearchingForPwos() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
import android.util.Base64;
import android.webkit.URLUtil;

import org.uribeacon.scan.util.RangingUtils;
import org.uribeacon.scan.util.RegionResolver;

import org.json.JSONException;
import org.json.JSONObject;

Expand Down Expand Up @@ -60,6 +63,8 @@ public static class BleMetadata {
int rssi;
int txPower;

private static RegionResolver sRegionResolver;

public BleMetadata(String deviceAddress, int rssi, int txPower) {
this.deviceAddress = deviceAddress;
this.rssi = rssi;
Expand Down Expand Up @@ -89,6 +94,33 @@ public static BleMetadata fromJsonObj(JSONObject jsonObj) throws JSONException {
public static BleMetadata fromJsonStr(String jsonStr) throws JSONException {
return fromJsonObj(new JSONObject(jsonStr));
}

private static RegionResolver getRegionResolver() {
if (sRegionResolver == null) {
sRegionResolver = new RegionResolver();
}
return sRegionResolver;
}

public void updateRegionInfo() {
getRegionResolver().onUpdate(this.deviceAddress, this.rssi, this.txPower);
}

public int getSmoothedRssi() {
return getRegionResolver().getSmoothedRssi(deviceAddress);
}

public double getDistance() {
return getRegionResolver().getDistance(deviceAddress);
}

public int getRegion() {
return getRegionResolver().getRegion(deviceAddress);
}

public String getRegionString() {
return RangingUtils.toString(getRegion());
}
}

/**
Expand Down

0 comments on commit 842ec38

Please sign in to comment.