diff options
-rw-r--r-- | src/com/android/dialer/CallDetailActivity.java | 45 | ||||
-rw-r--r-- | src/com/android/dialer/ProximitySensorAware.java | 33 | ||||
-rw-r--r-- | src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java | 64 |
3 files changed, 51 insertions, 91 deletions
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java index 0a295c4fe..536a97cca 100644 --- a/src/com/android/dialer/CallDetailActivity.java +++ b/src/com/android/dialer/CallDetailActivity.java @@ -80,7 +80,7 @@ import java.util.List; * This activity can be either started with the URI of a single call log entry, or with the * {@link #EXTRA_CALL_LOG_IDS} extra to specify a group of call log entries. */ -public class CallDetailActivity extends Activity implements ProximitySensorAware { +public class CallDetailActivity extends Activity { private static final String TAG = "CallDetail"; private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A'; @@ -142,8 +142,6 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware /** Whether we should show "remove from call log" in the options menu. */ private boolean mHasRemoveFromCallLogOption; - private PowerManager.WakeLock mProximityWakeLock; - static final String[] CALL_LOG_PROJECTION = new String[] { CallLog.Calls.DATE, CallLog.Calls.DURATION, @@ -197,13 +195,6 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware mAccountLabel = (TextView) findViewById(R.id.phone_account_label); mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this); mContactPhotoManager = ContactPhotoManager.getInstance(this); - final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); - if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) { - mProximityWakeLock = powerManager.newWakeLock( - PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG); - } else { - mProximityWakeLock = null; - } mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this)); getActionBar().setDisplayHomeAsUpEnabled(true); @@ -707,40 +698,6 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware ); } - @Override - protected void onPause() { - // Immediately stop the proximity sensor. - disableProximitySensor(false); - super.onPause(); - } - - @Override - public void enableProximitySensor() { - 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"); - } - } - - @Override - public void disableProximitySensor(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"); - } - } - private void closeSystemDialogs() { sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); } diff --git a/src/com/android/dialer/ProximitySensorAware.java b/src/com/android/dialer/ProximitySensorAware.java deleted file mode 100644 index 145b8606c..000000000 --- a/src/com/android/dialer/ProximitySensorAware.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.dialer; - -/** - * An object that is aware of the state of the proximity sensor. - */ -public interface ProximitySensorAware { - /** Start tracking the state of the proximity sensor. */ - public void enableProximitySensor(); - - /** - * Stop tracking the state of the proximity sensor. - * - * @param waitForFarState if true and the sensor is currently in the near state, it will wait - * until it is again in the far state before stopping to track its state. - */ - public void disableProximitySensor(boolean waitForFarState); -} 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 */); } } |