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

Commit af6b0d2c authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Enable virtualization

When the Intent says to virtualize, and the right virtualizer is
present on the device, enable virtualization.
b/8767565

Change-Id: I8a98404b21c434966b7ae2dc341eb38f2a47eef2
parent 09e1a5ac
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import android.content.IntentFilter;
import android.graphics.Color;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.audiofx.AudioEffect;
import android.media.audiofx.Virtualizer;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -67,6 +69,7 @@ public class MoviePlayer implements
    private static final String CMDNAME = "command";
    private static final String CMDPAUSE = "pause";

    private static final String VIRTUALIZE_EXTRA = "virtualize";
    private static final long BLACK_TIMEOUT = 500;

    // If we resume the acitivty with in RESUMEABLE_TIMEOUT, we will keep playing.
@@ -93,6 +96,8 @@ public class MoviePlayer implements
    // If the time bar is visible.
    private boolean mShowing;

    private Virtualizer mVirtualizer;

    private final Runnable mPlayingChecker = new Runnable() {
        @Override
        public void run() {
@@ -128,6 +133,31 @@ public class MoviePlayer implements
        mVideoView.setOnErrorListener(this);
        mVideoView.setOnCompletionListener(this);
        mVideoView.setVideoURI(mUri);
        if (mVirtualizer != null) {
            mVirtualizer.release();
            mVirtualizer = null;
        }

        Intent ai = movieActivity.getIntent();
        boolean virtualize = ai.getBooleanExtra(VIRTUALIZE_EXTRA, false);
        if (virtualize) {
            int session = mVideoView.getAudioSessionId();
            if (session != 0) {
                Virtualizer virt = new Virtualizer(0, session);
                AudioEffect.Descriptor descriptor = virt.getDescriptor();
                String uuid = descriptor.uuid.toString();
                if (uuid.equals("36103c52-8514-11e2-9e96-0800200c9a66") ||
                        uuid.equals("36103c50-8514-11e2-9e96-0800200c9a66")) {
                    mVirtualizer = virt;
                    mVirtualizer.setEnabled(true);
                } else {
                    // This is not the audio virtualizer we're looking for
                    virt.release();
                }
            } else {
                Log.w(TAG, "no session");
            }
        }
        mVideoView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
@@ -270,6 +300,10 @@ public class MoviePlayer implements
    }

    public void onDestroy() {
        if (mVirtualizer != null) {
            mVirtualizer.release();
            mVirtualizer = null;
        }
        mVideoView.stopPlayback();
        mAudioBecomingNoisyReceiver.unregister();
    }