【问题标题】:Get current position of a mobile every 2 minutes android每2分钟获取手机的当前位置android
【发布时间】:2016-09-20 17:07:44
【问题描述】:

我有一个应用程序,其中一个接一个地具有三个 doinbackground 异步功能。第一个函数使用opencell api通过mcc、mnc、cellid和lac获取手机当前位置的经纬度。在执行此函数后调用另一个 api 以根据纬度和经度获取位置的当前时间。执行此函数后,我正在调用服务器页面以将所有这些收集的数据保存到 mysql db。

我想每分钟重复一次相同的过程。我们如何实现它?现在,这作为一个应用程序工作,每次我启动应用程序时,数据都会保存到mysql。

【问题讨论】:

  • 使用警报管理器来启动您的 GPS。然后做你典型的例行公事。
  • 看看融合的位置 api。它会定期为您提供纬度、经度、日期,而且实现起来很简单(如果不是强制实现 opencell api)。
  • @srikar 你能举个例子吗?它不是必须使用opencell。我只是想这就是这样做的方法。不过我不能使用 GPS。我必须根据 SIM 卡获取位置。我可以使用融合位置 api 吗??
  • @Enzokie,我不能使用 GPS,需要通过 sim 获取位置。你能举一些使用警报管理器的简单示例

标签: android android-asynctask


【解决方案1】:

不要使用这样的异步任务每 2 分钟获取一次位置,有一个完美的解决方案是“Fused Location Provider”。它会定期为我们提供设备位置,您可以将其设置为 2 分钟,看看这个https://github.com/googlesamples/android-play-location/tree/master/LocationUpdates

【讨论】:

  • 链接显示要运行此示例,必须启用位置。但是我不应该使用 GPS 来执行此任务。
  • 此示例可能使用此必要性,但融合位置提供程序使用 gps、wifi 和网络提供程序三种模式,因此您可以定期获取位置。您可以在没有它的情况下获取位置,但为了获得更好的结果,您必须使用全球定位系统。
  • 谢谢你,我会努力回来的
【解决方案2】:
 public  void StartAlaramServiceforDataService(){

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 1);
    Intent intentToQB = new Intent(SendLatlong.this, LocationFetchService.class);
    PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),1212, intentToQB, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),60*1000, pendingIntent);//You can change Time here


}

在 LocationFetchService 中获取 LatLong

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多