从另一台设备实时定位Android设备

时间:2014-07-28 14:53:56

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

我有一个应用程序,我想找到设备的确切位置。就像你乘坐出租车一样,我想找到出租车的确切位置。出租车司机将使用Android设备。因此,我希望通过该设备为其他想要查看驾驶室位置的用户找到驾驶室位置。

我已经尝试将驾驶室驾驶员的当前位置上传到服务器,因为驾驶室使用requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)移动了几米,当驾驶室按下一些启动按钮或者它继续发送电流时,我已经完成了这个驾驶室的更新位置X米设备的位置。

从该更新位置,其他用户将致电该服务并查找cab的当前位置。

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

但这种方法需要大量的数据和电池,甚至不是实时的。有没有找到Android设备的最佳方法,以便它似乎至少是实时的。

1 个答案:

答案 0 :(得分:7)

Is there any best approach to locate the android device

您可以使用GCM service

how it will help you?

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

EX:

@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;
}

OR

您可以重复启动一个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())。因此,请确保您没有使用任何通知,否则会因使用新位置信息的多个通知而干扰用户。

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