问题标签 [location-updates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - IntentService 用于后台位置更新
我在使用 IntentService 时遇到问题。如果我的应用程序处于后台或关闭状态,我无法更新我当前的位置并且无法获得通知。如果我再次打开应用程序,我会收到通知。
所以我无法按时收到通知。我的意思是我在创建通知或更新当前位置方面没有问题。我需要一个广播接收器来解决这个问题吗?我该如何处理。我的主班:
我的 IntentService 类:
android - 应用在 Backtound Android 8 中时的位置更新
自 Android Oreo 发布以来,位置更新仅在应用程序处于后台时在一小时内发生几次。就我而言,我有一个应用程序需要在用户锁定屏幕时频繁更新位置(应用程序在后台)。
Google Developer Docs 提供了这个解决方案:
'通过调用 startForegroundService() 在您的应用程序中启动前台服务。当这样的前台服务处于活动状态时,它会在通知区域中显示为正在进行的通知。
没有可用的示例。启动一个简单的前台服务是否足够,还是需要将所有位置逻辑迁移到这个前台服务?我不清楚启动一个自定义的简单前台服务是否足够好,或者我是否需要将所有位置逻辑放在这个前台服务中。
android-intent - 带有pendingIntent的fusedLocationProviderClient requestLocationUpdates不会触发
我正在尝试在后台运行位置跟踪器。为此,我读到我需要将pendingIntent 与fusedLocationProviderClient 一起使用,这样我的应用程序将继续每x 秒查询一次用户的位置,即使应用程序已最小化/关闭。
我的 mapActivity 在 kotlin 中。问题是,当我使用 pendingIntent 启动 fusedLocationProviderClient 时,我似乎无法触发任何位置更新(如果我使用回调在主线程中运行它会很好,但是,这会减慢我的手机速度)。
有谁知道如何让 fusedLocationProviderClient 在我的情况下与 pendingIntent 一起工作?
我曾尝试使用intent.setAction() 中的字符串,使用我的包名“com.russ.locationalarm”并在末尾附加“.action.PROCESS_UPDATES”。我是意图的新手,所以我不确定这是否是正确的字符串。我也尝试将 PendingIntent.GetService() 切换为 PendingIntent.getBroadCast(),但似乎都不起作用。
这是我启动 fusedLocationProviderClient 的函数:
这是我创建pendingIntent的地方:
这是我用来接收广播或服务的两种方法
我的预期结果是我将触发 onHandleIntent 或 onReceive 方法之一。相反,控制台在从 getPendingIntent 函数“获取待处理意图”后不会产生任何输出。mLLocationRequest 应该每 1 或 2 秒查询一次,并且它在早些时候使用 looper 和回调调用 fusedLocationProviderClient 工作,所以我知道不是这样。
java - 手机屏幕锁定时 onLocationChanged 不起作用
我创建了一个跟踪用户并绘制折线的应用程序。在某些手机中,当手机被锁定时,onlocationchanged 监听器会停止工作,并且不会获取用户经过的位置,因此不会绘制折线。
有人可以告诉我如何解决我的问题吗?为什么当手机被锁定时,位置监听器停止工作?
这是我的代码片段:
android - 为什么每次服务处理一个新意图时都会调用 IntentService 的 onStartCommand 方法
我有一项服务,每 1-3 秒左右接收一次位置更新。该服务是使用挂起的意图从主要活动启动的:
哪里getPendingIntent()
是定义我IntentService
要处理的动作的方法handleIntent()
但是,我注意到的一件奇怪的事情是,每次IntentService
处理 中的位置更新时,总是在调用同一服务handleIntent()
之前立即调用。onStartCommand()
有谁知道为什么onStartCommand()
每次服务处理意图时都需要调用?谢谢
android - Android 后台应用 - 前台 FusedLocationProviderClient 服务停止提供位置更新
我已经遇到这个问题几个月了。我的 android 应用程序使用前台服务(以此为模型来跟踪短暂的位置。这在 Android P 上运行良好,但随着 Android 10/Q 的发布,前台服务在十分钟内停止发送更新在开始像它应该的那样再次更新之前。这些情况是:
- 在 Android Q 上运行
- 配置为发送批量位置更新
- 该应用程序被放置在后台
在后台运行后,位置更新将停止最多十分钟,然后重新启动并适当地发送批量位置更新。在此期间,所需的前台通知仍在显示,并且该服务正在根据 Android 的操作系统运行。唯一的其他奇怪行为是,有时它会调用 LocationCallback 的 OnLocationAvailability 回调,但无论是在前台还是后台,它都会这样做。
我做过的事情:
- 禁用批量位置更新:这有助于获得一致的更新,但会破坏我应用程序的另一个超酷部分。相反,我更愿意让操作系统正常工作。
- 添加新的 Android Q 清单更改(ACCESS_BACKGROUND_PERMISSION 和 foregroundServiceType="location")。作为 Android Q 更新的一部分,我这样做了。
- 扩展了我在前台服务中的日志记录,因为它只是在等待 FusedLocationProviderClient
我应该如何调试这个?很难获得对前台服务和 fusedLocationProviderClient 的更多可见性。或者,如果有人遇到此问题,我也会感谢您的反馈。
android - 如果 requestLocationUpdates() 参数 minTime 和 minDistance 都为 0 会发生什么
如果我编码:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
这是否意味着位置将实时更新(每 0 毫秒和每 0 米)还是不会更新?对不起,如果我的问题是如此基本。谢谢..