android.support.wearable.complications.ComplicationData Java Examples

The following examples show how to use android.support.wearable.complications.ComplicationData. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: CobDetailedComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {

            Pair<String, String> cob = DisplayFormat.detailedCob(raw);
            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(cob.first))
                    .setTapAction(complicationPendingIntent);

            if (cob.second.length() > 0) {
                builder.setShortTitle(ComplicationText.plainText(cob.second));
            }

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #2
Source File: BrCobIobComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
            final String cob = new SmallestDoubleString(raw.sCOB2, SmallestDoubleString.Units.USE).minimise(MIN_FIELD_LEN_COB);
            final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(Math.max(MIN_FIELD_LEN_IOB, (MAX_FIELD_LEN_SHORT -1) - cob.length()));

            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(DisplayFormat.basalRateSymbol()+raw.sBasalRate))
                    .setShortTitle(ComplicationText.plainText(cob + " " + iob))
                    .setTapAction(complicationPendingIntent);

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #3
Source File: IobIconComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
            final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(MAX_FIELD_LEN_SHORT);

            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(iob))
                    .setIcon(Icon.createWithResource(
                            this, R.drawable.ic_ins))
                    .setBurnInProtectionIcon(
                            Icon.createWithResource(
                                    this, R.drawable.ic_ins_burnin))
                    .setTapAction(complicationPendingIntent);

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #4
Source File: SgvComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        switch (dataType) {
            case ComplicationData.TYPE_SHORT_TEXT:
                final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                        .setShortText(ComplicationText.plainText(raw.sSgv + raw.sDirection))
                        .setShortTitle(ComplicationText.plainText(DisplayFormat.shortTrend(raw)))
                        .setTapAction(complicationPendingIntent);

                complicationData = builder.build();
                break;
            default:
                if (Log.isLoggable(TAG, Log.WARN)) {
                    Log.w(TAG, "Unexpected complication type " + dataType);
                }
        }
        return complicationData;
    }
 
Example #5
Source File: LongStatusFlippedComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        switch (dataType) {
            case ComplicationData.TYPE_LONG_TEXT:

                final String glucoseLine = DisplayFormat.longGlucoseLine(raw);
                final String detailsLine = DisplayFormat.longDetailsLine(raw);

                final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
                        .setLongTitle(ComplicationText.plainText(detailsLine))
                        .setLongText(ComplicationText.plainText(glucoseLine))
                        .setTapAction(complicationPendingIntent);
                complicationData = builderLong.build();

                break;
            default:
                if (Log.isLoggable(TAG, Log.WARN)) {
                    Log.w(TAG, "Unexpected complication type " + dataType);
                }
        }
        return complicationData;
    }
 
Example #6
Source File: IobDetailedComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {

            Pair<String, String> iob = DisplayFormat.detailedIob(raw);
            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(iob.first))
                    .setTapAction(complicationPendingIntent);

            if (iob.second.length() > 0) {
                builder.setShortTitle(ComplicationText.plainText(iob.second));
            }

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #7
Source File: LongStatusComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        switch (dataType) {
            case ComplicationData.TYPE_LONG_TEXT:

                final String glucoseLine = DisplayFormat.longGlucoseLine(raw);
                final String detailsLine = DisplayFormat.longDetailsLine(raw);

                final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
                        .setLongTitle(ComplicationText.plainText(glucoseLine))
                        .setLongText(ComplicationText.plainText(detailsLine))
                        .setTapAction(complicationPendingIntent);
                complicationData = builderLong.build();

                break;
            default:
                if (Log.isLoggable(TAG, Log.WARN)) {
                    Log.w(TAG, "Unexpected complication type " + dataType);
                }
        }
        return complicationData;
    }
 
Example #8
Source File: CobIobComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
            final String cob = raw.sCOB2;
            final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(MAX_FIELD_LEN_SHORT);

            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(cob))
                    .setShortTitle(ComplicationText.plainText(iob))
                    .setTapAction(complicationPendingIntent);

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #9
Source File: CobIconComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 6 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                    .setShortText(ComplicationText.plainText(raw.sCOB2))
                    .setIcon(
                            Icon.createWithResource(
                                    this, R.drawable.ic_carbs))
                    .setBurnInProtectionIcon(
                            Icon.createWithResource(
                                    this, R.drawable.ic_carbs))
                    .setTapAction(complicationPendingIntent);

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #10
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #11
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #12
Source File: AnalogComplicationWatchFaceService.java    From wear-os-samples with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #13
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #14
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #15
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #16
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private void onComplicationTap(int complicationId) {
    // TODO: Step 5, onComplicationTap()
    Log.d(TAG, "onComplicationTap()");

    ComplicationData complicationData =
            mActiveComplicationDataSparseArray.get(complicationId);

    if (complicationData != null) {

        if (complicationData.getTapAction() != null) {
            try {
                complicationData.getTapAction().send();
            } catch (PendingIntent.CanceledException e) {
                Log.e(TAG, "onComplicationTap() 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(),
                    ComplicationWatchFaceService.class);

            Intent permissionRequestIntent =
                    ComplicationHelperActivity.createPermissionRequestHelperIntent(
                            getApplicationContext(), componentName);

            startActivity(permissionRequestIntent);
        }

    } else {
        Log.d(TAG, "No PendingIntent for complication " + complicationId + ".");
    }
}
 
Example #17
Source File: WallpaperComplication.java    From AndroidAPS with GNU Affero General Public License v3.0 5 votes vote down vote up
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {

        ComplicationData complicationData = null;

        if (dataType == ComplicationData.TYPE_LARGE_IMAGE) {

            DisplayMetrics metrics = new DisplayMetrics();
            WindowManager windowManager = (WindowManager) aaps.getAppContext()
                    .getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);
            int width = metrics.widthPixels;
            int height = metrics.heightPixels;

            final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_LARGE_IMAGE);

            AssetManager assetManager = getAssets();
            try (InputStream istr = assetManager.open(getWallpaperAssetsFileName())) {
                    Bitmap bitmap = BitmapFactory.decodeStream(istr);
                    Bitmap scaled = Bitmap.createScaledBitmap(bitmap, width, height, true);
                    builder.setLargeImage(Icon.createWithBitmap(scaled));
            } catch (IOException e) {
                Log.e(TAG, "Cannot read wallpaper asset: "+e.getMessage(), e);
            }

            complicationData = builder.build();
        } else {
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
        }
        return complicationData;
    }
 
Example #18
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #19
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #20
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #21
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #22
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private int getTappedComplicationId(int x, int y) {

            int complicationId;
            ComplicationData complicationData;
            ComplicationDrawable complicationDrawable;

            long currentTimeMillis = System.currentTimeMillis();

            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
                complicationId = COMPLICATION_IDS[i];
                complicationData = mActiveComplicationDataSparseArray.get(complicationId);

                if ((complicationData != null)
                        && (complicationData.isActive(currentTimeMillis))
                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {

                    complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);
                    Rect complicationBoundingRect = complicationDrawable.getBounds();

                    if (complicationBoundingRect.width() > 0) {
                        if (complicationBoundingRect.contains(x, y)) {
                            return complicationId;
                        }
                    } else {
                        Log.e(TAG, "Not a recognized complication id.");
                    }
                }
            }
            return -1;
        }
 
Example #23
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
@Override
public void onComplicationDataUpdate(
        int complicationId, ComplicationData complicationData) {
    Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);

    // Adds/updates active complication data in the array.
    mActiveComplicationDataSparseArray.put(complicationId, complicationData);

    // Updates correct ComplicationDrawable with updated data.
    ComplicationDrawable complicationDrawable =
            mComplicationDrawableSparseArray.get(complicationId);
    complicationDrawable.setComplicationData(complicationData);

    invalidate();
}
 
Example #24
Source File: ComplicationWatchFaceService.java    From complications with Apache License 2.0 5 votes vote down vote up
private void onComplicationTap(int complicationId) {
    // TODO: Step 5, onComplicationTap()
    Log.d(TAG, "onComplicationTap()");

    ComplicationData complicationData =
            mActiveComplicationDataSparseArray.get(complicationId);

    if (complicationData != null) {

        if (complicationData.getTapAction() != null) {
            try {
                complicationData.getTapAction().send();
            } catch (PendingIntent.CanceledException e) {
                Log.e(TAG, "onComplicationTap() 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(), ComplicationWatchFaceService.class);

            Intent permissionRequestIntent =
                    ComplicationHelperActivity.createPermissionRequestHelperIntent(
                            getApplicationContext(), componentName);

            startActivity(permissionRequestIntent);
        }

    } else {
        Log.d(TAG, "No PendingIntent for complication " + complicationId + ".");
    }
}
 
Example #25
Source File: PixelWatchFace.java    From PixelWatchFace with GNU General Public License v3.0 5 votes vote down vote up
@Override
    public void onComplicationDataUpdate(int watchFaceComplicationId, ComplicationData data) {
      String TAG = "onComplicationDataUpdate";
      //Log.d(TAG, watchFaceComplicationId + ", type: " + data.getType());
      if (watchFaceComplicationId == BATTERY_COMPLICATION_ID) {
        mBatteryLevel = (int) data.getValue();
        invalidate();
      }

//      if (watchFaceComplicationId == WEATHER_COMPLICATION_ID) {
//
//        mCurrentWeather.setIconBitmap(Bitmap
//              .createScaledBitmap(drawableToBitmap(data.getIcon().loadDrawable(getApplicationContext())), 34, 34, false));
//          invalidate();
//      }

//      switch (data.getType()){
//        case ComplicationData.TYPE_RANGED_VALUE:
//          Log.d(TAG, "max " + data.getMaxValue() + " current " + data.getValue());
//          break;
//        case ComplicationData.TYPE_SHORT_TEXT:
//          Log.d(TAG, "data: " + data.getShortText().getText(getApplicationContext(), System.currentTimeMillis()).toString());
//          mCurrentWeather.setIconBitmap(Bitmap
//              .createScaledBitmap(drawableToBitmap(data.getIcon().loadDrawable(getApplicationContext())), 34, 34, false));
//          invalidate();
//          break;
//        case ComplicationData.TYPE_LONG_TEXT:
//          Log.d(TAG, data.getLongText().getText(getApplicationContext(), System.currentTimeMillis()).toString());
//          break;
//          case ComplicationData.TYPE_ICON:
//            Log.d(TAG, "icon time yeet");
//            mCurrentWeather.setIconBitmap(Bitmap
//                .createScaledBitmap(drawableToBitmap(data.getIcon().loadDrawable(getApplicationContext())), 34, 34, false));
//            invalidate();
//            break;
//      }

    }
 
Example #26
Source File: IncrementingNumberComplicationProviderService.java    From wear-os-samples with Apache License 2.0 4 votes vote down vote up
@Override
public void onComplicationUpdate(
        int complicationId, int dataType, ComplicationManager complicationManager) {
    Log.d(TAG, "onComplicationUpdate() id: " + complicationId);

    // Create Tap Action so that the user can trigger an update by tapping the complication.
    ComponentName thisProvider = new ComponentName(this, getClass());
    // We pass the complication id, so we can only update the specific complication tapped.
    PendingIntent complicationTogglePendingIntent =
            ComplicationToggleReceiver.getToggleIntent(this, thisProvider, complicationId);

    // Retrieves your data, in this case, we grab an incrementing number from SharedPrefs.
    SharedPreferences preferences =
            getSharedPreferences(
                    ComplicationToggleReceiver.COMPLICATION_PROVIDER_PREFERENCES_FILE_KEY, 0);
    int number =
            preferences.getInt(
                    ComplicationToggleReceiver.getPreferenceKey(thisProvider, complicationId),
                    0);
    String numberText = String.format(Locale.getDefault(), "%d!", number);

    ComplicationData complicationData = null;

    switch (dataType) {
        case ComplicationData.TYPE_RANGED_VALUE:
            complicationData =
                    new ComplicationData.Builder(ComplicationData.TYPE_RANGED_VALUE)
                            .setValue(number)
                            .setMinValue(0)
                            .setMaxValue(ComplicationToggleReceiver.MAX_NUMBER)
                            .setShortText(ComplicationText.plainText(numberText))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case ComplicationData.TYPE_SHORT_TEXT:
            complicationData =
                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
                            .setShortText(ComplicationText.plainText(numberText))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case ComplicationData.TYPE_LONG_TEXT:
            complicationData =
                    new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
                            .setLongText(ComplicationText.plainText("Number: " + numberText))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        default:
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
    }

    if (complicationData != null) {
        complicationManager.updateComplicationData(complicationId, complicationData);

    } else {
        // If no data is sent, we still need to inform the ComplicationManager, so the update
        // job can finish and the wake lock isn't held any longer than necessary.
        complicationManager.noUpdateRequired(complicationId);
    }
}
 
Example #27
Source File: SmallImageProviderService.java    From wear-os-samples with Apache License 2.0 4 votes vote down vote up
@Override
public void onComplicationUpdate(int complicationId, int type, ComplicationManager manager) {
    if (type != ComplicationData.TYPE_SMALL_IMAGE) {
        manager.noUpdateRequired(complicationId);
        return;
    }

    ComponentName thisProvider = new ComponentName(this, getClass());
    PendingIntent complicationTogglePendingIntent =
            ComplicationToggleReceiver.getToggleIntent(this, thisProvider, complicationId);

    SharedPreferences preferences =
            getSharedPreferences(ComplicationToggleReceiver.PREFERENCES_NAME, 0);
    int state =
            preferences.getInt(
                    ComplicationToggleReceiver.getPreferenceKey(thisProvider, complicationId),
                    0);

    ComplicationData data = null;
    switch (state % 2) {
        case 0:
            // An image using IMAGE_STYLE_PHOTO may be cropped to fill the space given to it.
            data =
                    new ComplicationData.Builder(type)
                            .setSmallImage(Icon.createWithResource(this, R.drawable.aquarium))
                            .setImageStyle(ComplicationData.IMAGE_STYLE_PHOTO)
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 1:
            // An image using IMAGE_STYLE_ICON must not be cropped, and should fit within the
            // space given to it.
            data =
                    new ComplicationData.Builder(type)
                            .setSmallImage(
                                    Icon.createWithResource(this, R.drawable.ic_launcher))
                            .setImageStyle(ComplicationData.IMAGE_STYLE_ICON)
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
    }
    manager.updateComplicationData(complicationId, data);
}
 
Example #28
Source File: BaseComplicationProviderService.java    From AndroidAPS with GNU Affero General Public License v3.0 4 votes vote down vote up
public ComplicationData buildOutdatedComplicationData(int dataType,
                                                      RawDisplayData raw,
                                                      PendingIntent complicationPendingIntent,
                                                      PendingIntent exceptionalPendingIntent,
                                                      long since) {

    final ComplicationData.Builder builder = new ComplicationData.Builder(dataType);
    if (dataType != ComplicationData.TYPE_LARGE_IMAGE) {
        builder.setIcon(Icon.createWithResource(this, R.drawable.ic_alert));
        builder.setBurnInProtectionIcon(Icon.createWithResource(this, R.drawable.ic_alert_burnin));
    }

    if (dataType ==  ComplicationData.TYPE_RANGED_VALUE) {
        builder.setMinValue(0);
        builder.setMaxValue(100);
        builder.setValue(0);
    }

    switch (dataType) {
        case ComplicationData.TYPE_ICON:
        case ComplicationData.TYPE_SHORT_TEXT:
        case ComplicationData.TYPE_RANGED_VALUE:
            if (since > 0) {
                builder.setShortText(ComplicationText.plainText(DisplayFormat.shortTimeSince(since) + " old"));
            } else {
                builder.setShortText(ComplicationText.plainText("!old!"));
            }
            break;
        case ComplicationData.TYPE_LONG_TEXT:
            builder.setLongTitle(ComplicationText.plainText(aaps.gs(R.string.label_warning_old)));
            if (since > 0) {
                builder.setLongText(ComplicationText.plainText(String.format(aaps.gs(R.string.label_warning_since), DisplayFormat.shortTimeSince(since))));
            } else {
                builder.setLongText(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync_aaps)));
            }
            break;
        case ComplicationData.TYPE_LARGE_IMAGE:
            return buildComplicationData(dataType, raw, complicationPendingIntent);
        default:
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
            break;
    }

    builder.setTapAction(exceptionalPendingIntent);
    return builder.build();
}
 
Example #29
Source File: BaseComplicationProviderService.java    From AndroidAPS with GNU Affero General Public License v3.0 4 votes vote down vote up
public ComplicationData buildNoSyncComplicationData(int dataType,
                                                    RawDisplayData raw,
                                                    PendingIntent complicationPendingIntent,
                                                    PendingIntent exceptionalPendingIntent,
                                                    long since) {


    final ComplicationData.Builder builder = new ComplicationData.Builder(dataType);
    if (dataType != ComplicationData.TYPE_LARGE_IMAGE) {
        builder.setIcon(Icon.createWithResource(this, R.drawable.ic_sync_alert));
    }

    if (dataType ==  ComplicationData.TYPE_RANGED_VALUE) {
        builder.setMinValue(0);
        builder.setMaxValue(100);
        builder.setValue(0);
    }

    switch (dataType) {
        case ComplicationData.TYPE_ICON:
        case ComplicationData.TYPE_SHORT_TEXT:
        case ComplicationData.TYPE_RANGED_VALUE:
            if (since > 0) {
                builder.setShortText(ComplicationText.plainText(DisplayFormat.shortTimeSince(since) + " old"));
            } else {
                builder.setShortText(ComplicationText.plainText("!err!"));
            }
            break;
        case ComplicationData.TYPE_LONG_TEXT:
            builder.setLongTitle(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync)));
            if (since > 0) {
                builder.setLongText(ComplicationText.plainText(String.format(aaps.gs(R.string.label_warning_since), DisplayFormat.shortTimeSince(since))));
            } else {
                builder.setLongText(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync_aaps)));
            }
            break;
        case ComplicationData.TYPE_LARGE_IMAGE:
            return buildComplicationData(dataType, raw, complicationPendingIntent);
        default:
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(TAG, "Unexpected complication type " + dataType);
            }
            break;
    }

    builder.setTapAction(exceptionalPendingIntent);
    return builder.build();
}
 
Example #30
Source File: RangedValueProviderService.java    From wear-os-samples with Apache License 2.0 4 votes vote down vote up
@Override
public void onComplicationUpdate(int complicationId, int type, ComplicationManager manager) {
    if (type != ComplicationData.TYPE_RANGED_VALUE) {
        manager.noUpdateRequired(complicationId);
        return;
    }

    ComponentName thisProvider = new ComponentName(this, getClass());
    PendingIntent complicationTogglePendingIntent =
            ComplicationToggleReceiver.getToggleIntent(this, thisProvider, complicationId);

    SharedPreferences preferences =
            getSharedPreferences(ComplicationToggleReceiver.PREFERENCES_NAME, 0);
    int state =
            preferences.getInt(
                    ComplicationToggleReceiver.getPreferenceKey(thisProvider, complicationId),
                    0);

    ComplicationData data = null;

    int caseValue = state % 4;
    float minValue = MIN_VALUES[caseValue];
    float maxValue = MAX_VALUES[caseValue];
    float value = (float) Math.random() * (maxValue - minValue) + minValue;

    switch (caseValue) {
        case 0:
            data =
                    new ComplicationData.Builder(type)
                            .setMinValue(minValue)
                            .setMaxValue(maxValue)
                            .setValue(value)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_only)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 1:
            data =
                    new ComplicationData.Builder(type)
                            .setMinValue(minValue)
                            .setMaxValue(maxValue)
                            .setValue(value)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_with_icon)))
                            .setIcon(Icon.createWithResource(this, R.drawable.ic_battery))
                            .setBurnInProtectionIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_battery_burn_protect))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 2:
            data =
                    new ComplicationData.Builder(type)
                            .setMinValue(minValue)
                            .setMaxValue(maxValue)
                            .setValue(value)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_with_title)))
                            .setShortTitle(
                                    ComplicationText.plainText(getString(R.string.short_title)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 3:
            data =
                    new ComplicationData.Builder(type)
                            .setMinValue(minValue)
                            .setMaxValue(maxValue)
                            .setValue(value)
                            .setIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_event_vd_theme_24))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
    }
    manager.updateComplicationData(complicationId, data);
}