【发布时间】:2017-07-04 12:15:00
【问题描述】:
我是 Android 新手。我尝试了几种将 GPS 坐标存储在手机数据库中的方法。
现在的问题是我想每隔 x 秒存储一次 GPS 坐标以及当前移动的车辆速度和时间。
这个函数也应该在按钮点击事件之后启动。
【问题讨论】:
-
这篇文章描述了如何定义服务并将位置存储在数据库service
我是 Android 新手。我尝试了几种将 GPS 坐标存储在手机数据库中的方法。
现在的问题是我想每隔 x 秒存储一次 GPS 坐标以及当前移动的车辆速度和时间。
这个函数也应该在按钮点击事件之后启动。
【问题讨论】:
您只需要创建一个后台服务,该服务将在每 x 秒内连续获取 GPS 坐标。为此创建服务的主要原因是当您的应用程序不可见并且它被最小化时,您的服务将继续运行,并且在应用程序的后台,GPS 坐标将定期更新。
为了实现,您需要一个 FusedLocationAPI 和 GooglAPiClient。如果您想要一个非常简单的代码,请点击此链接: Android make method run every X seconds (involves gps and server call)
【讨论】:
创建一个服务并启动一个计时器,如下所示。希望这会有所帮助
public void starttimer(){
timer = new CountDownTimer(300000, 2000) {
@Override
public void onTick(long millisUntilFinished) {
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
try {
location = locationManager.getLastKnownLocation(provider);
}
catch (Exception e)
{
}
if(location==null) {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}
if (location != null) {
double lat = location.getLatitude();
double longg = location.getLongitude();
mMap.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(lat,longg) , 14.0f) );
} else {
Toast.makeText(MainActivity.this, "Device Failed To Fetch Lat Long", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFinish() {
//your code when timer finishes
}
}.start();
}
【讨论】: