我在android中开发了一个应用程序。它是车辆跟踪系统,使用GPS
。
应用程序发送存储在在线mysql数据库中的纬度和经度坐标,java Web应用程序通过该数据库绘制设备已经行进的路径。该应用程序还计算两个坐标之间的距离,并根据该距离发送纬度和经度坐标,即从一个点到另一个点,如果设备在该点覆盖20米的距离,则发送纬度和经度协调网络应用程序,以便在谷歌地图中存储和绘图。
问题
应用程序工作正常,但问题是当应用程序启动时并且保存在没有任何移动的地方时,它会发送一些不正确的坐标。例如,在下面的图片中当设备到达停止点(谷歌地图中的黑点)时,实际上暂时它应该在那个地方,而不是如图所示,设备已经到达某个地方并且一次又一次地去即使设备没有移动,也会在某处。
任何人都可以告诉我一些防止这种情况的解决方案
这些是我的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
更新1
LocationManager mlocmag = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocList = new MyLocationList();
Location loc1 = mlocmag.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc1 == null) {
loc1 = mlocmag.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
String lat =loc1.getLatitude();
String Longs = loc1.getLongitude();
答案 0 :(得分:0)
我非常怀疑GPS准确性在这种情况下的作用,
Android应用尝试在清单中给出android.permission.ACCESS_FINE_LOCATION
权限时,从位置来源(如GPS,手机信号塔和Wi-Fi)访问精确位置,主要和(超级)位置提供商是具有准确性的GPS卫星0米 - 20米当GPS卫星超出范围或手机在室内时,android将寻找其他位置提供者,其中一个是小区ID,它使用手机塔三角测量找到设备的大致位置,精度约为200m - 2000m 。当您所在区域附近有超过4个蜂窝塔时,蜂窝三角剖分将塔架移动到塔架,从而引起移动的感觉。
使用旧的Android权限,如
android.permission.ACCESS_GPS
android.permission.ACCESS_ASSISTED_GPS
android.permission.ACCESS_LOCATION
android.permission.ACCESS_CELL_ID
可以使用大致位置模型解决您的问题。
尝试使用其他手机或位置获取不同的结果。
但是,如果问题仍然存在,问题可能是您的代码或手机本身,在这种情况下,我需要部分代码以获得进一步的帮助。
答案 1 :(得分:0)
您应禁用(GSM-)手机信号塔定位,仅使用GPS,仅使用GPS_PROVIDER
并设置为最高质量。
忘记NETWORK_PROVIDER这不是为了准确的车辆追踪
网络位置可以关闭1000米。
网络提供商可以知道设备在哪个城市。
答案 2 :(得分:0)
这个问题可能是由于车辆停在车库或类似GPS卫星接收不良的情况下造成的,在这种情况下,信号会失去准确性,并且可能会随意漂移。
您的应用应监控GPS信号强度和正在接收的卫星数量,并在信号强度过低时忽略位置。
有许多应用程序可以显示信号强度