This route image:
According to image, and data, I returned to the bottom point several times.
I modified the app to save the provider of each location, I see that this returning location is from the network provider. It is strange that gps and network provided locations intermix, including pairs of successive network provided locations as if there were two parallel network location requests. It seems too that locations received from GPS does not stop pending network locations requests... I reviewed the code, it looks good but with not too much knowledge of android, I guess it could be a thread raise condition.
This is the data in this time period in order of fixtime (pipe separated):
id|protocol|deviceid|servertime|devicetime|fixtime|valid|latitude|longitude|altitude|speed|course|address|attributes
13600|osmand|1|2016-11-26 17:27:07|2016-11-26 15:10:07|2016-11-26 15:10:07|true|17.98|-92.91|-126.31|0.94|82.46|115 Agrónomos, Villahermosa, Tab., MX|{"battery":"13.0","prov":"gps","accuracy":"96.0","ip":"192.168.1.2","distance":60.83,"totalDistance":523313.49}
13601|osmand|1|2016-11-26 17:27:07|2016-11-26 15:10:50|2016-11-26 15:10:50|true|17.98|-92.91|0|0|0|103 Calle Astrólogos, Villahermosa, Tab., MX|{"battery":"13.0","prov":"network","accuracy":"31.088","ip":"192.168.1.2","distance":17.48,"totalDistance":523275.46}
13608|osmand|1|2016-11-26 17:27:07|2016-11-26 15:11:16|2016-11-26 15:11:16|true|17.98|-92.91|-49.26|2|259.49|103 Calle Astrólogos, Villahermosa, Tab., MX|{"battery":"13.0","prov":"gps","accuracy":"48.0","ip":"192.168.1.2","distance":115.93,"totalDistance":523485.68}
13604|osmand|1|2016-11-26 17:27:07|2016-11-26 15:11:21|2016-11-26 15:11:21|true|17.98|-92.91|0|0|0|103 Calle Astrólogos, Villahermosa, Tab., MX|{"battery":"13.0","prov":"network","accuracy":"30.0","ip":"192.168.1.2","distance":74.6,"totalDistance":523388.09}
13605|osmand|1|2016-11-26 17:27:07|2016-11-26 15:12:03|2016-11-26 15:12:03|true|17.98|-92.91|0|0|0|216 Agrónomos, Villahermosa, Tab., MX|{"battery":"13.0","prov":"network","accuracy":"37.536","ip":"192.168.1.2","distance":79.15,"totalDistance":523392.64}
13603|osmand|1|2016-11-26 17:27:07|2016-11-26 15:12:28|2016-11-26 15:12:28|true|17.98|-92.91|-9.33|9.15|210||{"battery":"13.0","prov":"gps","accuracy":"32.0","ip":"192.168.1.2","distance":85.42,"totalDistance":523398.91}
13602|osmand|1|2016-11-26 17:27:07|2016-11-26 15:12:53|2016-11-26 15:12:53|true|17.98|-92.91|0|0|0||{"battery":"13.0","prov":"network","accuracy":"142.892","ip":"192.168.1.2","distance":94.29,"totalDistance":523369.75}
13606|osmand|1|2016-11-26 17:27:07|2016-11-26 15:13:25|2016-11-26 15:13:25|true|17.98|-92.91|0|0|0||{"battery":"12.0","prov":"network","accuracy":"30.0","ip":"192.168.1.2","distance":61.77,"totalDistance":523460.68}
13607|osmand|1|2016-11-26 17:27:07|2016-11-26 15:13:35|2016-11-26 15:13:35|true|17.98|-92.91|-4.89|8.7|301.32||{"battery":"12.0","prov":"gps","accuracy":"32.0","ip":"192.168.1.2","distance":251.99,"totalDistance":523650.9}
13610|osmand|1|2016-11-26 17:27:07|2016-11-26 15:14:26|2016-11-26 15:14:26|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"40.5","ip":"192.168.1.2","distance":265.73,"totalDistance":523916.63}
13609|osmand|1|2016-11-26 17:27:07|2016-11-26 15:14:42|2016-11-26 15:14:42|true|17.98|-92.92|-10.76|3.83|269.25||{"battery":"12.0","prov":"gps","accuracy":"24.0","ip":"192.168.1.2","distance":366.56,"totalDistance":524017.46}
13611|osmand|1|2016-11-26 17:27:07|2016-11-26 15:15:25|2016-11-26 15:15:25|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"2462.0","ip":"192.168.1.2","distance":272.32,"totalDistance":524289.78}
13613|osmand|1|2016-11-26 17:27:07|2016-11-26 15:15:49|2016-11-26 15:15:49|true|17.98|-92.92|97.11|14.84|329.39||{"battery":"12.0","prov":"gps","accuracy":"64.0","ip":"192.168.1.2","distance":58.05,"totalDistance":524419.27}
13612|osmand|1|2016-11-26 17:27:07|2016-11-26 15:15:55|2016-11-26 15:15:55|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"34.5","ip":"192.168.1.2","distance":343.76,"totalDistance":524361.22}
13615|osmand|1|2016-11-26 17:27:08|2016-11-26 15:16:55|2016-11-26 15:16:55|true|17.98|-92.92|-157.74|9.87|30.34||{"battery":"12.0","prov":"gps","accuracy":"64.0","ip":"192.168.1.2","distance":81.71,"totalDistance":524756.91}
13614|osmand|1|2016-11-26 17:27:08|2016-11-26 15:17:03|2016-11-26 15:17:03|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"39.0","ip":"192.168.1.2","distance":313.98,"totalDistance":524675.2}
13616|osmand|1|2016-11-26 17:27:08|2016-11-26 15:17:54|2016-11-26 15:17:54|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"40.5","ip":"192.168.1.2","distance":141.73,"totalDistance":524816.93}
13617|osmand|1|2016-11-26 17:27:08|2016-11-26 15:18:01|2016-11-26 15:18:01|true|17.98|-92.92|28.33|3.74|330.49||{"battery":"12.0","prov":"gps","accuracy":"32.0","ip":"192.168.1.2","distance":145.28,"totalDistance":524962.21}
13618|osmand|1|2016-11-26 17:27:08|2016-11-26 15:18:53|2016-11-26 15:18:53|true|17.98|-92.92|0|0|0||{"battery":"12.0","prov":"network","accuracy":"2462.0","ip":"192.168.1.2","distance":925.16,"totalDistance":525742.09}
13621|osmand|1|2016-11-26 17:27:08|2016-11-26 15:19:18|2016-11-26 15:19:18|true|17.99|-92.92|-7.86|0.06|112.03||{"battery":"11.0","prov":"gps","accuracy":"24.0","ip":"192.168.1.2","distance":1229.2,"totalDistance":526971.29}
13619|osmand|1|2016-11-26 17:27:08|2016-11-26 15:19:24|2016-11-26 15:19:24|true|17.98|-92.92|0|0|0||{"battery":"11.0","prov":"network","accuracy":"2462.0","ip":"192.168.1.2","distance":925.16,"totalDistance":525742.09}
13620|osmand|1|2016-11-26 17:27:08|2016-11-26 15:19:54|2016-11-26 15:19:54|true|17.98|-92.92|0|0|0||{"battery":"11.0","prov":"network","accuracy":"2462.0","ip":"192.168.1.2","distance":0.0,"totalDistance":525742.09}
This route image:
According to image, and data, I returned to the bottom point several times.
I modified the app to save the provider of each location, I see that this returning location is from the network provider. It is strange that gps and network provided locations intermix, including pairs of successive network provided locations as if there were two parallel network location requests. It seems too that locations received from GPS does not stop pending network locations requests... I reviewed the code, it looks good but with not too much knowledge of android, I guess it could be a thread raise condition.
This is the data in this time period in order of fixtime (pipe separated):