Данные о неожиданных осложнениях (Galaxy Watch 4)
Я создал простое усложнение, которое показывает давление воздуха в единицах ччмг (поскольку по умолчанию используются единицы гПа).
Он отлично работает на Pixel Watch.
Но когда я установил его на Galaxy Watch 4, он не появился в списке осложнений.
Единственное, что я заметил, это сообщение журнала:
WCS com.google.android.wearable.app W [PackageChecker]Unexpected complication data type RANGED_TEXT
Это моя запись манифеста:
<service
android:name=".C"
android:exported="true"
android:icon="@drawable/ic_sun_not"
android:label="@string/app_name"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="RANGED_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="3600" />
</service>
И есть код:
public class C extends ComplicationDataSourceService {
@Nullable
@Override
public ComplicationData getPreviewData(@NonNull ComplicationType complicationType) {
return data(750);
}
private RangedValueComplicationData data(float value) {
final PlainComplicationText d = new PlainComplicationText.Builder("ммрс").build();
final Icon icon = Icon.createWithResource(this, R.drawable.ic_sun_not);
final String str = String.valueOf(Math.round(value));
final PlainComplicationText text = new PlainComplicationText.Builder(str).build();
return new RangedValueComplicationData
.Builder(value, 720, 780, d)
.setMonochromaticImage(new MonochromaticImage.Builder(icon).build())
.setTitle(text)
.build();
}
@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;
try {
complicationRequestListener.onComplicationData(data(hhmg));
} catch (RemoteException e) {
throw new RuntimeException(e);
}
sensMan.unregisterListener(l);
}
}, 300);
}
}
И (на всякий случай) зависимость в build.gradle:
implementation("androidx.wear.watchface:watchface-complications-data-source:1.1.1")