Android - 两台设备之间的通信

时间:2012-03-07 20:49:43

标签: android

安装在两台设备上的Android应用相互通信的最佳方式是什么?设备可以直接连接而不使用短信吗?

8 个答案:

答案 0 :(得分:18)

根据您的要求和设置,您有多种选择:

  • 如果您的设备彼此非常接近(最长约10米),您可以使用蓝牙进行通信,如Derek建议的那样。
  • 如果您的设备距离较远,但在相互之间的WiFi范围内(最多约100米),则可以使用点对点WiFi API相互通信,记录为here( Android Wireless API的一部分)。这不需要WiFi路由器,设备将相互找到并直接通信。但是,这需要Android 4.1或更高版本。
  • 如果您的设备位于同一本地网络上(即使用相同的WiFi路由器),Android无线API也可以正常工作,即使它们本身并不在彼此的范围内。
  • 如果这些选项都不可行/保证,那么我同意Derek最简单的方法是使用ServerSocket和Socket通过Internet创建服务器/客户端接口。这是sample application这样做的。您可能遇到的主要问题是,如果服务器位于NAT后面(例如家庭互联网路由器),则必须配置NAT以将传入的数据包转发到您的Android服务器。

答案 1 :(得分:14)

您可以使用BluetoothSockets通过蓝牙连接它们。 Android开发者网站上有很好的文档。

http://developer.android.com/guide/topics/wireless/bluetooth.html

或者如果您愿意(并且在两台设备上都有互联网),您可以使用常规的Socket。

服务器端的

http://developer.android.com/reference/java/net/ServerSocket.html 客户端http://developer.android.com/reference/java/net/Socket.html

如果您要传输大量数据,则互联网套接字具有更大的数据容量并且速度更快。另一个优点是没有“超出范围”的事情。您可以在互联网可用的地方连接两个设备,而使用蓝牙,它们必须在彼此的蓝牙范围内

答案 2 :(得分:3)

您可以使用PubNub。它处理所有网络,你应该只关心消息。 它有很棒的API可供使用。

(感谢@Ian Jennings:Can we send data from an android device to another android device directly (p2p) without server in the middle?

答案 3 :(得分:1)

取决于你在做什么。如果您有一台服务器,您可能会向其发送一些消息并将其从其他设备中提取(假设两个客户端都安装了该应用程序)。我认为这将是最直观的方式(但这实际上取决于你正在沟通的内容)。

短信和电子邮件可能有效,但您(或用户)需要知道与设备关联的数字/电子邮件才能执行此操作。

答案 4 :(得分:0)

android NSD API旨在完成你想要实现的完全相同的事情!与SDK捆绑在一起的示例是不言自明的!

请检查:

Android NSD API example

答案 5 :(得分:0)

你应该看看WifiDirect

  

Wi-Fi点对点(P2P)允许Android 4.0(API级别14)或更高版本   具有适当硬件的设备直接连接到每个设备   其他通过Wi-Fi而没有中间接入点。

答案 6 :(得分:0)

正如已经建议的,如果您的设备都已连接到网络,则套接字是实现此目的的最简单方法。

这里有一些事情要完成:

  1. 使用网络服务发现来查找运行您的应用程序的设备
  2. 使用套接字连接到您应用的其他实例

有关完整的教程,您可以check this out

答案 7 :(得分:0)

ShortAnswer:是

数据可以直接发送。

按范围顺序: 1个蓝牙 2个wifidirect 3个。.GSM硬件直接吗?

之后,再次按范围顺序进行选择: 4系绳或网络 5互联网