diff options
4 files changed, 49 insertions, 1 deletions
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java index aec31ee4bfdd..30429eda7be7 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java @@ -16,7 +16,11 @@ package com.android.systemui.statusbar.car.hvac; +import static android.car.VehicleAreaType.VEHICLE_AREA_TYPE_GLOBAL; +import static android.car.VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS; + import android.car.Car; +import android.car.VehicleUnit; import android.car.hardware.CarPropertyValue; import android.car.hardware.hvac.CarHvacManager; import android.car.hardware.hvac.CarHvacManager.CarHvacEventCallback; @@ -167,7 +171,17 @@ public class HvacController { private void initComponent(TemperatureView view) { int id = view.getPropertyId(); int zone = view.getAreaId(); + try { + if (mHvacManager != null + && mHvacManager.isPropertyAvailable(HVAC_TEMPERATURE_DISPLAY_UNITS, + VEHICLE_AREA_TYPE_GLOBAL)) { + if (mHvacManager.getIntProperty(HVAC_TEMPERATURE_DISPLAY_UNITS, + VEHICLE_AREA_TYPE_GLOBAL) == VehicleUnit.FAHRENHEIT) { + view.setDisplayInFahrenheit(true); + } + + } if (mHvacManager == null || !mHvacManager.isPropertyAvailable(id, zone)) { view.setTemp(Float.NaN); return; diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureTextView.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureTextView.java index 507c60f87b1d..17ef3c0204af 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureTextView.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureTextView.java @@ -36,6 +36,7 @@ public class TemperatureTextView extends TextView implements TemperatureView { private final int mAreaId; private final int mPropertyId; private final String mTempFormat; + private boolean mDisplayFahrenheit = false; public TemperatureTextView(Context context, AttributeSet attrs) { super(context, attrs); @@ -57,9 +58,17 @@ public class TemperatureTextView extends TextView implements TemperatureView { setText("--"); return; } + if (mDisplayFahrenheit) { + temp = convertToFahrenheit(temp); + } setText(String.format(mTempFormat, temp)); } + @Override + public void setDisplayInFahrenheit(boolean displayFahrenheit) { + mDisplayFahrenheit = displayFahrenheit; + } + /** * @return propertiyId Example: CarHvacManager.ID_ZONED_TEMP_SETPOINT (16385) */ diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureView.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureView.java index 7651356f98a3..c17da1848a8f 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureView.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/hvac/TemperatureView.java @@ -23,10 +23,26 @@ public interface TemperatureView { /** * Formats the float for display * - * @param temp - The current temp or NaN + * @param temp - The current temp in Celsius or NaN */ void setTemp(float temp); + /** + * Render the displayed temperature in Fahrenheit + * + * @param displayFahrenheit - True if temperature should be displayed in Fahrenheit + */ + void setDisplayInFahrenheit(boolean displayFahrenheit); + + /** + * Convert the given temperature in Celsius into Fahrenheit + * + * @param realTemp - The temperature in Celsius + * @return Temperature in Fahrenheit. + */ + default float convertToFahrenheit(float realTemp) { + return (realTemp * 9f / 5f) + 32; + } /** * @return propertiyId Example: CarHvacManager.ID_ZONED_TEMP_SETPOINT (16385) diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/hvac/AnimatedTemperatureView.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/hvac/AnimatedTemperatureView.java index 0467bff46e19..76126fcd949c 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/hvac/AnimatedTemperatureView.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/hvac/AnimatedTemperatureView.java @@ -99,6 +99,7 @@ public class AnimatedTemperatureView extends FrameLayout implements TemperatureV private final TemperatureColorStore mColorStore = new TemperatureColorStore(); private final TemperatureBackgroundAnimator mBackgroundAnimator; private final TemperatureTextAnimator mTextAnimator; + boolean mDisplayInFahrenheit = false; public AnimatedTemperatureView(Context context, AttributeSet attrs) { super(context, attrs); @@ -193,6 +194,9 @@ public class AnimatedTemperatureView extends FrameLayout implements TemperatureV */ @Override public void setTemp(float temp) { + if (mDisplayInFahrenheit) { + temp = convertToFahrenheit(temp); + } mTextAnimator.setTemp(temp); if (Float.isNaN(temp)) { mBackgroundAnimator.hideCircle(); @@ -219,6 +223,11 @@ public class AnimatedTemperatureView extends FrameLayout implements TemperatureV mBackgroundAnimator.animateOpen(); } + @Override + public void setDisplayInFahrenheit(boolean displayInFahrenheit) { + mDisplayInFahrenheit = displayInFahrenheit; + } + boolean isMinValue(float temp) { return !Float.isNaN(mMinValue) && isApproxEqual(temp, mMinValue); } |