2011-09-25 77 views
2

我有兩個問題,第一個是,我有獲得一個地址,並將其打印到的EditText一個字符串構建:Android的GPS定位及getFromLocation

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衛星進行更快的修復?

+0

當發生這種情況時,可能是lat或lng都爲null。 –

回答

1

關於你的第二個問題: 你需要有兩個位置偵聽器,一個用於網絡,另一個用於GPS。然後你應該在每個監聽器上使用onLocationChanged來完成你的邏輯,在這種情況下,首先使用網絡位置,一旦你獲得了GPS的更新,你就可以使用那個。

1

對於第一個問題,對於給定的lat,lon可能沒有地址。此Geocoder服務需要互聯網才能激活。

GPS總是需要時間來修復。冷啓動大約需要20分鐘。對於一個溫暖的開始,它可以是20秒到1分鐘。你看,它會掃描整個頻譜中的衛星可見度,然後計算多普勒頻移等。如果您的手機上有互聯網,由於AGPS服務器會協助您的手機,因此會縮短此時間。 NetworkProvider高度不準確。玩弄他們的This is the best way