2016-12-16 10 views
2

端末の位置を追跡するアプリがあります。過去に私はAndroidフレームワークロケーションAPIを使用しました。意図どおりに動いたので、実際にそれを変更する必要はありません。 しかし、Googleが使用することをお勧めするGoogle Playサービスから位置情報サービスを評価したいので、それに応じてアプリを変更しました。将来的には便利なオプションがいくつかあります。Google Playの位置情報サービスが「端末のみ」のモードで動作しない

これは私が従っている https://developer.android.com/training/location/change-location-settings.html 非常に複雑な依存関係と要件を解決した後、私は現在動作する構成を持っています。何のモードを使用するためのオプション「唯一のデバイス」はないように思える1

(GPSのみがロケーションサービスのために使用されるようにされていることを意味

パートやないのWiFiなど...

:しかし、問題があります

PRIORITY_HIGH_ACCURACY、間隔10000、最小変位20で位置更新を要求した場合、保留中のLocationSettingsResultは、デバイスがロケーションモード "デバイスのみ"に設定されている場合、ステータスRESOLUTION_REQUIREDを返します。 解像度は "高精度"モードをアクティブにします。 WiFiなども有効にします。 このモードでは、データはGoogleに送信されます。私の一部のユーザーのプライバシーに関する問題。

私はこれをバグとみなします。「デバイスのみ」のモードでは、要求を満たすのに十分なはずです。 Google Playサービスのバグはどこにありますか?残念ながら、これらの問題はAOSP Bug Trackerの対象外です。このようなバグを報告する公式の場所はわかりません。

ロケーションリクエストがサービスから開始される場合、別の問題が発生します。ステータスがRESOLUTION_REQUIREDならば、状況を解決する方法は? Googleが提供するソリューションには、解決のための活動が必要です。しかし、サービスでは、これに使用できる活動はありません。 LocationSettingsResultのステータスオブジェクトは、LocationSettingsStatesオブジェクトへのアクセスを提供しますが、問題の原因と解決方法を抽出する方法はありますか?

答えて

1

まったく同じ問題に直面しました。電話機(Moto G4)が「デバイスのみ」モードに設定されていると、FusedLocationProviderが位置情報に応答しませんでした。少しの実験の後で、それはGPS信号をブロックしていた携帯電話のカバーに起因することが判明しました! GPS Status and Toolboxのようなアプリを使用すると、修正が受信されたかどうかに関わらず、衛星の信号強度を見つけるのに本当に役立ちます。

+1

残念ながら、融合位置プロバイダは、Google Playサービスが提供するロケーションプロバイダとは異なるものです。 私の質問を注意深く読んだ場合、問題はハードウェアやGPS信号の受信不良によるものではないことがわかります。それはGoogleのソフトウェアによって直接引き起こされます。彼らは、状況を解決しなければならないことを要求し、提供される解決の意図は、ネットワークオプションを活性化することにもつながる。 – Leo

0

結果解決を開始するためのアクティビティの2番目の問題について:LocationSettingsResultはParcelableオブジェクトです。そのため、PutExtraを使用してIntentとバンドルし、修正アクションを開始するためのアクティビティにブロードキャストできます。以下のコードスニペットは、インテントのアンパックとステータスの解決を示しています。

Status status = intent.getParcelableExtra(Constants.EXTRA_SETTINGS_UPDATE_REQD); 
      switch (status.getStatusCode()) { 
       case LocationSettingsStatusCodes.SUCCESS: 
        // All location settings are satisfied. The client can 
        // initialize location requests here. 
        break; 
       case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
        // Location settings are not satisfied, but this can be fixed 
        // by showing the user a dialog. 

        try { 
         // Show the dialog by calling startResolutionForResult(), 
         // and check the result in onActivityResult(). 
         status.startResolutionForResult(getActivity(), 
           Constants.REQ_CODE_CHECK_SYSTEM_SETTINGS_LOC); 
        } catch (IntentSender.SendIntentException e) { 
         // Ignore the error. 
        } 
        break; 
       case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
        // Location settings are not satisfied. However, we have no way 
        // to fix the settings so we won't show the dialog. 

        break; 
      } 
+0

私はすでにその意図を処理しました。その目的からの解決策は、ネットワークオプションを有効にすることです。 GPSのみの起動は機能しません。 – Leo

関連する問題