LocationManager.RequestLocationUpdates 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
RequestLocationUpdates(String, LocationRequest, PendingIntent)
註冊指定提供者的位置更新,使用 LocationRequest,並透過提供的 PendingIntent回撥傳送。
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/app/PendingIntent;)V", "GetRequestLocationUpdates_Ljava_lang_String_Landroid_location_LocationRequest_Landroid_app_PendingIntent_Handler", ApiSince=31)]
public virtual void RequestLocationUpdates(string provider, Android.Locations.LocationRequest locationRequest, Android.App.PendingIntent pendingIntent);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/app/PendingIntent;)V", "GetRequestLocationUpdates_Ljava_lang_String_Landroid_location_LocationRequest_Landroid_app_PendingIntent_Handler", ApiSince=31)>]
abstract member RequestLocationUpdates : string * Android.Locations.LocationRequest * Android.App.PendingIntent -> unit
override this.RequestLocationUpdates : string * Android.Locations.LocationRequest * Android.App.PendingIntent -> unit
參數
- provider
- String
由 #getAllProviders()
- locationRequest
- LocationRequest
包含位置參數的位置請求
- pendingIntent
- PendingIntent
發送位置更新的待處理意圖
- 屬性
備註
註冊指定提供者的位置更新,使用 LocationRequest,並透過提供的 PendingIntent回撥傳送。
交付的待處理意向會包含回撥資訊的額外內容。 額外內容所使用的鍵為 #KEY_LOCATION_CHANGED 和 #KEY_PROVIDER_ENABLED。 請參閱各自額外鍵的文件以了解這些數值的相關資訊。
若要取消註冊以獲取位置更新,請使用 #removeUpdates(PendingIntent).
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(Int64, Single, Criteria, PendingIntent)
透過依照指定條件選擇的供應商註冊位置更新,並透過提供的 PendingIntent回電傳送。
[Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Landroid_app_PendingIntent_Handler")]
public virtual void RequestLocationUpdates(long minTimeMs, float minDistanceM, Android.Locations.Criteria criteria, Android.App.PendingIntent pendingIntent);
[<Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Landroid_app_PendingIntent_Handler")>]
abstract member RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Android.App.PendingIntent -> unit
override this.RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Android.App.PendingIntent -> unit
參數
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- criteria
- Criteria
包含選擇適當提供者以更新位置的參數
- pendingIntent
- PendingIntent
發送位置更新的待處理意圖
- 屬性
例外狀況
若條件為空
若意圖為空
若無適當許可
備註
透過依照指定條件選擇的供應商註冊位置更新,並透過提供的 PendingIntent回電傳送。
注意:自 Android KitKat 起,Criteria 請求總是會使用 #FUSED_PROVIDER.
關於此方法的更多細節請參見 #requestLocationUpdates(String, long, float, PendingIntent) 。
此會員已被棄用。 而是用 #requestLocationUpdates(String, long, float, PendingIntent) 來明確選擇供應商。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(String, LocationRequest, IExecutor, ILocationListener)
透過 ,註冊來自指定提供者的位置更新,並對 LocationRequest指定的 Executor。
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;Landroid/location/LocationRequest;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_Landroid_location_LocationRequest_Ljava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=31)]
public virtual void RequestLocationUpdates(string provider, Android.Locations.LocationRequest locationRequest, Java.Util.Concurrent.IExecutor executor, Android.Locations.ILocationListener listener);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;Landroid/location/LocationRequest;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_Landroid_location_LocationRequest_Ljava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=31)>]
abstract member RequestLocationUpdates : string * Android.Locations.LocationRequest * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
override this.RequestLocationUpdates : string * Android.Locations.LocationRequest * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
參數
- provider
- String
由 #getAllProviders()
- locationRequest
- LocationRequest
包含位置參數的位置請求
- executor
- IExecutor
執行者處理監聽者回調
- listener
- ILocationListener
聆聽者接收位置更新
- 屬性
備註
透過 ,註冊來自指定提供者的位置更新,並對 LocationRequest指定的 Executor。
每個獨特的聆聽者/提供者配對只能註冊一個請求,因此任何後續使用相同提供者與聆聽者的請求都會覆蓋所有相關參數。 同一個監聽器可以跨多個供應商使用,每個提供者的請求都不同。
根據裝置所處的狀況,收到第一次位置更新可能需要一些時間。 為了利用快取位置,應用程式可能會考慮使用 #getLastKnownLocation(String) 或 #getCurrentLocation(String, LocationRequest, CancellationSignal, Executor, Consumer) 取代。
請參閱 LocationRequest 文件說明各種請求參數及其如何影響接收位置。
如果你的應用程式想被動觀察所有提供者的位置更新,那就使用 #PASSIVE_PROVIDER。 此提供者不會啟用或修改啟用位置提供者,因此您不必過於注意最小時間和最小距離參數。 不過,如果你的應用程式在位置更新上做了大量工作(例如網路活動),那麼你應該在位置請求中設定明確的最快間隔,以防其他應用程式啟用了極快速更新的定位服務提供者。
如果您選擇的服務提供者被停用,位置更新將停止,並會發送服務提供者可用性更新。 一旦服務提供者重新啟用,將會再次發送供應商可用性更新,位置更新也會恢復。
回傳 #GPS_PROVIDER 的位置相對於裝置內主要 GNSS 天線位置。
#getGnssAntennaInfos() 可用來判定 GNSS 天線相對於 Android 座標系的位置,並在必要時進行轉換。 這通常僅適用於高精度應用。
當位置回撥被觸發時,系統會代表你的應用程式維持一段時間的喚醒鎖,但不會無限期。 如果你的應用程式需要在位置回撥中設置長期的喚醒鎖,你應該自己取得。
不停發送位置請求會消耗系統資源,系統已採取預防措施,確保這種行為不會造成超過單一位置請求且間隔相同且全程保持的地點數量。 作為改善措施的一部分,針對 Android S 及以上版本的應用程式可能會透過其監聽器接收快取或歷史位置。 這些地點永遠不會超過位置請求的間隔。
若要取消註冊以獲取位置更新,請使用 #removeUpdates(LocationListener).
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(String, Int64, Single, PendingIntent)
請使用指定提供者註冊位置更新,並透過提供的 PendingIntent.
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/app/PendingIntent;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_app_PendingIntent_Handler")]
public virtual void RequestLocationUpdates(string provider, long minTimeMs, float minDistanceM, Android.App.PendingIntent pendingIntent);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/app/PendingIntent;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_app_PendingIntent_Handler")>]
abstract member RequestLocationUpdates : string * int64 * single * Android.App.PendingIntent -> unit
override this.RequestLocationUpdates : string * int64 * single * Android.App.PendingIntent -> unit
參數
- provider
- String
由 #getAllProviders()
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- pendingIntent
- PendingIntent
發送位置更新的待處理意圖
- 屬性
例外狀況
如果提供者為空或該裝置不存在
若意圖為空
若無適當許可
備註
請使用指定提供者註冊位置更新,並透過提供的 PendingIntent.
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, PendingIntent) 。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(String, Int64, Single, ILocationListener)
註冊來自指定提供者的位置更新,並以指定參數註冊,並對呼叫執行緒的回調 Looper 。
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_location_LocationListener_Handler")]
public virtual void RequestLocationUpdates(string provider, long minTimeMs, float minDistanceM, Android.Locations.ILocationListener listener);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_location_LocationListener_Handler")>]
abstract member RequestLocationUpdates : string * int64 * single * Android.Locations.ILocationListener -> unit
override this.RequestLocationUpdates : string * int64 * single * Android.Locations.ILocationListener -> unit
參數
- provider
- String
由 #getAllProviders()
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- listener
- ILocationListener
聆聽者接收位置更新
- 屬性
例外狀況
如果提供者為空或該裝置不存在
若 listener 為空
如果呼叫執行緒沒有 Looper,則
若無適當許可
備註
註冊來自指定提供者的位置更新,並以指定參數註冊,並對呼叫執行緒的回調 Looper 。
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, Executor, LocationListener) 。
在 Jellybean 之前,minTime 參數只是提示,有些位置提供者實作會忽略它。 然而,對於 Jellybean 及以後版本,Android 相容裝置必須同時遵守 minTime 和 minDistance 參數。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(Int64, Single, Criteria, ILocationListener, Looper)
透過依照指定條件選擇的提供者註冊位置更新,並對指定的 Looper。
[Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Landroid_location_LocationListener_Landroid_os_Looper_Handler")]
public virtual void RequestLocationUpdates(long minTimeMs, float minDistanceM, Android.Locations.Criteria criteria, Android.Locations.ILocationListener listener, Android.OS.Looper? looper);
[<Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Landroid_location_LocationListener_Landroid_os_Looper_Handler")>]
abstract member RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Android.Locations.ILocationListener * Android.OS.Looper -> unit
override this.RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Android.Locations.ILocationListener * Android.OS.Looper -> unit
參數
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- criteria
- Criteria
包含選擇適當提供者以更新位置的參數
- listener
- ILocationListener
聆聽者接收位置更新
- looper
- Looper
一個 Looper 物件,其訊息佇列將用於實作回調機制,或是 null 物件,用於對呼叫執行緒進行回撥
- 屬性
例外狀況
若條件為空
若 listener 為空
若無適當許可
備註
透過依照指定條件選擇的提供者註冊位置更新,並對指定的 Looper。
注意:自 Android KitKat 起,Criteria 請求總是會使用 #FUSED_PROVIDER.
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, Executor, LocationListener) 。
此會員已被棄用。 而是用 #requestLocationUpdates(String, long, float, LocationListener, Looper) 來明確選擇供應商。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(Int64, Single, Criteria, IExecutor, ILocationListener)
透過依照指定條件選擇的提供者註冊位置更新,並對指定的 Executor。
[Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Ljava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=30)]
public virtual void RequestLocationUpdates(long minTimeMs, float minDistanceM, Android.Locations.Criteria criteria, Java.Util.Concurrent.IExecutor executor, Android.Locations.ILocationListener listener);
[<Android.Runtime.Register("requestLocationUpdates", "(JFLandroid/location/Criteria;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_JFLandroid_location_Criteria_Ljava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=30)>]
abstract member RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
override this.RequestLocationUpdates : int64 * single * Android.Locations.Criteria * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
參數
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- criteria
- Criteria
包含選擇適當提供者以更新位置的參數
- executor
- IExecutor
執行者處理監聽者回調
- listener
- ILocationListener
聆聽者接收位置更新
- 屬性
備註
透過依照指定條件選擇的提供者註冊位置更新,並對指定的 Executor。
注意:自 Android KitKat 起,Criteria 請求總是會使用 #FUSED_PROVIDER.
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, Executor, LocationListener) 。
此會員已被棄用。 而是用 #requestLocationUpdates(String, long, float, Executor, LocationListener) 來明確選擇供應商。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(String, Int64, Single, ILocationListener, Looper)
用指定參數註冊來自給定提供者的位置更新,並回調指定的 Looper參數。
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_location_LocationListener_Landroid_os_Looper_Handler")]
public virtual void RequestLocationUpdates(string provider, long minTimeMs, float minDistanceM, Android.Locations.ILocationListener listener, Android.OS.Looper? looper);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLandroid_location_LocationListener_Landroid_os_Looper_Handler")>]
abstract member RequestLocationUpdates : string * int64 * single * Android.Locations.ILocationListener * Android.OS.Looper -> unit
override this.RequestLocationUpdates : string * int64 * single * Android.Locations.ILocationListener * Android.OS.Looper -> unit
參數
- provider
- String
由 #getAllProviders()
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- listener
- ILocationListener
聆聽者接收位置更新
- looper
- Looper
處理監聽者回調的迴圈器,或用 null 來使用呼叫執行緒的迴圈器
- 屬性
例外狀況
如果提供者是空的或不存在
若 listener 為空
若無適當許可
備註
用指定參數註冊來自給定提供者的位置更新,並回調指定的 Looper參數。
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, Executor, LocationListener) 。
在 Jellybean 之前,minTime 參數只是提示,有些位置提供者實作會忽略它。 然而,對於 Jellybean 及以後版本,Android 相容裝置必須同時遵守 minTime 和 minDistance 參數。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestLocationUpdates(String, Int64, Single, IExecutor, ILocationListener)
使用指定提供者註冊位置更新,並對指定的 Executor.
[Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLjava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLjava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=30)]
public virtual void RequestLocationUpdates(string provider, long minTimeMs, float minDistanceM, Java.Util.Concurrent.IExecutor executor, Android.Locations.ILocationListener listener);
[<Android.Runtime.Register("requestLocationUpdates", "(Ljava/lang/String;JFLjava/util/concurrent/Executor;Landroid/location/LocationListener;)V", "GetRequestLocationUpdates_Ljava_lang_String_JFLjava_util_concurrent_Executor_Landroid_location_LocationListener_Handler", ApiSince=30)>]
abstract member RequestLocationUpdates : string * int64 * single * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
override this.RequestLocationUpdates : string * int64 * single * Java.Util.Concurrent.IExecutor * Android.Locations.ILocationListener -> unit
參數
- provider
- String
由 #getAllProviders()
- minTimeMs
- Int64
位置更新間距(毫秒)
- minDistanceM
- Single
位置間距更新(公尺)
- executor
- IExecutor
執行者處理監聽者回調
- listener
- ILocationListener
聆聽者接收位置更新
- 屬性
備註
使用指定提供者註冊位置更新,並對指定的 Executor.
關於此方法的更多細節請參見 #requestLocationUpdates(String, LocationRequest, Executor, LocationListener) 。
在 Jellybean 之前,minTime 參數只是提示,有些位置提供者實作會忽略它。 然而,對於 Jellybean 及以後版本,Android 相容裝置必須同時遵守 minTime 和 minDistance 參數。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。