diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java index e7c8c949d6f09..8160f9030bdeb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java @@ -75,7 +75,8 @@ public class CarFacetButtonController { int displayId = getDisplayId(); for (ActivityManager.StackInfo stackInfo :stackInfoList) { // if the display id is known and does not match the stack we skip - if (displayId != -1 && displayId != stackInfo.displayId) { + if (displayId != -1 && displayId != stackInfo.displayId || + stackInfo.topActivity == null) { continue; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java index 7d283d9fde9da..81d61918875d7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/hvac/HvacController.java @@ -28,8 +28,10 @@ import android.os.Handler; import android.os.IBinder; import android.util.Log; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -46,7 +48,7 @@ public class HvacController { private Handler mHandler; private Car mCar; private CarHvacManager mHvacManager; - private HashMap mTempComponents = new HashMap<>(); + private HashMap> mTempComponents = new HashMap<>(); public HvacController(Context context) { mContext = context; @@ -114,18 +116,24 @@ public class HvacController { * @param temperatureView */ public void addHvacTextView(TemperatureView temperatureView) { - mTempComponents.put( - new HvacKey(temperatureView.getPropertyId(), temperatureView.getAreaId()), - temperatureView); + + HvacKey hvacKey = new HvacKey(temperatureView.getPropertyId(), temperatureView.getAreaId()); + if (!mTempComponents.containsKey(hvacKey)) { + mTempComponents.put(hvacKey, new ArrayList<>()); + } + mTempComponents.get(hvacKey).add(temperatureView); initComponent(temperatureView); } private void initComponents() { - Iterator> iterator = + Iterator>> iterator = mTempComponents.entrySet().iterator(); while (iterator.hasNext()) { - Map.Entry next = iterator.next(); - initComponent(next.getValue()); + Map.Entry> next = iterator.next(); + List temperatureViews = next.getValue(); + for (TemperatureView view : temperatureViews) { + initComponent(view); + } } } @@ -155,11 +163,13 @@ public class HvacController { try { int areaId = val.getAreaId(); int propertyId = val.getPropertyId(); - TemperatureView temperatureView = mTempComponents.get( + List temperatureViews = mTempComponents.get( new HvacKey(propertyId, areaId)); - if (temperatureView != null) { + if (temperatureViews != null && !temperatureViews.isEmpty()) { float value = (float) val.getValue(); - temperatureView.setTemp(value); + for (TemperatureView tempView : temperatureViews) { + tempView.setTemp(value); + } } // else the data is not of interest } catch (Exception e) { // catch all so we don't take down the sysui if a new data type is