【发布时间】:2023-03-14 08:50:02
【问题描述】:
该应用程序基于 GPS 跟踪,其中必须定期发送纬度和经度坐标。现在我们通过 DDMS 手动输入坐标。发送数据一直是个大问题。那么,大家有什么建议吗?
【问题讨论】:
该应用程序基于 GPS 跟踪,其中必须定期发送纬度和经度坐标。现在我们通过 DDMS 手动输入坐标。发送数据一直是个大问题。那么,大家有什么建议吗?
【问题讨论】:
我认为您必须将位置存储在某个位置,因此创建 ApplicationController,它从 android 扩展 Application 类并将其设置在 android 清单中,在 AC 创建字段 Location 和 onLocationChanged(Location location) made 函数中,它将在 AC 中保存新位置而不是 made TimerTask 与频率它应该多久从 AC 获取位置并将其发送到您想要的任何地方。
ApplicationController 将保留所有信息,只要应用程序在该类中“活动”,您还必须创建访问器;)下面的示例代码:
ApplicationController.java
import android.app.Application;
import android.location.Location;
public class ApplicationController extends Application{
private Location location = null;
@Override
public void onCreate() {
super.onCreate();
}
public void setLocation(Location location){
this.location = location;
}
public Location getLocation(){
return location;
}
}
在 android manifest 中输入:
<application
android:label="@string/app_name"
android:allowClearUserData="false" android:name="core.ApplicationController"
android:icon="@drawable/driving">
代码中的示例使用:
AC = (ApplicationController) getApplicationContext();
private void initializeGpsTask(long frequency){
gpsTask = new TimerTask() {
@Override
public void run() {
Log.i(TAG, "GPS TASK");
if(AC.getLocation()!=null){
insertIntoDatabase(transactions.generateRequest(
AC.getLocation()));
}
}
};
Timer timer = new Timer();
timer.schedule(gpsTask, frequency, frequency);-
}
这可能会有所帮助LINK
【讨论】:
你必须实现 locationListener 类来监听位置
onLocationChanged(Location location) {
lat = location.getLatitude();
lon = location.getLongitude(0;
}
现在,当您获得纬度和经度时,您必须定期将其发送到服务器。
您可以使用该服务从后台侦听位置信息,如果您收到onLocationChanged 事件,请与您的 Web 服务建立 http 连接并将纬度和经度发布到服务器。
【讨论】: