2013-07-10 36 views
3

问候Geofencing示例应用程序不工作与模拟位置

我有一个ICE奶油sandwitch手机与谷歌播放服务。

安装了Geofencedetection示例应用程序从以下 http://developer.android.com/training/location/geofencing.html

我还安装了一个模拟位置应用

利用这个模拟地点我已经把我的位置作为新德里(北纬28.66 77.21长)。

现在我使用的示例应用程序

Geofence1 北纬11.94898
长79.48475
半径千米

Geofence2 北纬77.00000 长77.00000 半径千米

注册下面的地理围栏现在我再次打开模拟位置并设置 (在地理围栏1内)我的家。 lat 11.94898
long 79.48475

我已经使用地图应用程序检查了模拟位置。 它正确显示。我启用了开发人员选项

但样本地理栅栏应用程序没有触发任何 通知允许模拟位置 。我检查了代码。根据代码,当用户输入地理围栏时,它应该发送 通知。

我不明白为什么它不发送通知。 这只会在真实的网络上工作吗?

请让我知道,如果我做错了什么?

问候 jothi

回答

1

请检查应用程序的通知时,应用程序在前台,因为我还没有得到任何更新在后台地理围栏。但在前台,它工作正常。

2

我不得不使用样本MockLocation应用类似的经历,从

http://developer.android.com/training/location/location-testing.html

例如,如果我的地理围栏设置5,100我用的是mocklocation应用5,100注入一个模拟的位置,地理围栏不会触发。

但是,如果反复5,100多个注入模拟地点的地理围栏将触发。就我而言,连续三次注入模拟位置5,100次,导致我的地理围栏触发。需要明确的是,当我说注入我的意思是这样做的:

mLocationClient.setMockLocation(yourMockLocation); 

一切下面是我的一部分纯粹的投机行为,从而采取与一粒盐: 我的猜测是没有在LocationClient后端,其一些滤波算法目的是滤除寄生传感器值,它可能会检测到纬度/经度上的巨大变化,作为可能的虚假值。另一种可能性是地理围栏不会触发,直到它收到多个表明您位于其附近的读数。

0

我也有类似的经验与MockLocation应用程序,只需使用“发送间隔”字段上的大量秒,如7秒,地理围栏将触发。

0

在花了大量时间在此之后,我最终发现秘密是在创建模拟位置实例时使用提供者名称“network”。

Location location = new Location("network"); 
1

我一直坚持这个问题。那么最终事实证明谷歌的模拟位置教程(http://developer.android.com/training/location/location-testing.html)没有提到你需要设置下面你所创建的模拟位置两个电话:

/* 
     setElapsedRealtimeNanos() was added in API 17 
    */ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     newLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); 
    } 
    newLocation.setTime(System.currentTimeMillis()); 

如果没有这两个调用我的模拟位置不会触发我的地理围栏。调用这些后,我的地理围栏被触发而没有问题。

相关问题