2011-09-25 42 views
0

我遵循Android的HelloMapView教程,並添加了一些代碼來捕獲我當前的位置信息並顯示在文本視圖中。Android MapActivity無法檢索位置數據

我已經測試了這些代碼在另一個程序中,它的工作,它能夠顯示我的經度和緯度數據,當啓動應用程序。但是,當我將代碼複製到此MapActivity中時,似乎我無法獲取位置數據。

下面是部分代碼:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
     mapOverlays = mapView.getOverlays(); 
     drawable = this.getResources().getDrawable(R.drawable.androidmarker); 
     itemizedOverlay = new HelloItemizedOverlay(drawable, this); 
     Button button1 = (Button)this.findViewById(R.id.button1); 
     tv1 = (TextView) this.findViewById(R.id.textView1); 
     button1.setOnClickListener(mScan); 
     latitude = 1.3831625; 
     longitude = 103.7727321; 


     LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if (location == null) 
      location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (location != null) { 
      if (System.currentTimeMillis() - location.getTime() < 3000) 
      { 
       longitude = location.getLongitude(); 
       latitude = location.getLatitude(); 

       tv1.setText(Double.toString(longitude)); 

      } 
     } 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 10, locationListener); 

    } 

    private final LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      longitude = location.getLongitude(); 
      latitude = location.getLatitude(); 

      tv1.setText(Double.toString(latitude)); 
     } 

     @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 

     } 
    }; 
+0

另請注意,即使我已經自定義了經度和緯度,但我的tv1並未更新爲任何值。 – phatez

回答

0

你有沒有在清單中添加適當的權限?像這樣

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

此外請檢查您的GPS是啓用或工作在你的deive。