在Android中显示用户的位置

时间:2011-01-13 09:05:44

标签: android location location-provider

我在获取用户位置(我的位置)时遇到问题。我的代码是

double lat;
double lng;
LocationManager locationManager;
String context = Context.LOCATION_SERVICE; 
locationManager = (LocationManager)getSystemService(context);
String provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
if(!locationManager.isProviderEnabled(provider)){
 locationManager.setTestProviderEnabled(provider, true);
}
boolean enabled = locationManager.isProviderEnabled(provider);
if(enabled){
        Toast.makeText(LoginActivity.this,"provider enabled",Toast.LENGTH_LONG).show();
}
else{
    Toast.makeText(LoginActivity.this,"provider disabled",Toast.LENGTH_LONG).show();
}
if(location!=null){
  lat = location.getLatitude();
  lng = location.getLongitude();
  AlertDialog.Builder ab=new AlertDialog.Builder(LoginActivity.this);
  ab.setMessage(Html.fromHtml("<b><font color=#ff0000>Location" +"</font></b><br>"
            +location.toString()+"<br>Latitude: "+lat
                +"<br>Longitude "+lng));
  ab.setPositiveButton("ok",null );
  Toast.makeText(LoginActivity.this,"You are at     "+location.toString(),Toast.LENGTH_LONG).show();
}
else{
    Toast.makeText(LoginActivity.this,"Location not found",Toast.LENGTH_LONG).show();
} 

我的问题是我在启用应用程序消息提供程序时将该位置设置为null。我在这段代码中没有发现任何问题。我还在设备上测试了它,它显示提供程序已启用且找不到位置。

我没有在类中实现位置监听器。 是否有必要在我的班级中实现位置监听器?

1 个答案:

答案 0 :(得分:3)

您只能通过手机获取最后一个已知位置。如果这是null,如果没有最后一个已知位置可用,那么您不会尝试以任何其他方式接收位置。

您应该根据本指南实现LocationListener并注册它以接收位置更新:http://developer.android.com/guide/topics/location/obtaining-user-location.html这将导致手机尝试获取用户位置并以位置的形式将其移交给您的应用程序对象