

.NET MAUIで位置情報が有効になっているかのチェック「だけ」をしたいいい方法は無いでしょうか  
BLEを使うのに古いバージョンのAndroidではGPSが有効化されている必要があるのですが  
マイクロソフトのサイトの方法で有効かどうかを判定すると、  
有効かどうかを判定するのに位置情報を取得するので場合によってはそれだけで数秒かかってしまいます

<https://learn.microsoft.com/ja-jp/dotnet/maui/platform-
integration/device/geolocation?tabs=android>  
↑こちらのサイトの二つ目のソースを試してみました(CancellationTokenSourceを使用する方のサンプル)

一応狙ったとおりにFeatureNotEnabledExceptionは発生しているのですが  
これだと時間が掛かってしまいます

ですので有効かどうかの確認をするだけの方法が知りたいです(無ければこのまま行くしか無いのですが・・・)

※それはそれとして上記のページの最初のサンプルだと位置情報を無効にしてもFeatureNotEnabledExceptionが発生しないのですがその理由も知りたいです


CC BY-SA 4.0
2023-07-17T14:35:20.503
95662
2023-11-09T22:37:18.733
2023-07-17T14:36:40.703
3060
10098
question
c# gps maui
.NET MAUIで位置情報が有効かのチェックだけをしたい


AndroidのJava
APIでは、まず`Context.getSystemService()`を使って[`LocationManager`](https://developer.android.com/reference/android/location/LocationManager)を取得し、`LocationManager.isProviderEnabled()`メソッドに[`GPS_PROVIDER`](https://developer.android.com/reference/android/location/LocationManager#GPS_PROVIDER)または[`NETWORK_PROVIDER`](https://developer.android.com/reference/android/location/LocationManager#NETWORK_PROVIDER)を指定して呼び出し、どちらかが有効になっていれば位置情報サービスが有効になっているとみなすのが一般的な方法だと思います。

.NET MAUIの場合、以下の方法でプラットフォーム固有のAPIを呼び出すことができるそうです。

  * [.NET MAUI invoking platform code - .NET MAUI | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/invoke-platform-code)

おそらく上記の方法で、以下のXamarin.Android APIと同じものが.NET MAUI環境でも使えるのでは？

  * [Context.GetSystemService Method (Android.Content) | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/api/android.content.context.getsystemservice?view=xamarin-android-sdk-13)
  * [LocationManager.IsProviderEnabled(String) Method (Android.Locations) | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/api/android.locations.locationmanager.isproviderenabled?view=xamarin-android-sdk-13)


CC BY-SA 4.0
2023-11-09T22:37:18.733
96729
2023-11-09T22:37:18.733
15413
95662
answer