Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd38eea7 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6224062 from 8161bd3a to qt-qpr3-release

Change-Id: I285008e94bdd7ad58bc33430e0fdaeb4efc097cd
parents 0e1e6487 8161bd3a
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -26,8 +26,11 @@ import android.app.KeyguardManager;
import android.car.Car;
import android.car.Car.CarServiceLifecycleListener;
import android.car.media.CarAudioManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Color;
@@ -39,6 +42,7 @@ import android.os.Debug;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
import android.util.SparseArray;
@@ -175,6 +179,17 @@ public class CarVolumeDialogImpl implements VolumeDialog {
        mCarAudioManager.registerCarVolumeCallback(mVolumeChangeCallback);
    };

    private final BroadcastReceiver mHomeButtonPressedBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (!intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
                return;
            }

            dismiss(Events.DISMISS_REASON_VOLUME_CONTROLLER);
        }
    };

    public CarVolumeDialogImpl(Context context) {
        mContext = context;
        mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
@@ -204,6 +219,10 @@ public class CarVolumeDialogImpl implements VolumeDialog {
    public void init(int windowType, Callback callback) {
        initDialog();

        mContext.registerReceiverAsUser(mHomeButtonPressedBroadcastReceiver, UserHandle.CURRENT,
                new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS), /* broadcastPermission= */
                null, /* scheduler= */ null);

        ((CarSystemUIFactory) SystemUIFactory.getInstance()).getCarServiceProvider(mContext)
                .addListener(mCarServiceLifecycleListener);
    }
@@ -212,6 +231,8 @@ public class CarVolumeDialogImpl implements VolumeDialog {
    public void destroy() {
        mHandler.removeCallbacksAndMessages(/* token= */ null);

        mContext.unregisterReceiver(mHomeButtonPressedBroadcastReceiver);

        cleanupAudioManager();
    }

+8 −0
Original line number Diff line number Diff line
@@ -201,6 +201,14 @@
         always-on display) -->
    <string name="doze_brightness_sensor_type" translatable="false"></string>

    <!-- Override value to use for proximity sensor.  -->
    <string name="proximity_sensor_type" translatable="false">@string/doze_brightness_sensor_type</string>

    <!-- If using proximity_sensor_type, specifies a threshold value to distinguish near and
         far break points. A sensor value less than or equal to this is considered "near". -->
    <item name="proximity_sensor_threshold" translatable="false" format="float" type="dimen">
        0</item>

    <!-- Doze: pulse parameter - how long does it take to fade in? -->
    <integer name="doze_pulse_duration_in">130</integer>

+10 −8
Original line number Diff line number Diff line
@@ -43,11 +43,11 @@ import androidx.annotation.VisibleForTesting;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.R;
import com.android.systemui.plugins.SensorManagerPlugin;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.AlarmTimeout;
import com.android.systemui.util.AsyncSensorManager;
import com.android.systemui.util.ProximitySensor;
import com.android.systemui.util.wakelock.WakeLock;

import java.io.PrintWriter;
@@ -288,6 +288,7 @@ public class DozeSensors {
        final AlarmTimeout mCooldownTimer;
        final AlwaysOnDisplayPolicy mPolicy;
        final Sensor mSensor;
        private final float mSensorThreshold;
        final boolean mUsingBrightnessSensor;

        public ProxSensor(AlwaysOnDisplayPolicy policy) {
@@ -297,11 +298,14 @@ public class DozeSensors {

            // The default prox sensor can be noisy, so let's use a prox gated brightness sensor
            // if available.
            Sensor sensor = DozeSensors.findSensorWithType(mSensorManager,
                    mContext.getString(R.string.doze_brightness_sensor_type));
            Sensor sensor = ProximitySensor.findCustomProxSensor(mContext, mSensorManager);
            mUsingBrightnessSensor = sensor != null;
            if (sensor == null) {
            if (mUsingBrightnessSensor) {
                mSensorThreshold = ProximitySensor.getBrightnessSensorThreshold(
                        mContext.getResources());
            } else {
                sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
                mSensorThreshold = sensor.getMaximumRange();
            }
            mSensor = sensor;
        }
@@ -343,11 +347,9 @@ public class DozeSensors {
            if (DEBUG) Log.d(TAG, "onSensorChanged " + event);

            if (mUsingBrightnessSensor) {
                // The custom brightness sensor is gated by the proximity sensor and will return 0
                // whenever prox is covered.
                mCurrentlyFar = event.values[0] > 0;
                mCurrentlyFar = event.values[0] > mSensorThreshold;
            } else {
                mCurrentlyFar = event.values[0] >= event.sensor.getMaximumRange();
                mCurrentlyFar = event.values[0] >= mSensorThreshold;
            }
            mProxCallback.accept(mCurrentlyFar);

+8 −5
Original line number Diff line number Diff line
@@ -41,10 +41,10 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.Preconditions;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.Assert;
import com.android.systemui.util.ProximitySensor;
import com.android.systemui.util.wakelock.WakeLock;

import java.io.PrintWriter;
@@ -431,15 +431,18 @@ public class DozeTriggers implements DozeMachine.Part {
        private boolean mFinished;
        private float mMaxRange;
        private boolean mUsingBrightnessSensor;
        private float mSensorThreshold;

        protected abstract void onProximityResult(int result);

        public void check() {
            Preconditions.checkState(!mFinished && !mRegistered);
            Sensor sensor = DozeSensors.findSensorWithType(mSensorManager,
                    mContext.getString(R.string.doze_brightness_sensor_type));
            Sensor sensor = ProximitySensor.findCustomProxSensor(mContext, mSensorManager);
            mUsingBrightnessSensor = sensor != null;
            if (sensor == null) {
            if (mUsingBrightnessSensor) {
                mSensorThreshold = ProximitySensor.getBrightnessSensorThreshold(
                        mContext.getResources());
            } else {
                sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
            }
            if (sensor == null) {
@@ -473,7 +476,7 @@ public class DozeTriggers implements DozeMachine.Part {
                if (mUsingBrightnessSensor) {
                    // The custom brightness sensor is gated by the proximity sensor and will
                    // return 0 whenever prox is covered.
                    isNear = event.values[0] == 0;
                    isNear = event.values[0] <= mSensorThreshold;
                } else {
                    isNear = event.values[0] < mMaxRange;
                }
+23 −0
Original line number Diff line number Diff line
@@ -25,9 +25,12 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.drawable.Animatable;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.SparseArray;
import android.view.DisplayCutout;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -42,6 +45,7 @@ import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;

public class QSDetail extends LinearLayout {

@@ -142,6 +146,25 @@ public class QSDetail extends LinearLayout {
        }
    }

    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        DisplayCutout cutout = insets.getDisplayCutout();
        Pair<Integer, Integer> padding = PhoneStatusBarView.cornerCutoutMargins(
                cutout, getDisplay());
        if (padding == null) {
            mQsDetailHeader.setPaddingRelative(
                    getResources().getDimensionPixelSize(R.dimen.qs_detail_header_padding),
                    getPaddingTop(),
                    getResources().getDimensionPixelSize(R.dimen.qs_detail_header_padding),
                    getPaddingBottom()
            );
        } else {
            mQsDetailHeader.setPadding(padding.first, getPaddingTop(),
                    padding.second, getPaddingBottom());
        }
        return super.onApplyWindowInsets(insets);
    }

    private void updateDetailText() {
        mDetailDoneButton.setText(R.string.quick_settings_done);
        mDetailSettingsButton.setText(R.string.quick_settings_more_settings);
Loading