Enable proximity sensor onPause.

+ When using speakerphone, add flag to keep the screen on.

Bug: 22047261
Change-Id: I4e28ab526218b4cc1f53f2ec98c4749f24ac95af
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 4cd8c4d..41a471d 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -33,6 +33,7 @@
 import android.provider.VoicemailContract;
 import android.util.Log;
 import android.view.View;
+import android.view.WindowManager.LayoutParams;
 import android.widget.SeekBar;
 
 import com.android.dialer.R;
@@ -285,6 +286,7 @@
             mMediaPlayer = null;
         }
 
+        mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         disableProximitySensor(false /* waitForFarState */);
     }
 
@@ -578,7 +580,11 @@
 
         Log.d(TAG, "Resumed playback at " + mPosition + ".");
         mView.onPlaybackStarted(mDuration.get(), getScheduledExecutorServiceInstance());
-        enableProximitySensor();
+        if (isSpeakerphoneOn()) {
+            mActivity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+        } else {
+            enableProximitySensor();
+        }
     }
 
     /**
@@ -600,6 +606,8 @@
 
         mView.onPlaybackStopped();
         mAudioManager.abandonAudioFocus(this);
+
+        mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         disableProximitySensor(true /* waitForFarState */);
     }
 
@@ -621,11 +629,8 @@
     }
 
     private void enableProximitySensor() {
-        // Disable until proximity sensor behavior in onPause is fixed: b/21932251.
-
-        /*
         if (mProximityWakeLock == null || isSpeakerphoneOn() || !mIsPrepared
-                || !mMediaPlayer.isPlaying()) {
+                || mMediaPlayer == null || !mMediaPlayer.isPlaying()) {
             return;
         }
 
@@ -635,7 +640,6 @@
         } else {
             Log.i(TAG, "Proximity wake lock already acquired");
         }
-        */
     }
 
     private void disableProximitySensor(boolean waitForFarState) {
@@ -653,10 +657,15 @@
 
     public void setSpeakerphoneOn(boolean on) {
         mAudioManager.setSpeakerphoneOn(on);
+
         if (on) {
             disableProximitySensor(false /* waitForFarState */);
+            if (mIsPrepared && mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+                mActivity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+            }
         } else {
             enableProximitySensor();
+            mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
         }
     }