Estimote / Android-Proximity-SDK

Estimote Proximity SDK for Android
https://developer.estimote.com
MIT License
83 stars 41 forks source link

Proximity localization not reliable on Huawei devices #67

Open andrea-nisti opened 6 years ago

andrea-nisti commented 6 years ago

Prerequisites

Basic information

**Estimote SDK version: 0.6.2

**Android devices affected: issue on Huawei Mate 10 pro and Huawei P10 lite. Probably Huawei is affected in general.

**Android OS version affected: Oreo 8.0.0

**Beacon hardware version: F3.3 Location beacons

Description

We have built a simple proximity application for Android by following the tutorial. We are just entering and exiting from beacon's regions (3 beacons) by printing when inside onExit() and onEnter() methods.

We realized that the triggers are more stable on a Google Pixel 2 compared to the Huawei devices. Moreover on Huawei devices, we register events even if the regions are very small ( e.g. 0.1 m) and reality we are far away. This is not happening on the Pixel 2.

Expected behavior: We expected behavior to be hardware independent.

Actual behavior: OnEnter() and OnExit() depends on hardware. The value that we give inCustomRange() are not unique for different devices (smartphones): around 0.1 for Huawei (still flickering) compared to 2.0 for Pixel (stable measures).

Additional information

The setup consists of 3 beacons in an office space and they are around 4 meters apart from each other.

Our question is: what could be the issue? Is the Kirin processor (huawei chipset) treating differently the bluetooth signal?

It seems that Huawei is much more sensitive respect to the others.

Last, the tested Huawei devices have bluetooth 4.0 while Pixel is equipped with bluetooth 5.0

Thanks a lot for your help

pawelDylag commented 6 years ago

Hello @andrea-nisti

Thanks a lot for the detailed information you provided. We are getting lots of similar requests for Huawei devices recently.

As you probably noticed, the never-ending fight with signal stability is a complicated process. There are many sources that affect signal strength received by your phone. Hardware (especially RF antenna position) is pretty differentiated across multiple Android devices, and one static software solution is nearly impossible to develop. Physical obstacles, interferences, human body - all this things are super affective.

We do lots of research and measurements for each phone model, but well, there are tons of Android devices out there!

We'll definitely add more priority to Huawei devices for the upcoming measurement session - will let you know about the progress here :)

Cheers! Paweł

andrea-nisti commented 6 years ago

Hello, thanks for your answer.

We have been extra careful with human body occlusions, no complaints about that. It seems that the issue is related to way too much sensitivity.

One interesting fact is that even putting the custom range to 0.0 , I register OnEnter() triggers! That is pretty weird since I expect that, regarding antennas configurations, triggers should not arrive with 0 mean distance.

I have a question regarding triggering logic: how OnExit() triggers are managed? Do they appear only if a OnEnter() was registered in that area or they are totally independent?

Thank a lot for your help, keep me updated with your work regarding this issue and if you need more informations I am happy to help