2011-09-07 7 views
0

私はずっと前に質問を投稿します。基本的に私がやっていることは、私のロケーションマネージャーに私の経度と緯度を返させることです。私のgetBestProvider()メソッドはネットワークを返しますが、私のlocationManager.getLastKnownLocation(provider)はnullを返します。ご覧のとおり、私はリスナーを実装しました。私は間違ったことをしたに違いない。ユーザーの場所が見つかりません

ここにコードがあります。

public class Activity1 extends Activity implements LocationListener { 
     private LocationManager locationManager; 
     private String provider; 



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




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

      Criteria criteria = new Criteria(); 
      provider = locationManager.getBestProvider(criteria, false); 
      System.out.println(provider); 
      System.out.println(locationManager.getProviders(criteria, false)); 
      System.out.println(locationManager.getProvider("network")); 
      System.out.println(locationManager.getAllProviders()); 


      Location location = locationManager.getLastKnownLocation(provider); 

      // Initialize the location fields 
      if (location != null) { 
       System.out.println("Provider " + provider + " has been selected."); 
       int lat = (int) (location.getLatitude()); 
       int lng = (int) (location.getLongitude()); 
       System.out.println(String.valueOf(lat)); 
       System.out.println(String.valueOf(lng)); 

      } else { 
       System.out.println("Provider not available"); 
       System.out.println("Provider not available"); 
      } 


}@Override 
protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
} 

/* Remove the locationlistener updates when Activity is paused */ 
@Override 
protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    System.out.println(String.valueOf(lat)); 
    System.out.println(String.valueOf(lng)); 
} 

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

} 

@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(this, "Disenabled provider " + provider, 
      Toast.LENGTH_SHORT).show(); 
} 

}

+0

誰かがないずっと前にあなたと同じ問題を有し、このTHEADをチェック:[ユーザーの場所が見つかりません: - アンドロイドにおける緯度及び経度(http://stackoverflow.com/question/7308313/user-location-not-found-latitude-and-longitude-in-android/7308484#7308484) – Tiago

+0

私はそれを読んだが問題は解決しなかった。私は彼がやったことをやって、まだヌルになる。 –

答えて

0
LocationManager locationManager; 
    String context = Context.LOCATION_SERVICE; 
    locationManager = (LocationManager)getSystemService(context); 
    String provider = LocationManager.NETWORK_PROVIDER; 
    Location location = locationManager.getLastKnownLocation(provider); 
    updateWithNewLocation(location); 
} 

private void updateWithNewLocation(Location location){ 
    String latLongString;TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText); 
    if (location != null) { 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     latLongString = "Lat:" + lat + "\nLong:" + lng; 
    } else { latLongString = "No location found"; } 
} 
+0

このコードを追加したが、それでもnullが返されました。 –

関連する問題