android.support.wearable.complications.ComplicationText Java Examples

The following examples show how to use android.support.wearable.complications.ComplicationText. 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: 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 #2
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 #3
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 #4
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 #5
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 #6
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 #7
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 #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: 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 #11
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 #12
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 #13
Source File: ShortTextProviderService.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_SHORT_TEXT) {
        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 % 4) {
        case 0:
            data =
                    new ComplicationData.Builder(type)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_only)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 1:
            data =
                    new ComplicationData.Builder(type)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_with_icon)))
                            .setIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_face_vd_theme_24))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 2:
            data =
                    new ComplicationData.Builder(type)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_with_title)))
                            .setShortTitle(
                                    ComplicationText.plainText(getString(R.string.short_title)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 3:
            // When short text includes both short title and icon, the watch face should only
            // display one of those fields.
            data =
                    new ComplicationData.Builder(type)
                            .setShortText(
                                    ComplicationText.plainText(
                                            getString(R.string.short_text_with_both)))
                            .setShortTitle(
                                    ComplicationText.plainText(getString(R.string.short_title)))
                            .setIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_face_vd_theme_24))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
    }
    manager.updateComplicationData(complicationId, data);
}
 
Example #14
Source File: LongTextProviderService.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_LONG_TEXT) {
        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 % 6) {
        case 0:
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_only)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 1:
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_with_icon)))
                            .setIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_face_vd_theme_24))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 2:
            // Unlike for short text complications, if the long title field is supplied then it
            // should always be displayed by the watch face. This means that when a long text
            // provider supplies both title and icon, it is expected that both are displayed.
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_with_icon_and_title)))
                            .setLongTitle(
                                    ComplicationText.plainText(getString(R.string.long_title)))
                            .setIcon(Icon.createWithResource(this, R.drawable.ic_battery))
                            .setBurnInProtectionIcon(
                                    Icon.createWithResource(
                                            this, R.drawable.ic_battery_burn_protect))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 3:
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_with_title)))
                            .setLongTitle(
                                    ComplicationText.plainText(getString(R.string.long_title)))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 4:
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_with_image)))
                            .setSmallImage(Icon.createWithResource(this, R.drawable.outdoors))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
        case 5:
            data =
                    new ComplicationData.Builder(type)
                            .setLongText(
                                    ComplicationText.plainText(
                                            getString(R.string.long_text_with_image_and_title)))
                            .setLongTitle(
                                    ComplicationText.plainText(getString(R.string.long_title)))
                            .setSmallImage(Icon.createWithResource(this, R.drawable.aquarium))
                            .setTapAction(complicationTogglePendingIntent)
                            .build();
            break;
    }
    manager.updateComplicationData(complicationId, data);
}
 
Example #15
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 #16
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 #17
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);
}