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

Commit b237e495 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "App title in PiP notification" into rvc-dev am: 29f0eb33

Change-Id: I88538f3a6dd813cdb6bce15a3f3b78297fae21c2
parents e17694c3 29f0eb33
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -708,7 +708,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
                    mActiveMediaSessionListener, null);
            updateMediaController(mMediaSessionManager.getActiveSessions(null));
            for (int i = mListeners.size() - 1; i >= 0; i--) {
                mListeners.get(i).onPipEntered();
                mListeners.get(i).onPipEntered(packageName);
            }
            updatePipVisibility(true);
        }
@@ -758,7 +758,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
         * because there's no guarantee for the PIP manager be return relavent information
         * correctly. (e.g. {@link isPipShown}).
         */
        void onPipEntered();
        void onPipEntered(String packageName);
        /** Invoked when a PIPed activity is closed. */
        void onPipActivityClosed();
        /** Invoked when the PIP menu gets shown. */
+2 −2
Original line number Diff line number Diff line
@@ -137,8 +137,8 @@ public class PipMenuActivity extends Activity implements PipManager.Listener {
    }

    @Override
    public void onPipEntered() {
        if (DEBUG) Log.d(TAG, "onPipEntered()");
    public void onPipEntered(String packageName) {
        if (DEBUG) Log.d(TAG, "onPipEntered(), packageName=" + packageName);
    }

    @Override
+38 −5
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -50,6 +52,8 @@ public class PipNotification {
    private static final String ACTION_MENU = "PipNotification.menu";
    private static final String ACTION_CLOSE = "PipNotification.close";

    private final PackageManager mPackageManager;

    private final PipManager mPipManager;

    private final NotificationManager mNotificationManager;
@@ -59,13 +63,16 @@ public class PipNotification {
    private String mDefaultTitle;
    private int mDefaultIconResId;

    /** Package name for the application that owns PiP window. */
    private String mPackageName;
    private boolean mNotified;
    private String mTitle;
    private String mMediaTitle;
    private Bitmap mArt;

    private PipManager.Listener mPipListener = new PipManager.Listener() {
        @Override
        public void onPipEntered() {
        public void onPipEntered(String packageName) {
            mPackageName = packageName;
            updateMediaControllerMetadata();
            notifyPipNotification();
        }
@@ -73,6 +80,7 @@ public class PipNotification {
        @Override
        public void onPipActivityClosed() {
            dismissPipNotification();
            mPackageName = null;
        }

        @Override
@@ -88,6 +96,7 @@ public class PipNotification {
        @Override
        public void onMoveToFullscreen() {
            dismissPipNotification();
            mPackageName = null;
        }

        @Override
@@ -146,6 +155,8 @@ public class PipNotification {

    public PipNotification(Context context, BroadcastDispatcher broadcastDispatcher,
            PipManager pipManager) {
        mPackageManager = context.getPackageManager();

        mNotificationManager = (NotificationManager) context.getSystemService(
                Context.NOTIFICATION_SERVICE);

@@ -188,7 +199,7 @@ public class PipNotification {
                .setShowWhen(true)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(mDefaultIconResId)
                .setContentTitle(!TextUtils.isEmpty(mTitle) ? mTitle : mDefaultTitle);
                .setContentTitle(getNotificationTitle());
        if (mArt != null) {
            mNotificationBuilder.setStyle(new Notification.BigPictureStyle()
                    .bigPicture(mArt));
@@ -220,14 +231,36 @@ public class PipNotification {
                }
            }
        }
        if (!TextUtils.equals(title, mTitle) || art != mArt) {
            mTitle = title;
        if (!TextUtils.equals(title, mMediaTitle) || art != mArt) {
            mMediaTitle = title;
            mArt = art;
            return true;
        }
        return false;
    }

    private String getNotificationTitle() {
        if (!TextUtils.isEmpty(mMediaTitle)) {
            return mMediaTitle;
        }

        final String applicationTitle = getApplicationLabel(mPackageName);
        if (!TextUtils.isEmpty(applicationTitle)) {
            return applicationTitle;
        }

        return mDefaultTitle;
    }

    private String getApplicationLabel(String packageName) {
        try {
            final ApplicationInfo appInfo = mPackageManager.getApplicationInfo(packageName, 0);
            return mPackageManager.getApplicationLabel(appInfo).toString();
        } catch (PackageManager.NameNotFoundException e) {
            return null;
        }
    }

    private static PendingIntent createPendingIntent(Context context, String action) {
        return PendingIntent.getBroadcast(context, 0,
                new Intent(action), PendingIntent.FLAG_CANCEL_CURRENT);