Have volume UI dismiss on home button press.

Register a receiver that listens for Intent.ACTION_CLOSE_SYSTEM_DIALOGS
and dismisses the volume UI when such an intent is received.

Bug: 149228466
Test: Manual
Change-Id: Iabb706b1d4cc54cb84f228aad95bfdb7e6f75851
This commit is contained in:
Abhijoy Saha
2020-02-18 12:54:33 -08:00
parent f462373a9b
commit ec95199f43

View File

@@ -25,8 +25,11 @@ import android.app.Dialog;
import android.app.KeyguardManager;
import android.car.Car;
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;
@@ -38,6 +41,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;
@@ -171,6 +175,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;
}
dismissH(Events.DISMISS_REASON_VOLUME_CONTROLLER);
}
};
public CarVolumeDialogImpl(Context context) {
mContext = context;
mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
@@ -204,12 +219,18 @@ public class CarVolumeDialogImpl implements VolumeDialog {
@Override
public void init(int windowType, Callback callback) {
initDialog();
mContext.registerReceiverAsUser(mHomeButtonPressedBroadcastReceiver, UserHandle.CURRENT,
new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS), /* broadcastPermission= */
null, /* scheduler= */ null);
}
@Override
public void destroy() {
mHandler.removeCallbacksAndMessages(/* token= */ null);
mContext.unregisterReceiver(mHomeButtonPressedBroadcastReceiver);
cleanupAudioManager();
}