将传感器数据从Android设备上传到远程主机

时间:2014-09-08 19:24:55

标签: android multithreading background sensor uploading

我想开发一个满足以下规范的Android应用程序:

  • 记录来自传感器(例如加速度计)的数据 近似率为10-30 Hz。
  • 将此原始数据上载到远程服务器(例如使用TCP 套接字)。
  • 用户界面应该是最小的,只需要一对按钮即可启动 或停止记录和传输数据。
  • 所有过程都应该对用户不明显并继续工作 当屏幕熄灭几个小时。
  • 电池续航时间并不重要(应持续数小时)。

愿景:我想准实时地分析一组用户的传感器测量值,而不需要他们的干预(除了启动应用程序)。

经过一些研究,我可以设法单独执行这些任务并且效率低下。我已经尝试了类,例如Service和IntentService,SensorEventListener等。我不知道是否应该为每项任务使用Thread,Service或IntentService。具体来说,我有严重的沟通问题。

我的问题:

  1. 为了解决这个问题,您建议使用哪些类? 问题?
  2. 应该对每个人做什么任务?
  3. 如果任务是在不同的实体(线程,服务, 意图服务等),我应该如何相互沟通(我... 考虑录制和上传任务)?
  4. 我要求最佳实践结构来解决我的问题。在开发/编写解决方案方面,您无需详细了解。

    非常感谢,随时可以询问是否有不清楚的事情。

    大卫

    更新:

    经过一些研究并感谢DROIDcoder,我设法为我的应用设计骨架:

    由于这只是一个命题,我将其添加为版本。当整个系统工作时,我会发布一个详细的答案。

    问题仍然存在:您能否考虑为应用程序设计更好的设计?

    再次感谢!

2 个答案:

答案 0 :(得分:0)

这是我的建议

将此原始数据上传到远程服务器

您可以使用JSON解析进行服务器通信。您将使用AsynTask(后台线程)进行后台数据上传

对于用户来说,所有过程都应该是不明显的,并且在屏幕熄灭几个小时后继续工作。

您应该使用服务进行后台长期处理

答案 1 :(得分:0)

最后我做了什么:

问题1:长时间从背景传感器记录数据。 使用服务类解决了初始化传感器并侦听回调的问题。

问题2:将包含UI的Activity类与Service类进行通信。 使用Activity类中的 startService (Intent myMessage)方法与Service类中 onStartCommand ()方法中的开关进行解决,以对消息进行分类。

问题3:使用Activity类传递Service类。 解决了在活动中注册自定义 BroadcastReceiver 并从服务发送意图的问题。我在文件上传期间(在服务中)用它来更新进度条(在Activity中)。可以找到一个特殊的教程here

问题4:将数据上传到远程服务器。 使用<{3}}网站中的 AsyncTask 解决方案。