2011-12-07 15 views
3

は、私が現在位置を取得するため、このコードを使用しますAndroidで現在地を取得するにはどうすればよいですか?

LocationManager lm = (LocationManager) this 
     .getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

/* 
* Loop over the array backwards, and if you get an accurate location, 
* then break out the loop 
*/ 
Location l = null; 

for (int i = providers.size() - 1; i >= 0; i--) { 

    l = lm.getLastKnownLocation(providers.get(i)); 
    if (l != null) 
     break; 
} 

if (l==null) { 
    return; 
} 
Toast.makeText(this, String.valueOf(l.getLatitude()), Toast.LENGTH_LONG).show(); 

をしかし、lが常にnullであるので、私は、緯度を見ることはありません。私のマニフェストファイルには、ACCESS_FINE_LOCATIONとインターネットのアクセス許可が含まれています。私はどこで間違えたのですか?この優れた説明に

+1

http://developer.android.com/guide/topics/location/obtaining-user-location.htmlを参照してください。ロケーション・リスナーを追加し、更新を要求する必要があります。 – blessenm

+1

なぜこのコードを使用しますか?それを使用する必要がない場合は、これを使用してください:http://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-androidまたこちらの開発者サイトを参照してください:http://developer.android.com/reference/android/location/LocationManager.html –

+0

これはあなたのためにうまくいくかもしれません: http://stackoverflow.com/a/3145655/265167 –

答えて

0

私は場所を実装するための最良のオープンソースプロジェクトは、GoogleのコードにFoursquareのだと思う: http://code.google.com/p/foursquared/

関連のコードをcom.joelapenna.foursquared.loaction.BestLoactionListener

であるあなたがチェックアウトすることができます彼らはどのようにLoactionに対処し、どのように現在のLoactionを更新するのか、それは私を助けます。

0

次のコードは私にとって役に立ちます。私は、GPSサービスを使って、ネットワークサービスを使って、デバイスの現在の位置を特定しました。

private void findCurrentLocation() 
{ 
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    if (locationManager == null) 
    { 
     Toast.makeText(CityActivity.this, "Location Manager Not Available", 
     Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    if (location == null) 
     location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    if (location != null) 
    { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     myFunction(location); 
    } 
    else 
    { 
     locationListener = new LocationListener() 
     { 
      @Override 
      public void onStatusChanged(String arg0, int arg1, Bundle arg2) 
      {;} 

      @Override 
      public void onProviderEnabled(String arg0) 
      {;} 

      @Override 
      public void onProviderDisabled(String arg0) 
      {;} 

      @Override 
      public void onLocationChanged(Location l) 
      { 
       location = l; 
       locationManager.removeUpdates(this); 
       if (l.getLatitude() == 0 || l.getLongitude() == 0) 
       {;} 
       else 
       { 
        lat = l.getLatitude(); 
        lng = l.getLongitude(); 
        myFunction(location); 
       } 
      } 
     } 
     if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, f, locationListener); 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 10f, locationListener); 
     locationtimer = new CountDownTimer(30000, 5000) 
     { 
      @Override 
      public void onTick(long millisUntilFinished) 
      { 
       if (location != null) 
        locationtimer.cancel(); 
      } 

      @Override 
      public void onFinish() 
      { 
       if (location == null) 
       {;} 
      } 
     }; 
     locationtimer.start(); 
    } 
} 
+0

コードはどこですか? – eeerahul

+0

申し訳ありませんが、私はコピーしたコードを別の場所に貼り付けました。 –

関連する問題