V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fangchang
V2EX  ›  Android

Android 如何做一个 gps tracker?

  •  1
     
  •   fangchang · 2018-02-02 03:18:54 +08:00 · 11161 次点击
    这是一个创建于 2514 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前我在做的一个 app 由于需求,需要跟踪用户的移动路径。 那么我想给 app 添加一个后台不断运行的服务。并且不断读取当前位置然后保存到数据库。

    我现在的一个实现就是通过 AlarmManager 建立一个每 x 秒的 alarm,再通过 alarm 呼叫前台服务。之后让前台服务进行 gps 信息获取。 git: https://github.com/Qiaorui/GpsTracker

    但是这样的做法会把服务变成前台服务,在界面上会不断提醒用户。 我想知道的是,微信,qq 这些是怎么做到不变成前台服务并且保持 gps 信息的获取的? 有没有一个 best practice ? 现在 Api 更新的挺多的,我找到的都已经 deprecated 了。

    7 条回复    2018-02-03 02:47:56 +08:00
    pimin
        1
    pimin  
       2018-02-02 03:26:24 +08:00 via Android
    可以看下 Google 的 MyTracks 源码
    目前项目已经停止服务了
    ai277014717
        2
    ai277014717  
       2018-02-02 10:40:10 +08:00
    这个我做过。微信,qq 都是毒瘤 APP,厂商会给开后门的。自己做的话基本没希望保活,除非打开开发者模式后台限制。不然分分钟被杀死。非要弄的话建议直接介入百度地图的 sdk。后台开一个 service,只做定位和保存数据库功能。
    每次需要定位直接换行这个 service 即可,权限弄的多一些。
    像 iOS 我也弄过,基本为了省电,1 分钟 gps 只工作十秒用完关闭可以达到一个省电的效果。
    XinLake
        3
    XinLake  
       2018-02-02 13:00:18 +08:00 via Android
    GPS 信息这块,不用你 app 主动,位置信息更新系统会通知你,你 app 只需要注册 GPS 事件通知即可。

    Android 编程,面向对象编程不要老想着那个“ main ”
    fangchang
        4
    fangchang  
    OP
       2018-02-02 16:59:54 +08:00
    @pimin 谢谢!我看了下它的 git。不过它最后一次更新是 2015 年了。其中的实现方法已经不符合现在 android 的做法了。

    @ai277014717 原来如此。 我主要是想把前台服务转成后台,并且尽量不被杀死吧。 现在后台服务默认如果不进白名单的话,就肯定会被干掉。而且一个小时里只能唤醒几次而已,远远不够达到路径跟踪的效果。

    @XinLake 你是指 location manager 里注册一个监听么? 但这样还是需要一个 service 挂起一直监听。而这样一直存活的 service 已经在 Android 8.0 里被严格限制了。 在这两篇里都有提到。
    https://developer.android.com/about/versions/oreo/background.html
    https://developer.android.com/about/versions/oreo/background-location-limits.html
    XinLake
        5
    XinLake  
       2018-02-02 18:28:46 +08:00 via Android
    @fangchang 额,是我低估你了。文档我这打不开,有什么有用的信息我再回你。
    s82kd92l
        6
    s82kd92l  
       2018-02-03 00:24:12 +08:00 via Android
    追踪用户路径还不让前台提醒用户,这得有多流氓啊?
    fangchang
        7
    fangchang  
    OP
       2018-02-03 02:47:56 +08:00
    @s82kd92l 如果是必须的话,那我自然也就不会再考虑转后台。 不过像鹅厂的 app 都可以做到,就想着是不是还有什么方法是我没想到的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2948 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.