Advertisement
Guest User

Untitled

a guest
May 12th, 2016
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.23 KB | None | 0 0
  1. package interdroid.swan.crossdevice.beacon;
  2.  
  3. import android.app.Service;
  4. import android.content.Intent;
  5. import android.os.IBinder;
  6. import android.os.RemoteException;
  7. import android.support.annotation.Nullable;
  8. import android.util.Log;
  9.  
  10. import org.altbeacon.beacon.Beacon;
  11. import org.altbeacon.beacon.BeaconConsumer;
  12. import org.altbeacon.beacon.BeaconManager;
  13. import org.altbeacon.beacon.RangeNotifier;
  14. import org.altbeacon.beacon.Region;
  15.  
  16. import java.util.Collection;
  17. import java.util.HashSet;
  18. import java.util.concurrent.locks.ReentrantLock;
  19.  
  20. /**
  21.  * Created by Veaceslav Munteanu on 5/10/16.
  22.  *
  23.  * @email
  24.  */
  25. public class BeaconSingleton extends Service implements BeaconConsumer {
  26.  
  27.     BeaconManager beaconManager;
  28.  
  29.     boolean isBinded = false;
  30.  
  31.     private final String TAG = "BeaconSingleton";
  32.     private static BeaconSingleton ourInstance;
  33.  
  34.     ReentrantLock lock = new ReentrantLock();
  35.  
  36.     volatile HashSet<AbstractBeaconSensor> sensors = new HashSet<>();
  37.  
  38.     public static BeaconSingleton getInstance() {
  39.         return ourInstance;
  40.     }
  41.  
  42.     Region myRegion = new Region(TAG, null, null, null);
  43.  
  44.  
  45.     public BeaconSingleton() {
  46.         Log.d(TAG,"++++ Service started+++");
  47.         beaconManager = org.altbeacon.beacon.BeaconManager.getInstanceForApplication(this);
  48.         ourInstance = this;
  49.     }
  50.  
  51.     public void addSensor(AbstractBeaconSensor sensor){
  52.         lock.lock();
  53.  
  54.         if(sensors.isEmpty() && !isBinded) {
  55.             beaconManager.bind(this);
  56.             Log.d(TAG, "Binding+++++++++++++++++++");
  57.             isBinded = true;
  58.         }
  59.  
  60.         sensors.add(sensor);
  61.         lock.unlock();
  62.     }
  63.  
  64.     public void removeSensor(AbstractBeaconSensor sensor){
  65.         lock.lock();
  66.  
  67.         sensors.remove(sensor);
  68.  
  69.         if(sensors.isEmpty() && isBinded){
  70.             try {
  71.                 beaconManager.stopRangingBeaconsInRegion(myRegion);
  72.             } catch (RemoteException e) {
  73.                 e.printStackTrace();
  74.             }
  75.             beaconManager.unbind(this);
  76.             isBinded = false;
  77.         }
  78.         lock.unlock();
  79.     }
  80.  
  81.     @Override
  82.     public void onCreate() {
  83.         super.onCreate();
  84.         Log.d(TAG, "Service created+++");
  85.     }
  86.  
  87.     @Nullable
  88.     @Override
  89.     public IBinder onBind(Intent intent) {
  90.         return null;
  91.     }
  92.  
  93.  
  94.     @Override
  95.     public void onBeaconServiceConnect() {
  96.         Log.d(TAG, "On beacon connect+++++++++++++++++");
  97.         beaconManager.setRangeNotifier(new RangeNotifier() {
  98.             @Override
  99.             public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
  100.  
  101.                 Log.d(TAG, "++ " + beacons.size());
  102.                 long time = System.currentTimeMillis();
  103.                 try {
  104.                     //lock.lock();
  105.                     for(AbstractBeaconSensor sensor : sensors) {
  106.                         sensor.setData(beacons, time);
  107.                     }
  108.                 } finally {
  109.                     //lock.unlock();
  110.                 }
  111.             }
  112.         });
  113.         try {
  114.             beaconManager.startRangingBeaconsInRegion(myRegion);
  115.         } catch (RemoteException e) {
  116.             Log.d(TAG, "Got exception" + e.getMessage());
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement