0

LocationManager は、位置データを取得するときに使用する NETWORK_PROVIDER をどのように選択しますか? LocationManager が NETWORK_PROVIDER を選択するプロバイダーを特定できるようにしたいと考えています。

たとえば、2 つの近くの NETWORK_PROVIDER ロケーション、X (近い) と Y (それほど近くない) があるとします。1 つの場所に立っている場合、NETWORK_PROVIDER が X になることもあれば、Y になることもあります。精度が最も高い場所が返されると想定し (そのため、通常は X が返されます)、他のすべてのネットワークは無視されますが、近くのすべてのネットワーク (または少なくとも上位 2 つまたは 3 つ) のリストを同時に返します。

.getProvider() メソッドのいずれか (私が知る限り) はプロバイダーのタイプ (ネットワーク、GPS、パッシブ) を返しますが、プロバイダーを実際に識別するものは何もありません。場所が返されると、場所データはプロバイダーに対して一意になりますが、プロバイダーの選択には使用できません。X からデータを取得できますが、プログラムに X を無視するように指示することはできません (または、できますか?)。

とにかくこれを実現するには?NETWORK_PROVIDERS のリストまたは配列を返し、それらをステップ実行して位置データを取得するには?

いいえ、GPS_PROVIDER の使用は受け入れられる答えではありません。必要なのは NETWORK_PROVIDER データだけだからです。

4

1 に答える 1

0

この回答は証拠に基づくものではなく、ロケーション プロバイダーの仕組みに関する私の理解に基づいています。NETWORK_PROVIDER をリクエストすると、基本的には、利用可能なすべての情報に基づいて推定される場所を提供するように求められます。たとえば、3 つの Wi-Fi ネットワークと 2 つの基地局があり、その情報がインターネット上のサーバーに送信されるとします。その情報を使用して、彼らはあなたがどこにいると思うかを計算し、それをあなたに返します. つまり、network_provider の場所は、携帯電話で利用できるすべての Wi-Fi/セルタワー情報の合計に基づいています。

個人的には、Wi-Fi ホットスポットは自分がどこにいるかについてあまり教えてくれません。基地局は位置情報を提供しますが、位置を正確に三角測量するにはいくつかの情報源が必要です。また、場所はサーバーによって決定され、携帯電話では行われないため、インターネット/データ接続が必要であることに注意してください. これは、近くの Wi-Fi ホットスポット (具体的には MAC アドレス) を知っていても、各ホットスポットを物理的な場所にマップするデータベースがなければ役に立たないためです。

于 2012-09-10T10:43:52.523 に答える