In order to compute your location, Situm Android SDK reads the WiFi scans of your smartphone, looking for signals received from WiFi access points. In some smartphone models or specific devices, being connected to a WiFi network or allowing the system to look for available networks will interfere with Situm SDK.  The effects can range from a slight decrease in the positioning accuracy, to a temporal blockage of the WiFi chipset (after which Situm will not be able to use WiFi to compute locations for a while). This only applies to Android devices, since on iOS devices Situm positioning does not use WiFi signals.



For these reasons, in Android devices it is highly recommended to disable WiFi connectivity on your smartphone during positioning (you may do this using your smartphone settings menu). Keep in mind that the smartphone will need an active mobile data connection to exchange information with Situm cloud (see this link for more information).



My Android users need to have WiFi on at all times, do I have any alternative?


Yes! You have 2 options:

  • Use BLE beacons.  In addition to WiFi, Situm SDK is also able to provide location by using Bluetooth, in case Beacons are installed. The default behaviour is to use both WiFi and Bluetooth, but developers can decide whether to use only one of them, or both.
  • Just don't follow this recommendation. Turning WiFi off, is our recommendation to get the best positioning accuracy. However, even with the smartphone connected to the WiFi network, most users will get a good performance. Anyway, keep in mind that in some smartphone models a temporal blockage of the WiFi chipset  might occur (after which Situm will not be able to use WiFi to compute locations for a while).



How to enable/disable WiFi and/or BLE for positioning (Android)


Any application that uses Situm Android SDK can configure the usage of WiFi and BLE for positioningwhen creating a LocationRequest, using LocationRequest.Builder#useWiFi(Boolean) and LocationRequest.Builder.useBle(Boolean) Both parameters are true by default, which means the developer needs to disable one of them in case its use is not needed. As explained above, in case WiFi positioning is selected WiFi connectivity needs to be disabled in the smartphone Android settings, while in case BLE positioning is needed, Bluetooth must be turned on in the smartphone Android settings.


Situm Mapping tool provides specific settings where the user can select whether to use WiFi, BLE or both options for positioning. Please note that at least one of them should be enabled in order to get locations.


                                                                                                               


Recommendations on how to use Bluetooth beacons when users need to be always connected to a WiFi network

In case users need to be always connected to a WiFi network, the location must be computed using Bluetooth only. On the SDK, this can be achieved by setting the useWiFi parameter to false on the LocationRequest. In this case, it is necessary to install beacons on the building. 


In case beacons are not provided by Situm, it is also necessary to specify its UUIDs. This can be done by adding them as custom fields of the Building (See How to use the custom fields) to calibrate the building with Situm Mapping Tool and on the LocationRequest for positioning as follows: LocationRequest.Builder#setBeaconFilters(@NonNull List<BeaconFilter> beaconFilters)