Articles of android geofence

以编程方式将位置模式更改为高精度Android

是否有可能获得用户在位置设置选项下的三种模式中选择的位置模式的信息,即 1.准确度高 2.电池节省 3.仅限GPS 我想以编程方式检查用户是否选择了高精度模式,如果没有,则自动启用它。 可能吗 ? 请指教。

如何使用Android Geofencing API?

我一直在测试新的Google Play Geofencing服务API。 我从Android开发者网站下载了示例代码。 接下来,我在Android设备(Galaxy Note 2)上运行示例代码。 我把办公室的地理位置和半径放到了10米,但是当我走到办公室时,什么都没发生。 在运行示例代码时,我注意到的一件事是,当我已经在地理围栏范围内,然后将地理围栏添加到LocationClient ,没有任何反应。 我已经阅读了LocationClient类文档 ,并find了以下段落: 如果用户禁用了网络位置提供程序,则地理围栏服务将停止更新,将删除所有已注册的地理围栏,并通过提供的待处理意图生成意图。 在这种情况下, hasError(Intent)返回true, getErrorCode(Intent)返回GEOFENCE_NOT_AVAILABLE 。“ 所以我打开WiFi,然后走到我的办公室(在地理围栏内),然后我收到通知“地理围栏输入”。 我有以下问题: 地理围栏是否仅适用于WiFi? 为什么我的3G网络提供的位置不起作用? 这是示例代码中的错误吗? 或者这是我的错误?

设备重启后,Geofences是否在android中保持活动状态

我正在编写一个应用程序,当有人在正在安装的应用程序的生命周期内进入/退出多个站点时,需要使用地理围栏。 我的地理围栏实现(非常类似于下面的第二个链接)在我第一次安装应用程序时工作正常,无论是在移入/移出地理围栏还是使用模拟位置来模拟它,直到设备重新启动。 在重新启动时,模拟位置或实际上物理移入和移出地理围栏似乎都会触发事件并将未决意图发送到我的广播接收器。 我已经查看了以下三个链接,并且还阅读了相当多的文档,但我无法find一个明确的答案,直接说注册地理围栏持续存在或重启后不会持续存在。 这些是我在堆栈溢出时查看的链接: Android地理围栏是否能够在重启时幸存? Android Geofence最终停止获得过渡意图 Android Geofences在删除/过期之前或仅在我的PendingIntent启动之前保持活动状态 如果有人碰巧知道他们是否坚持重新启动后的答案,或者如果他们没有解决问题,那么我们将非常感激! 我最近的希望是为BOOT_COMPLETED创建一个监听器,并在启动时重新注册它们,但id更喜欢只在必要时才这样做。 非常感谢提前! 编辑:虽然我没有find明确的(书面)答案,但我很确定TonyC先生发布的内容是否正确,并选择了该解决方案。 非常感谢TonyC! 如果有人想看到我的解决方案,我会在设备启动时监听启动完成操作,然后重新注册我需要的所有地理围栏。 这是显而易见的: 然后为它创建一个广播接收器,它将在启动时重新注册地理围栏: package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiver; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiver extends WakefulBroadcastReceiver { private static final String TAG = “BootCompleteReceiver”; @Override public void onReceive(Context context, Intent intent) { […]

在Android中添加地理围栏时出错(状态代码1000)

我在onAddGeofencesResult(int statusCode, String[] geofenceRequestIds)回调中收到错误, statusCode = 1000 。 我启用了GPS和WiFi。 我还有Google Play服务,我可以跟踪我的位置并请求更新。 为什么我无法添加地理围栏? 我甚至无法从文档示例应用程序添加地理围栏。 我得到以下Toast消息: “添加Geofences:失败,错误代码1000 GeofenceRequestIds = [1,2,1,2]” 从文档(statusCode 1000): public static final int GEOFENCE_NOT_AVAILABLE 地理围栏服务现在不可用。 通常这是因为用户在设置>位置访问中关闭了位置访问权限。 常数值:1000(0x000003e8)

如何提高Android地理围栏进入/退出通知的一致性?

我正在使用内置的地理围栏API(播放服务)并且结果好坏参半。 看起来在设置地理围栏之后,即使GPS打开,进入/退出的通知也非常不一致,并且具有最新位置(LocationClient已连接,在后台运行。)我开始监控(轮询)位置更改和调试文本字段中的距离,并且即使基于设备注册的位置和地理围栏的位置(我在技术上在地理围栏的内部/外部),通常有时会触发通知,有时也不会。 有什么方法可以让它更具可预测性? 我几乎想要放弃这个api并根据设备位置的轮询实现我自己的(电池耗尽)地理围栏。

在Geofencing的Google教程中没有看到Geofence转换

我正在尝试使用Google的示例testingGeofencefunction:创build和监视地理围栏 。 我已经在这里上传了代码 。 问题是我从来没有得到进入或退出的通知。 我有Wifi,4G和GPS。 我曾尝试通过以下方式进行testing: 我甚至走出我的房子约五十英尺,走回去,但没有通知。 我可以看到播放服务被连接,甚至MainActivity.java中的“GeofenceUtils.ACTION_GEOFENCES_ADDED”被触发,所以我认为Geofences正在被正确添加。 在设置中启用模拟位置,并使用这个假GPS应用程序和改变的位置 – 从Geofence1相同的坐标开始,然后设置为完全外(在另一个状态) – 但我仍然没有得到一个退出通知。 我究竟做错了什么? ANYONE成功运行了这个Google的例子:Creating&Monitoring Geofences 。 我已经在这里上传代码,以方便浏览。 我只是试图学习Geofencing – 检测进入和退出。 我将标记任何答案作为正确的答案,我可以使用在我的实际设备上进行工作 。

如何在Android中使Geo Fencing警报更加准确

您好,我正在尝试在Android中添加Geo Fence的function。 我正在使用http://developer.android.com/training/location/geofencing.html来创build和监控Geo Fences。 我使用IntentService警报(input/退出),但对我来说,它不工作。 但是当我离开并回到区域testing它时,它不适合我。 我已打开设备的GPS,但设备未连接到互联网。 任何人都可以帮助我,使其更加准确和完美,没有任何问题。 public class MainActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationClient.OnAddGeofencesResultListener { private LocationClient locationClient; private String TAG = "MainActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int resp = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); if (resp == ConnectionResult.SUCCESS) { locationClient = new LocationClient(this, this, this); locationClient.connect(); } } @Override public void […]

Android Geofencing

我已经通过了Geofencing的教程 ,我有一个疑问。 Geofencing是否要求您持续监控用户的位置? 或者当转换已经过去的时候,添加Geofence的LocationClient会自动触发? 这可能看起来像一个明显的问题,但教程从来没有提到任何有关从位置pipe理器请求位置更新。

意图没有收到来自Android Geofence事件

一切正常build立,并在模拟器中运行,但我似乎无法让我的IntentServicelogging任何东西。 我确定有一些基本的东西是我错过或者忽视的,但是我对Android / Java相当陌生,并且现在已经没有任何想法了。 public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private Geofence geofence; private PendingIntent mGeofencePendingIntent; private GoogleApiClient mGoogleApiClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LatLng latLng = new LatLng(39.7492350, -104.9913250); geofence = new Geofence.Builder() .setRequestId(GEOFENCE_REQ_ID) .setCircularRegion(latLng.latitude, latLng.longitude, GEOFENCE_RADIUS_IN_METERS) .setExpirationDuration(GEOFENCE_EXPIRATION) .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT) .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(this) […]

监视库中的位置设置

我正在研究可用于监视Android设备上的地理栅栏的库。 我注意到,在closures“位置服务”后,我在Google Play位置服务GeofencingApi类中注册的地理位置信息将丢失,并在设备设置中重新开启。 我见过人们build议我需要在我的AndroidManifest.xml文件中注册android.location.PROVIDERS_CHANGED广播接收器。 我已经这样做了 – 但是当我在testing应用程序中添加和删除testing提供程序时,这个广播接收器只会被调用。 在设备设置中切换位置服务时,我完全没有收到它。 难道我做错了什么? 有谁知道如何可靠地确定用户切换设备设置中的位置服务? 我希望能够在后台看到这些事件 – 即使我的应用程序没有运行。 我想我可以设置一个在后台运行的重复任务,并定期检查位置服务是否已经切换,但这听起来很糟糕,效率不高。 如果有帮助,我正在testing运行Android 4.4.2的Moto G。 到目前为止,我用geofences完成的所有工作都很好。 编辑:经过更多的研究,我发现PROVIDERS_CHANGED广播的行为是高度可变的,取决于手机版本和型号。 运行Android 5.1的我的Nexus 5似乎正常工作 – 我可以非常有效地获得PROVIDERS_CHANGED广播。 我也有一个运行4.4.x的Moto G和Moto X手机,他们从来没有为我制作PROVIDERS_CHANGED广播。 在Android 4.2上的三星Galaxy S3会为我制作广播,但是在我使用testing位置提供商的Map Activity后停止播放。 无论如何,我决定暂停这个问题。 我认为Android只是越野车。