私はAndroidアプリを書いていますが、これは最終的にiOSおよびWindows Mobileに移植したいと思っています(ただし、現時点ではまったく何も知りません)。アプリでできるようにしたいのですが。ユーザーが現在の物理的な空間で他のユーザーとやり取りできるように、ゲームがインストールされている特定の範囲内(おそらく20〜30フィート)の他の電話を見つけます。これは可能ですか?
私はインターネット接続を必要とするアプリを計画しているので、私の最初の考えは iOS Find Other Nearby Devices(GPS locations) で説明されているようにGPSを使用することでしたが、更新するにはサーバーにデータを継続的に送信する必要があります帯域幅とバッテリーの両方を使用するユーザーの場所(サーバーリソースは言うまでもありません)。 GPSもまた、何らかの正確な修正を行うには少し時間がかかるようです。私が履歴データを保存しなくても、ユーザーがそのような個人情報を私に信頼することを期待することはできません(同様に、そうすべきではありません!)
SonyのNFCなどの独自のテクノロジーがあることは知っていますが、デバイスやOSにとらわれないアプリに使用するには焦点が狭すぎます。他にどのようなオプションがありますか?ユーザーがアプリに適切な権限を与えることをいとわない場合、大規模な(100万人以上の)ユーザーベースにとって実用的な、10〜15メートルの範囲内で1つのデバイスが近くの別のデバイスを見つけることができる他の方法はどれですか。 HTML5ジオロケーションはより良い道ですか?それともGPSが唯一の現実的な選択肢ですか?
私は Android GPSを検出して他の電話に接続するために を使用しましたが、過去数年でさらにオプションが開かれることを望んでいました。
[〜#〜]更新[〜#〜]
これまでにご回答いただきありがとうございます。コメントと回答で提示されたいくつかの質問に答えるために、私はアプリ/デバイスがどのように相互作用することを期待するかを説明すると思いました。
このアプリをインストールするすべてのユーザーは、バックグラウンドでエージェントを実行して、現在の位置情報を更新し、pingをリッスンします。すべてのユーザーが完全なプログラムを開き、近くにいる他のすべてのユーザーに簡単なリクエストを送信できます。中央サーバーのルートに行くと、サーバーは近くのユーザー名のリストでその要求に応答します。次に、ユーザーはそのうちの1つを選択して接続を開始できます。その場合、ターゲットデバイスは音を出して接続要求を通知します。
そこから、2つのデバイス間の相互作用を処理するのは簡単です。それらの近くのユーザーを見つけることが私にとっての難点です。
Bluetooth(BT)。私はそれについてあまり懐疑的でないかどうかはわかりませんが、いくつかの問題が発生します。短距離。最大のエネルギー消費。最大7つのピアが同時に接続されます(ただし、それで十分です...)。大きな利点は、多くのデバイスがBTをサポートしていることです。
BT LE(低エネルギー)。わかりました、それはエネルギー消費問題を助けます。ただし、Android 4.3。
WiFi Direct(別名P2P)。私はそれに打撃を与えました、私は少しがっかりしています。問題は、Android 4.0以降です。さらに悪いことに、ハードウェアを必要としないデバイスもあります。WiFiDirectDemo
をAndroid = Samsung Xperia Miro ST23iのサンプル。「検索」をクリックすると、「WiFi P2Pを有効にする-設定で」トーストのみが表示されました。その設定のすべてをクリックすると、通常のWiFiとその他のものだけが表示されます。 Xperio Miroは、WiFi Directをサポートしていません。
インターネット経由のサーバーとのWiFi接続+デバイスの地理位置情報サーバーはユーザーの位置を保持し、「私の範囲内の20フィートは誰ですか?」などの質問に答えます。問題は地理位置情報の精度です。壁が厚い場合、または衛星がほとんどない地球上の場所にいる場合-非常に不正確になる可能性があります。
BTよりも誰かが常にWiFiをオンにする可能性が高いです。また、BTにはいくつかの時間制限があり、その後はオフになります(おそらくバッテリーを節約するためにこのようにします)。したがって、WiFiはBTよりも良い選択のようです。
WiFi Directが十分に人気がある場合は、試してみます。そうでない場合は、オプション番号4が最適です。それは理想的ではありませんが、現時点では、より良いものを実現することは困難です(まだ技術開発が必要であり、WiFi Directは有望に見えます)。
中央サーバーのアプローチを使用します。各電話は位置データをサーバーに送信します。サーバーは、他のユーザーが範囲内にいるときに通知します。使用データを制限するには、デバイスがXメートルを超える動きを報告した場合にのみ位置を送信します。
また、Pingボタンの使用を検討してください。ユーザーは、近くの誰かを見つけたいときに、それを押して位置を送信します。位置データはこのpingでのみ送信されます。これはほとんど電力を使用せず、優れたプライバシーを提供します。
接続されているWifiアクセスポイントの詳細を検出できる可能性があります。 APまたはゲートウェイのMACアドレスを取得できた場合は、一種の位置として送信できます。同じゲートウェイ上のすべてのプレーヤーが近くにあります。