Remove mVideoPaused from VideoPreference

- We destoryed the MediaPlayer when VideoPreference is onPause().
When VideoPreference is onResumed, MediaPlayer always start from
pause state, we don't need a data save/restore current video state.

Bug: 143270527
Test: robolectric, manual
Change-Id: I544e933e4237f6d92aeff8a7eb04b52e89d74a4a
This commit is contained in:
Raff Tsai
2019-11-01 10:37:27 +08:00
parent 9101ab566a
commit 68927639ee
10 changed files with 17 additions and 158 deletions

View File

@@ -259,7 +259,6 @@ public class FaceSettings extends DashboardFragment {
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
Lifecycle lifecycle) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new FaceSettingsVideoPreferenceController(context));
controllers.add(new FaceSettingsKeyguardPreferenceController(context));
controllers.add(new FaceSettingsAppPreferenceController(context));
controllers.add(new FaceSettingsRemoveButtonPreferenceController(context));

View File

@@ -1,50 +0,0 @@
/*
* Copyright (C) 2019 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.settings.biometrics.face;
import android.content.Context;
import androidx.preference.PreferenceScreen;
import com.android.settings.widget.VideoPreference;
import com.android.settings.widget.VideoPreferenceController;
/**
* Preference controller for the video for face settings.
*/
public class FaceSettingsVideoPreferenceController extends VideoPreferenceController {
private static final String KEY_VIDEO = "security_settings_face_video";
private VideoPreference mVideoPreference;
public FaceSettingsVideoPreferenceController(Context context,
String preferenceKey) {
super(context, preferenceKey);
}
public FaceSettingsVideoPreferenceController(Context context) {
this(context, KEY_VIDEO);
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mVideoPreference = screen.findPreference(KEY_VIDEO);
mVideoPreference.onViewVisible(false /* paused */);
}
}

View File

@@ -17,9 +17,7 @@
package com.android.settings.gestures;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -27,21 +25,14 @@ import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.widget.VideoPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreate;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
public abstract class GesturePreferenceController extends TogglePreferenceController
implements Preference.OnPreferenceChangeListener,
LifecycleObserver, OnResume, OnPause, OnCreate, OnSaveInstanceState {
@VisibleForTesting
static final String KEY_VIDEO_PAUSED = "key_video_paused";
LifecycleObserver, OnResume, OnPause {
private VideoPreference mVideoPreference;
@VisibleForTesting
boolean mVideoPaused;
public GesturePreferenceController(Context context, String key) {
super(context, key);
@@ -70,22 +61,9 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
isChecked() ? R.string.gesture_setting_on : R.string.gesture_setting_off);
}
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mVideoPaused = savedInstanceState.getBoolean(KEY_VIDEO_PAUSED, false);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(KEY_VIDEO_PAUSED, mVideoPaused);
}
@Override
public void onPause() {
if (mVideoPreference != null) {
mVideoPaused = mVideoPreference.isVideoPaused();
mVideoPreference.onViewInvisible();
}
}
@@ -93,7 +71,7 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
@Override
public void onResume() {
if (mVideoPreference != null) {
mVideoPreference.onViewVisible(mVideoPaused);
mVideoPreference.onViewVisible();
}
}

View File

@@ -20,7 +20,6 @@ import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
@@ -35,15 +34,13 @@ import com.android.settings.widget.VideoPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreate;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
import com.android.settingslib.widget.RadioButtonPreference;
public class PreventRingingGesturePreferenceController extends AbstractPreferenceController
implements RadioButtonPreference.OnClickListener, LifecycleObserver, OnSaveInstanceState,
OnResume, OnPause, OnCreate, PreferenceControllerMixin {
implements RadioButtonPreference.OnClickListener, LifecycleObserver,
OnResume, OnPause, PreferenceControllerMixin {
@VisibleForTesting
static final String KEY_VIBRATE = "prevent_ringing_option_vibrate";
@@ -51,13 +48,11 @@ public class PreventRingingGesturePreferenceController extends AbstractPreferenc
@VisibleForTesting
static final String KEY_MUTE = "prevent_ringing_option_mute";
private final String KEY_VIDEO_PAUSED = "key_video_paused";
private final String PREF_KEY_VIDEO = "gesture_prevent_ringing_video";
private final String KEY = "gesture_prevent_ringing_category";
private final Context mContext;
private VideoPreference mVideoPreference;
private boolean mVideoPaused;
@VisibleForTesting
PreferenceCategory mPreferenceCategory;
@@ -109,11 +104,6 @@ public class PreventRingingGesturePreferenceController extends AbstractPreferenc
return PREF_KEY_VIDEO;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(KEY_VIDEO_PAUSED, mVideoPaused);
}
@Override
public void onRadioButtonClicked(RadioButtonPreference preference) {
int preventRingingSetting = keyToSetting(preference.getKey());
@@ -146,13 +136,6 @@ public class PreventRingingGesturePreferenceController extends AbstractPreferenc
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mVideoPaused = savedInstanceState.getBoolean(KEY_VIDEO_PAUSED, false);
}
}
@Override
public void onResume() {
if (mSettingObserver != null) {
@@ -161,7 +144,7 @@ public class PreventRingingGesturePreferenceController extends AbstractPreferenc
}
if (mVideoPreference != null) {
mVideoPreference.onViewVisible(mVideoPaused);
mVideoPreference.onViewVisible();
}
}
@@ -172,7 +155,6 @@ public class PreventRingingGesturePreferenceController extends AbstractPreferenc
}
if (mVideoPreference != null) {
mVideoPaused = mVideoPreference.isVideoPaused();
mVideoPreference.onViewInvisible();
}
}

View File

@@ -45,7 +45,6 @@ public class VideoPreference extends Preference {
AnimationController mAnimationController;
@VisibleForTesting
boolean mAnimationAvailable;
private boolean mVideoPaused;
private float mAspectRatio = 1.0f;
private int mPreviewId;
private int mAnimationId;
@@ -130,11 +129,16 @@ public class VideoPreference extends Preference {
super.onDetached();
}
public void onViewVisible(boolean videoPaused) {
mVideoPaused = videoPaused;
/**
* Called from {@link VideoPreferenceController} when the view is onResume
*/
public void onViewVisible() {
initAnimationController();
}
/**
* Called from {@link VideoPreferenceController} when the view is onPause
*/
public void onViewInvisible() {
releaseAnimationController();
}
@@ -174,10 +178,6 @@ public class VideoPreference extends Preference {
return mAnimationAvailable;
}
public boolean isVideoPaused() {
return mVideoPaused;
}
/**
* sets the height of the video preference
*

View File

@@ -29,7 +29,6 @@ public class VideoPreferenceController extends BasePreferenceController implemen
LifecycleObserver, OnResume, OnPause {
private VideoPreference mVideoPreference;
private boolean mVideoPaused;
public VideoPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -50,7 +49,6 @@ public class VideoPreferenceController extends BasePreferenceController implemen
@Override
public void onPause() {
if (mVideoPreference != null) {
mVideoPaused = mVideoPreference.isVideoPaused();
mVideoPreference.onViewInvisible();
}
}
@@ -58,7 +56,7 @@ public class VideoPreferenceController extends BasePreferenceController implemen
@Override
public void onResume() {
if (mVideoPreference != null) {
mVideoPreference.onViewVisible(mVideoPaused);
mVideoPreference.onViewVisible();
}
}