[Output Switcher] Get Appicon from Notification's small icon
Test: verified on device Bug: 240309538 Change-Id: I812481da3a1cc6f53e35f4a86eda7af53ee8ae84
This commit is contained in:
committed by
Shaowei Shen
parent
30acb76f6f
commit
2d7ea1445d
@@ -296,27 +296,17 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
mMediaOutputController.setRefreshing(true);
|
mMediaOutputController.setRefreshing(true);
|
||||||
// Update header icon
|
// Update header icon
|
||||||
final int iconRes = getHeaderIconRes();
|
final int iconRes = getHeaderIconRes();
|
||||||
final IconCompat iconCompat = getHeaderIcon();
|
final IconCompat headerIcon = getHeaderIcon();
|
||||||
final Drawable appSourceDrawable = getAppSourceIcon();
|
final IconCompat appSourceIcon = getAppSourceIcon();
|
||||||
boolean colorSetUpdated = false;
|
boolean colorSetUpdated = false;
|
||||||
mCastAppLayout.setVisibility(
|
mCastAppLayout.setVisibility(
|
||||||
mMediaOutputController.shouldShowLaunchSection()
|
mMediaOutputController.shouldShowLaunchSection()
|
||||||
? View.VISIBLE : View.GONE);
|
? View.VISIBLE : View.GONE);
|
||||||
if (appSourceDrawable != null) {
|
|
||||||
mAppResourceIcon.setImageDrawable(appSourceDrawable);
|
|
||||||
mAppButton.setCompoundDrawablesWithIntrinsicBounds(resizeDrawable(appSourceDrawable,
|
|
||||||
mContext.getResources().getDimensionPixelSize(
|
|
||||||
R.dimen.media_output_dialog_app_tier_icon_size
|
|
||||||
)),
|
|
||||||
null, null, null);
|
|
||||||
} else {
|
|
||||||
mAppResourceIcon.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
if (iconRes != 0) {
|
if (iconRes != 0) {
|
||||||
mHeaderIcon.setVisibility(View.VISIBLE);
|
mHeaderIcon.setVisibility(View.VISIBLE);
|
||||||
mHeaderIcon.setImageResource(iconRes);
|
mHeaderIcon.setImageResource(iconRes);
|
||||||
} else if (iconCompat != null) {
|
} else if (headerIcon != null) {
|
||||||
Icon icon = iconCompat.toIcon(mContext);
|
Icon icon = headerIcon.toIcon(mContext);
|
||||||
if (icon.getType() != Icon.TYPE_BITMAP && icon.getType() != Icon.TYPE_ADAPTIVE_BITMAP) {
|
if (icon.getType() != Icon.TYPE_BITMAP && icon.getType() != Icon.TYPE_ADAPTIVE_BITMAP) {
|
||||||
// icon doesn't support getBitmap, use default value for color scheme
|
// icon doesn't support getBitmap, use default value for color scheme
|
||||||
updateButtonBackgroundColorFilter();
|
updateButtonBackgroundColorFilter();
|
||||||
@@ -336,6 +326,18 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
} else {
|
} else {
|
||||||
mHeaderIcon.setVisibility(View.GONE);
|
mHeaderIcon.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
if (appSourceIcon != null) {
|
||||||
|
Icon appIcon = appSourceIcon.toIcon(mContext);
|
||||||
|
mAppResourceIcon.setColorFilter(mMediaOutputController.getColorItemContent());
|
||||||
|
mAppResourceIcon.setImageIcon(appIcon);
|
||||||
|
} else {
|
||||||
|
Drawable appIconDrawable = mMediaOutputController.getAppSourceIconFromPackage();
|
||||||
|
if (appIconDrawable != null) {
|
||||||
|
mAppResourceIcon.setImageDrawable(appIconDrawable);
|
||||||
|
} else {
|
||||||
|
mAppResourceIcon.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mHeaderIcon.getVisibility() == View.VISIBLE) {
|
if (mHeaderIcon.getVisibility() == View.VISIBLE) {
|
||||||
final int size = getHeaderIconSize();
|
final int size = getHeaderIconSize();
|
||||||
final int padding = mContext.getResources().getDimensionPixelSize(
|
final int padding = mContext.getResources().getDimensionPixelSize(
|
||||||
@@ -480,7 +482,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract Drawable getAppSourceIcon();
|
abstract IconCompat getAppSourceIcon();
|
||||||
|
|
||||||
abstract int getHeaderIconRes();
|
abstract int getHeaderIconRes();
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package com.android.systemui.media.dialog;
|
|||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.method.HideReturnsTransformationMethod;
|
import android.text.method.HideReturnsTransformationMethod;
|
||||||
import android.text.method.PasswordTransformationMethod;
|
import android.text.method.PasswordTransformationMethod;
|
||||||
@@ -116,8 +115,8 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Drawable getAppSourceIcon() {
|
IconCompat getAppSourceIcon() {
|
||||||
return mMediaOutputController.getAppSourceIcon();
|
return mMediaOutputController.getNotificationSmallIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawable getAppSourceIcon() {
|
Drawable getAppSourceIconFromPackage() {
|
||||||
if (mPackageName.isEmpty()) {
|
if (mPackageName.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -425,6 +425,24 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
|||||||
|| isSelectedDeviceInGroup;
|
|| isSelectedDeviceInGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IconCompat getNotificationSmallIcon() {
|
||||||
|
if (TextUtils.isEmpty(mPackageName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (NotificationEntry entry : mNotifCollection.getAllNotifs()) {
|
||||||
|
final Notification notification = entry.getSbn().getNotification();
|
||||||
|
if (notification.isMediaNotification()
|
||||||
|
&& TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) {
|
||||||
|
final Icon icon = notification.getSmallIcon();
|
||||||
|
if (icon == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return IconCompat.createFromIcon(icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
IconCompat getNotificationIcon() {
|
IconCompat getNotificationIcon() {
|
||||||
if (TextUtils.isEmpty(mPackageName)) {
|
if (TextUtils.isEmpty(mPackageName)) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package com.android.systemui.media.dialog;
|
package com.android.systemui.media.dialog;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@@ -81,8 +80,8 @@ public class MediaOutputDialog extends MediaOutputBaseDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Drawable getAppSourceIcon() {
|
IconCompat getAppSourceIcon() {
|
||||||
return mMediaOutputController.getAppSourceIcon();
|
return mMediaOutputController.getNotificationSmallIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.app.KeyguardManager;
|
import android.app.KeyguardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.session.MediaController;
|
import android.media.session.MediaController;
|
||||||
import android.media.session.MediaSessionManager;
|
import android.media.session.MediaSessionManager;
|
||||||
@@ -296,7 +295,7 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Drawable getAppSourceIcon() {
|
IconCompat getAppSourceIcon() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user