diff options
author | Martin Brabham <optedoblivion@cyngn.com> | 2015-03-04 16:15:17 -0800 |
---|---|---|
committer | Matt Garnes <matt@cyngn.com> | 2015-03-05 13:23:23 -0800 |
commit | 3d170b87a4c1d34ef878bd56e8b594ce5804fb7b (patch) | |
tree | eaa6039cef260d6d135eb50712fd701da68c8717 | |
parent | 807e90d318fa225104bc6e4ed503d1b5e0d8c23d (diff) | |
download | android_packages_apps_Dialer-3d170b87a4c1d34ef878bd56e8b594ce5804fb7b.tar.gz android_packages_apps_Dialer-3d170b87a4c1d34ef878bd56e8b594ce5804fb7b.tar.bz2 android_packages_apps_Dialer-3d170b87a4c1d34ef878bd56e8b594ce5804fb7b.zip |
Call Recording: Pause orientation handling during playback to prevent playback interruptions.
Change-Id: I2ce162025b41d677e7942f77bf89424806c5fef9
-rw-r--r-- | src/com/android/dialer/CallDetailActivity.java | 4 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallDetailHistoryAdapter.java | 2 | ||||
-rw-r--r-- | src/com/android/dialer/util/CallRecordingPlayer.java | 39 |
3 files changed, 37 insertions, 8 deletions
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java index 8d579f89a..1f683ed73 100644 --- a/src/com/android/dialer/CallDetailActivity.java +++ b/src/com/android/dialer/CallDetailActivity.java @@ -145,7 +145,7 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener(); private CallRecordingDataStore mCallRecordingDataStore = new CallRecordingDataStore(); - private CallRecordingPlayer mCallRecordingPlayer = new CallRecordingPlayer(); + private CallRecordingPlayer mCallRecordingPlayer; /** Listener to changes in the proximity sensor state. */ private class ProximitySensorListener implements ProximitySensorManager.Listener { @@ -234,6 +234,8 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe setContentView(R.layout.call_detail); + mCallRecordingPlayer = new CallRecordingPlayer(this); + mAsyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor(); mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); mResources = getResources(); diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java index 114cf0f1c..aa65e32e2 100644 --- a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java +++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java @@ -169,7 +169,7 @@ public class CallDetailHistoryAdapter extends BaseAdapter { (ViewGroup) result.findViewById(R.id.recording_playback_layout); playbackView.removeAllViews(); for (CallRecording recording : recordings) { - Button button = mCallRecordingPlayer.createPlaybackButton(mContext, recording); + Button button = mCallRecordingPlayer.createPlaybackButton(recording); playbackView.addView(button); } } diff --git a/src/com/android/dialer/util/CallRecordingPlayer.java b/src/com/android/dialer/util/CallRecordingPlayer.java index 9f7c143bd..fee2cd98e 100644 --- a/src/com/android/dialer/util/CallRecordingPlayer.java +++ b/src/com/android/dialer/util/CallRecordingPlayer.java @@ -16,7 +16,9 @@ package com.android.dialer.util; +import android.app.Activity; import android.content.Context; +import android.content.pm.ActivityInfo; import android.graphics.Color; import android.media.MediaPlayer; import android.os.Environment; @@ -41,9 +43,23 @@ public class CallRecordingPlayer implements MediaPlayer.OnCompletionListener { private MediaPlayer mPlayer = null; private boolean mPlaying = false; private PlayButton mButton; + private Activity mActivity; + + /** + * Constructor + * + * @param context {@link android.content.Context} + * @throws IllegalArgumentException {@link java.lang.IllegalArgumentException} + */ + public CallRecordingPlayer(Activity activity) throws IllegalArgumentException { + if (activity == null) { + throw new IllegalArgumentException("'activity' cannot be null!"); + } + mActivity = activity; + } - public Button createPlaybackButton(Context context, CallRecording recording) { - return new PlayButton(context, recording, this); + public Button createPlaybackButton(CallRecording recording) { + return new PlayButton(mActivity, recording, this); } // button to toggle playback for a call recording @@ -51,11 +67,13 @@ public class CallRecordingPlayer implements MediaPlayer.OnCompletionListener { private boolean mPlaying = false; private CallRecording mRecording; private CallRecordingPlayer mPlayer; + private Activity mActivity; - public PlayButton(Context context, CallRecording recording, CallRecordingPlayer player) { - super(context); + public PlayButton(Activity activity, CallRecording recording, CallRecordingPlayer player) { + super(activity); mRecording = recording; mPlayer = player; + mActivity = activity; reset(); setBackgroundColor(Color.TRANSPARENT); setOnClickListener(this); @@ -64,13 +82,20 @@ public class CallRecordingPlayer implements MediaPlayer.OnCompletionListener { @Override public void onClick(View v) { if (!mPlaying) { + // Lock orientation for the playback duration + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); mPlayer.play(mRecording, this); if (!mPlayer.isPlaying()) { - Toast.makeText(mContext, R.string.call_playback_error_message, + Toast.makeText(getContext(), R.string.call_playback_error_message, Toast.LENGTH_SHORT).show(); + // Play failed, lets unlock + mActivity.setRequestedOrientation( + ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); } } else { mPlayer.stop(); + mActivity.setRequestedOrientation( + ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); } mPlaying = mPlayer.isPlaying(); @@ -80,7 +105,7 @@ public class CallRecordingPlayer implements MediaPlayer.OnCompletionListener { private void updateState() { setText(mPlaying ? R.string.stop_call_playback : R.string.start_call_playback); setCompoundDrawablesRelativeWithIntrinsicBounds(mPlaying - ? R.drawable.ic_playback_stop_dk : R.drawable.ic_playback_dk, + ? R.drawable.ic_playback_stop_dk : R.drawable.ic_playback_dk, 0, 0, 0); } @@ -138,6 +163,8 @@ public class CallRecordingPlayer implements MediaPlayer.OnCompletionListener { @Override public void onCompletion(MediaPlayer mp) { + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + resetButton(); mPlayer.release(); |