簡體   English   中英

android getlastknownlocation 在模擬器中始終為空

[英]android getlastknownlocation always null in emulator

這似乎是一個常見問題,但我真的不明白為什么會發生,即使我閱讀了大量類似的問題。

我正在模擬器設備上使用基本位置類,我設置了所有內容 - 權限(FINE 和 COARSE),我已經在 DDMS 中設置了坐標,我也嘗試使用 telnet 然后,但無論如何它總是因空指針而崩潰getlastknownlocation 線上的異常,有什么想法這里有什么問題嗎?

public class MainActivity extends Activity implements LocationListener {



private static LocationManager ok;
private Location L;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    ok=(LocationManager)this.getSystemService(ok.GPS_PROVIDER);
    L=ok.getLastKnownLocation(ok.GPS_PROVIDER);












}

@Override
public void onLocationChanged(Location Loc) {


    try {


        double latop=Loc.getLatitude();
        double longe=Loc.getLongitude();

        Log.i("OK", "and"+longe+""+latop);


    } catch (NullPointerException e)

    {

    }




}

getLastKnownLocation()通常將返回null ,如果最近沒有應用程序從您想要的提供程序請求位置修復。

在模擬器上,它似乎更進了一步:除非您的應用程序調用了requestLocationUpdates()否則除非已將位置傳送到模擬器,否則您不會獲得位置。

使用getLastKnownLocation()的一般模式,如果您希望獲得實際Location幾率相當可觀,則使用requestLocationUpdates()removeLocationUpdates()來確保LocationManager通過您選擇的提供商主動尋找位置。 當然,如果您願意,您也可以使用LocationListeneronLocationChanged()而不是getLastKnownLocation()

@CommonsWare 的回答很明確。 要在模擬器上獲得非空,請轉到Google Maps應用程序,然后您會獲得一些位置

還有另一種選擇,使用 locationManager.addTestProvider() 創建你自己的提供者; 這樣您就可以進行自己的測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM