package wearable.android.zaim.net.services; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.util.Log; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.wearable.Wearable; import java.util.concurrent.TimeUnit; import wearable.android.zaim.net.common.utils.Base64Utils; import wearable.android.zaim.net.events.BusProvider; import wearable.android.zaim.net.events.FailurePaymentEvent; import wearable.android.zaim.net.events.SuccessPaymentEvent; public class CreatePaymentService extends IntentService { private static final String TAG = CreatePaymentService.class.getSimpleName(); public static final String KEY_PAYMENT = "payment"; private static final String REQUEST_PATH = "/payment/request"; private static final String RESET_PATH = "/payment/reset"; private static final int CONNECT_TIMEOUT_MS = 100; public CreatePaymentService() { super(TAG); } public static Intent createIntent(Context context, String payment) { Intent intent = new Intent(context, CreatePaymentService.class); intent.putExtra(KEY_PAYMENT, payment); return intent; } @Override public void onHandleIntent(Intent intent) { GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .build(); ConnectionResult result = googleApiClient.blockingConnect(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS); if (!result.isSuccess()) { Log.e(TAG, "Failed to connect to GoogleApiClient."); BusProvider.getInstance().post(new FailurePaymentEvent()); return; } String payment = intent.getStringExtra(KEY_PAYMENT); Wearable.MessageApi.sendMessage(googleApiClient, REQUEST_PATH, RESET_PATH, Base64Utils.encode(payment)); BusProvider.getInstance().post(new SuccessPaymentEvent()); } }