2011-06-22 81 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

相关问题