Skip to content
yabalaban edited this page Feb 11, 2014 · 7 revisions

Настройки проекта

Для работы sdk в AndroidManifest.xml требуется добавить следующие строки:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<service android:name="com.empatika.beaconstracker.BeaconsTrackerService" />

<receiver android:name="com.empatika.beaconstracker.StartupReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

Подписаться на оповещения сервиса BeaconsTrackerService:

<receiver android:name="{Receiver}">
    <intent-filter>
        <action android:name="com.empatika.beaconstracker.RANGE_BEACONS" />
        <action android:name="com.empatika.beaconstracker.NEW_BEACONS" />
        <action android:name="com.empatika.beaconstracker.DEAD_BEACONS" />
        <action android:name="com.empatika.beaconstracker.ENTER_REGIONS" />
        <action android:name="com.empatika.beaconstracker.EXIT_REGIONS" />
    </intent-filter>
</receiver>

Как использовать

  1. Для подписки слушателя на обновления класс должен реализовать интерфейс IBeaconTrackerListener. Требуется реализовать следующий метод:

     public void onServiceConnected();
    
  2. В методе onServiceConnected() можно добавить слушателя на обновления биконов (BeaconManager) и/или регионов (RegionManager). Слушатели добавляются объекту класса BeaconTrackerManager. Пример:

     manager.addBeaconManager(this, new BeaconManager() {
         @Override
         public void rangeBeacon(Beacon beacon) {
             Log.d(TAG, "range: " + beacon.toString());
         }
    
         @Override
         public void newBeacon(Beacon beacon) {
             Log.d(TAG, "new: " + beacon.toString());
         }
    
         @Override
         public void deadBeacon(Beacon beacon) {
             Log.d(TAG, "dead: " + beacon.toString());
         }
     });
     manager.addRegionManager(this, new RegionManager() {
         @Override
         public void enterRegion(Region region) {
             Log.d(TAG, "enter: " + region.toString());
         }
    
         @Override
         public void exitRegion(Region region) {
             Log.d(TAG, "exit: " + region.toString());
         }
     }); 
    
  3. Объект класса BeaconsTrackerManager можно получить только при помощи статического метода getInstance(Context context), передав в него текущий контекст.

  4. В onStart() вызвать метод класса BeaconsTrackerManager subscribe() для бинда активити с сервисом.

     manager.subscribe(IBeaconTrackerListener);
    
  5. В onStop() вызвать метод класса BeaconsTrackerManager unsubscribe().

     manager.unsubscribe(IBeaconTrackerListener);
    
  6. В классе ScannerConfiguration можно указать значения для длительности цикла работы ble.

     ScannerConfiguration.setBackgroundScanCycleDelay(5000);
     ScannerConfiguration.setBackgroundScanDuration(10000);
     ScannerConfiguration.setForegroundScanCycleDelay(500);
     ScannerConfiguration.setForegroundScanDuration(1000);
    

Clone this wiki locally