FP2-1056:[ST_2][Gallery]Video doesn't stop playing when receiving a Wake-up alarm alert
When the alarm clock comes, pause the video.
When the call comes, pause the video.
Change-Id: I8c7f95ff2a3e41e66627a382d1884a60a67c57f7
diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java
index 1547f6f..3879232 100644
--- a/src/com/android/gallery3d/app/MovieActivity.java
+++ b/src/com/android/gallery3d/app/MovieActivity.java
@@ -21,8 +21,11 @@
import android.app.Activity;
import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
+import android.content.BroadcastReceiver;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
+import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
@@ -32,6 +35,8 @@
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.OpenableColumns;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
@@ -39,7 +44,6 @@
import android.view.Window;
import android.view.WindowManager;
import android.widget.ShareActionProvider;
-
import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.Utils;
@@ -61,6 +65,8 @@
private boolean mFinishOnCompletion;
private Uri mUri;
private boolean mTreatUpAsBack;
+ private AudioManager mAudioManager;
+ private TelephonyManager mTelephonyManager;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void setSystemUiVisibility(View rootView) {
@@ -77,6 +83,9 @@
requestWindowFeature(Window.FEATURE_ACTION_BAR);
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
+ mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
+ mTelephonyManager.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
+ mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
setContentView(R.layout.movie_view);
View rootView = findViewById(R.id.movie_view_root);
@@ -227,12 +236,17 @@
@Override
public void onPause() {
+ unregisterReceiver(mReceiver);
mPlayer.onPause();
super.onPause();
}
@Override
public void onResume() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction("com.android.deskclock.ALARM_ALERT");
+ filter.addAction("com.android.deskclock.ALARM_DONE");
+ registerReceiver(mReceiver, filter);
mPlayer.onResume();
super.onResume();
}
@@ -260,4 +274,51 @@
return mPlayer.onKeyUp(keyCode, event)
|| super.onKeyUp(keyCode, event);
}
+
+ PhoneStateListener mPhoneListener = new PhoneStateListener() {
+ private boolean mControlPaused = false;
+
+ public void onCallStateChanged(int state, String incomingNumber) {
+ super.onCallStateChanged(state, incomingNumber);
+ switch (state) {
+ case TelephonyManager.CALL_STATE_RINGING:
+ if (mPlayer != null && mPlayer.isPlaying()) {
+ mControlPaused = true;
+ mPlayer.onMoviePlayPause();
+ }
+ break;
+ case TelephonyManager.CALL_STATE_IDLE:
+ if (mPlayer != null && mControlPaused) {
+ mPlayer.onReplay();
+ mControlPaused = false;
+ }
+ break;
+ default:
+ break;
+ }
+ };
+ };
+
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ private boolean mControlPaused = false;
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (intent.getAction().equals("com.android.deskclock.ALARM_ALERT")) {
+ Log.d(TAG, "ALARM_ALERT");
+ if (mPlayer != null && mPlayer.isPlaying()) {
+ mPlayer.onMoviePlayPause();
+ mControlPaused = true;
+ }
+ } else if (intent.getAction().equals("com.android.deskclock.ALARM_DONE")) {
+ Log.d(TAG, "ALARM_DONE");
+ if (mPlayer != null && mControlPaused) {
+ mPlayer.onReplay();
+ mControlPaused = false;
+ }
+ }
+ }
+ };
+
}