Android GPS Fix& getFromLocation

时间:2011-09-25 04:15:12

标签: android gps location cellular-network

我有两个问题,第一个是我有一个String Builder,它获取一个地址并将其打印到edittext:

  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卫星进行更快速的修复?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

对于第一个问题,对于给定的lat,lon可能没有地址。此Geocoder服务还需要互联网才能激活。

GPS总是需要时间来修复。冷启动大概是20分钟。热启动可以是20秒到1分钟。你看,它扫描整个光谱中的卫星可见性迹象,然后计算多普勒频移等。如果您的手机上有互联网,由于AGPS服务器可以帮助您的手机,因此会缩短这段时间。 NetworkProvider非常不准确。 This is the best way杂耍他们。