0

私のプログラムでは、GPSでロケーションリストナーを使用して、ユーザーの現在の緯度/経度のポイントを取得しています。

GPSが座標を取得している間に進行状況ダイアログを実装したいと思います。

現在、onCreate()メソッド内でprogressDialogを呼び出し、ロケーションオブジェクトがnullでなくなったら、progressdialogを破棄します。

残念ながら、現時点ではダイアログがまったく表示されません。

これが私のコードです:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

        locationListener = new GPSLocationListener();

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

 ***** Call a new progress dialog object when the locationManager is gaining lat/long*****
 d = ProgressDialog.show(this, "GPS Posistion", "Gaining GPS posistion...", false,   true);


}

  private class GPSLocationListener implements LocationListener 
    {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {

                ***** Once lat/long is found, dismiss the progress dialog*****
                d.dismiss();

                Double latToPass = location.getLatitude();
                Double longToPass = location.getLongitude();

                locationManager.removeUpdates(locationListener);
                locationManager = null;

                Intent changesStart = new Intent("com.example.flybaseapp.PassLatLong");
                changesStart.putExtra("passedLat", latToPass);
                changesStart.putExtra("passedLong", longToPass);
                startActivity(changesStart);

            }
        }
4

1 に答える 1

0

AsyncTaskを使用する

    Double latToPass;
    Double longToPass;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

new AsyncAction().execute(null, null, null);

}





    private class AsyncAction extends AsyncTask<String, Void, String> {
            public boolean status = false;
            private ProgressDialog pd;

            @Override
            protected String doInBackground(String... arg0) {
                // TODO Auto-generated method stub
                try {
                    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

            locationListener = new GPSLocationListener();

            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);


                    status = true;

                } catch (Exception e) {
                    // TODO: handle exception
                }

                return null;
            }

            @Override
            protected void onPostExecute(String result) {

                pd.dismiss();

            Intent changesStart = new Intent("com.example.flybaseapp.PassLatLong");
                    changesStart.putExtra("passedLat", latToPass);
                    changesStart.putExtra("passedLong", longToPass);
                    startActivity(changesStart);


                }
            }

            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
                pd = new ProgressDialog(MainActivity.this);
                pd.setMessage("loading...");
                pd.setIndeterminate(true);
                pd.setCancelable(false);
                pd.show();
            }

        }


      private class GPSLocationListener implements LocationListener 
        {
            @Override
            public void onLocationChanged(Location location) {
                if (location != null) {



                    latToPass = location.getLatitude();
                    longToPass = location.getLongitude();

                    locationManager.removeUpdates(locationListener);
                    //locationManager = null;


                }
            }
于 2013-03-26T12:49:25.167 に答える