Java Code Examples for android.support.wearable.complications.ComplicationData#Builder

The following examples show how to use android.support.wearable.complications.ComplicationData#Builder . 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: 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 2
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 3
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 4
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 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: 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 7
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 8
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 9
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 10
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 11
Source File: CustomComplicationProviderService.java    From xDrip with GNU General Public License v3.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.
    final ComponentName thisProvider = new ComponentName(this, getClass());
    // We pass the complication id, so we can only update the specific complication tapped.
    final PendingIntent complicationPendingIntent =
            ComplicationTapBroadcastReceiver.getToggleIntent(
                    this, thisProvider, complicationId);

    String numberText = "";
    BgReading bgReading = BgReading.last(true);
    if ((bgReading == null) || (JoH.msSince(bgReading.timestamp) >= FRESH_MS)) {
        try {
            ActiveAndroid.clearCache(); // we may be in another process!
        } catch (Exception e) {
            Log.d(TAG, "Couldn't clear cache: " + e);
        }
        bgReading = BgReading.last(true);
    }

    boolean is_stale = false;

    if (bgReading == null) {
        numberText = "null";
    } else {
        if (JoH.msSince(bgReading.timestamp) < STALE_MS) {
            numberText = bgReading.displayValue(this) + " " + bgReading.displaySlopeArrow();
        } else {
            numberText = "old " + niceTimeSinceBgReading(bgReading);
            is_stale = true;
        }
    }

    Log.d(TAG, "Returning complication text: " + numberText);

    COMPLICATION_STATE state = COMPLICATION_STATE.get_enum((int) PersistentStore.getLong(ComplicationTapBroadcastReceiver.COMPLICATION_STORE));
    if (state == null) state = COMPLICATION_STATE.DELTA;

    ComplicationData complicationData = null;

    switch (dataType) {
        case ComplicationData.TYPE_SHORT_TEXT:

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

            UserError.Log.d(TAG, "TYPE_SHORT_TEXT Current complication state:" + state);
            switch (state) {
                case DELTA:
                    builder.setShortTitle(ComplicationText.plainText(getDeltaText(bgReading, is_stale)));
                    break;
                case AGO:
                    builder.setShortTitle(ComplicationText.plainText(niceTimeSinceBgReading(bgReading)));
                    break;
                default:
                    builder.setShortTitle(ComplicationText.plainText("ERR!"));
            }

            complicationData = builder.build();
            break;
        case ComplicationData.TYPE_LONG_TEXT:
            String numberTextLong = numberText + " " + getDeltaText(bgReading, is_stale) + " (" + niceTimeSinceBgReading(bgReading) + ")";
            Log.d(TAG, "Returning complication text Long: " + numberTextLong);

            //Loop status by @gregorybel
            String externalStatusString = PersistentStore.getString("remote-status-string");
            Log.d(TAG, "Returning complication status: " + externalStatusString);

            final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
                    .setLongTitle(ComplicationText.plainText(numberTextLong))
                    .setLongText(ComplicationText.plainText(externalStatusString))
                    .setTapAction(complicationPendingIntent);

            UserError.Log.d(TAG, "TYPE_LONG_TEXT Current complication state:" + state);
            complicationData = builderLong.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 12
Source File: CustomComplicationProviderService.java    From xDrip-plus with GNU General Public License v3.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.
    final ComponentName thisProvider = new ComponentName(this, getClass());
    // We pass the complication id, so we can only update the specific complication tapped.
    final PendingIntent complicationPendingIntent =
            ComplicationTapBroadcastReceiver.getToggleIntent(
                    this, thisProvider, complicationId);

    String numberText = "";
    BgReading bgReading = BgReading.last(true);
    if ((bgReading == null) || (JoH.msSince(bgReading.timestamp) >= FRESH_MS)) {
        try {
            ActiveAndroid.clearCache(); // we may be in another process!
        } catch (Exception e) {
            Log.d(TAG, "Couldn't clear cache: " + e);
        }
        bgReading = BgReading.last(true);
    }

    boolean is_stale = false;

    if (bgReading == null) {
        numberText = "null";
    } else {
        if (JoH.msSince(bgReading.timestamp) < STALE_MS) {
            numberText = bgReading.displayValue(this) + " " + bgReading.displaySlopeArrow();
        } else {
            numberText = "old " + niceTimeSinceBgReading(bgReading);
            is_stale = true;
        }
    }

    Log.d(TAG, "Returning complication text: " + numberText);

    COMPLICATION_STATE state = COMPLICATION_STATE.get_enum((int) PersistentStore.getLong(ComplicationTapBroadcastReceiver.COMPLICATION_STORE));
    if (state == null) state = COMPLICATION_STATE.DELTA;

    ComplicationData complicationData = null;

    switch (dataType) {
        case ComplicationData.TYPE_SHORT_TEXT:

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

            UserError.Log.d(TAG, "TYPE_SHORT_TEXT Current complication state:" + state);
            switch (state) {
                case DELTA:
                    builder.setShortTitle(ComplicationText.plainText(getDeltaText(bgReading, is_stale)));
                    break;
                case AGO:
                    builder.setShortTitle(ComplicationText.plainText(niceTimeSinceBgReading(bgReading)));
                    break;
                default:
                    builder.setShortTitle(ComplicationText.plainText("ERR!"));
            }

            complicationData = builder.build();
            break;
        case ComplicationData.TYPE_LONG_TEXT:
            String numberTextLong = numberText + " " + getDeltaText(bgReading, is_stale) + " (" + niceTimeSinceBgReading(bgReading) + ")";
            Log.d(TAG, "Returning complication text Long: " + numberTextLong);

            //Loop status by @gregorybel
            String externalStatusString = PersistentStore.getString("remote-status-string");
            Log.d(TAG, "Returning complication status: " + externalStatusString);

            final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
                    .setLongTitle(ComplicationText.plainText(numberTextLong))
                    .setLongText(ComplicationText.plainText(externalStatusString))
                    .setTapAction(complicationPendingIntent);

            UserError.Log.d(TAG, "TYPE_LONG_TEXT Current complication state:" + state);
            complicationData = builderLong.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 13
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 14
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();
}