我最近正在开发一个项目,该项目需要从我的 android 移动应用程序向我的树莓派 3 上的 android 设备发送命令。如何通过 WiFi 连接实现这一点?
我只需要向设备发送一个字符串。
我最近正在开发一个项目,该项目需要从我的 android 移动应用程序向我的树莓派 3 上的 android 设备发送命令。如何通过 WiFi 连接实现这一点?
我只需要向设备发送一个字符串。
使用 Android Things,您可以使用Nearby Messages 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: 使用Google Nearby Connections API,API 选择最佳的通信方式(例如:蓝牙、Wifi...)。
见https://github.com/googlesamples/android-nearby/tree/master/connections
选项 2: 使用Socket进行通信,但您的设备需要在同一网络上。如果它们没有连接到同一个网络,您可以使用WIFI P2P连接它们。
您可以在 Android 事物上使用 nanoHttpd 以及其他库,例如 Android 设备上的改造或 volley。
查看这个通过 Http API 控制汽车的示例: https ://github.com/plattysoft/IotCar
如果您使用像 Raspbian 这样的系统,您可以将您的 Raspberry 转换为服务器。然后,您将有不同的方式来发送您的命令:
选项 1:在您的树莓派(PHP、NodeJS、JEE、...)上设置一个 Http 服务器并通过 HTTP 请求发送命令。
选项 2:在您的树莓派(Socket.io,原始套接字,...)上设置套接字服务器并通过套接字客户端发送命令
选项 3在您的 raspberry 上设置 MQTT 服务器并通过 MQTT 客户端发送命令(最后一个选项是谈论物联网时要走的路)。请注意,接收命令的程序应该实现 MQTT 客户端,因为 MQTT 是基于 pub/sub 模式的。