我正在尝试编写一个应用程序,将数据从一个 android 设备传输到另一个设备 - 但这些设备很可能位于城市、州或国家的不同地区。(直接的方法是拥有一个中央服务器(或任何类型的服务器),但我试图避免使用一个)。
我试图传递的数据是文本、图片或两者的组合。
到目前为止,我找到的解决方案是使用特殊格式的文本或图片消息进行通信;但这似乎远非最佳。有更好的解决方案吗?
使用亚马逊简单队列服务:
Amazon Simple Queue Service (Amazon SQS) 提供了一个可靠、高度可扩展的托管队列,用于存储在计算机之间传输的消息。通过使用 Amazon SQS,开发人员可以在执行不同任务的应用程序的分布式组件之间简单地移动数据,而不会丢失消息或要求每个组件始终可用
真正的 P2P 在 3G 上是不可能的。
在您的问题中,您提到您当前使用消息。我假设你的意思是短信。
您可以做的是使用具有自定义 mime 类型的邮件和附件,例如application/foobar-data
.
在您的应用程序中,您可以启动包含此附件的 SEND Intent。然后用户必须选择他的电子邮件程序(或者这可能是自动的),并将其发送给他/她喜欢的任何人。您还可以在您的意图中指定收件人:地址和主题。这将是相当简单的。
然后,远程用户将收到此邮件并点击附件。您的应用程序将被注册以处理application/foobar-data
mimetype,使用清单中的意图过滤器,然后将自动启动并接收数据。之前生成的邮件正文也可以预先填写有关您的应用程序以及如何安装它的信息,例如“您需要 FooBar 才能查看附件。您可以从...安装它”。
因此,最终,您的应用程序可以发送和接收自定义数据,而无需依赖专用服务器。
看看 ShazzleMail。您可以下载他们的应用程序并通过智能手机进行 p2p 通信。寻址是通过中间人完成的,但所有内容都是 p2p 的。