/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.wearable.delayedconfirmation; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.wearable.MessageApi; import com.google.android.gms.wearable.MessageEvent; import com.google.android.gms.wearable.Node; import com.google.android.gms.wearable.NodeApi; import com.google.android.gms.wearable.Wearable; /** * Has a single button, used to start the Wearable MainActivity. */ public class MainActivity extends Activity implements MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String TAG = "DelayedConfirmation"; private static final String START_ACTIVITY_PATH = "/start-activity"; private static final String TIMER_SELECTED_PATH = "/timer_selected"; private static final String TIMER_FINISHED_PATH = "/timer_finished"; private GoogleApiClient mGoogleApiClient; @Override public void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.main_activity); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } @Override protected void onResume() { super.onResume(); if (!mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } @Override protected void onDestroy() { if (mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } super.onDestroy(); } @Override public void onConnected(Bundle bundle) { Wearable.MessageApi.addListener(mGoogleApiClient, this); } @Override public void onConnectionSuspended(int i) { Wearable.MessageApi.removeListener(mGoogleApiClient, this); } @Override public void onMessageReceived(final MessageEvent messageEvent) { runOnUiThread(new Runnable() { @Override public void run() { if (messageEvent.getPath().equals(TIMER_SELECTED_PATH)) { Toast.makeText(getApplicationContext(), R.string.toast_timer_selected, Toast.LENGTH_SHORT).show(); } else if (messageEvent.getPath().equals(TIMER_FINISHED_PATH)) { Toast.makeText(getApplicationContext(), R.string.toast_timer_finished, Toast.LENGTH_SHORT).show(); } } }); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.e(TAG, "Failed to connect to Google Api Client with error code " + connectionResult.getErrorCode()); } /** * Sends a message to Wearable MainActivity when button is pressed. */ public void onStartWearableActivityClick(View view) { Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback( new ResultCallback() { @Override public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) { for (final Node node : getConnectedNodesResult.getNodes()) { Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), START_ACTIVITY_PATH, new byte[0]).setResultCallback( getSendMessageResultCallback()); } } }); } private ResultCallback getSendMessageResultCallback() { return new ResultCallback() { @Override public void onResult(MessageApi.SendMessageResult sendMessageResult) { if (!sendMessageResult.getStatus().isSuccess()) { Log.e(TAG, "Failed to connect to Google Api Client with status " + sendMessageResult.getStatus()); } } }; } }