没有网络连接的Android广播通信

时间:2014-02-01 18:33:49

标签: android network-programming

2个Android设备是否有可能在不连接同一网络的情况下,将广播数据包(通过wifi技术)从一个设备发送到另一个设备。

当2台设备没有任何网络连接时进行成像。

我的手机已经根植了,我正试图通过无线方式发送广播包(如信标包)并在另一部手机上接收它。

我对所有导致我预期结果的解决方案(不仅仅是广播技术)持开放态度。

3 个答案:

答案 0 :(得分:2)

您想要的并不容易,但根据您需要支持的设备,可能有一些方法可以实现它。

WiFi P2P(Androids实现WiFi Direct接口),可用于在设备之间创建ad-hoc连接,而无需连接到接入点。但是 - 您将需要Android 4.0或更高版本以及支持WiFi Direct的设备。

API包含一个发现协议,因此为了实现类似广播的功能,您可以依次遍历这些设备。

Android文档:http://developer.android.com/guide/topics/connectivity/wifip2p.html

当然 - 即使你已经实现了网络级连接,你仍然需要一个库来处理消息传递,而Neo建议的RabbitMQ可能非常适合。

另一种选择,如果你的广播信息很小(而不是秘密!) - 就是操纵你的WiFi信号的SSID。可以在SSID中放入一个非常小的消息,然后通过轮询可用的网络列表在其他设备上接收。看到这个问题:

Can an Android device broadcast an SSID?

了解你如何继续这一点会很有趣。

答案 1 :(得分:1)

您可以使用SSID(32字节字符串)发送消息。对于每个发送的消息,需要发送带有32字节消息的Beacon数据包,这也是您的客户端可能会或可能不会收到的消息。在你以某种方式发送加密字符串之前,其他所有人都会看到该消息。

答案 2 :(得分:0)

您尝试通过Wifi网络做什么称为“发布商订阅者框架

一个或多个Android设备发布数据,一个或多个订阅者接收数据。

Java在这个名为Java Messaging Service JMS的框架中有一个框架

发布/订阅模型

发布/订阅模型支持将消息发布到特定的消息主题。订户可以注册接收关于特定消息主题的消息的兴趣。在该模型中,发布者和订阅者都不知道彼此。对此的一个很好的比喻是匿名公告板。

  1. 零个或多个消费者将收到该消息。

  2. 发布者和订阅者之间存在时间依赖关系。发布者必须为客户端创建消息主题 订阅。订户必须保持持续活跃 接收消息,除非它已建立持久订阅。 在这种情况下,订阅者未发布的消息 连接将在重新连接时重新分配。

  3. JMS提供了一种将应用程序与提供数据的传输层分离的方法。通过使用所需提供程序的Java命名和目录接口(JNDI)信息,可以使用相同的Java类与不同的JMS提供程序进行通信。这些类首先使用连接工厂连接到队列或主题,然后使用填充并发送或发布消息。在接收方,客户端接收或订阅消息。

    如果您认为您想要使用 RabbitMQ for android.you可以使用它通过本地网络发送消息

    以下是您可以开始的链接 LINK