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

Nav*_*mar 4 gps android google-maps geolocation google-maps-markers

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

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

从该更新位置,其他用户将调用该服务并找到cab的当前位置.

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

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

Ran*_*jit 7

Is there any best approach to locate the android device
Run Code Online (Sandbox Code Playgroud)

您可以使用GCM服务.

how it will help you?
Run Code Online (Sandbox Code Playgroud)

当驾驶室移动时,它可以发送带有当前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;
}
Run Code Online (Sandbox Code Playgroud)

要么

您可以重复启动一个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
}
Run Code Online (Sandbox Code Playgroud)

注意:我们总是从这里开始通知(onMessage()).因此,请确保您没有使用任何通知,否则会通过多个通知和新位置消息干扰用户.

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