- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
206 lines
9.5 KiB
Java
206 lines
9.5 KiB
Java
package androidx.media.app;
|
|
|
|
import android.app.Notification;
|
|
import android.app.PendingIntent;
|
|
import android.media.session.MediaSession;
|
|
import android.os.Bundle;
|
|
import android.os.Parcelable;
|
|
import android.support.v4.media.session.MediaSessionCompat;
|
|
import android.widget.RemoteViews;
|
|
import androidx.annotation.RequiresApi;
|
|
import androidx.annotation.RestrictTo;
|
|
import androidx.core.app.NotificationBuilderWithBuilderAccessor;
|
|
import androidx.core.app.NotificationCompat;
|
|
import androidx.media.R;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class NotificationCompat {
|
|
private NotificationCompat() {
|
|
}
|
|
|
|
public static class MediaStyle extends NotificationCompat.Style {
|
|
private static final int MAX_MEDIA_BUTTONS = 5;
|
|
private static final int MAX_MEDIA_BUTTONS_IN_COMPACT = 3;
|
|
int[] mActionsToShowInCompact = null;
|
|
PendingIntent mCancelButtonIntent;
|
|
boolean mShowCancelButton;
|
|
MediaSessionCompat.Token mToken;
|
|
|
|
public int getBigContentViewLayoutResource(int i) {
|
|
return i <= 3 ? R.layout.notification_template_big_media_narrow : R.layout.notification_template_big_media;
|
|
}
|
|
|
|
public int getContentViewLayoutResource() {
|
|
return R.layout.notification_template_media;
|
|
}
|
|
|
|
@Override // androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public RemoteViews makeBigContentView(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public RemoteViews makeContentView(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
return null;
|
|
}
|
|
|
|
public MediaStyle setCancelButtonIntent(PendingIntent pendingIntent) {
|
|
this.mCancelButtonIntent = pendingIntent;
|
|
return this;
|
|
}
|
|
|
|
public MediaStyle setMediaSession(MediaSessionCompat.Token token) {
|
|
this.mToken = token;
|
|
return this;
|
|
}
|
|
|
|
public MediaStyle setShowActionsInCompactView(int... iArr) {
|
|
this.mActionsToShowInCompact = iArr;
|
|
return this;
|
|
}
|
|
|
|
public MediaStyle setShowCancelButton(boolean z) {
|
|
return this;
|
|
}
|
|
|
|
public static MediaSessionCompat.Token getMediaSession(Notification notification) {
|
|
Parcelable parcelable;
|
|
Bundle extras = androidx.core.app.NotificationCompat.getExtras(notification);
|
|
if (extras == null || (parcelable = extras.getParcelable(androidx.core.app.NotificationCompat.EXTRA_MEDIA_SESSION)) == null) {
|
|
return null;
|
|
}
|
|
return MediaSessionCompat.Token.fromToken(parcelable);
|
|
}
|
|
|
|
public MediaStyle() {
|
|
}
|
|
|
|
public MediaStyle(NotificationCompat.Builder builder) {
|
|
setBuilder(builder);
|
|
}
|
|
|
|
@Override // androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public void apply(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
notificationBuilderWithBuilderAccessor.getBuilder().setStyle(fillInMediaStyle(new Notification.MediaStyle()));
|
|
}
|
|
|
|
@RequiresApi(21)
|
|
public Notification.MediaStyle fillInMediaStyle(Notification.MediaStyle mediaStyle) {
|
|
int[] iArr = this.mActionsToShowInCompact;
|
|
if (iArr != null) {
|
|
mediaStyle.setShowActionsInCompactView(iArr);
|
|
}
|
|
MediaSessionCompat.Token token = this.mToken;
|
|
if (token != null) {
|
|
mediaStyle.setMediaSession((MediaSession.Token) token.getToken());
|
|
}
|
|
return mediaStyle;
|
|
}
|
|
|
|
public RemoteViews generateContentView() {
|
|
RemoteViews applyStandardTemplate = applyStandardTemplate(false, getContentViewLayoutResource(), true);
|
|
int size = this.mBuilder.mActions.size();
|
|
int[] iArr = this.mActionsToShowInCompact;
|
|
int min = iArr == null ? 0 : Math.min(iArr.length, 3);
|
|
applyStandardTemplate.removeAllViews(R.id.media_actions);
|
|
if (min > 0) {
|
|
for (int i = 0; i < min; i++) {
|
|
if (i >= size) {
|
|
throw new IllegalArgumentException(String.format("setShowActionsInCompactView: action %d out of bounds (max %d)", Integer.valueOf(i), Integer.valueOf(size - 1)));
|
|
}
|
|
applyStandardTemplate.addView(R.id.media_actions, generateMediaActionButton(this.mBuilder.mActions.get(this.mActionsToShowInCompact[i])));
|
|
}
|
|
}
|
|
if (this.mShowCancelButton) {
|
|
applyStandardTemplate.setViewVisibility(R.id.end_padder, 8);
|
|
applyStandardTemplate.setViewVisibility(R.id.cancel_action, 0);
|
|
applyStandardTemplate.setOnClickPendingIntent(R.id.cancel_action, this.mCancelButtonIntent);
|
|
applyStandardTemplate.setInt(R.id.cancel_action, "setAlpha", this.mBuilder.mContext.getResources().getInteger(R.integer.cancel_button_image_alpha));
|
|
} else {
|
|
applyStandardTemplate.setViewVisibility(R.id.end_padder, 0);
|
|
applyStandardTemplate.setViewVisibility(R.id.cancel_action, 8);
|
|
}
|
|
return applyStandardTemplate;
|
|
}
|
|
|
|
private RemoteViews generateMediaActionButton(NotificationCompat.Action action) {
|
|
boolean z = action.getActionIntent() == null;
|
|
RemoteViews remoteViews = new RemoteViews(this.mBuilder.mContext.getPackageName(), R.layout.notification_media_action);
|
|
remoteViews.setImageViewResource(R.id.action0, action.getIcon());
|
|
if (!z) {
|
|
remoteViews.setOnClickPendingIntent(R.id.action0, action.getActionIntent());
|
|
}
|
|
remoteViews.setContentDescription(R.id.action0, action.getTitle());
|
|
return remoteViews;
|
|
}
|
|
|
|
public RemoteViews generateBigContentView() {
|
|
int min = Math.min(this.mBuilder.mActions.size(), 5);
|
|
RemoteViews applyStandardTemplate = applyStandardTemplate(false, getBigContentViewLayoutResource(min), false);
|
|
applyStandardTemplate.removeAllViews(R.id.media_actions);
|
|
if (min > 0) {
|
|
for (int i = 0; i < min; i++) {
|
|
applyStandardTemplate.addView(R.id.media_actions, generateMediaActionButton(this.mBuilder.mActions.get(i)));
|
|
}
|
|
}
|
|
if (this.mShowCancelButton) {
|
|
applyStandardTemplate.setViewVisibility(R.id.cancel_action, 0);
|
|
applyStandardTemplate.setInt(R.id.cancel_action, "setAlpha", this.mBuilder.mContext.getResources().getInteger(R.integer.cancel_button_image_alpha));
|
|
applyStandardTemplate.setOnClickPendingIntent(R.id.cancel_action, this.mCancelButtonIntent);
|
|
} else {
|
|
applyStandardTemplate.setViewVisibility(R.id.cancel_action, 8);
|
|
}
|
|
return applyStandardTemplate;
|
|
}
|
|
}
|
|
|
|
public static class DecoratedMediaCustomViewStyle extends MediaStyle {
|
|
@Override // androidx.media.app.NotificationCompat.MediaStyle
|
|
public int getBigContentViewLayoutResource(int i) {
|
|
return i <= 3 ? R.layout.notification_template_big_media_narrow_custom : R.layout.notification_template_big_media_custom;
|
|
}
|
|
|
|
@Override // androidx.media.app.NotificationCompat.MediaStyle, androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public RemoteViews makeBigContentView(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.media.app.NotificationCompat.MediaStyle, androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public RemoteViews makeContentView(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public RemoteViews makeHeadsUpContentView(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.media.app.NotificationCompat.MediaStyle, androidx.core.app.NotificationCompat.Style
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public void apply(NotificationBuilderWithBuilderAccessor notificationBuilderWithBuilderAccessor) {
|
|
notificationBuilderWithBuilderAccessor.getBuilder().setStyle(fillInMediaStyle(new Notification.DecoratedMediaCustomViewStyle()));
|
|
}
|
|
|
|
@Override // androidx.media.app.NotificationCompat.MediaStyle
|
|
public int getContentViewLayoutResource() {
|
|
return this.mBuilder.getContentView() != null ? R.layout.notification_template_media_custom : super.getContentViewLayoutResource();
|
|
}
|
|
|
|
private void setBackgroundColor(RemoteViews remoteViews) {
|
|
int color;
|
|
if (this.mBuilder.getColor() != 0) {
|
|
color = this.mBuilder.getColor();
|
|
} else {
|
|
color = this.mBuilder.mContext.getResources().getColor(R.color.notification_material_background_media_default_color);
|
|
}
|
|
remoteViews.setInt(R.id.status_bar_latest_event_content, "setBackgroundColor", color);
|
|
}
|
|
}
|
|
}
|