Use internal volume controller and status bar.
Remove code that let these components be replaced by external
processes.
Bug: 33006669
Bug: 34106436
Test: manual. reboot device, play music, change volume,
view notifications
Change-Id: I458f11537ab9db6f23735487513815553004613f
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java b/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java
deleted file mode 100644
index db46dc6..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar;
-
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.ServiceConnection;
-import android.content.pm.PackageManager;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.util.Log;
-
-import java.util.Arrays;
-
-/**
- * Manages a persistent connection to a service component defined in a secure setting.
- *
- * <p>If a valid service component is specified in the secure setting, starts it up and keeps it
- * running; handling setting changes, package updates, component disabling, and unexpected
- * process termination.
- *
- * <p>Clients can listen for important events using the supplied {@link Callbacks}.
- */
-public class ServiceMonitor {
- private static final int RECHECK_DELAY = 2000;
- private static final int WAIT_FOR_STOP = 500;
-
- public interface Callbacks {
- /** The service does not exist or failed to bind */
- void onNoService();
- /** The service is about to start, this is a chance to perform cleanup and
- * delay the start if necessary */
- long onServiceStartAttempt();
- }
-
- // internal handler + messages used to serialize access to internal state
- public static final int MSG_START_SERVICE = 1;
- public static final int MSG_CONTINUE_START_SERVICE = 2;
- public static final int MSG_STOP_SERVICE = 3;
- public static final int MSG_PACKAGE_INTENT = 4;
- public static final int MSG_CHECK_BOUND = 5;
- public static final int MSG_SERVICE_DISCONNECTED = 6;
-
- private final Handler mHandler = new Handler() {
- public void handleMessage(Message msg) {
- switch(msg.what) {
- case MSG_START_SERVICE:
- startService();
- break;
- case MSG_CONTINUE_START_SERVICE:
- continueStartService();
- break;
- case MSG_STOP_SERVICE:
- stopService();
- break;
- case MSG_PACKAGE_INTENT:
- packageIntent((Intent)msg.obj);
- break;
- case MSG_CHECK_BOUND:
- checkBound();
- break;
- case MSG_SERVICE_DISCONNECTED:
- serviceDisconnected((ComponentName)msg.obj);
- break;
- }
- }
- };
-
- private final ContentObserver mSettingObserver = new ContentObserver(mHandler) {
- public void onChange(boolean selfChange) {
- onChange(selfChange, null);
- }
-
- public void onChange(boolean selfChange, Uri uri) {
- if (mDebug) Log.d(mTag, "onChange selfChange=" + selfChange + " uri=" + uri);
- ComponentName cn = getComponentNameFromSetting();
- if (cn == null && mServiceName == null || cn != null && cn.equals(mServiceName)) {
- if (mDebug) Log.d(mTag, "skipping no-op restart");
- return;
- }
- if (mBound) {
- mHandler.sendEmptyMessage(MSG_STOP_SERVICE);
- }
- mHandler.sendEmptyMessageDelayed(MSG_START_SERVICE, WAIT_FOR_STOP);
- }
- };
-
- private final class SC implements ServiceConnection, IBinder.DeathRecipient {
- private ComponentName mName;
- private IBinder mService;
-
- public void onServiceConnected(ComponentName name, IBinder service) {
- if (mDebug) Log.d(mTag, "onServiceConnected name=" + name + " service=" + service);
- mName = name;
- mService = service;
- try {
- service.linkToDeath(this, 0);
- } catch (RemoteException e) {
- Log.w(mTag, "Error linking to death", e);
- }
- }
-
- public void onServiceDisconnected(ComponentName name) {
- if (mDebug) Log.d(mTag, "onServiceDisconnected name=" + name);
- boolean unlinked = mService.unlinkToDeath(this, 0);
- if (mDebug) Log.d(mTag, " unlinked=" + unlinked);
- mHandler.sendMessage(mHandler.obtainMessage(MSG_SERVICE_DISCONNECTED, mName));
- }
-
- public void binderDied() {
- if (mDebug) Log.d(mTag, "binderDied");
- mHandler.sendMessage(mHandler.obtainMessage(MSG_SERVICE_DISCONNECTED, mName));
- }
- }
-
- private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- String pkg = intent.getData().getSchemeSpecificPart();
- if (mServiceName != null && mServiceName.getPackageName().equals(pkg)) {
- mHandler.sendMessage(mHandler.obtainMessage(MSG_PACKAGE_INTENT, intent));
- }
- }
- };
-
- private final String mTag;
- private final boolean mDebug;
-
- private final Context mContext;
- private final String mSettingKey;
- private final Callbacks mCallbacks;
-
- private ComponentName mServiceName;
- private SC mServiceConnection;
- private boolean mBound;
-
- public ServiceMonitor(String ownerTag, boolean debug,
- Context context, String settingKey, Callbacks callbacks) {
- mTag = ownerTag + ".ServiceMonitor";
- mDebug = debug;
- mContext = context;
- mSettingKey = settingKey;
- mCallbacks = callbacks;
- }
-
- public void start() {
- // listen for setting changes
- ContentResolver cr = mContext.getContentResolver();
- cr.registerContentObserver(Settings.Secure.getUriFor(mSettingKey),
- false /*notifyForDescendents*/, mSettingObserver, UserHandle.USER_ALL);
-
- // listen for package/component changes
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_PACKAGE_ADDED);
- filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- filter.addDataScheme("package");
- mContext.registerReceiver(mBroadcastReceiver, filter);
-
- mHandler.sendEmptyMessage(MSG_START_SERVICE);
- }
-
- private ComponentName getComponentNameFromSetting() {
- String cn = Settings.Secure.getStringForUser(mContext.getContentResolver(),
- mSettingKey, UserHandle.USER_CURRENT);
- return cn == null ? null : ComponentName.unflattenFromString(cn);
- }
-
- // everything below is called on the handler
-
- private void packageIntent(Intent intent) {
- if (mDebug) Log.d(mTag, "packageIntent intent=" + intent
- + " extras=" + bundleToString(intent.getExtras()));
- if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
- mHandler.sendEmptyMessage(MSG_START_SERVICE);
- } else if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())
- || Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
- final PackageManager pm = mContext.getPackageManager();
- final boolean serviceEnabled = isPackageAvailable()
- && pm.getApplicationEnabledSetting(mServiceName.getPackageName())
- != PackageManager.COMPONENT_ENABLED_STATE_DISABLED
- && pm.getComponentEnabledSetting(mServiceName)
- != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
- if (mBound && !serviceEnabled) {
- stopService();
- scheduleCheckBound();
- } else if (!mBound && serviceEnabled) {
- startService();
- }
- }
- }
-
- private void stopService() {
- if (mDebug) Log.d(mTag, "stopService");
- boolean stopped = mContext.stopService(new Intent().setComponent(mServiceName));
- if (mDebug) Log.d(mTag, " stopped=" + stopped);
- mContext.unbindService(mServiceConnection);
- mBound = false;
- }
-
- private void startService() {
- mServiceName = getComponentNameFromSetting();
- if (mDebug) Log.d(mTag, "startService mServiceName=" + mServiceName);
- if (mServiceName == null) {
- mBound = false;
- mCallbacks.onNoService();
- } else {
- long delay = mCallbacks.onServiceStartAttempt();
- mHandler.sendEmptyMessageDelayed(MSG_CONTINUE_START_SERVICE, delay);
- }
- }
-
- private void continueStartService() {
- if (mDebug) Log.d(mTag, "continueStartService");
- Intent intent = new Intent().setComponent(mServiceName);
- try {
- mServiceConnection = new SC();
- mBound = mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
- if (mDebug) Log.d(mTag, "mBound: " + mBound);
- } catch (Throwable t) {
- Log.w(mTag, "Error binding to service: " + mServiceName, t);
- }
- if (!mBound) {
- mCallbacks.onNoService();
- }
- }
-
- private void serviceDisconnected(ComponentName serviceName) {
- if (mDebug) Log.d(mTag, "serviceDisconnected serviceName=" + serviceName
- + " mServiceName=" + mServiceName);
- if (serviceName.equals(mServiceName)) {
- mBound = false;
- scheduleCheckBound();
- }
- }
-
- private void checkBound() {
- if (mDebug) Log.d(mTag, "checkBound mBound=" + mBound);
- if (!mBound) {
- startService();
- }
- }
-
- private void scheduleCheckBound() {
- mHandler.removeMessages(MSG_CHECK_BOUND);
- mHandler.sendEmptyMessageDelayed(MSG_CHECK_BOUND, RECHECK_DELAY);
- }
-
- private static String bundleToString(Bundle bundle) {
- if (bundle == null) return null;
- StringBuilder sb = new StringBuilder("{");
- for (String key : bundle.keySet()) {
- if (sb.length() > 1) sb.append(',');
- Object v = bundle.get(key);
- v = (v instanceof String[]) ? Arrays.asList((String[]) v) : v;
- sb.append(key).append('=').append(v);
- }
- return sb.append('}').toString();
- }
-
- public ComponentName getComponent() {
- return getComponentNameFromSetting();
- }
-
- public void setComponent(ComponentName component) {
- final String setting = component == null ? null : component.flattenToShortString();
- Settings.Secure.putStringForUser(mContext.getContentResolver(),
- mSettingKey, setting, UserHandle.USER_CURRENT);
- }
-
- public boolean isPackageAvailable() {
- final ComponentName component = getComponent();
- if (component == null) return false;
- try {
- return mContext.getPackageManager().isPackageAvailable(component.getPackageName());
- } catch (RuntimeException e) {
- Log.w(mTag, "Error checking package availability", e);
- return false;
- }
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SystemBars.java b/packages/SystemUI/src/com/android/systemui/statusbar/SystemBars.java
index 8819c60..275fd70 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SystemBars.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SystemBars.java
@@ -27,47 +27,21 @@
import java.io.PrintWriter;
/**
- * Ensure a single status bar service implementation is running at all times.
- *
- * <p>The implementation either comes from a service component running in a remote process (defined
- * using a secure setting), else falls back to using the in-process implementation according
- * to the product config.
+ * Ensure a single status bar service implementation is running at all times, using the in-process
+ * implementation according to the product config.
*/
-public class SystemBars extends SystemUI implements ServiceMonitor.Callbacks {
+public class SystemBars extends SystemUI {
private static final String TAG = "SystemBars";
private static final boolean DEBUG = false;
private static final int WAIT_FOR_BARS_TO_DIE = 500;
- // manages the implementation coming from the remote process
- private ServiceMonitor mServiceMonitor;
-
// in-process fallback implementation, per the product config
private BaseStatusBar mStatusBar;
@Override
public void start() {
if (DEBUG) Log.d(TAG, "start");
- mServiceMonitor = new ServiceMonitor(TAG, DEBUG,
- mContext, Settings.Secure.BAR_SERVICE_COMPONENT, this);
- mServiceMonitor.start(); // will call onNoService if no remote service is found
- }
-
- @Override
- public void onNoService() {
- if (DEBUG) Log.d(TAG, "onNoService");
- createStatusBarFromConfig(); // fallback to using an in-process implementation
- }
-
- @Override
- public long onServiceStartAttempt() {
- if (DEBUG) Log.d(TAG, "onServiceStartAttempt mStatusBar="+mStatusBar);
- if (mStatusBar != null) {
- // tear down the in-process version, we'll recreate it again if needed
- mStatusBar.destroy();
- mStatusBar = null;
- return WAIT_FOR_BARS_TO_DIE;
- }
- return 0;
+ createStatusBarFromConfig();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
index 17dd8d6..0e5ff43 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
@@ -99,7 +99,6 @@
private final Vibrator mVibrator;
private final boolean mHasVibrator;
- private boolean mEnabled;
private boolean mDestroyed;
private VolumePolicy mVolumePolicy;
private boolean mShowDndTile = true;
@@ -198,7 +197,6 @@
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println(VolumeDialogController.class.getSimpleName() + " state:");
- pw.print(" mEnabled: "); pw.println(mEnabled);
pw.print(" mDestroyed: "); pw.println(mDestroyed);
pw.print(" mVolumePolicy: "); pw.println(mVolumePolicy);
pw.print(" mState: "); pw.println(mState.toString(4));
@@ -749,8 +747,6 @@
private final class SettingObserver extends ContentObserver {
- private final Uri SERVICE_URI = Settings.Secure.getUriFor(
- Settings.Secure.VOLUME_CONTROLLER_SERVICE_COMPONENT);
private final Uri ZEN_MODE_URI =
Settings.Global.getUriFor(Settings.Global.ZEN_MODE);
private final Uri ZEN_MODE_CONFIG_URI =
@@ -761,10 +757,8 @@
}
public void init() {
- mContext.getContentResolver().registerContentObserver(SERVICE_URI, false, this);
mContext.getContentResolver().registerContentObserver(ZEN_MODE_URI, false, this);
mContext.getContentResolver().registerContentObserver(ZEN_MODE_CONFIG_URI, false, this);
- onChange(true, SERVICE_URI);
}
public void destroy() {
@@ -774,17 +768,6 @@
@Override
public void onChange(boolean selfChange, Uri uri) {
boolean changed = false;
- if (SERVICE_URI.equals(uri)) {
- final String setting = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOLUME_CONTROLLER_SERVICE_COMPONENT);
- final boolean enabled = setting != null && mComponent != null
- && mComponent.equals(ComponentName.unflattenFromString(setting));
- if (enabled == mEnabled) return;
- if (enabled) {
- register();
- }
- mEnabled = enabled;
- }
if (ZEN_MODE_URI.equals(uri)) {
changed = updateZenModeW();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index c820302..73d9ea7 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -16,31 +16,13 @@
package com.android.systemui.volume;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
-import android.media.AudioManager;
-import android.media.session.MediaSessionManager;
import android.os.Handler;
-import android.provider.Settings;
-import android.text.TextUtils;
import android.util.Log;
-import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.qs.tiles.DndTile;
-import com.android.systemui.statusbar.ServiceMonitor;
-import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.policy.ZenModeControllerImpl;
@@ -52,34 +34,18 @@
private static boolean LOGD = Log.isLoggable(TAG, Log.DEBUG);
private final Handler mHandler = new Handler();
- private final Receiver mReceiver = new Receiver();
- private final RestorationNotification mRestorationNotification = new RestorationNotification();
private boolean mEnabled;
- private AudioManager mAudioManager;
- private NotificationManager mNotificationManager;
- private MediaSessionManager mMediaSessionManager;
- private ServiceMonitor mVolumeControllerService;
-
private VolumeDialogComponent mVolumeComponent;
@Override
public void start() {
mEnabled = mContext.getResources().getBoolean(R.bool.enable_volume_ui);
if (!mEnabled) return;
- mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
- mNotificationManager =
- (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- mMediaSessionManager = (MediaSessionManager) mContext
- .getSystemService(Context.MEDIA_SESSION_SERVICE);
final ZenModeController zenController = new ZenModeControllerImpl(mContext, mHandler);
mVolumeComponent = new VolumeDialogComponent(this, mContext, null, zenController);
putComponent(VolumeComponent.class, getVolumeComponent());
- mReceiver.start();
- mVolumeControllerService = new ServiceMonitor(TAG, LOGD,
- mContext, Settings.Secure.VOLUME_CONTROLLER_SERVICE_COMPONENT,
- new ServiceMonitorCallbacks());
- mVolumeControllerService.start();
+ setDefaultVolumeController();
}
private VolumeComponent getVolumeComponent() {
@@ -97,154 +63,12 @@
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.print("mEnabled="); pw.println(mEnabled);
if (!mEnabled) return;
- pw.print("mVolumeControllerService="); pw.println(mVolumeControllerService.getComponent());
getVolumeComponent().dump(fd, pw, args);
}
- private void setDefaultVolumeController(boolean register) {
- if (register) {
- DndTile.setVisible(mContext, true);
- if (LOGD) Log.d(TAG, "Registering default volume controller");
- getVolumeComponent().register();
- } else {
- if (LOGD) Log.d(TAG, "Unregistering default volume controller");
- mAudioManager.setVolumeController(null);
- mMediaSessionManager.setRemoteVolumeController(null);
- }
- }
-
- private String getAppLabel(ComponentName component) {
- final String pkg = component.getPackageName();
- try {
- final ApplicationInfo ai = mContext.getPackageManager().getApplicationInfo(pkg, 0);
- final String rt = mContext.getPackageManager().getApplicationLabel(ai).toString();
- if (!TextUtils.isEmpty(rt)) {
- return rt;
- }
- } catch (Exception e) {
- Log.w(TAG, "Error loading app label", e);
- }
- return pkg;
- }
-
- private void showServiceActivationDialog(final ComponentName component) {
- final SystemUIDialog d = new SystemUIDialog(mContext);
- d.setMessage(mContext.getString(R.string.volumeui_prompt_message, getAppLabel(component)));
- d.setPositiveButton(R.string.volumeui_prompt_allow, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mVolumeControllerService.setComponent(component);
- }
- });
- d.setNegativeButton(R.string.volumeui_prompt_deny, null);
- d.show();
- }
-
- private final class ServiceMonitorCallbacks implements ServiceMonitor.Callbacks {
- @Override
- public void onNoService() {
- if (LOGD) Log.d(TAG, "onNoService");
- setDefaultVolumeController(true);
- mRestorationNotification.hide();
- if (!mVolumeControllerService.isPackageAvailable()) {
- mVolumeControllerService.setComponent(null);
- }
- }
-
- @Override
- public long onServiceStartAttempt() {
- if (LOGD) Log.d(TAG, "onServiceStartAttempt");
- // poke the setting to update the uid
- mVolumeControllerService.setComponent(mVolumeControllerService.getComponent());
- setDefaultVolumeController(false);
- getVolumeComponent().dismissNow();
- mRestorationNotification.show();
- return 0;
- }
- }
-
- private final class Receiver extends BroadcastReceiver {
- private static final String ENABLE = "com.android.systemui.vui.ENABLE";
- private static final String DISABLE = "com.android.systemui.vui.DISABLE";
- private static final String EXTRA_COMPONENT = "component";
-
- private static final String PREF = "com.android.systemui.PREF";
- private static final String EXTRA_KEY = "key";
- private static final String EXTRA_VALUE = "value";
-
- public void start() {
- final IntentFilter filter = new IntentFilter();
- filter.addAction(ENABLE);
- filter.addAction(DISABLE);
- filter.addAction(PREF);
- mContext.registerReceiver(this, filter, null, mHandler);
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- final String action = intent.getAction();
- if (PREF.equals(action)) {
- final String key = intent.getStringExtra(EXTRA_KEY);
- if (key != null && intent.getExtras() != null) {
- final Object value = intent.getExtras().get(EXTRA_VALUE);
- if (value == null) {
- Prefs.remove(mContext, key);
- } else if (value instanceof Boolean) {
- Prefs.putBoolean(mContext, key, (Boolean) value);
- } else if (value instanceof Integer) {
- Prefs.putInt(mContext, key, (Integer) value);
- } else if (value instanceof Long) {
- Prefs.putLong(mContext, key, (Long) value);
- }
- }
- return;
- }
- final ComponentName component = intent.getParcelableExtra(EXTRA_COMPONENT);
- final boolean current = component != null
- && component.equals(mVolumeControllerService.getComponent());
- if (ENABLE.equals(action) && component != null) {
- if (!current) {
- showServiceActivationDialog(component);
- }
- }
- if (DISABLE.equals(action) && component != null) {
- if (current) {
- mVolumeControllerService.setComponent(null);
- }
- }
- }
- }
-
- private final class RestorationNotification {
- public void hide() {
- mNotificationManager.cancel(R.id.notification_volumeui);
- }
-
- public void show() {
- final ComponentName component = mVolumeControllerService.getComponent();
- if (component == null) {
- Log.w(TAG, "Not showing restoration notification, component not active");
- return;
- }
- final Intent intent = new Intent(Receiver.DISABLE)
- .putExtra(Receiver.EXTRA_COMPONENT, component);
- Notification.Builder builder = new Notification.Builder(mContext)
- .setSmallIcon(R.drawable.ic_volume_media)
- .setWhen(0)
- .setShowWhen(false)
- .setOngoing(true)
- .setContentTitle(mContext.getString(
- R.string.volumeui_notification_title, getAppLabel(component)))
- .setContentText(mContext.getString(R.string.volumeui_notification_text))
- .setContentIntent(PendingIntent.getBroadcast(mContext, 0, intent,
- PendingIntent.FLAG_UPDATE_CURRENT))
- .setPriority(Notification.PRIORITY_MIN)
- .setVisibility(Notification.VISIBILITY_PUBLIC)
- .setColor(mContext.getColor(
- com.android.internal.R.color.system_notification_accent_color));
- overrideNotificationAppName(mContext, builder);
- mNotificationManager.notify(R.id.notification_volumeui,
- builder.build());
- }
+ private void setDefaultVolumeController() {
+ DndTile.setVisible(mContext, true);
+ if (LOGD) Log.d(TAG, "Registering default volume controller");
+ getVolumeComponent().register();
}
}