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

Commit 96a8ee3a authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by android-build-merger
Browse files

Merge \"Optimize audio playback restriction check\" into nyc-mr1-dev

am: 69c61666

Change-Id: If626176f014e65f0248c5ae80d9196dd27076ec4
parents f1d5c81a 69c61666
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -181,10 +181,15 @@ public abstract class PlayerBase {
     * @return
     * @return
     */
     */
    boolean isRestricted_sync() {
    boolean isRestricted_sync() {
        // check app ops
        if (mHasAppOpsPlayAudio) {
            return false;
        }
        // check bypass flag
        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
            return false;
            return false;
        }
        }
        return !mHasAppOpsPlayAudio;
        return true;
    }
    }


    // Abstract methods a subclass needs to implement
    // Abstract methods a subclass needs to implement
+20 −16
Original line number Original line Diff line number Diff line
@@ -505,27 +505,31 @@ public class SoundPool {
    }
    }


    private boolean isRestricted() {
    private boolean isRestricted() {
        IAudioService service = getService();
        // check app ops
        if (mHasAppOpsPlayAudio) {
            return false;
        }
        // check bypass flag
        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
            return false;
        }
        // check force audibility flag and camera restriction
        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) != 0) {
// FIXME: should also check usage when set properly by camera app
//          && (mAttributes.getUsage() == AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
            boolean cameraSoundForced = false;
            boolean cameraSoundForced = false;

            try {
            try {
            cameraSoundForced = service.isCameraSoundForced();
                cameraSoundForced = getService().isCameraSoundForced();
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.e(TAG, "Cannot access AudioService in isRestricted()");
                Log.e(TAG, "Cannot access AudioService in isRestricted()");
            } catch (NullPointerException e) {
                Log.e(TAG, "Null AudioService in isRestricted()");
            }
            }

            if (cameraSoundForced) {
        if (cameraSoundForced &&
                ((mAttributes.getAllFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) != 0)
// FIXME: should also check usage when set properly by camera app
//                && (mAttributes.getUsage() == AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
                ) {
                return false;
                return false;
            }
            }

        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
            return false;
        }
        }
        return !mHasAppOpsPlayAudio;
        return true;
    }
    }


    private void updateAppOpsPlayAudio() {
    private void updateAppOpsPlayAudio() {