summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Brabham <optedoblivion@cyngn.com>2015-03-04 16:15:17 -0800
committerMatt Garnes <matt@cyngn.com>2015-03-05 13:23:23 -0800
commit3d170b87a4c1d34ef878bd56e8b594ce5804fb7b (patch)
treeeaa6039cef260d6d135eb50712fd701da68c8717
parent807e90d318fa225104bc6e4ed503d1b5e0d8c23d (diff)
downloadandroid_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.java4
-rw-r--r--src/com/android/dialer/calllog/CallDetailHistoryAdapter.java2
-rw-r--r--src/com/android/dialer/util/CallRecordingPlayer.java39
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();