2012-04-26 123 views
4

我嘗試在Android下爲我的應用程序獲取GPS位置失敗。我想知道我可能做錯了什麼。到目前爲止我嘗試以下方法:Android GPS應用程序無法在模擬器上工作

以及許多其他人,但一切都是徒勞。

考慮到所有的解決方案,上述工作過一段或其他人,我會用這一個調試:

package my.namespace; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

public class HomeActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener ll = new mylocationlistener(); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
    } 

    private class mylocationlistener implements LocationListener { 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
     Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
     Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
     Toast.makeText(HomeActivity.this, 
      location.getLatitude() + "" + location.getLongitude(), 
      Toast.LENGTH_LONG).show(); 
     } 
    } 
    public void onProviderDisabled(String provider) { 
    } 
    public void onProviderEnabled(String provider) { 
    } 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
    } 
} 

@override註釋的3種方法onProviderDisabledonProviderEnabledonStatusChanged。我不得不刪除它們,因爲Eclipse給出了這些方法不覆蓋超類的錯誤。

我在清單文件(ACCESS_FINE_LOCATIONACCESS_MOCK_LOCATIONACCESS_COARSE_LOCATIONINTERNET)中添加了權限。

有沒有人有一個想法,我可能會做錯什麼?

編輯: 在模擬器中運行(Android 2.2的API 8)

回答

3

確保啓用GPS當您測試您的應用程序。如果您同時使用NETWORK_PROVIDER和GPS_PROVIDER,它也會有所幫助。所以,當GPS不可用時,您仍然可以使用NETWORK_PROVIDER獲取位置。

更新: 另外,如果您使用模擬器測試您的應用程序,請確保您從命令行或使用Eclipse模擬GPS修補程序。這裏是一個關於如何做到這一點的stackoverflow問題的鏈接How to emulate GPS location in the Android Emulator?

+0

謝謝你的答覆。我不認爲我可以添加NETWORK_PROVIDER,因爲我正在模擬器上進行測試。我已經將GPS_PROVIDER作爲參數傳遞給requestLocationUpdates方法。 – gkris 2012-04-26 11:27:55

+0

意味着您正在emmulator中測試您的基於gps的應用程序? – MAC 2012-04-26 11:31:44

+0

是的,但如果你願意,你可以使用這兩個提供者。無論如何,如果你正在模擬器上測試它,你是否通過模擬位置修復?無論是從命令行還是從eclipse。因爲在模擬器上,只有在模擬位置修復時,應用纔會獲得位置更新。 – binW 2012-04-26 11:31:45

相關問題