簡體   English   中英

如果位置管理器無法通過GPS_Provider獲取位置,請切換到NETWORK_Provider

[英]If Location Manager cannot fetch location with GPS_Provider, switch to NETWORK_Provider

我想使用GPS_Provider作為獲取用戶當前位置的主要方法,但是在某些情況下GPS無法正常工作。 如果我的應用程序無法使用GPS捕獲用戶位置,我想切換到NETWORK_PROVIDER。 我該如何實施?

lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

//setting up criteria (biased toward GPS)
Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
String providerName = lm.getBestProvider(criteria, true);

//requesting location updates (if app cant use GPS, switch to requestLocationUpdates.NETWORK_PROVIDER)
lm.requestLocationUpdates(providerName, 180000, 0, ll);

一種解決方案是異步請求更新GPS和網絡。 對於GPS和網絡,您將需要兩個單獨的偵聽器。 無論哪個監聽器首先返回,您都將停止獲取其他提供程序的更新。 (即,如果您首先從網絡獲得結果,請停止獲取網絡和gps的更新。)

讓我知道您是否感到困惑。

可能不是一個好主意,

我做了什么,我注冊了網絡和GPS提供程序...開始獲取GPS坐標后,我將使用一個布爾變量使用location.getProvider()來獲取要獲取的網絡提供程序的坐標。

對於我的實現。 我首先檢查gps的位置,如果它返回null。 然后檢查網絡位置。

Location locationGps = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location locationNetwork = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

        if (locationGps != null) {
            //set location as gps
            hasFix = true;
        }

        else if (locationNetwork != null) {
            //set location as network
            hasFix = true;
        }

暫無
暫無

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

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