gpt4 book ai didi

android - 使用警报管理器启动服务,但前提是主应用程序未运行

转载 作者:行者123 更新时间:2023-11-29 22:08:07 26 4
gpt4 key购买 nike

好的,这里的问题是我有一台通过蓝牙连接到手机的摄像机。与设备的所有通信都是通过 android 服务进行的。该服务会定期使用 GPS 坐标更新相机。不幸的是,该服务不是由我的公司编写的,我们只能控制启动它并向其发送命令(但是,如果连接到设备,它会自行执行 GPS)。一旦我们的应用程序启动了服务,我们就会尝试连接到任何包含我公司 OUI 的配对设备。一旦设备断开连接(可能关闭或电池耗尽),它不会自动重新连接,直到用户重新启动我们的应用程序。因此在这种情况下 GPS 坐标不会发送到相机。

这是一个问题,因为用户(对这些服务一无所知)会认为,如果他重新打开设备,它应该已连接。

所以我想我可以将 AlarmManager 与广播接收器或服务一起使用(可能是 Intent 服务,因为连接需要几秒钟才能完成)。也许每隔几分钟我就可以检查一下与相机的连接。如果它的存在只是退出,如果没有尝试连接(如果有配对的设备)。

但是问题是如果我的应用程序已经在运行怎么办?如果是,则用户控制连接到设备(提示他们连接)。我是否需要使用共享首选项或类似的东西来判断我的应用程序是否正在运行/关闭?有什么方法可以从服务中判断应用程序是否正在运行?我可以看到这变得棘手。如果有人知道如何处理这个问题,请告诉我。

最佳答案

我建议采用以下方法:

  1. 设置闹钟以在 X 分钟内开始服务
  2. 立即为应用程序设置计时器 X-1 分钟
  3. 当应用程序的计时器到期时:取消当前并为服务设置新的警报,并为应用程序设置新的计时器。

这样,如果应用程序仍在运行,服务将不会启动,一旦应用程序关闭,警报也不会停止。

关于android - 使用警报管理器启动服务,但前提是主应用程序未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com