OSDN Git Service

Enable virtualization
authorMarco Nelissen <marcone@google.com>
Mon, 13 May 2013 20:36:01 +0000 (13:36 -0700)
committerMarco Nelissen <marcone@google.com>
Mon, 13 May 2013 20:37:32 +0000 (13:37 -0700)
When the Intent says to virtualize, and the right virtualizer is
present on the device, enable virtualization.
b/8767565

Change-Id: I8a98404b21c434966b7ae2dc341eb38f2a47eef2

src/com/android/gallery3d/app/MoviePlayer.java

index 00e4cd6..513d052 100644 (file)
@@ -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();
     }