1

エミュレーターに地図上のどこにいるかを表示させようとしています。問題は、実際の場所もコンパスも取得できないことです。コンピューターでエミュレーターのみを使用しています。Google マップ、キー、インポートを整数化しました。 manifest.xml はコードです:

     package com.training.surveyproject;
     import android.location.Location;
     import android.location.LocationListener;
     import android.location.LocationManager;
     import android.os.Bundle;
     import android.view.KeyEvent;
     import android.widget.Toast;

     import com.google.android.maps.GeoPoint;
     import com.google.android.maps.MapActivity;
     import com.google.android.maps.MapController;
     import com.google.android.maps.MapView;
     import com.google.android.maps.MyLocationOverlay;

     public class SurveyActivity extends MapActivity implements LocationListener
     {

        private MapView mapView = null;
        private LocationManager lm = null;
        private double lat = 0;
        private double lng = 0;
        private MapController mc = null;
        private MyLocationOverlay myLocation = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_survey);
        mapView = (MapView) this.findViewById(R.id.mapView);
        mapView.setBuiltInZoomControls(true);

        lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this);
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this);

        mc = mapView.getController();
        mc.setZoom(12);
        myLocation = new MyLocationOverlay(getApplicationContext(),mapView); 
        myLocation.runOnFirstFix(new Runnable(){
    public void run(){
     mc.animateTo(myLocation.getMyLocation());
     mc.setZoom(17);
      }
       });
       mapView.getOverlays().add(myLocation);
       myLocation.enableMyLocation();
       myLocation.enableCompass();
             }

       @Override
       public boolean onKeyDown(int keyCode, KeyEvent event)
                {
                if (keyCode == KeyEvent.KEYCODE_S)
                {
      mapView.setSatellite(!mapView.isSatellite());
      return true;
             }
       return super.onKeyDown(keyCode, event);
      }

      @Override
      public void onLocationChanged(Location location)
      {
            lat = location.getLatitude();
            lng = location.getLongitude();
            Toast.makeText(getBaseContext(),
            "Location change to : Latitude = " + lat + " Longitude = " + lng,
            Toast.LENGTH_SHORT).show();
            GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
            mc.animateTo(p);
            mc.setCenter(p);
            }

            @Override
            protected boolean isRouteDisplayed()
               {
                    return false;
               }

          @Override
          public void onProviderDisabled(String provider)
                 {
             // TODO Auto-generated method stub

                 }

          @Override
          public void onProviderEnabled(String provider)
                 {
             // TODO Auto-generated method stub

                 }

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

                 }


                }

ありがとう

4

1 に答える 1

0

DDMS パースペクティブとそこにある「エミュレーター コントロール」タブを開くことで、シミュレートされた GPS 修正をエミュレーターに送信できます。そのタブには、緯度/経度をエミュレーターに送信する「位置制御」オプションがあります。

于 2012-07-11T18:54:03.737 に答える