【问题标题】:Realtime locating of the android device from another device从另一台设备实时定位安卓设备
【发布时间】:2014-09-19 19:14:20
【问题描述】:

我有一个应用程序,我想在其中找到设备的确切位置。就像你坐出租车一样,我想找到出租车的确切位置。出租车司机将使用安卓设备。因此,我想通过该设备为其他想要查看出租车位置的用户定位出租车位置。

我尝试使用requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener) 将出租车司机的当前位置上传到服务器,因为出租车移动了几米,当出租车按下某个开始按钮或它不断发送当前位置的东西时,我已经完成了出租车的更新位置X 米的设备。

其他用户将从该更新位置调用服务并找到出租车的当前位置。

在用户端会有一张地图,他可以在其中看到出租车的当前位置。用户调用该服务以查看更新的位置。我通过在该活动上设置 TIMER 来调用服务,因此它会一次又一次地刷新并调用服务器。(设置计时器是最好的方法或任何其他方法)。

但这种方法需要大量数据和电池,甚至不是实时的。有没有最好的方法来定位 android 设备,使它看起来至少是实时的。

【问题讨论】:

标签: android google-maps gps geolocation google-maps-markers


【解决方案1】:
Is there any best approach to locate the android device

您可以使用GCM service

how it will help you?

它可以在驾驶室移动时发送带有当前latlng(每次位置更新)的推送消息。

前:

@Override
public void onLocationChanged(Location location) {
    String latitude = String.valueOf(location.getLatitude());
    String longitude= String.valueOf(location.getLongitude());
    //Send push messages with current location
    // sendpushMessage(from_Number, to_Number/s, "Location "+ latitude +" "+ longitude;
}

您可以重复启动 IntentService,然后是 AlarmManager,并在每 5/10 秒内发送消息(位置),并在您喜欢时停止(例如,当出租车在用户位置范围内或类似的情况下)。

在用户的设备中,您可以收到有关出租车司机更改位置的消息。只需将这些更新的位置放在地图中并显示给用户。所以用户可以完美地看到正在运行的驾驶室。

在用户的设备中.. EX:

在您的GCMIntentService's onMessage() method 中获取所有消息,例如:

 @Override
protected void onMessage(Context context, Intent intent) {
   String message = intent.getExtras().getString("message");
   //tokenize the string and get driver's location(latitude, longitude)
   //then update each latlng and show cab marker in user's map with a static method
}

注意:我们总是从这里开始通知(onMessage())。所以请确保您没有使用任何通知,否则它会通过带有新位置消息的多个通知来干扰用户。

这种方法对电池很有帮助。此外,您不必每次都检查服务器以继续更新。它会在您需要时自动将消息推送到用户的设备,并且接收者可以完美地接收每条消息。

【讨论】:

  • 谢谢兰吉斯。让我试试看。
  • @NaveenKumar 当然...一切顺利:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 2020-12-05
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多