gpt4 book ai didi

android - Android 上用于将数据实时发送到服务器的选项?

转载 作者:搜寻专家 更新时间:2023-11-01 08:39:40 28 4
gpt4 key购买 nike

我目前正在做一个小规模的项目来证明某些东西可行,我目前有一个带有 Android SDK 的智能手环设备。

在这个设备上,我使用 SDK 实时跟踪用户的心率。

所以我的 Android 应用程序会实时接收心率更新。

这很容易做到,但我现在需要尽可能高效地将这些数据从 Android 设备实时发送到服务器。

从电池耗尽开始是可以的,因为最初这只是一个概念证明。

我在将大量数据实时发送到服务器方面经验有限,我想知道是否有人对 Android 上的最佳方法有什么想法?

我研究过 Sync Adapters,但这些似乎更多地是关于保持客户端和服务器之间的数据对齐,这是我不关心的事情。另一种方法是查看来自 Volley 的 RequestQueue 是否可行,但我再次不确定是否值得对此进行调查?

我是否应该考虑创建服务并以某种方式使用套接字来传输数据?

编辑:看起来 IntentService 可能是处理任务执行的最佳选择,但我假设 http 请求对客户端来说太重了,我应该考虑其他的传输方式吗?

最佳答案

我正在从事类似的项目,但我正在处理的腕带是 Empatica E4。请记住,我不是专家开发人员,因此我也期待对我的设计进行更正。此外,我将尽可能多地逐步证明我的想法。我希望这会为您的应用程序提供一些提示并帮助其他人。

所以,我目前的架构是这样的;

System Architecture


首先,Empatica还提供了Android SDK来接收数据。 SF 代表采样频率,而 EDA、Temp、BVP 和 AccXYZ 是我腕带中的传感器。每个传感器都有不同的采样频率,最大值为 64 Hz,每个采样之间有 15 ms 的间隔。这个时间间隔对于执行所有操作来说非常具有挑战性,因此我将传感器数据缓冲在 (Volatile LinkedBlockingQueue) FIFO 队列中,这样我就不会错过任何样本。这一切都发生在我的应用程序服务中。

现在,我有一个与 ScheduledExecutorService 一起使用的可运行任务以 250 毫秒的间隔从队列中收集样本(您可以根据需要改变它,但考虑到我的需要、网络延迟和设备性能,我使用了 250 毫秒)并将它们放在一个 JSON 对象中。此 Runnable 任务收集的样本数量因每个传感器而异,即 BVP:16 个样本,AccXYZ:8 个样本,Temp:1 个样本和 EDA:1 个样本。在输出中,我有一个 JSON 对象,其中包含要发送到我的服务器的数据。

为了将数据传输到我的服务器,我使用 HTTP POST 请求。原因很简单,快速,高效并且有利于并发。我正在使用 Volley framework它将自行处理我所有与网络相关的问题。所以我只是在 Volley RequestQueue 中添加 JSON 对象,我的客户端就在这里完成了。正如您提到的,您可以使用套接字连接来实现您的目标,但我必须使用多个设备,因此在我的情况下,套接字可能无法实现并发。我还尝试使用 HttpURLConnection 手动完成此操作,但代码变得乏味且难以处理。

最后,我的服务器端有一个 REST API(用 Python 编写),它将处理 POST 请求、解析数据并将其插入到我的 MySQL 数据库中。截至目前,我仍在使用此 REST API 来解析数据并将其存储在数据库中。但是,我已经测试了我的应用程序,并且成功地将数据从我的设备接收到服务器。

关于您的问题“我是否应该考虑创建服务并以某种方式使用套接字来传输数据?”,如果您在单个设备上工作,这是一个很好的选择。如果不止一台设备,我认为 Http 是更好的选择。

关于你的第二个问题,我认为 Http 对客户来说不会很重,而 Volley 正在承担你所有的痛苦。你只需要创建一个请求队列,瞧!您可以找到很多好的 volley 教程,我特别关注 this .

希望我的回答能对您有所帮助。

PS:因为我还在做这件事,我还没有拿出最终产品,所以我不能确定其中涉及的风险,但如果有的话,我会及时通知你新的事情发生了。此外,我愿意接受任何有帮助的建议和想法。最后,上图不是很详细,我给大家做的,只是为了分享一下我是如何处理同样的想法的。

关于android - Android 上用于将数据实时发送到服务器的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960499/

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