Files
app_Settings/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
Lucas Dupin 8e490b4039 Disable "double tap to check" when "always on"
"Double tap to check" has no effect when AOD is enabled.
Double tapping will take you to the lock screen anyway.

Test: manual
Test: make RunSettingsRoboTests ROBOTEST_FILTER=DoubleTapScreenPreferenceControllerTest
Change-Id: Ia97b7ecb00a9d83b867959d83642d476841e2f13
Fixes: 73096311
2018-02-12 15:28:59 -08:00

110 lines
3.8 KiB
Java

/*
* Copyright (C) 2016 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.gestures;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.annotation.VisibleForTesting;
import com.android.internal.hardware.AmbientDisplayConfiguration;
import com.android.settings.R;
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.search.ResultPayload;
import com.android.settingslib.core.lifecycle.Lifecycle;
import static android.provider.Settings.Secure.DOZE_PULSE_ON_DOUBLE_TAP;
public class DoubleTapScreenPreferenceController extends GesturePreferenceController {
private final int ON = 1;
private final int OFF = 0;
private static final String PREF_KEY_VIDEO = "gesture_double_tap_screen_video";
private final String mDoubleTapScreenPrefKey;
private final String SECURE_KEY = DOZE_PULSE_ON_DOUBLE_TAP;
private final AmbientDisplayConfiguration mAmbientConfig;
@UserIdInt
private final int mUserId;
public DoubleTapScreenPreferenceController(Context context, Lifecycle lifecycle,
AmbientDisplayConfiguration config, @UserIdInt int userId, String key) {
super(context, lifecycle);
mAmbientConfig = config;
mUserId = userId;
mDoubleTapScreenPrefKey = key;
}
public static boolean isSuggestionComplete(Context context, SharedPreferences prefs) {
return isSuggestionComplete(new AmbientDisplayConfiguration(context), prefs);
}
@VisibleForTesting
static boolean isSuggestionComplete(AmbientDisplayConfiguration config,
SharedPreferences prefs) {
return !config.pulseOnDoubleTapAvailable()
|| prefs.getBoolean(DoubleTapScreenSettings.PREF_KEY_SUGGESTION_COMPLETE, false);
}
@Override
public boolean isAvailable() {
return mAmbientConfig.pulseOnDoubleTapAvailable();
}
@Override
public String getPreferenceKey() {
return mDoubleTapScreenPrefKey;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean enabled = (boolean) newValue;
Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY, enabled ? ON : OFF);
return true;
}
@Override
protected String getVideoPrefKey() {
return PREF_KEY_VIDEO;
}
@Override
protected boolean isSwitchPrefEnabled() {
return mAmbientConfig.pulseOnDoubleTapEnabled(mUserId);
}
@Override
public ResultPayload getResultPayload() {
final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DoubleTapScreenSettings.class.getName(), mDoubleTapScreenPrefKey,
mContext.getString(R.string.display_settings));
return new InlineSwitchPayload(SECURE_KEY, ResultPayload.SettingsSource.SECURE,
ON /* onValue */, intent, isAvailable(), ON /* defaultValue */);
}
@Override
protected boolean canHandleClicks() {
return !mAmbientConfig.alwaysOnEnabled(mUserId);
}
}