2012-12-13 20 views
4

這種現象已經覆蓋了的時候,但我還沒有找到另外一個問題同樣的標準所以這裏去...獲得通過WiFi的Android地點只不起作用

我正在成功地使用GPS時的應用該設備有服務。我有一個Android 2.3.4版本的測試設備。它沒有SIM卡,所以不需要GPS。但它可以通過Wifi在Google地圖中獲取位置信息。但是我的應用程序無法在此設備上找到位置。在具有服務的設備上,通過將設備置於飛行模式,然後重新啓用Wifi,我可以獲得相同的行爲。

在我的應用程序中,我有一個實現LocationListener的GPS跟蹤類。

在應用程序啓動時,下面的代碼運行:

public Location getLocation() { 
    try { 
     locationManager = (LocationManager) mContext 
       .getSystemService(LOCATION_SERVICE); 

     // getting GPS status 
     isGPSEnabled = locationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 

     // getting network status 
     isNetworkEnabled = locationManager 
       .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     if (!isGPSEnabled && !isNetworkEnabled) { 
      // no network provider is enabled 
     } else { 
      this.canGetLocation = true; 
      // First get location from Network Provider 
      if (isNetworkEnabled) { 
       Log.d(LOG_TAG, "Requesting updates"); 
       //TODO once tested, up the time below 
       locationManager.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, 
         MIN_TIME_BW_UPDATES, 
         MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
       Log.d("Network", "Network"); 
       if (locationManager != null) { 
        location = locationManager 
          .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        // *** location is null here *** 
        if (location != null) { 
         latitude = location.getLatitude(); 
         longitude = location.getLongitude(); 
        } 
       } 
      } 
      // if GPS Enabled get lat/long using GPS Services 
      if (isGPSEnabled) { 
       if (location == null) { 
        locationManager.requestLocationUpdates(
          LocationManager.GPS_PROVIDER, 
          MIN_TIME_BW_UPDATES, 
          MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
        Log.d("GPS Enabled", "GPS Enabled"); 
        if (locationManager != null) { 
         location = locationManager 
           .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
         if (location != null) { 
          latitude = location.getLatitude(); 
          longitude = location.getLongitude(); 
         } 
        } 
       } 
      } 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return location; 
} 

見註釋「的位置是空在這裏」。在幾分鐘後的啓動和隨後的呼叫中就是這種情況。這些接口函數

都不是曾經被稱爲: onLocationChanged onProviderEnabled onProviderDisabled onStatusChanged

我有一艘被失去基本的東西?至少在等待一段時間後,地點應該是可以達到的。而且,如前所述,Google地圖在兩臺設備上都只能使用WiFi模式。

+0

你說什麼沒有SIM的GPS沒有預期? GPS應該工作得很好(並且按照[這個問題](http://stackoverflow.com/q/4375913/250725)建議/確認),儘管沒有服務A-GPS是不可能的,所以連接時間可能會很慢。 – psubsee2003

回答

3

事實證明,收購地點的時間比預期長得多。我想大約2分鐘。

+0

我在開發的應用程序中遇到了同樣的問題。當設備沒有服務時,GPS和NETWORK位置需要更長時間才能獲取。 2分鐘或更長時間。我建議你嘗試使用SIM來實現你的應用程序,以期望所需的性能。 – Andres