2

我有两个问题,第一个是我有一个获取地址并将其打印到编辑文本的字符串生成器:

  Geocoder mGC = new Geocoder(context,Locale.getDefault());
    address = mGC.getFromLocation(lat, lng, 1);

    if (address !=null){
     Address currentAddr = address.get(0);
     mSB = new StringBuilder();
     for (int i=0; i<currentAddr.getMaxAddressLineIndex(); i++){
     mSB.append(currentAddr.getAddressLine(i)).append(", ");
    }
   outputText.setText(mSB.toString());

}

问题是该行随机address = mGC.getFromLocation(lat, lng, 1);返回一个空指针异常。有时它可以工作好几天……然后突然出现空指针异常;有谁知道为什么?

另外我的第二个问题是我的 GPS 修复需要一些时间,我正在使用 GPS 卫星;有没有办法我可以先使用网络提供的信息,然后再使用 GPS 卫星进行更快的修复?

4

2 回答 2

1

关于您的第二个问题:您需要有两个位置侦听器,一个用于网络,另一个用于 GPS。然后,您应该在每个侦听器上使用 onLocationChanged 来执行您的逻辑,在这种情况下,首先使用网络位置,一旦您获得 GPS 的更新,您就使用那个。

于 2011-09-25T05:33:43.267 回答
1

对于第一个问题,对于给定的 lat,lon,可能没有地址。此外,此地理编码器服务需要 Internet 才能处于活动状态。

GPS总是需要时间来修复。冷启动大约需要 20 分钟。对于热启动,它可以是 20 秒到 1 分钟。你看,它扫描整个频谱以寻找卫星能见度的迹象,然后计算多普勒频移等。如果您的手机上有互联网,由于 AGPS 服务器协助您的手机,这段时间会缩短。NetworkProvider 非常不准确。这是玩弄他们的最佳方式。

于 2011-09-25T06:45:44.847 回答