2013-12-09 15 views
6

Napisałem własną usługę skanowania BLE, która jest wywoływana przez alarm co 3-5 sekund. Skanuje on przez 1,1 sekundy, aby uzyskać wokół niego sygnały nawigacyjne, a następnie przekształca sygnał RSSI w przybliżoną odległość.Skanowanie w tle iBeacon

Rozważam teraz usługę Radius Networks na Androida iBeacon, ale zastanawiam się, w jaki sposób mogę przeprowadzić to samo skanowanie w tle.

np .: Chcę, aby beacons scannign zaczęło się w tle i odbierać Intents do odbiornika, aby zdecydować, co zrobię z zeskanowanymi sygnałami nawigacyjnymi.

Czy są przykłady i czy można oszacować ilość zużywanej baterii?

Odpowiedz

8

Dokładnie to robi sieć Radius Networks "Android iBeacon Library". Wszystko, co musisz zrobić, aby uruchomić go w tle, wiąże IBeaconManager z czymś z długim cyklem życia. Może to być niestandardowy obiekt android.app.Application lub własna Usługa. Ponieważ już napisałeś własną usługę dla swojej aplikacji, możesz łatwo związać usługę IBeaconManager z tą usługą i pozostanie ona aktywna w tle, dopóki usługa będzie działać. Możesz również użyć swojej usługi do wysyłania zamiarów transmisji, jeśli chcesz, ale w większości przypadków nie jest to prawdopodobnie konieczne.

W przypadku korzystania z baterii biblioteka reference application ma przykład, jak ustawić tryb tła w bibliotece, aby skanowanie odbywało się rzadziej, oszczędzając baterię. Stosowny kod w tej aplikacji odniesienia jest tutaj:

@Override 
    protected void onPause() { 
      super.onPause(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, true);      
    } 
    @Override 
    protected void onResume() { 
      super.onResume(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, false);      
    } 

Ustawienie trybu tła true zmniejsza Bluetooth skanuje się zdarzyć tylko raz bardzo 5 minut - coś podobnego do tego, co robi iOS. Na podstawie testów przeprowadzonych na Nexusie 4 zmniejsza to ogólne zużycie baterii telefonu z 95mA do 55mA (obie te liczby obejmują całkowity drenaż systemu operacyjnego).

Pełne ujawnienie: pracuję dla Radius Networks i jestem głównym autorem Biblioteka iBeacon Library.

+0

Witaj David, wiele razy za twoje komentarze. Dla mojej specjalnej wersji poszedłem teraz z usługą i alarmem, ale w przeciwnym razie całkowicie skorzystałbym z interfejsu API. –

+0

Zauważyłem, że klasa IBeacon i metoda scanFromRecord są bardzo pomocne. Jedyne, czego nie mogę zrozumieć, to, co robi linia 216. Wygląda na to, że wykryto znacznik beacon, ale wtedy zwrócił on "pustą" klasę IBeacon. Czy ten starszy kod? Właśnie otrzymałem iBeacons z estimote i działa. BTW Chciałbym nawiązać kontakt i spróbować swoich firmowych radiolatarni i usług. Jak połączyć się bezpośrednio? –

+0

Zrozumiano o swoim pokazie. jest to projekt open source, więc zawsze szukam informacji i współpracowników. Być może – davidgyoung