0

ユーザーがGoogleマップを使用して表示できるように、Webブラウザー(任意のコンピューター)からAndroidにその場所(例)を提供するように依頼することは可能でしょうか。

これが私の頭にあるデザインです:

  • ブラウザからリクエストを送信して、Web サーバーへの位置情報を取得する
  • 要求と要求された時間で、DB テーブル (GCM_REQUESTS) に 1 つのレコードを追加します。
  • Web サーバーは、requestId とともに GCM を使用して、場所 (または何でも) を提供する要求を送信します。
  • GCM は同じデータを Android に送信します
  • Androidアプリはデータ(リクエスト)を解析し、次のような場所を送信します(http://myserver.com/updatelocation?reqId=123&lon=10.0&lat=5.5)
  • これは GCM_REQUESTS テーブルに保持されます。
  • その間、AJAX 呼び出しを使用して、GCM_REQUESTS テーブルの更新をプール (5 秒) し、更新が見つかった場合はそれを読み取り、ブラウザーに送り返します。
  • これで、AJAX 呼び出しがポーリングを停止し、ブラウザが場所で更新されます。

このアプローチが効率的かどうか、他の方法に従って最適化できるかどうかを教えてください。

4

1 に答える 1

1

私は似たようなことをしました.この方法は私にとって完璧に機能します.ここにいくつかの役立つポインタがあります:

1) GCM サーバーへのプッシュを行ったときに、応答が成功しなかった場合 (NotRegistered または MisMatchSenderID など)、ブラウザーを介してユーザーに適切に応答します (アプリケーションがデバイスにインストールされていないか、エラーが発生しました)。デバイスとの通信)

2) デバイスが null で応答する場合は、これが処理され (以下を参照)、デバイスの場所がこの時点で特定できなかったような方法でユーザーに報告されることを確認してください。

私のアプリのクラッシュした割り当てに遭遇したのは、位置データを投稿に設定しようとして、それが null である場合です。このような問題を回避できるように、これを処理するコードを以下に貼り付けました。

String provider = lm.getBestProvider(criteria, true);

    if(provider == null)
    {
        provider = LocationManager.GPS_PROVIDER;
    }
    Location location = lm.getLastKnownLocation(provider);

    String lat1 = "";
    String lon1 = "";
    if(location != null)
    {
        lat1 = String.valueOf(location.getLatitude());
        lon1 = String.valueOf(location.getLongitude());
    }

お役に立てれば

于 2013-01-21T16:04:21.523 に答える