我正在尝试创建一个服务,该服务将在每x秒和y距离后接收位置更新。我在x秒后收到更新,但在y距离后从未收到更新。我已经用不同的值多次测试过它,似乎setSmallestDisplace根本不起作用。关于这个问题有各种各样的帖子,但没有任何解决方案。如果有人能帮助我,甚至给我指出一个不同的方向,我将不胜感激。
我的服务
public class GPS_Service extends Service implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener, LocationListener {
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
private int timethresh;
private int distancethresh;
protected Location mCurrentLocation;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//Set the desired interval for active location updates, in milliseconds.
mLocationRequest.setInterval(60* 1000);
//Explicitly set the fastest interval for location updates, in milliseconds.
mLocationRequest.setFastestInterval(30* 1000);
//Set the minimum displacement between location updates in meters
mLocationRequest.setSmallestDisplacement(1); // float
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onConnected(Bundle bundle) {
if (mCurrentLocation == null) {
mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}
//Requests location updates from the FusedLocationApi.
startLocationUpdates();
}
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
//Toast.makeText(this, ""+mCurrentLocation.getLatitude()+","+mCurrentLocation.getLongitude(), Toast.LENGTH_SHORT).show();
System.out.println(""+mCurrentLocation.getLatitude()+","+mCurrentLocation.getLongitude());
}
@Override
public void onConnectionSuspended(int i) {
// The connection to Google Play services was lost for some reason. We call connect() to
// attempt to re-establish the connection.
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Toast.makeText(getApplicationContext(),"Location services connection failed with code " + connectionResult.getErrorCode(), Toast.LENGTH_LONG).show();
}
protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
}
试试这样的东西:
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setSmallestDisplacement(100); //100 meters
}
根据这个SO问题特别是cgr的回答。
如果设备处于静止状态,则为LocationRequest设置的位移就不可能获得位置,因为位移在间隔(interval)和快速间隔(fastestInterval)内进行。正如我所猜测的,可能您已经向LocationServices传递了不同的LocationRequest对象(没有置换集)。FusedLocationApi。requestLocationUpdates()。
LocationRequest setSmallestDisplace(浮点小位移计)
设置位置更新之间的最小位移,单位为米。默认情况下,该值为0。它返回相同的对象,以便可以链接setter。
注意:来自ACCESS_COARSE_LOCATION且不ACCESS_FINE_LOCATION的应用程序的位置请求将自动限制为较慢的间隔,并且位置对象将被混淆以仅显示粗略的准确性级别。
有关详细信息,请查看此页。
我正在尝试使用JAXB生成一个sitemap.xml,并且忽略了location属性(我想在根元素上生成属性)。 我想生成一个xml,如下所示: 生成根元素,如下所示: 如果我更新测试以使用显式设置位置,那么它将被填充--但我想了解为什么它不能与注释一起工作。
我使用pm2已经有一段时间了。最近,我需要向我的Express4项目添加一个名为“ActionLog”的自定义日志目录。因为它是一个用日志文件更新的目录,我不希望pm2在日志文件更改时重新启动应用程序,所以我希望pm2忽略查看该目录。将pm2更新到最新后,下面是我使用的命令: 我在pm2日志中得到以下错误流: https://github.com/unitech/pm2/issues/1288 h
我在一个简单的锚点元素上使用了一个svg背景图像,并且需要将图形定位在元素的右侧。 我已经设置了两个相互依存关系--除了使用gif或svg图像之外,其他都是相同的。gif正确地定位在右边,但svg不正确。 gif-在iPhone上正确定位-http://codepen.io/johnholtripley/pen/yldwf svg-在iPhone上的位置不正确-http://codepen.io/
问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc
问题内容: 我安装了OSX ,并随同安装了: 在将其设置为1.6时显示1.6,而在将其设置为1.7时显示1.7: …但是Maven忽略了我的设置: 我发现了这个问题],这个家伙只需要在内部对其进行硬编码,但是我不希望自己进行硬编码(因此!),而且我也没有或。 它使用的版本似乎来自输出中的第一个版本,因此在短期内,通过调整1.7的文件),我能够再次获得1.6 ,但这仅意味着我获得了1.6而不是1.7
我安装了带有的OSX,并且刚刚安装了以及: 正在执行其任务,始终工作,当我将其设置为1.6时显示1.6,当我将其设置为1.7时显示1.7: ...但maven忽略了我的设置: 我发现了这样一个问题,那家伙只需要在中硬编码他的,但我不希望我的!,而且我没有,也没有。 它所使用的版本似乎是从输出的第一个版本开始的,所以在短期内,通过调整1.7的文件(从这篇so文章),我可以重新获得1.6,但这仅仅意味