Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将传感器数据从Android设备上传到远程主机_Android_Multithreading_Background_Sensors_Uploading - Fatal编程技术网

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

将传感器数据从Android设备上传到远程主机,android,multithreading,background,sensors,uploading,Android,Multithreading,Background,Sensors,Uploading,我想开发一个满足以下规范的Android应用程序: 记录传感器(例如加速度计)的数据 频率约为10-30 Hz。 将此原始数据上载到远程服务器,例如使用TCP 插座。 用户界面应该是最小的,只有一对按钮启动 或停止数据的记录和传输。 所有的过程都应该是用户看不到的,并继续工作 当屏幕关闭几个小时时。 电池寿命并不重要,它应该持续几个小时。 愿景:除了启动应用程序外,我想在没有用户干预的情况下,对一组用户的传感器测量值进行准实时分析 经过一些研究,我可以设法单独执行这些任务,但效率低下。我尝试过诸

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

记录传感器(例如加速度计)的数据 频率约为10-30 Hz。 将此原始数据上载到远程服务器,例如使用TCP 插座。 用户界面应该是最小的,只有一对按钮启动 或停止数据的记录和传输。 所有的过程都应该是用户看不到的,并继续工作 当屏幕关闭几个小时时。 电池寿命并不重要,它应该持续几个小时。 愿景:除了启动应用程序外,我想在没有用户干预的情况下,对一组用户的传感器测量值进行准实时分析

经过一些研究,我可以设法单独执行这些任务,但效率低下。我尝试过诸如Service和IntentService、SensorEventListener等类。我不知道是否应该为每个任务使用Thread、Service或IntentService。具体来说,我在与他们沟通时遇到了严重的问题

我的问题是:

为了解决这个问题,您建议使用什么类 问题 他们每个人都应该完成什么任务? 如果任务在不同的实体、线程、服务中执行, 意向服务等,我该如何与他们沟通我在 正在考虑录制和上传任务吗? 我要求最佳实践结构来解决我的问题。您不需要详细介绍解决方案的开发/编码

非常感谢,如果有什么不清楚的地方,请随时询问

大卫

更新:

经过更多的研究并感谢DROIDcoder,我成功地为我的应用程序设计了一个框架:

主界面:活动对象显示两个按钮启动/停止 将使用常用的startService/stopService方法启动服务 背景:服务对象 屏幕关闭时唤醒:服务在onCreate中请求电源锁,并在onDestroy中释放电源锁。请在此处查找更多信息: 记录传感器值:像往常一样在服务中实现SensorEventListener 将传感器值上载到服务器:在服务中使用AsyncTask,如下所述: 数据格式化和传输:使用GSON库+HttpClient,如下所述: 测试:使用网站测试JSON查询 由于这只是一个命题,我将其作为一个版本添加。当整个系统运行时,我将发布一个详细的答案

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

再次感谢

以下是我的建议

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

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

所有的过程对于用户来说都应该是不可察觉的,并且在屏幕关闭数小时后继续工作


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

最后我做了什么:

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

问题2:将持有UI的活动类与服务类进行通信。 使用Activity类中的startServiceIntent myMessage方法,结合服务类中onStartCommand方法中的开关,对消息进行分类,从而解决了此问题

问题3:将服务类与活动类进行通信。 解决了在活动中注册自定义BroadcastReceiver并从服务发送意图的问题。我用它在服务中上传文件的过程中更新了活动中的进度条。可以找到一个特殊的教程

问题4:将数据上载到远程服务器。
在服务中使用AsyncTask解决,如在站点中。

我被要求参与一个艺术家的项目,其中一个解决方案可能需要一个应用程序,如您所描述的。我想知道你做了多少。你是把一个应用程序放进应用商店,还是仅仅为个人使用而构建一个应用程序?虽然这个应用程序是作为原型设计的,而不是作为最终产品,但我们确实在工作中使用了几个月,并用它检索了大量数据。测试人员可以从Google Play商店下载,在录制过程中没有出现重大问题。这可能不是最好的架构,但它为我们工作!