Tag: locationmanager

NETWORK_PROVIDER的LocationListener已启用,但onLocationChanged永远不会被调用

我正在开发一个应用程序,在一个服务6,6分钟内整天获取手机的位置,它工作正常,但有时networking提供商监听程序的OnLocationChanged停止被调用,而我不知道为什么。 由于某种原因停止被调用,但提供程序是启用和列表工作,当我启用或禁用提供程序手动, onProviderEnabled和onProviderDisabled被调用。 它只是发生在NETWORK_PROVIDER , GPS_PROVIDER运作良好。 监听器: LocationListener locationListenerGPS = new LocationListener() { // @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO locationListenerGPS onStatusChanged Log.d(TAG, "Provedor trocado"); } // @Override public void onProviderEnabled(String provider) { Log.w(TAG, "PROVEDOR " + provider + " HABILITADO!"); } // @Override public void onProviderDisabled(String provider) { […]

LocationRequest setInterval(long millis)和LocationRequest setFastestInterval(long millis)之间的区别

我正在编写我自己的背景位置更新每隔5分钟在Android的时间间隔。 我想知道setInterval和setFastestInterval之间的区别 当我将InterInval设置为5分钟并将setFastestInterval设置为2分钟。 位置更新每2分钟一次。 我想知道区别。 我无法理解这个https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html的开发者页面中究竟写了什么 另外:是否有一个内置的function来检查位置更新只有当第一次更新的距离超过20米与第二次更新? 谢谢!

LocationManager的Android检查权限

我正在尝试获取GPS坐标以在我的活动布局中单击button时显示。 以下是当我点击button时被调用的方法: public void getLocation(View view) { TextView tv = (TextView) findViewById(R.id.gps_coord_view); LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); tv.setText("Latitude: " + loc.getLatitude() + "\nLongitude: " + loc.getLongitude()); } 我收到一个错误,说 通话需要用户可能会拒绝的权限。 代码应明确检查是否有权限。 我已经在AndroidManifest授予了这些权限。 在调用lm.getLastKnownLocation之前,我添加了以下内容,这个错误已经被处理,应用程序会编译: if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } 然而,当我点击button调用getLocation时,应用程序崩溃。 到底是怎么回事? 有更好/更简单的方法来抓住设备的GPS坐标?

应用程序转到后台后,每n分钟获取一次用户位置

我正在尝试实施本文中给出的build议。 不幸的是,我不清楚这些步骤。 我尝试实施这些build议,但即使在启动和停止locationServices后,backgroundTimeRemaining仍在继续减less。 这是我开发它的方式: – (void)applicationDidEnterBackground:(UIApplication *)application { UIApplication* app = [UIApplication sharedApplication]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }]; // Start the long-running task and return immediately. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Do the work associated with the task. self.timer = nil; [self initTimer]; }); } initTimer: – (void)initTimer { // Create […]