From 697d71f7cccee7617e1aad0fa541605aad0822d7 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Wed, 28 Sep 2016 22:11:38 -0700 Subject: Syncing latest sample prebuilts for mnc-dev. developers/build: 3c56004c2e943b3a87d99958c18950de0f89f3a7 developers/samples/android: d72f3df26721c64aa403e3b6d400cf8b99260dd1 Change-Id: Ice543fd11f2956aacfa3301bf9bdb4b1f49e9c4d --- .../ComplicationSimpleWatchFaceService.java | 119 +++++++++++++-------- 1 file changed, 73 insertions(+), 46 deletions(-) (limited to 'samples/browseable/WatchFace/Wearable/src/com.example.android.wearable.watchface/ComplicationSimpleWatchFaceService.java') diff --git a/samples/browseable/WatchFace/Wearable/src/com.example.android.wearable.watchface/ComplicationSimpleWatchFaceService.java b/samples/browseable/WatchFace/Wearable/src/com.example.android.wearable.watchface/ComplicationSimpleWatchFaceService.java index 9eca2c33b..4905293dd 100644 --- a/samples/browseable/WatchFace/Wearable/src/com.example.android.wearable.watchface/ComplicationSimpleWatchFaceService.java +++ b/samples/browseable/WatchFace/Wearable/src/com.example.android.wearable.watchface/ComplicationSimpleWatchFaceService.java @@ -18,6 +18,7 @@ package com.example.android.wearable.watchface; import android.app.PendingIntent; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -35,6 +36,7 @@ import android.os.Handler; import android.os.Message; import android.support.v7.graphics.Palette; import android.support.wearable.complications.ComplicationData; +import android.support.wearable.complications.ComplicationHelperActivity; import android.support.wearable.complications.ComplicationText; import android.support.wearable.watchface.CanvasWatchFaceService; import android.support.wearable.watchface.WatchFaceService; @@ -362,16 +364,34 @@ public class ComplicationSimpleWatchFaceService extends CanvasWatchFaceService { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "onComplicationTap()"); } + ComplicationData complicationData = mActiveComplicationDataSparseArray.get(complicationId); - if ((complicationData != null) && (complicationData.getTapAction() != null)) { - try { - complicationData.getTapAction().send(); - } catch (PendingIntent.CanceledException e) { - Log.e(TAG, "On complication tap action error " + e); + if (complicationData != null) { + + if (complicationData.getTapAction() != null) { + try { + complicationData.getTapAction().send(); + } catch (PendingIntent.CanceledException e) { + Log.e(TAG, "On complication tap action error " + e); + } + + } else if (complicationData.getType() == ComplicationData.TYPE_NO_PERMISSION) { + + // Watch face does not have permission to receive complication data, so launch + // permission request. + ComponentName componentName = new ComponentName( + getApplicationContext(), + ComplicationSimpleWatchFaceService.class); + + Intent permissionRequestIntent = + ComplicationHelperActivity.createPermissionRequestHelperIntent( + getApplicationContext(), componentName); + + startActivity(permissionRequestIntent); } - invalidate(); + } else { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "No PendingIntent for complication " + complicationId + "."); @@ -551,50 +571,57 @@ public class ComplicationSimpleWatchFaceService extends CanvasWatchFaceService { complicationData = mActiveComplicationDataSparseArray.get(COMPLICATION_IDS[i]); if ((complicationData != null) - && (complicationData.isActive(currentTimeMillis)) - && (complicationData.getType() == ComplicationData.TYPE_SHORT_TEXT)) { - - ComplicationText mainText = complicationData.getShortText(); - ComplicationText subText = complicationData.getShortTitle(); - - CharSequence complicationMessage = - mainText.getText(getApplicationContext(), currentTimeMillis); - - /* In most cases you would want the subText (Title) under the mainText (Text), - * but to keep it simple for the code lab, we are concatenating them all on one - * line. - */ - if (subText != null) { - complicationMessage = TextUtils.concat( - complicationMessage, - " ", - subText.getText(getApplicationContext(), currentTimeMillis)); - } - - //Log.d(TAG, "Comp id: " + COMPLICATION_IDS[i] + "\t" + complicationMessage); - double textWidth = - mComplicationPaint.measureText( + && (complicationData.isActive(currentTimeMillis))) { + + // Both Short Text and No Permission Types can be rendered with the same code. + // No Permission will display "--" with an Intent to launch a permission prompt. + // If you want to support more types, just add a "else if" below with your + // rendering code inside. + if (complicationData.getType() == ComplicationData.TYPE_SHORT_TEXT + || complicationData.getType() == ComplicationData.TYPE_NO_PERMISSION) { + + ComplicationText mainText = complicationData.getShortText(); + ComplicationText subText = complicationData.getShortTitle(); + + CharSequence complicationMessage = + mainText.getText(getApplicationContext(), currentTimeMillis); + + /* In most cases you would want the subText (Title) under the + * mainText (Text), but to keep it simple for the code lab, we are + * concatenating them all on one line. + */ + if (subText != null) { + complicationMessage = TextUtils.concat( complicationMessage, - 0, - complicationMessage.length()); + " ", + subText.getText(getApplicationContext(), currentTimeMillis)); + } - int complicationsX; + //Log.d(TAG, "Com id: " + COMPLICATION_IDS[i] + "\t" + complicationMessage); + double textWidth = + mComplicationPaint.measureText( + complicationMessage, + 0, + complicationMessage.length()); + + int complicationsX; + + if (COMPLICATION_IDS[i] == LEFT_DIAL_COMPLICATION) { + complicationsX = (int) ((mWidth / 2) - textWidth) / 2; + } else { + // RIGHT_DIAL_COMPLICATION calculations + int offset = (int) ((mWidth / 2) - textWidth) / 2; + complicationsX = (mWidth / 2) + offset; + } - if (COMPLICATION_IDS[i] == LEFT_DIAL_COMPLICATION) { - complicationsX = (int) ((mWidth / 2) - textWidth) / 2; - } else { - // RIGHT_DIAL_COMPLICATION calculations - int offset = (int) ((mWidth / 2) - textWidth) / 2; - complicationsX = (mWidth / 2) + offset; + canvas.drawText( + complicationMessage, + 0, + complicationMessage.length(), + complicationsX, + mComplicationsY, + mComplicationPaint); } - - canvas.drawText( - complicationMessage, - 0, - complicationMessage.length(), - complicationsX, - mComplicationsY, - mComplicationPaint); } } } -- cgit v1.2.3