You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Galaxy Watch 4自定义RANGED_TEXT类型Complication不显示问题求助

问题原因与解决方案

核心问题

  1. 类型不匹配:你在Manifest中声明支持RANGED_TEXT类型,但代码实际返回的是RangedValueComplicationData,对应正确的类型应该是RANGED_VALUE。
  2. 版本兼容性:Galaxy Watch4运行的是Wear OS 3.x(基于One UI Watch),而RANGED_TEXT是Wear OS 4(Android 13)及以上才新增的Complication类型,旧版本系统无法识别该类型,因此你的Complication被系统过滤,无法出现在可选列表中。

修复步骤

1. 修正Manifest中的支持类型

将Manifest里的SUPPORTED_TYPES值从RANGED_TEXT改为RANGED_VALUE,与代码返回的RangedValueComplicationData匹配:

<meta-data
    android:name="android.support.wearable.complications.SUPPORTED_TYPES"
    android:value="RANGED_VALUE" />

2. 适配旧版本系统的类型处理(可选)

如果需要兼容更多旧版本Wear OS设备,建议同时声明多个兼容的类型,并在代码中根据请求的类型返回对应的数据:

  • 在Manifest中声明多个支持的类型(用逗号分隔):
<meta-data
    android:name="android.support.wearable.complications.SUPPORTED_TYPES"
    android:value="RANGED_VALUE, SHORT_TEXT" />
  • 修改代码,根据请求的ComplicationType返回对应的数据:
@Nullable
@Override
public ComplicationData getPreviewData(@NonNull ComplicationType complicationType) {
    switch(complicationType) {
        case RANGED_VALUE:
            return data(750);
        case SHORT_TEXT:
            return new ShortTextComplicationData.Builder(
                PlainComplicationText.Builder("750").build(),
                PlainComplicationText.Builder("ммрс").build()
            ).setMonochromaticImage(new MonochromaticImage.Builder(
                Icon.createWithResource(this, R.drawable.ic_sun_not)
            ).build()).build();
        default:
            return null;
    }
}

@Override
public void onComplicationRequest(
        @NonNull ComplicationRequest complicationRequest,
        @NonNull ComplicationRequestListener complicationRequestListener
) {
    final L l = new L();
    final SensorManager sensMan = getSystemService(SensorManager.class);
    final Sensor sensor = sensMan.getDefaultSensor(Sensor.TYPE_PRESSURE);
    sensMan.registerListener(l, sensor, SensorManager.SENSOR_DELAY_UI);
    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            final float hhmg = l.lastValue * HPA_TO_MMHG;
            ComplicationData result;
            ComplicationType type = complicationRequest.getComplicationType();
            switch(type) {
                case RANGED_VALUE:
                    result = data(hhmg);
                    break;
                case SHORT_TEXT:
                    result = new ShortTextComplicationData.Builder(
                        PlainComplicationText.Builder(String.valueOf(Math.round(hhmg))).build(),
                        PlainComplicationText.Builder("ммрс").build()
                    ).setMonochromaticImage(new MonochromaticImage.Builder(
                        Icon.createWithResource(C.this, R.drawable.ic_sun_not)
                    ).build()).build();
                    break;
                default:
                    result = null;
            }
            try {
                complicationRequestListener.onComplicationData(result);
            } catch (RemoteException e) {
                throw new RuntimeException(e);
            }
            sensMan.unregisterListener(l);
        }
    }, 300);
}

3. 验证依赖与系统版本

当前使用的watchface-complications-data-source:1.1.1兼容Wear OS 3及以上,但要避免使用仅高版本支持的API类型,确保和目标设备系统版本匹配。

额外注意点

  • 测试时需卸载旧版本应用后重新安装,确保Manifest的修改被系统正确识别。
  • Galaxy Watch4的系统会直接过滤未识别的Complication类型,因此必须严格匹配系统支持的类型。

内容的提问来源于stack exchange,提问作者Dmytro Rostopira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:13:14