Skip to content

Instantly share code, notes, and snippets.

@bananaumai
Created January 17, 2020 05:50
Show Gist options
  • Select an option

  • Save bananaumai/91fc91eb73fdca7c2469bda6a4c6ac33 to your computer and use it in GitHub Desktop.

Select an option

Save bananaumai/91fc91eb73fdca7c2469bda6a4c6ac33 to your computer and use it in GitHub Desktop.
QuickStart MODE Gateway SDK for Android
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ModeGatewayClient modeGatewayClient = initModeGateway();
Button eventButton = findViewById(R.id.event_button);
eventButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setEnabled(false);
EditText message = findViewById(R.id.message_value);
LinkedHashMap<String, Object> eventData = new LinkedHashMap<>();
eventData.put("message", message.getText().toString());
modeGatewayClient.publishEvent("test", eventData);
Toast.makeText(getApplicationContext(), "message was published", Toast.LENGTH_LONG).show();
view.setEnabled(true);
}
});
Button tsdbButton = findViewById(R.id.tsdb_button);
tsdbButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setEnabled(false);
Date now = new Date();
EditText series1 = findViewById(R.id.series1_value);
EditText series2 = findViewById(R.id.series2_value);
try {
ArrayList<SeriesData> series = new ArrayList<>();
series.add(new SeriesData("series1", Double.parseDouble(series1.getText().toString())));
series.add(new SeriesData("series2", Double.parseDouble(series2.getText().toString())));
TimeSeriesData timeSeries = new TimeSeriesData(now.getTime() * 1000 * 1000, series);
modeGatewayClient.writeTimeSeries("tsdb", timeSeries);
Toast.makeText(getApplicationContext(), "time series data was written", Toast.LENGTH_LONG).show();
} catch (NumberFormatException e) {
Toast.makeText(getApplicationContext(), "please fill in series1 and series2", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "failed to write time series data", Toast.LENGTH_SHORT).show();
Log.e(getClass().getSimpleName(), "error", e);
}
view.setEnabled(true);
}
});
Button streamButton = findViewById(R.id.stream_button);
streamButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setEnabled(false);
EditText prop1 = findViewById(R.id.prop1_value);
EditText prop2 = findViewById(R.id.prop2_value);
try {
String data = String.format("{\"prop1\": \"%s\", \"prop2\": \"%s\"}", prop1.getText(), prop2.getText());
StreamData stream = modeGatewayClient.openStream("sds");
stream.write(data.getBytes());
Toast.makeText(getApplicationContext(), "data was written to stream", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "failed to write stream data", Toast.LENGTH_SHORT).show();
Log.e(getClass().getSimpleName(), "error", e);
}
view.setEnabled(true);
}
});
}
private ModeGatewayClient initModeGateway() {
ModeDeviceConfiguration modeDeviceConfiguration
= new ModeDeviceConfiguration(BuildConfig.DEVICE_ID, BuildConfig.DEVICE_TOKEN);
ModeGateway.setCommandListener(new CommandListener() {
@Override
public void onReceiveCommand(String action, Map<String, ?> command) {
// Do Something
}
});
ModeGateway.setDeviceDataProxyListener(new DeviceDataProxyListener() {
@Override
public void onReceiveReloadedMessage(Map<String, ?> message) {
// Do something
}
@Override
public void onReceiveSetMessage(Map<String, ?> message) {
// Do something
}
@Override
public void onReceiveDeletedMessage(Map<String, ?> message) {
// Do something
}
});
ModeGateway.start(modeDeviceConfiguration, getApplicationContext());
return ModeGateway.getClient();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment