blob: a9825a5da5a130237e7c8e214c34f236ed3b5400 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.android.apps.reader;
import android.app.Activity;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.util.Log;
import android.widget.Button;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.wearable.Node;
import com.google.android.gms.wearable.NodeApi;
import com.google.android.gms.wearable.Wearable;
import java.nio.charset.StandardCharsets;
public class PageControlActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = PageControlActivity.class.getSimpleName();
private GoogleApiClient mGoogleApiClient;
private Button mButtonToggle;
private Button mButtonPrev;
private Button mButtonNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_control);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(s -> {
mButtonToggle = (Button) s.findViewById(R.id.button_toggle_link);
mButtonToggle.setOnClickListener(
v -> sendMessageToAllNodes(PageControlMessage.TOGGLE_LINK));
mButtonPrev = (Button) s.findViewById(R.id.button_prev);
mButtonPrev.setOnClickListener(
v -> sendMessageToAllNodes(PageControlMessage.PREV_PAGE));
mButtonNext = (Button) s.findViewById(R.id.button_next);
mButtonNext.setOnClickListener(
v -> sendMessageToAllNodes(PageControlMessage.NEXT_PAGE));
});
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
@Override
protected void onResume() {
super.onResume();
mGoogleApiClient.connect();
}
@Override
protected void onPause() {
super.onPause();
mGoogleApiClient.disconnect();
}
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "onConnected(): Successfully connected to Google API client");
}
@Override
public void onConnectionSuspended(int cause) {
Log.i(TAG, "onConnectionSuspended(): Connection to Google API client was suspended");
}
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i(TAG, "onConnectionFailed(): Failed to connect, with result: " + result);
}
private boolean sendMessageToAllNodes(final String message) {
PendingResult<NodeApi.GetConnectedNodesResult> pendingResult =
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient);
pendingResult.setResultCallback(result -> {
for (Node node : result.getNodes()) {
Wearable.MessageApi.sendMessage(
mGoogleApiClient,
node.getId(),
PageControlMessage.PATH,
message.getBytes(StandardCharsets.UTF_8));
}
});
return true;
}
}