簡體   English   中英

Android Fused Location API - 如何在一個應用程序中使用PRIORITY_BALANCED_POWER_ACCURACY和PRIORITY_HIGH_ACCURACY?

[英]Android Fused Location API - how to use PRIORITY_BALANCED_POWER_ACCURACY and PRIORITY_HIGH_ACCURACY in one application?

Android Fused Location API - 如何在一個應用程序中使用PRIORITY_BALANCED_POWER_ACCURACYPRIORITY_HIGH_ACCURACY

嗨,我正在開發一個需要定期發送位置更新的應用程序。 我已經使用Fused Location API和locaiton待定意圖。 (更新間隔60秒,最小間隔100米)。 我已使用PRIORITY_BALANCED_POWER_ACCURACY和意向服務注冊了locationclient待定意圖。 當locaiton發生變化時,IntentService被調用,這對於少數測試驅動器來說效果很好。 但這只會有效。 當它不起作用時,我希望使用PRIORITY_HIGH_ACCURACY

我注意到當我使用PRIORITY_HIGH_ACCURACY ,它提供了良好的位置,但電池使用率非常高。 所以我決定同時使用PRIORITY_HIGH_ACCURACYPRIORITY_BALANCED_POWER_ACCURACY以及ActivityRecognition。

最初程序使用LocationPendingIntent以PRIORITY_BALANCED_POWER_ACCURACY開始,當沒有2分鍾更新時,我使用LocationListener(和onLocationChanged方法)實現PRIORITY_BALANCED_POWER_ACCURACY ,如果仍然沒有位置,我調用PRIORITY_HIGH_ACCURACY

我在這里所面臨的問題,一旦這種切換到PRIORITY_HIGH_ACCURACY ,LocationPendingIntent(與注冊PRIORITY_BALANCED_POWER_ACCURACY總是使用) PRIORITY_HIGH_ACCURACY在此之后。 我通過調用.removeupdates(locationListener)刪除onLocationChanged方法末尾的位置更新; 然而GPS圖標每分鍾都會出現。

我想過為onLocationChanged方法使用靜態方法,但我知道這不是一個Android應用程序的好習慣。 同時使用PendingIntent和onLocationChanged還有任何已知問題嗎? 你能建議解決我的問題嗎?

權限設置為:

uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

任何有關這方面的幫助將非常感謝。

謝謝。

(我意識到這是一個非常晚的回應,但剛剛解決了這個問題,也許這些信息對某人有利)。 我想做一些非常相似的事情,我有兩個問題:

  • 當我使用與我最初請求更新完全相同的參數時,我發現removeLocationUpdates失敗 - 也就是說,我沒有收到任何錯誤,結果回調表明取消已經正常工作。 但在調用removeLocationUpdates后,位置更新才會繼續發生。 我發現使用參數0和null,因為這里的代碼為我成功地停止了更新:

    Intent selfIntent = new Intent(ACTION_CHECK_LOCATION, null, getApplicationContext(), <ServiceClass>.class); PendingIntent selfPendingIntent = PendingIntent.getService(getApplicationContext(), 0, selfIntent, 0);

  • 我對requestLocationUpdates和removeLocationUpdates的調用之間可能存在沖突。 我不想意外地停止我剛剛請求的更新,所以我最終得到了兩個單獨的類,一個用於處理每種類型的更新。

在我的情況下,我沒有一個預先的應用程序,而是我使用服務進行后台更新。 你可以在這里看到我的代碼 - https://github.com/Esri/arcgis-runtime-demos-android/tree/master/2015-DS/LocalGeofence - 請注意我正在使用另一個SDK(Esri ArcGIS Runtime for Android) SDK,我為Esri工作)但你可以忽略這一點,只看兩個服務GeofenceServiceNormal和GeofenceServiceFast,以及他們如何與Fused Location API進行交互。

我最終得到了兩個服務類(以避免requestLocationUpdates和removeLocationUpdates沖突)。 每個服務都會識別它何時必須更改為其他服務(請參閱handleActionChangeToFastUpdates和handleActionChangeToNormalUpdates); 然后它為自己調用removeLocationUpdates,並為其他服務類調用requestLocationUpdates。 這項服務對我很有用 - 也許你可以使用類似的結構。

暫無
暫無

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

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