我有 2 个 android 应用程序 A 和 B,它们都根据不同的参数读取 gps 值。考虑到这两个应用程序都在设备上运行,以下哪种方法会更好?
A 和 B 都是不同的应用程序,每个应用程序都有一个从 GPS 读取的组件。
开发带有远程服务组件的第三个应用程序,将 GPS 数据传输到 A 和 B
是否会通过采用第二种方法来最小化电池使用量,或者 GPS 组件是否会读取一次并为所有进程提供服务,就像在操作系统中一样?
请帮忙
我有 2 个 android 应用程序 A 和 B,它们都根据不同的参数读取 gps 值。考虑到这两个应用程序都在设备上运行,以下哪种方法会更好?
A 和 B 都是不同的应用程序,每个应用程序都有一个从 GPS 读取的组件。
开发带有远程服务组件的第三个应用程序,将 GPS 数据传输到 A 和 B
是否会通过采用第二种方法来最小化电池使用量,或者 GPS 组件是否会读取一次并为所有进程提供服务,就像在操作系统中一样?
请帮忙
Android 开发者网站上有一个关于位置策略的很好的解释。我建议您查看页面上的代码示例。
在您的两种方法中,我认为第二种方法要好得多,因为在电池使用方面打开/关闭 GPS 是一项非常昂贵的操作。
GPS 的电池消耗行为在卫星导航信息的初始获取过程中最为明显。获取每颗卫星需要 12 到 30 秒,但如果需要完整的历书,则可能需要长达 12 分钟。在这一切过程中,您的手机无法进入深度睡眠。A-GPS(辅助 GPS)通过蜂窝数据网络甚至 Wi-Fi 将导航消息发送到您的移动设备,部分解决了这个问题。由于其中任何一个的带宽都大大降低了 GPS 卫星的 50bps,因此为 GPS 天线供电或避免深度睡眠所花费的时间大大减少。
从此提到。
我认为最省电的方法是使用应用程序 A通常轮询 GPS 位置,并在应用程序 B 中使用LocationRequests并setPriority()
与PRIORITY_NO_POWER一起使用。如文档中所述,PRIORITY_NO_POWER
仅当另一个应用程序获取 GPS 更新(在本例中为应用程序 A !!)时,才会使应用程序 B 获取更新。我没有尝试过,但它应该可以工作。它绝对可以为您省去额外应用程序的麻烦 :)
为了兼容性和功能,我建议使用第三个进程或程序来读取和输出 GPS 数据,因为从 GPS 轮询数据的多个进程效率较低。
让这两个应用程序读取单个 GPS 跟踪应用程序的输出并且不需要每个应用程序中的单个组件来执行此操作也会更快。
无论如何,为了功率,GPS 将使用相同级别的功率,但如果由于两个应用程序使用它而更频繁地轮询它,那么它可能会使用更多 - 尽管数量可能是最小的,除非有不断的位置请求。
虽然这可能不是问题,但让第三个应用程序以特定间隔轮询 GPS 将是最省电的,并且应用程序可以从其输出中读取而不是每次都搜索位置。
第二种方法似乎更合适,但不确定电池耗尽。这取决于您如何实现它。
另外我建议尝试使用被动提供者。请参阅以下链接帮助它工作:)
http://fypandroid.wordpress.com/2011/04/11/298/
它是否与操作系统 gPS 组件相同,将运行一次以服务所有
一个 GPS 服务于所有。没有一半的 GPS 可以节省一半的电量。但是还有其他定位提供商,例如蜂窝塔和 Wifi 定位,它们使用的电量更少。
但是,如果您需要 GPS,那么有多少应用程序使用 GPS 服务是绝对没有区别的。如果启用 GPS,它会使用全功率。