我最近正在从事一个项目,该项目需要从我的android移动应用向我的raspberry pi 3上的android设备发送命令。如何通过WiFi连接实现这一目标?
我只需要向设备发送一个字符串。
答案 0 :(得分:2)
使用Android Things,您可以使用Nearby Messages API,该API使您能够在其应用内的两个Android设备之间进行通讯并在其之间传输消息。这是一个代码段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
Log.d(TAG, "Found message: " + new String(message.getContent()));
}
@Override
public void onLost(Message message) {
Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
}
}
mMessage = new Message("Hello World".getBytes());
}
@Override
public void onStart() {
super.onStart();
...
Nearby.getMessagesClient(this).publish(mMessage);
Nearby.getMessagesClient(this).subscribe(mMessageListener);
}
@Override
public void onStop() {
Nearby.getMessagesClient(this).unpublish(mMessage);
Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
...
super.onStop();
}
答案 1 :(得分:2)
如果您的设备之一未连接到Internet,则可以:
选项1: 使用Google Nearby Connections API,API将选择最佳的通信方式(例如:Bluetooth,Wifi ...)。
请参见https://github.com/googlesamples/android-nearby/tree/master/connections
选项2: 使用Socket进行通信,但您的设备必须位于同一网络上。如果它们未连接到同一网络,则可以使用WIFI P2P将它们连接。
答案 2 :(得分:1)
如果使用Raspbian之类的系统,则可以将Raspberry转换为服务器。然后,您将有不同的发送命令的方式:
选项1:在树莓派上设置Http服务器(PHP,NodeJS,JEE等),并通过HTTP请求发送命令。
选项2:在树莓派上设置Socket服务器(Socket.io,原始套接字等),并通过套接字客户端发送命令
选项3 在树莓派上设置MQTT服务器并通过MQTT客户端发送命令(这是谈论物联网时的最后选择)。请注意,接收命令的程序应将MQTT客户端实现为MQTT,这是基于发布/订阅模式的。
答案 3 :(得分:1)
您可以在Android设备上使用nanoHttpd,并在Android设备上使用其他库,例如翻新或凌空。
查看以下示例以通过Http API控制汽车:https://github.com/plattysoft/IotCar