0

次の問題があります。インターネットを使用して座標を取得する必要がありますが、モバイル インターネット (エッジ) に接続すると、アパート全体で同じ座標が取得されます。私のコードは次のとおりです。

public class FetchCordinates extends AsyncTask<String, Integer, String> {
    ProgressDialog progDailog = null;

    public LocationManager mLocationManager;
    public VeggsterLocationListener mVeggsterLocationListener;

    @Override
    protected void onPreExecute() {
        mVeggsterLocationListener = new VeggsterLocationListener();
        mLocationManager = (LocationManager) getActivity()
                .getSystemService(Context.LOCATION_SERVICE);

        mLocationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 1000, 10,
                mVeggsterLocationListener);

        progDailog = new ProgressDialog(getActivity());


        progDailog.setTitle("Получение координат");
        progDailog
                .setMessage("Получение Вашего местоположения, ожидайте, это может занять несколько минут...");
        progDailog.setIndeterminate(true);


        progDailog.setCancelable(false);
        progDailog.setButton(DialogInterface.BUTTON_NEGATIVE, "Отмена",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        FetchCordinates.this.cancel(true);
                        mLocationManager
                                .removeUpdates(mVeggsterLocationListener);
                    }
                });
        progDailog.show();

    }

    @Override
    protected void onCancelled() {
        Log.d("myLogs", "Cancelled by user!");
        progDailog.dismiss();

    }

    @Override
    protected void onPostExecute(String result) {
        progDailog.dismiss();
        if (myLat == 0) {
            new AlertDialog.Builder(getActivity())
                    .setTitle("Ошибка получения координат")
                    .setMessage("Попробуйте позже...")
                    .setPositiveButton("Ок",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // continue with delete
                                }
                            }).show();

        } else {

            pg = new Progress();
            pg.execute("");
        }

    }

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        long timeOfStartingThread = System.currentTimeMillis();
        while (myLat == 0.0) {
            if (System.currentTimeMillis() - timeOfStartingThread > timeToGetGps_ms) {
                break;
            }
        }
        mLocationManager.removeUpdates(mVeggsterLocationListener);
        return null;
    }

    public class VeggsterLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {

            try {



                myLat = location.getLatitude();
                myLong = location.getLongitude();

                 Toast.makeText(
                 getActivity(),
                 " Координаты получены :" + myLat
                 + ", :" + myLong,
                 Toast.LENGTH_SHORT).show();

            } catch (Exception e) {

            }

        }

        @Override
        public void onProviderDisabled(String provider) {
            Log.d("myLogs", "OnProviderDisabled");
        }

        @Override
        public void onProviderEnabled(String provider) {
            Log.d("myLogs", "onProviderEnabled");
        }

        @Override
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
            Log.d("myLogs", "onStatusChanged");

        }

    }

}
4

1 に答える 1

2

残念ながら、GPS はデフォルトであまり信頼性が高くありませんが、屋外環境では 5 ~ 10 メートルまで正確である必要があります。ご想像のとおり、屋内ではさらに悪化します。多くの人が、屋内環境では座標を受け取ることさえできないと報告しています。

残念ながら、GPS の精度はスマートフォンと気象条件の両方に依存するため、正確な精度を特定する方法はありません。

したがって、現在よりも良い結果を得ることは不可能であるというのが私の推測です。

すみません(たぶん)

于 2013-09-23T19:28:43.847 に答える