2011-06-22 79 views
-1

我想開發一個應用程序,當我啓動應用程序時,它會首先給我我的當前位置的緯度和經度。這裏是我的代碼:如何找到當前位置'緯度經度

LocationListener locLis=new LocationListener() { 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) {}  
@Override 
public void onProviderEnabled(String provider) {}   
@Override 
public void onProviderDisabled(String provider) {} 
@Override 
public void onLocationChanged(Location location) 
{ 
// TODO Auto-generated method stub 
    Double lat=location.getLatitude(); 
    Double lon=location.getLongitude(); 
    Log.i("Latitude=="+lat,"=="+lon); 

} 
}; 
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, locLis); 

我在清單文件中使用ACCESS_FINE_LOCATION。 但是,當我啓動應用程序沒有找到經度和緯度。爲什麼?如果我從命令提示符更改位置的緯度經度,那麼它將顯示更新的經度和緯度。請任何人幫我

+0

你是什麼意思是「如果我從命令提示符改變位置的緯度經度」 - 你只在模擬器上測試該應用程序嗎?那麼這是你唯一的選擇,模擬器沒有gps芯片:-) - 如果你正在測試一個真實的設備,確保gps已打開,並且你靠近一個窗口,或者在外面更好 – Gryphius

+0

起初我嘗試過仿真器然後我嘗試在我的設備(宏達願望),但他們沒有結果。 –

回答

0

你的代碼被設置爲只有當它改變時才顯示位置。 我認爲爲了在應用程序啓動時顯示它,您應該嘗試將它放在onProviderEnabled()或其他初始化例程中。

0

你應該做這樣的

  public class MyLocationListener implements LocationListener 
{ 

    @Override 
    public void onLocationChanged(Location loc) 

    {} 

      @Override 
    public void onProviderDisabled(String provider) 
    {} 
      @Override 
    public void onProviderEnabled(String provider) 
    {} 
      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) 
    { 

    } 
     } 
    mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    mlocListener = new MyLocationListener(); 

    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
+0

在真實的設備上測試它,並在方法中使用烤麪包以獲得緯度和長時間顯示 – ozmank

+0

我嘗試過在我的HTC慾望但沒有結果。 –

+0

的設置,是否將GPS位置複選框轉爲檢查? – ozmank

1

把這個代碼,並在享受

公共無效find_Location(上下文CON) { Log.d( 「查找位置」,」 find_location「); this.con = con; String location_context = Context.LOCATION_SERVICE; locationManager =(LocationManager)con.getSystemService(location_context);

List<String> providers = locationManager.getProviders(true); 
    for (String provider : providers) 
    { 
     locationManager.requestLocationUpdates(provider, 1000, 0,new LocationListener() 
     { 
      public void onLocationChanged(Location location) {} 
      public void onProviderDisabled(String provider){} 
      public void onProviderEnabled(String provider){} 
      public void onStatusChanged(String provider, int status,Bundle extras){} 
     }); 
     Location location = locationManager.getLastKnownLocation(provider); 
     if (location != null) 
     { 
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 
      addr=ConvertPointToLocation(latitude,longitude); 
        String temp_c=SendToUrl(addr); 

     } 
    } 
} 

public String ConvertPointToLocation(double pointlat,double pointlog) { 

    String address = ""; 
    Geocoder geoCoder = new Geocoder(con, 
      Locale.getDefault()); 
    try { 
     List<Address> addresses = geoCoder.getFromLocation(pointlat,pointlog, 1); 
     if (addresses.size() > 0) { 
      for (int index = 0; index < addresses.get(0) 
        .getMaxAddressLineIndex(); index++) 
       address += addresses.get(0).getAddressLine(index) + " "; 
     } 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return address; 
} 
+0

添加用戶權限以覆蓋appcation

相關問題