从Android设备向Android事物发送命令

时间:2018-08-01 06:41:18

标签: java android networking iot android-things

我最近正在从事一个项目,该项目需要从我的android移动应用向我的raspberry pi 3上的android设备发送命令。如何通过WiFi连接实现这一目标?

我只需要向设备发送一个字符串。

4 个答案:

答案 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