package com.mercandalli.android.apps.files;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.Wearable;
import com.google.android.gms.wearable.WearableListenerService;
import com.mercandalli.android.apps.files.shared.SharedAudioData;
import com.mercandalli.android.apps.files.shared.SharedAudioPlayerUtils;
import com.mercandalli.android.library.base.java.StringUtils;
import java.util.concurrent.TimeUnit;
/**
* The listener to communicate with the phone or tablet.
*/
public class WearableService extends WearableListenerService {
public static final long CONNECTION_TIME_OUT_MS = 5000;
public static void sendPhoneAudioData(
final GoogleApiClient client,
final String telNodeId,
final SharedAudioData sharedAudioData) {
if (telNodeId != null) {
new Thread(new Runnable() {
@Override
public void run() {
client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
Wearable.MessageApi.sendMessage(client, telNodeId,
"/prefix",
SharedAudioPlayerUtils.sendTrackData(sharedAudioData).getBytes());
client.disconnect();
}
}).start();
}
}
/**
* Ask to Phone/Tablet to be notified. Then will call {@link #onMessageReceived(MessageEvent)} if
* the Phone/Tablet is connected.
*
* @param client The {@link GoogleApiClient}.
* @param telNodeId The Phone/Tablet id.
*/
public static void askPhoneToBeNotified(final GoogleApiClient client, final String telNodeId) {
if (telNodeId != null) {
new Thread(new Runnable() {
@Override
public void run() {
client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
Wearable.MessageApi.sendMessage(client, telNodeId,
"/prefix",
null);
client.disconnect();
}
}).start();
}
}
@Override
public void onMessageReceived(final MessageEvent messageEvent) {
forwardMessageToActivity(
messageEvent.getPath(),
StringUtils.byteArrayToString(messageEvent.getData()));
}
/**
* Broadcast message to wearable activity.
*
* @param message The message.
*/
private void forwardMessageToActivity(final String path, final String message) {
final Intent messageIntent = new Intent();
messageIntent.setAction(Intent.ACTION_SEND);
messageIntent.putExtra("message", message);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
}
}