我的 Android 程序上的 GPS 坐标不准确

Posted

技术标签:

【中文标题】我的 Android 程序上的 GPS 坐标不准确【英文标题】:GPS coordinates are inaccurate on my Android Program 【发布时间】:2012-01-12 12:39:16 【问题描述】:

我正在尝试通过程序中的 GPS 获取我手机的当前位置。

问题是,要么坐标不准确(只有度数),要么没有给出位置。我现在编写了我的第三个程序,每个程序都有不同的教程,但它没有正常工作,因为它应该在那里工作。

设置了使用权限,所以这不是答案;)

这是我的代码:

public class GpsActivity extends Activity

private TextView latituteField;
private TextView longitudeField;
private TextView dateField;
private TextView timeField;
private LocationManager locationManager;
private String provider;
private LocationListener listener; 

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    latituteField = (TextView) findViewById(R.id.TextView02);
    longitudeField = (TextView) findViewById(R.id.TextView04);
    dateField = (TextView) findViewById(R.id.tvdate);
    timeField = (TextView) findViewById(R.id.tvtime);
    GregorianCalendar g = new GregorianCalendar();
    g.setTimeInMillis(System.currentTimeMillis());

    DateFormat df = DateFormat.getInstance();
    Date d = df.getCalendar().getTime();
    dateField.setText(""+d.getDate()+"."+(d.getMonth()+1)+"."+(1980+d.getYear()));
    timeField.setText(""+g.getTime().getHours()+"h "+g.getTime().getMinutes()+"m "+g.getTime().getSeconds()+"s");


    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    // Define the criteria how to select the locatioin provider -> use
    // default
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);

    provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);

    // Initialize the location fields
    if (location != null) 
        System.out.println("Provider " + provider + " has been selected.");
        int lat = (int) (location.getLatitude());
        int lng = (int) (location.getLongitude());

        latituteField.setText(""+lat+"//"+location.getAccuracy());
        longitudeField.setText(""+lng+"//"+location.getProvider());
     else 
        latituteField.setText("Provider not available");
        longitudeField.setText("Provider not available");
    
    listener = new MyLocationListener(); 
    locationManager.requestLocationUpdates("gps" ,10000L, 10.0f, listener); 



class MyLocationListener implements LocationListener 
    public void onLocationChanged(Location location)  
            // TODO Auto-generated method stub 
            if (location != null) 
                    latituteField.setText(("Lat: " + location.getLatitude())); 
                    longitudeField.setText("LLong: " + location.getLongitude());
             
     
    public void onProviderDisabled(String provider)  

     
    public void onProviderEnabled(String provider)  
            // TODO Auto-generated method stub 
     
    public void onStatusChanged(String provider, int status, Bundle extras)  
            // TODO Auto-generated method stub 
     


感谢您的回答!

雷内

【问题讨论】:

【参考方案1】:

您可能只是收到了微弱的信号。您可以使用 android location API 来获取大概位置。

请确保您站在室外并能看到天空,以获得“良好”的信号。不要站在建筑物等旁边。但是,即使这样做,您也不会得到准确的信号。手机 GPS 已针对节能而非准确性进行了优化。他们也不会在您的手机上放置太贵的芯片...

【讨论】:

进一步Udo的回答,别忘了你可以查询定位修复的准确性...这里讨论准确性:***.com/questions/3052517/…

以上是关于我的 Android 程序上的 GPS 坐标不准确的主要内容,如果未能解决你的问题,请参考以下文章

在android中使用gps安全定位

iOS 和 Android 上的 GPS 定位

android 移动设备上的原始 gps 坐标是不是已经通过 Kalman 得到改进

android上的假gps应用程序(它是如何工作的)

距离,Google Maps v2 上的 gps 不准确

为啥城市地区的 GPS 数据不准确?