Merge "Hide haptic intensity settings for devices without enough dynamic range." into pi-dev am: 8c60fc69b7
am: 23460d03bc
Change-Id: I5c5e8a4157874f19abe28201fba772c72bc7f9d9
This commit is contained in:
@@ -781,17 +781,27 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
}
|
||||
|
||||
private String getVibrationSummary(Context context, @VibrationIntensity int intensity) {
|
||||
switch (intensity) {
|
||||
case Vibrator.VIBRATION_INTENSITY_OFF:
|
||||
return context.getString(R.string.accessibility_vibration_summary_off);
|
||||
case Vibrator.VIBRATION_INTENSITY_LOW:
|
||||
return context.getString(R.string.accessibility_vibration_summary_low);
|
||||
case Vibrator.VIBRATION_INTENSITY_MEDIUM:
|
||||
return context.getString(R.string.accessibility_vibration_summary_medium);
|
||||
case Vibrator.VIBRATION_INTENSITY_HIGH:
|
||||
return context.getString(R.string.accessibility_vibration_summary_high);
|
||||
default:
|
||||
return "";
|
||||
final boolean supportsMultipleIntensities = context.getResources().getBoolean(
|
||||
R.bool.config_vibration_supports_multiple_intensities);
|
||||
if (supportsMultipleIntensities) {
|
||||
switch (intensity) {
|
||||
case Vibrator.VIBRATION_INTENSITY_OFF:
|
||||
return context.getString(R.string.accessibility_vibration_summary_off);
|
||||
case Vibrator.VIBRATION_INTENSITY_LOW:
|
||||
return context.getString(R.string.accessibility_vibration_summary_low);
|
||||
case Vibrator.VIBRATION_INTENSITY_MEDIUM:
|
||||
return context.getString(R.string.accessibility_vibration_summary_medium);
|
||||
case Vibrator.VIBRATION_INTENSITY_HIGH:
|
||||
return context.getString(R.string.accessibility_vibration_summary_high);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
if (intensity == Vibrator.VIBRATION_INTENSITY_OFF) {
|
||||
return context.getString(R.string.switch_on_text);
|
||||
} else {
|
||||
return context.getString(R.string.switch_off_text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -81,17 +81,27 @@ public abstract class VibrationIntensityPreferenceController extends BasePrefere
|
||||
}
|
||||
|
||||
public static CharSequence getIntensityString(Context context, int intensity) {
|
||||
switch (intensity) {
|
||||
case Vibrator.VIBRATION_INTENSITY_OFF:
|
||||
return context.getText(R.string.accessibility_vibration_intensity_off);
|
||||
case Vibrator.VIBRATION_INTENSITY_LOW:
|
||||
return context.getText(R.string.accessibility_vibration_intensity_low);
|
||||
case Vibrator.VIBRATION_INTENSITY_MEDIUM:
|
||||
return context.getText(R.string.accessibility_vibration_intensity_medium);
|
||||
case Vibrator.VIBRATION_INTENSITY_HIGH:
|
||||
return context.getText(R.string.accessibility_vibration_intensity_high);
|
||||
default:
|
||||
return "";
|
||||
final boolean supportsMultipleIntensities = context.getResources().getBoolean(
|
||||
R.bool.config_vibration_supports_multiple_intensities);
|
||||
if (supportsMultipleIntensities) {
|
||||
switch (intensity) {
|
||||
case Vibrator.VIBRATION_INTENSITY_OFF:
|
||||
return context.getString(R.string.accessibility_vibration_intensity_off);
|
||||
case Vibrator.VIBRATION_INTENSITY_LOW:
|
||||
return context.getString(R.string.accessibility_vibration_intensity_low);
|
||||
case Vibrator.VIBRATION_INTENSITY_MEDIUM:
|
||||
return context.getString(R.string.accessibility_vibration_intensity_medium);
|
||||
case Vibrator.VIBRATION_INTENSITY_HIGH:
|
||||
return context.getString(R.string.accessibility_vibration_intensity_high);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
if (intensity == Vibrator.VIBRATION_INTENSITY_OFF) {
|
||||
return context.getString(R.string.switch_off_text);
|
||||
} else {
|
||||
return context.getString(R.string.switch_on_text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -55,28 +55,15 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
|
||||
final static String KEY_INTENSITY_MEDIUM = "intensity_medium";
|
||||
@VisibleForTesting
|
||||
final static String KEY_INTENSITY_HIGH = "intensity_high";
|
||||
// KEY_INTENSITY_ON is only used when the device doesn't support multiple intensity levels.
|
||||
@VisibleForTesting
|
||||
final static String KEY_INTENSITY_ON = "intensity_on";
|
||||
|
||||
private final Map<String, VibrationIntensityCandidateInfo> mCandidates;
|
||||
private final SettingsObserver mSettingsObserver;
|
||||
|
||||
public VibrationPreferenceFragment() {
|
||||
mCandidates = new ArrayMap<>();
|
||||
mCandidates.put(KEY_INTENSITY_OFF,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_OFF,
|
||||
R.string.accessibility_vibration_intensity_off,
|
||||
Vibrator.VIBRATION_INTENSITY_OFF));
|
||||
mCandidates.put(KEY_INTENSITY_LOW,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_LOW,
|
||||
R.string.accessibility_vibration_intensity_low,
|
||||
Vibrator.VIBRATION_INTENSITY_LOW));
|
||||
mCandidates.put(KEY_INTENSITY_MEDIUM,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_MEDIUM,
|
||||
R.string.accessibility_vibration_intensity_medium,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM));
|
||||
mCandidates.put(KEY_INTENSITY_HIGH,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_HIGH,
|
||||
R.string.accessibility_vibration_intensity_high,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH));
|
||||
mSettingsObserver = new SettingsObserver();
|
||||
}
|
||||
|
||||
@@ -84,6 +71,39 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mSettingsObserver.register();
|
||||
if (mCandidates.isEmpty()) {
|
||||
loadCandidates(context);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadCandidates(Context context) {
|
||||
final boolean supportsMultipleIntensities = context.getResources().getBoolean(
|
||||
R.bool.config_vibration_supports_multiple_intensities);
|
||||
if (supportsMultipleIntensities) {
|
||||
mCandidates.put(KEY_INTENSITY_OFF,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_OFF,
|
||||
R.string.accessibility_vibration_intensity_off,
|
||||
Vibrator.VIBRATION_INTENSITY_OFF));
|
||||
mCandidates.put(KEY_INTENSITY_LOW,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_LOW,
|
||||
R.string.accessibility_vibration_intensity_low,
|
||||
Vibrator.VIBRATION_INTENSITY_LOW));
|
||||
mCandidates.put(KEY_INTENSITY_MEDIUM,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_MEDIUM,
|
||||
R.string.accessibility_vibration_intensity_medium,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM));
|
||||
mCandidates.put(KEY_INTENSITY_HIGH,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_HIGH,
|
||||
R.string.accessibility_vibration_intensity_high,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH));
|
||||
} else {
|
||||
mCandidates.put(KEY_INTENSITY_OFF,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_OFF,
|
||||
R.string.switch_off_text, Vibrator.VIBRATION_INTENSITY_OFF));
|
||||
mCandidates.put(KEY_INTENSITY_ON,
|
||||
new VibrationIntensityCandidateInfo(KEY_INTENSITY_ON,
|
||||
R.string.switch_on_text, getDefaultVibrationIntensity()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,7 +158,10 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm
|
||||
final int vibrationIntensity = Settings.System.getInt(getContext().getContentResolver(),
|
||||
getVibrationIntensitySetting(), getDefaultVibrationIntensity());
|
||||
for (VibrationIntensityCandidateInfo candidate : mCandidates.values()) {
|
||||
if (candidate.getIntensity() == vibrationIntensity) {
|
||||
final boolean matchesIntensity = candidate.getIntensity() == vibrationIntensity;
|
||||
final boolean matchesOn = candidate.getKey().equals(KEY_INTENSITY_ON)
|
||||
&& vibrationIntensity != Vibrator.VIBRATION_INTENSITY_OFF;
|
||||
if (matchesIntensity || matchesOn) {
|
||||
return candidate.getKey();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user