我正在研究gps应用程序,它将选择用户的确切位置,但我不能以良好的方式做到这一点

时间:2014-02-10 18:23:52

标签: android gps cllocationmanager

我花了7-14分钟用gps选择用户的确切位置。我尝试使用gsm和网络他们很快但不准确像gps.But gps花了太多时间来给我确切的位置。 而另一个问题是我希望我出现的对话框会出现并说用户“请等待连接到gps”但我不知道何时显示此消息以及何时隐藏它但位置监听器不断变化和所有这些东西我正在寻找好的和实际的答案。

这是我的代码,直到现在。

 public class FragmentAddPlace extends Fragment implements
    OnItemSelectedListener, OnClickListener, LocationListener {
@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    setUpLocationClientIfNeeded();
    Log.e("OnResume ", "Eroor");
    mLocationClient.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            5000, 15, this);

    mLocationClient.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 5000, 15, this);
}
@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    setUpLocationClientIfNeeded();
    Log.e("OnResume ", "Eroor");
    mLocationClient.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            5000, 15, this);

    mLocationClient.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 5000, 15, this);
}
LocationManager mLocationClient;

private void setUpLocationClientIfNeeded() {
    if (mLocationClient == null) {
        mLocationClient = (LocationManager) getActivity().getSystemService(
                Context.LOCATION_SERVICE); // OnConnectionFailedListener
    }
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    loc = location;
    Log.e("OnLoactionChanged", "Location is Lattitude:" + loc.getLatitude()
            + " Longitude:" + loc.getLongitude() + " ");
    Toast.makeText(getActivity(), "Location is Updated", Toast.LENGTH_LONG)
            .show();
}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub
    Toast.makeText(getActivity(), "Please Enable GPS provider",
            Toast.LENGTH_SHORT).show();
}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub
    mLocationClient.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            5000, 15, this);
}

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

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    mLocationClient = (LocationManager) getActivity().getSystemService(
            Context.LOCATION_SERVICE);
    cd = new ConnectionDetector(getActivity());
    isInternetPresent = cd.isConnectingToInternet();
    if (savedInstanceState != null) imgbit =        savedInstanceState.getParcelable("image");
    init();
    Log.e("onActivity Created", "Eroor");
}

}

1 个答案:

答案 0 :(得分:0)

GPS需要自由观看天空 GPS无法在室内工作(仅靠近窗户),因此向上移动并向外走 然后通常会在20-40到20之间收到一个位置。

您可以读出估计的位置准确度:

使用Location.getHoricontalAccuracy()以米为单位获取位置错误 如果该值超过30米,则GPS位置不佳 在这种情况下,您可能会显示警告,或者您的“等待对话框”。