liujian011 2015-10-06 03:37 采纳率: 14.3%
浏览 2163

Android获取当前位置,location为空

MainActivity.java:
public class MainActivity extends Activity {
LocationManager locationManager ;
String provider;
TextView location_msg;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location_msg = (TextView) findViewById(R.id.location_msg);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List providerList = locationManager.getProviders(true);
if(providerList.contains(LocationManager.GPS_PROVIDER))
{
provider = LocationManager.GPS_PROVIDER;

    }
    else if(providerList.contains(LocationManager.NETWORK_PROVIDER))
    {
        provider = LocationManager.NETWORK_PROVIDER;
    }
    else
    {
        Toast.makeText(MainActivity.this, "here are no useful location service", 1000).show();
        return;
    }

    Location location = locationManager.getLastKnownLocation(provider);
    if(location!=null)
    {
        Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
        showLocation(location);

    }
    else
    {
        Log.i(">>>>>>>MainActivity", "信息显示为空。。。。。。");

    }
    locationManager.requestLocationUpdates(provider, 5000, 1, listener);


}   


private void showLocation(Location location) {
    String position = "latitude is " + location.getLatitude() + "\n"
            + "longitude is " + location.getLongitude();
    location_msg.setText("HELLO WORLD");
    location_msg.setTextColor(Color.BLUE);
    //Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(locationManager!=null)
    {
        locationManager.removeUpdates(listener);

    }
}
LocationListener listener = 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) {
        showLocation(location);
    }
};

}
布局文件为:一个TextView显示地理位置:经度和纬度
AndroidManifest.xml文件添加访问位置权限:


  • 写回答

4条回答 默认 最新

  • Robot-C 2015-10-06 03:40
    关注

         通过最后一次的地理位置来获得Location对象:location = locationManager.getLastKnownLocation(provider);得出location为空。查看各种资料发现,getLastKnownLocation仅仅是获取当缓存中的上一次打开地图缓存起来的位置,不可能一次就能获取,那唯有location为空的时候继续......
    答案就在这里:Android获取当前位置,location为空
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用