Skip to content

Instantly share code, notes, and snippets.

@arturgaleno
Last active February 3, 2016 01:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arturgaleno/445685f3ebe0964fece7 to your computer and use it in GitHub Desktop.
Save arturgaleno/445685f3ebe0964fece7 to your computer and use it in GitHub Desktop.
package br.com.altbeacontest1;
import android.app.Application;
import android.os.RemoteException;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;
import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconConsumer;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.BeaconParser;
import org.altbeacon.beacon.MonitorNotifier;
import org.altbeacon.beacon.RangeNotifier;
import org.altbeacon.beacon.Region;
import org.altbeacon.beacon.powersave.BackgroundPowerSaver;
import org.altbeacon.beacon.service.ArmaRssiFilter;
import org.altbeacon.beacon.startup.BootstrapNotifier;
import org.altbeacon.beacon.startup.RegionBootstrap;
import java.util.Collection;
public class AltBeaconApplication extends Application implements BootstrapNotifier, BeaconConsumer, RangeNotifier {
private BeaconManager beaconManager;
private RegionBootstrap regionBootstrap;
private boolean entrouNaRegiao;
@Override
public void onCreate() {
super.onCreate();
BeaconManager.setRssiFilterImplClass(ArmaRssiFilter.class);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.bind(this);
beaconManager.getBeaconParsers().add(new BeaconParser()
.setBeaconLayout(getResources().getString(R.string.beaconformat_ibeacon)));
BeaconRepositoryFacade beaconRepositoryFacade = new BeaconRepositoryFacade();
regionBootstrap = new RegionBootstrap(this, beaconRepositoryFacade.getAvaibleRegions());
}
@Override
public void didEnterRegion(Region region) {
try {
beaconManager.startRangingBeaconsInRegion(region);
beaconManager.setRangeNotifier(this);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void didExitRegion(Region region) {
try {
beaconManager.stopRangingBeaconsInRegion(region);
beaconManager.setRangeNotifier(null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void didDetermineStateForRegion(int i, Region region) {
if (i == MonitorNotifier.INSIDE) {
entrouNaRegiao = true;
} else {
entrouNaRegiao = false;
}
}
@Override
public void onBeaconServiceConnect() {
}
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Beacon firstBeacon = beacons.iterator().next();
if (entrouNaRegiao) {
if (0.0 < firstBeacon.getDistance() && firstBeacon.getDistance() <= 5.0) {
notificar();
}
}
Log.d(this.getClass().getName(), "The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away." + "\n");
}
}
private void notificar() {
NotificationManagerCompat.from(this).notify(122,
new NotificationCompat.Builder(this)
.setContentTitle("BEACON")
.setSmallIcon(android.R.drawable.star_big_on)
.setContentText("DETECTOU BEACON")
.build()
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment