0

我只是想知道从网络浏览器(任何计算机)要求 Android 提供其位置(示例)是否可行,以便用户可以使用谷歌地图查看它。

这是我头上的设计:

  • 从浏览器发送请求以获取位置到 Web 服务器
  • 向数据库表(GCM_REQUESTS)添加一条记录,请求和请求时间。
  • Web 服务器使用 GCM 和 requestId 发送请求以提供位置(或其他)。
  • GCM 会将相同的数据发送到 android
  • 现在 Android 应用程序解析数据(请求)并向其发送类似这样的位置(http://myserver.com/updatelocation?reqId=123&lon=10.0&lat=5.5)
  • 这将保存在 GCM_REQUESTS 表中。
  • 同时使用 AJAX 调用,我们将池(5 秒)用于 GCM_REQUESTS 表中的任何更新,如果我们发现任何更新,我们将读取它并将其发送回浏览器
  • 现在 AJAX 调用将停止轮询,浏览器将更新位置。

请指导我这种方法是否有效,是否可以通过其他任何方法进行优化。

4

1 回答 1

1

我做过类似的事情,这种方法对我来说非常有效,这里只是一些有用的指针:

1)当你推送到GCM服务器时,如果响应不成功(例如NotRegistered或MisMatchSenderID),则通过浏览器适当地响应用户(应用程序不再安装在设备上或出现错误与设备通信)

2) 如果设备以 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 回答