This question already has an answer here:
Obtain Android GPS location once every few minutes
                                
                                    (1个答案)
                                
                        
                                6年前关闭。
            
                    
我知道这个问题已经被问过很多次了,但是我找不到适合我问题的答案。

我有一个应用程序,它必须每30分钟知道一次用户的位置(以便执行特定操作)。我不希望应用程序检查位置是否已更改。我只需要每30分钟获取一次,所以我不想使用onLocationChanged()方法。

我使用“被动”方式而不是gps或网络方式,因此我不必“寻找”最佳提供商,我已经知道了。

有办法吗?

非常感谢。

朱利安

最佳答案

您可以每30分钟设置一次警报,然后检查getLastKnownLocation。但是,只有为至少1个应用程序注册了位置更新后,才会主动更新最近的已知位置-因此您仍然必须注册自己以确保变量已更新。

AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
registerReceiver( receiver, new IntentFilter("broadcast reciever class name here") );
Intent i=new Intent("broadcast reciever class name here");
PendingIntent pi=PendingIntent.getBroadcast(this, 0, i, 0);
mgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30*60*1000, pi);


这将每30分钟设置一次警报。如果您希望在活动结束后继续执行此操作,请在“服务”中进行设置。

10-08 06:17
查看更多