使用服务获取 GPS 位置,android?

2023-12-09

这是我第一次使用服务,从活动来看它确实看起来很复杂。

因此,我试图在用户关闭我的服务应用程序后获取用户的位置。

这是我的服务等级。

public class LocTrack extends Service {


GPSTracker gp;
@Override
public void onCreate() 
{    gp = new GPSTracker(getApplicationContext());
    onLocationChanged(gp);
    super.onCreate();        
}
@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub

    return Service.START_STICKY;
}


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

public void onLocationChanged(GPSTracker track) {


    // Getting latitude
    double latitude = track.getLatitude();

    // Getting longitude
    double longitude = track.getLongitude();

     Geocoder geocoder = new Geocoder(LocTrack.this, Locale.getDefault());

    try
     {
         List<Address> addresses = geocoder.getFromLocation(latitude, longitude,1);
         Log.e("Addresses","-->"+addresses);

     }
     catch (IOException e)
     {
         e.printStackTrace();

     }

}
}

请告诉我我做错了什么。 如果我在活动类中使用代码,那么我可以在 logcat 中获取地址,但在使用服务时却不能。

这就是我从活动中调用服务的方式

    Intent intent = new Intent(MainActivity.this, LocTrack.class);
             startService(intent);

最好的方法是使用 CWAC 的定位服务 Location Poller 服务已经为我们提供了使用它,只需给出唤醒它的时间间隔

像这样做,你将需要 jar 文件,你可以从中获取它https://www.dropbox.com/sh/pgxk2v9l5vl0h2j/3svyZnuwOK/CWAC-LocationPoller.jar

从您的活动中启动 LocationPoller 并将闹钟设置为您想要的重复时间

AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent(this, LocationPoller.class);

Bundle bundle = new Bundle();
LocationPollerParameter parameter = new LocationPollerParameter(bundle);
parameter.setIntentToBroadcastOnCompletion(new Intent(this,
        LocationReceiver.class));
// try GPS and fall back to NETWORK_PROVIDER
parameter.setProviders(new String[] { LocationManager.GPS_PROVIDER,
        LocationManager.NETWORK_PROVIDER });
parameter.setTimeout(120000);
i.putExtras(bundle);

PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
        SystemClock.elapsedRealtime(), 300000, pi);

创建一个接收器类 Location Receiver,从中获取经纬度

public class LocationReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {


    try {      
      Bundle b=intent.getExtras();

      LocationPollerResult locationResult = new LocationPollerResult(b);

      Location loc=locationResult.getLocation();
      String msg;

      if (loc==null) {
        loc=locationResult.getLastKnownLocation();

        if (loc==null) {
          msg=locationResult.getError();
        }
        else {
          msg="TIMEOUT, lastKnown="+loc.toString();
        }
      }
      else {
        msg=loc.toString();



        Log.i("Location Latitude", String.valueOf(loc.getLatitude()));
        Log.i("Location Longitude", String.valueOf(loc.getLongitude()));
        Log.i("Location Accuracy", String.valueOf(loc.getAccuracy()));




      }

      Log.i(getClass().getSimpleName(), "received location: " + msg);   



    }
    catch (Exception e) {
      Log.e(getClass().getName(), e.getMessage());
    }
  }

并将其添加到您的清单中

   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

   <receiver android:name="com.commonsware.cwac.locpoll.LocationPoller" />

   <service android:name="com.commonsware.cwac.locpoll.LocationPollerService" />

以及接收者声明,您将在其中获取所有内容

   <receiver android:name="com.RareMediaCompany.Helios.LocationReceiver" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用服务获取 GPS 位置,android? 的相关文章

随机推荐

  • T-SQL JSON:如何在 JSON 数组中搜索值

    我们正在使用 Azure SQL 并有一个名为 Companies 的表 其中一列包含 JSON JSON 字段的结构为 DepartmentLink https company com ContactName John Doe Conta
  • React hooks useEffect 仅在更新时?

    如果我们想限制useEffect要仅在组件安装时运行 我们可以添加第二个参数useEffect with useEffect gt 但我们怎样才能使useEffect仅在组件更新时运行 初始安装除外 如果您希望 useEffect 仅在除初
  • tf.nn.conv2d 在张量流中做什么?

    我正在查看有关张量流的文档tf nn conv2d here 但我无法理解它的作用或它想要实现的目标 它在文档上说 1 将滤波器展平为具有形状的二维矩阵 filter height filter width in channels outp
  • 如何在 VS2008 中将用户控件构建到独立程序集中?

    更具体地说 在 Visual Studio 2008 中执行此操作与 VS2005 不同时 我需要了解哪些信息 我找到了大量关于在 VS2005 中执行此类操作的参考资料 例如 http webproject scottgu com CSh
  • MySQL 准备语句

    我只是想知道是否有一种方法可以在 MySQL 中使用某种形式的准备好的语句 这样我就不必转义所有输入 也不必将所有文件从 MySQL 切换到 MySQLi 我真的不相信转义函数 所以如果有任何可以在常规 MySQL 中工作的替代方法 那就太
  • 分组集合选择按字母顺序排列的轨道

    我终于弄清楚如何使用动态选择菜单本教程 一切正常 但如何按名称组织下拉列表中的城市 下面是我编写的所有代码 如果您需要更多信息 请告诉我 Rails 新手请帮忙 VIEWS div class field div I would like
  • Jquery UI 自动完成 ajax 未填充下拉框

    我需要帮助 我看不出问题出在哪里 当我在 html 文件中设置自动完成源时 它工作正常 当我在 ajax php 中打印相同的源或数据库值并通过 ajax 返回它时 它不起作用 可能是什么问题呢 请帮助 Html
  • 重载运算符delete,或者如何杀死一只猫?

    我正在尝试重载运算符删除 以便我可以向那些不希望使用智能指针的人返回一个普通指针 但又能够控制何时删除对象 我定义了一个由多个灵魂构造的类 Cat 它有一个不执行任何操作的重载运算符删除 以及减少灵魂数量的析构函数 并且还进行了一些吹牛 当
  • 接下来我应该学习什么 DI/IoC 框架? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我已经使用过 Spring 和 Spring NET 相当多了 但我想看看还有什么 谁能推荐一个我可以尝试学习的好的 Java 或 NET 框架 Here是来自善良的 Hanselman
  • AngularJS $interval 应该动态地增加/减少

    我只想使用 interval anyFunction 1000 但 1000 的值也应该是可变的 如果我通过定义变量来更改它 则视图上的间隔不会改变 有人可以发布一个如何更新 interval 的 速度 的示例吗 非常感谢 万一 我的控制器
  • 如何将 Node.js WebSocket 服务器部署到 Amazon Elastic Beanstalk?

    使用 Elastic Beanstalk Web 控制台 我启动了一个新的 Web Server 1 0 环境 预定义配置 Node js 64 位 Amazon Linux 2014 09 v1 0 9 环境类型 负载均衡 自动缩放 并有
  • 替换颜色图中的颜色

    我使用一条简单的线将 256 色索引图像分解为调色板 import numpy as np from PIL import Image im Image open palette np array im getpalette dtype n
  • 在 .net 中写入 CSV 文件

    我需要将数据集导出为 CSV 文件 我花了一段时间寻找一组可遵循的规则 并意识到编写 CSV 文件时有很多规则和例外 http knab ws blog index php archives 3 CSV file parser and wr
  • numpy.eig 中的特征向量不正交

    我的问题如下 使用 scipy linalg eig 获取特征向量和特征值我发现我所有的特征值都有多重性 1 但是当我运行下面的代码时 它并不能确认特征向量是正交的 因为在这种情况下它们应该是正交的 有什么原因会这样吗 或者如何修复它 im
  • 异步回调内的 Mocha 测试

    我已经简化了这个例子以便能够很好地解释它 我有一个想要迭代的数组 对于数组的每个元素 我想使用 async await 函数执行测试 所以我有以下代码 const chai require chai const expect chai ex
  • 编译错误:类中的构造函数无法应用于给定类型

    我尝试使用超类中的枚举创建子类对象 但是当我尝试在子类中创建对象时出现此错误 error constructor Payroll in class Payroll cannot be applied to given types publi
  • 如何使用 MVC (CRUD) 调用 JQuery UI Modal

    我有一个汽车视图 List cshtml 显示我的汽车列表 我想添加一个按钮 链接 添加汽车 该按钮必须在 JQuery Modal UI 中打开我的视图 Create cshtml 我怎样才能做到这一点 干得好 demo http dem
  • 在程序中更改当前的mysql数据库?

    对于我们的系统 我们使用具有相同结构的多个数据库 例如 当我们有 1000 个客户时 就会有 1000 个数据库 我们选择为每个客户提供自己的数据库 这样我们就可以毫不费力地立即删除他的所有数据 现在我每年都要更新几次数据库结构 所以我开始
  • 应用程序将文件写入内部 SD 卡,但 Windows 看不到该文件

    所以 我想做的是将数据写入 SD 卡上的文件 然后让 Windows 读取该文件 我看到的问题是 Windows 永远不会看到我的新文件 直到我重新启动 xoom xoom 的操作系统版本为 3 2 我也正在构建 SDK 版本 一旦 xoo
  • 使用服务获取 GPS 位置,android?

    这是我第一次使用服务 从活动来看它确实看起来很复杂 因此 我试图在用户关闭我的服务应用程序后获取用户的位置 这是我的服务等级 public class LocTrack extends Service GPSTracker gp Overr