使用Wifi时查找当前位置有效,但使用GPS时失败

时间:2011-02-26 01:42:49

标签: android geolocation

我开发了一个使用GPS查找用户位置的应用程序。

在这里没有错误。它正确地使用Wifi找到位置,但在GPS模式下它不返回任何值。我在清单中添加了所需的权限,GPS已启用。

有人可以告诉我如何使用Gps获取位置吗?

我在这里包含了我的代码:

package c.g.a.loation;

public class UseGps extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener mlocListener = new MyLocationListener();
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
                mlocListener);
    }

    /* Class My Location Listener */
    public class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {
            Geocoder gp = new Geocoder(getBaseContext());
            try {
                ArrayList<Address> address = (ArrayList<Address>) gp
                        .getFromLocation(loc.getLatitude(), loc.getLongitude(),
                                1);
                if (address != null && address.size() > 0) {
                    Toast.makeText(getBaseContext(), address.get(0).toString(),
                            Toast.LENGTH_LONG).show();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onProviderDisabled(String provider) {}

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}

        @Override
        public void onProviderEnabled(String arg0) {}
    }

    public void onProviderEnabled(String provider) {
        // Toast.makeText(
        // getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}
}

1 个答案:

答案 0 :(得分:0)

我有两个想法......

  1. 您的代码未检查以确保已启用GPS提供程序。我看到注释掉的代码在启用任何提供程序时发送Toast,但您可能想要检查onCreate()中是否启用了GPS提供程序。

  2. 您等待GPS位置多长时间了? GPS_PROVIDER有时需要一段时间才能获得GPS定位。我之前看过TTFF(拳头修复的时间)值超过两分钟。更糟糕的是,我看到不同版本的Android以及不同设备的TTFF差异很大。

  3. 我建议你也尝试从其他应用程序获取GPS修复程序,看看需要多长时间。我通常会启动谷歌地图或GPS状态(从市场上免费),以了解他们需要多长时间才能获得GPS修复。如果您尝试使用Google地图,请确保它已获得GPS修正,而不仅仅是NETWORK_PROVIDER中的位置(屏幕顶部的GPS图标应停止闪烁)。