summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/voicemail
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2015-05-13 12:23:35 -0700
committerAndrew Lee <anwlee@google.com>2015-05-13 12:29:11 -0700
commit93b816f753b67157f14a8389dc63f32cff40c8d4 (patch)
tree48d0c49acdbf729baa756bb02a59d780a3a76f97 /src/com/android/dialer/voicemail
parent91dc991cecfd283b2cf58dbe45dc7c6e6c58ed39 (diff)
Move proximity sensor logic into VM fragment.
In preparation for moving it from the CallDetailActivity into the call log. Seems to make sense to consolidate this within the fragment in any case. Bug: 20433758 Change-Id: I1aa0cd9a766fac3e1eb9285d31df5ed90523b8ad
Diffstat (limited to 'src/com/android/dialer/voicemail')
-rw-r--r--src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java64
1 files changed, 50 insertions, 14 deletions
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 0d5c3deed..fd98688f1 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -41,7 +41,6 @@ import android.widget.TextView;
import com.android.common.io.MoreCloseables;
import com.android.contacts.commonbind.analytics.AnalyticsUtil;
-import com.android.dialer.ProximitySensorAware;
import com.android.dialer.R;
import com.android.dialer.util.AsyncTaskExecutors;
import com.android.ex.variablespeed.MediaPlayerProxy;
@@ -68,7 +67,7 @@ import javax.annotation.concurrent.NotThreadSafe;
*/
@NotThreadSafe
public class VoicemailPlaybackFragment extends Fragment {
- private static final String TAG = "VoicemailPlayback";
+ private static final String TAG = VoicemailPlaybackFragment.class.getSimpleName();
private static final int NUMBER_OF_THREADS_IN_POOL = 2;
private static final String[] HAS_CONTENT_PROJECTION = new String[] {
VoicemailContract.Voicemails.HAS_CONTENT,
@@ -80,6 +79,8 @@ public class VoicemailPlaybackFragment extends Fragment {
private static ScheduledExecutorService mScheduledExecutorService;
private View mPlaybackLayout;
+ private PowerManager.WakeLock mProximityWakeLock;
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -95,15 +96,24 @@ public class VoicemailPlaybackFragment extends Fragment {
Uri voicemailUri = arguments.getParcelable(EXTRA_VOICEMAIL_URI);
Preconditions.checkNotNull(voicemailUri, "fragment must contain EXTRA_VOICEMAIL_URI");
boolean startPlayback = arguments.getBoolean(EXTRA_VOICEMAIL_START_PLAYBACK, false);
+
PowerManager powerManager =
(PowerManager) getActivity().getSystemService(Context.POWER_SERVICE);
- PowerManager.WakeLock wakeLock =
- powerManager.newWakeLock(
- PowerManager.SCREEN_DIM_WAKE_LOCK, getClass().getSimpleName());
- mPresenter = new VoicemailPlaybackPresenter(createPlaybackViewImpl(),
- getMediaPlayerInstance(), voicemailUri,
- getScheduledExecutorServiceInstance(), startPlayback,
- AsyncTaskExecutors.createAsyncTaskExecutor(), wakeLock);
+ if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
+ mProximityWakeLock = powerManager.newWakeLock(
+ PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
+ } else {
+ mProximityWakeLock = null;
+ }
+
+ mPresenter = new VoicemailPlaybackPresenter(
+ createPlaybackViewImpl(),
+ getMediaPlayerInstance(),
+ voicemailUri,
+ getScheduledExecutorServiceInstance(),
+ startPlayback,
+ AsyncTaskExecutors.createAsyncTaskExecutor(),
+ mProximityWakeLock);
mPresenter.onCreate(savedInstanceState);
}
@@ -134,6 +144,7 @@ public class VoicemailPlaybackFragment extends Fragment {
@Override
public void onPause() {
+ releaseProximitySensor(false /* waitForFarState */);
mPresenter.onPause();
super.onPause();
}
@@ -175,6 +186,31 @@ public class VoicemailPlaybackFragment extends Fragment {
}
}
+ private void acquireProximitySensor() {
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (!mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Acquiring proximity wake lock");
+ mProximityWakeLock.acquire();
+ } else {
+ Log.i(TAG, "Proximity wake lock already acquired");
+ }
+ }
+
+ private void releaseProximitySensor(boolean waitForFarState) {
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Releasing proximity wake lock");
+ int flags = waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0;
+ mProximityWakeLock.release(flags);
+ } else {
+ Log.i(TAG, "Proximity wake lock already released");
+ }
+ }
+
/**
* Formats a number of milliseconds as something that looks like {@code 00:05}.
* <p>
@@ -214,7 +250,7 @@ public class VoicemailPlaybackFragment extends Fragment {
}
/** Methods required by the PlaybackView for the VoicemailPlaybackPresenter. */
- private static final class PlaybackViewImpl implements VoicemailPlaybackPresenter.PlaybackView {
+ private final class PlaybackViewImpl implements VoicemailPlaybackPresenter.PlaybackView {
private final ActivityReference mActivityReference;
private final Context mApplicationContext;
private final SeekBar mPlaybackSeek;
@@ -311,8 +347,8 @@ public class VoicemailPlaybackFragment extends Fragment {
public void enableProximitySensor() {
// Only change the state if the activity is still around.
Activity activity = mActivityReference.get();
- if (activity != null && activity instanceof ProximitySensorAware) {
- ((ProximitySensorAware) activity).enableProximitySensor();
+ if (activity != null) {
+ acquireProximitySensor();
}
}
@@ -320,8 +356,8 @@ public class VoicemailPlaybackFragment extends Fragment {
public void disableProximitySensor() {
// Only change the state if the activity is still around.
Activity activity = mActivityReference.get();
- if (activity != null && activity instanceof ProximitySensorAware) {
- ((ProximitySensorAware) activity).disableProximitySensor(true);
+ if (activity != null) {
+ releaseProximitySensor(true /* waitForFarState */);
}
}