Class IotCoreClient
- java.lang.Object
-
- com.google.android.things.iotcore.IotCoreClient
-
public class IotCoreClient extends Object
IotCoreClient manages interactions with Google Cloud IoT Core for a single device.This class provides mechanisms for using Cloud IoT Core's main features. Namely
- Publishing device telemetry
- Publishing device state
- Receiving configuration changes
Create a new IotCoreClient using the
IotCoreClient.Builder
, and callconnect()
to initialize the client connection. When you no longer need to send and receive data, calldisconnect()
to close the connection and free up resources.Track the current connection using
isConnected()
or register aConnectionCallback
to listen for changes in the client's conn, and publish data to CloudPublish data to Cloud IoT Core using
publishTelemetry(TelemetryEvent)
andpublishDeviceState(byte[])
. These methods can be used regardless of the client's connection state. If the client is connected, messages are published immediately. Otherwise, if the client is disconnected, messages are stored in memory and sent when the connection is reestablished.Register an
OnConfigurationListener
with the client to receive device configuration changes from Cloud IoT Core.IotCoreClient iotCoreClient = new IotCoreClient.Builder() .setConnectionParams(connectionParams) .setKeyPair(keyPair); .setOnConfigurationListener(onConfigurationListener) .setConnectionCallback(connectionCallback) .build(); iotCoreClient.connect(); iotCoreClient.publishDeviceState("Hello world!".getBytes());
While disconnected, the client queues all messages for delivery when the connection is restored. To customize the behavior of the offline message queue, call
IotCoreClient.Builder.setTelemetryQueue(Queue)
with a queue implementation suited to your application. If no queue implementation is provided, the default queue implementation is a queue that stores up to 1000 telemetry events and drops events from the head of the queue when messages are inserted beyond the maximum capacity.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static class
IotCoreClient.Builder
Constructs IotCoreClient instances.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description void
connect()
Connect to Cloud IoT Core and perform any other required set up.void
disconnect()
Disconnect the client from Cloud IoT Core.boolean
isConnected()
Returns true if connected to Cloud IoT Core, and returns false otherwise.void
publishDeviceState(byte[] state)
Publishes state data to Cloud IoT Core.boolean
publishTelemetry(TelemetryEvent event)
Add a telemetry event to this client's telemetry queue, if it is possible to do so without violating the telemetry queue's capacity restrictions, and publish the event to Cloud IoT Core as soon as possible.
-
-
-
Method Detail
-
connect
public void connect()
Connect to Cloud IoT Core and perform any other required set up.If the client registered a
ConnectionCallback
,ConnectionCallback.onConnected()
will be called when the connection with Cloud IoT Core is established. If the IotCoreClient ever disconnects from Cloud IoT Core after this method is called, it will automatically reestablish the connection unlessdisconnect()
is called.This method is non-blocking.
-
isConnected
public boolean isConnected()
Returns true if connected to Cloud IoT Core, and returns false otherwise.- Returns:
- whether the client is connection to Cloud IoT Core
-
disconnect
public void disconnect()
Disconnect the client from Cloud IoT Core.This method is non-blocking.
-
publishTelemetry
public boolean publishTelemetry(@NonNull TelemetryEvent event)
Add a telemetry event to this client's telemetry queue, if it is possible to do so without violating the telemetry queue's capacity restrictions, and publish the event to Cloud IoT Core as soon as possible.This method is non-blocking.
- Parameters:
event
- the telemetry event to publish- Returns:
- Returns true if the event was queued to send, or return false if the event could not be queued
-
publishDeviceState
public void publishDeviceState(byte[] state)
Publishes state data to Cloud IoT Core.If the connection to Cloud IoT Core is lost and messages cannot be published to Cloud IoT Core, device state is published to Cloud IoT Core before any unpublished telemetry events when the connection is reestablished.
If there are multiple attempts to publish device state while disconnected from Cloud IoT Core, only the newest device state will be published when the connection is reestablished.
This method is non-blocking, and state is published using "at least once" semantics.
Cloud IoT Core limits the number of device state updates per device to 1 per second. If clients of this library attempt to publish device state faster than that, some device state data may be lost when Cloud IoT Core resets the connection. The Cloud IoT Core documentation has more information about quotas and usage restrictions.
- Parameters:
state
- the device state data to publish
-
-