Merge "Create config for audio haptic channels max value" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8affbdac22
@@ -126,6 +126,7 @@ public abstract class Vibrator {
|
|||||||
// The default vibration intensity level for ringtones.
|
// The default vibration intensity level for ringtones.
|
||||||
@VibrationIntensity
|
@VibrationIntensity
|
||||||
private int mDefaultRingVibrationIntensity;
|
private int mDefaultRingVibrationIntensity;
|
||||||
|
private float mHapticChannelMaxVibrationAmplitude;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide to prevent subclassing from outside of the framework
|
* @hide to prevent subclassing from outside of the framework
|
||||||
@@ -134,7 +135,7 @@ public abstract class Vibrator {
|
|||||||
public Vibrator() {
|
public Vibrator() {
|
||||||
mPackageName = ActivityThread.currentPackageName();
|
mPackageName = ActivityThread.currentPackageName();
|
||||||
final Context ctx = ActivityThread.currentActivityThread().getSystemContext();
|
final Context ctx = ActivityThread.currentActivityThread().getSystemContext();
|
||||||
loadVibrationIntensities(ctx);
|
loadVibrationConfig(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -142,22 +143,28 @@ public abstract class Vibrator {
|
|||||||
*/
|
*/
|
||||||
protected Vibrator(Context context) {
|
protected Vibrator(Context context) {
|
||||||
mPackageName = context.getOpPackageName();
|
mPackageName = context.getOpPackageName();
|
||||||
loadVibrationIntensities(context);
|
loadVibrationConfig(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadVibrationIntensities(Context context) {
|
private void loadVibrationConfig(Context context) {
|
||||||
mDefaultHapticFeedbackIntensity = loadDefaultIntensity(context,
|
mDefaultHapticFeedbackIntensity = loadDefaultIntensity(context,
|
||||||
com.android.internal.R.integer.config_defaultHapticFeedbackIntensity);
|
com.android.internal.R.integer.config_defaultHapticFeedbackIntensity);
|
||||||
mDefaultNotificationVibrationIntensity = loadDefaultIntensity(context,
|
mDefaultNotificationVibrationIntensity = loadDefaultIntensity(context,
|
||||||
com.android.internal.R.integer.config_defaultNotificationVibrationIntensity);
|
com.android.internal.R.integer.config_defaultNotificationVibrationIntensity);
|
||||||
mDefaultRingVibrationIntensity = loadDefaultIntensity(context,
|
mDefaultRingVibrationIntensity = loadDefaultIntensity(context,
|
||||||
com.android.internal.R.integer.config_defaultRingVibrationIntensity);
|
com.android.internal.R.integer.config_defaultRingVibrationIntensity);
|
||||||
|
mHapticChannelMaxVibrationAmplitude = loadFloat(context,
|
||||||
|
com.android.internal.R.dimen.config_hapticChannelMaxVibrationAmplitude, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int loadDefaultIntensity(Context ctx, int resId) {
|
private int loadDefaultIntensity(Context ctx, int resId) {
|
||||||
return ctx != null ? ctx.getResources().getInteger(resId) : VIBRATION_INTENSITY_MEDIUM;
|
return ctx != null ? ctx.getResources().getInteger(resId) : VIBRATION_INTENSITY_MEDIUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private float loadFloat(Context ctx, int resId, float defaultValue) {
|
||||||
|
return ctx != null ? ctx.getResources().getFloat(resId) : defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
protected VibratorInfo getInfo() {
|
protected VibratorInfo getInfo() {
|
||||||
return VibratorInfo.EMPTY_VIBRATOR_INFO;
|
return VibratorInfo.EMPTY_VIBRATOR_INFO;
|
||||||
@@ -296,6 +303,24 @@ public abstract class Vibrator {
|
|||||||
return getInfo().getMaxAmplitude(relativeFrequency);
|
return getInfo().getMaxAmplitude(relativeFrequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the maximum amplitude the vibrator can play using the audio haptic channels.
|
||||||
|
*
|
||||||
|
* <p>This is a positive value, or {@link Float#NaN NaN} if it's unknown. If this returns a
|
||||||
|
* positive value <code>maxAmplitude</code>, then the signals from the haptic channels of audio
|
||||||
|
* tracks should be in the range <code>[-maxAmplitude, maxAmplitude]</code>.
|
||||||
|
*
|
||||||
|
* @return a positive value representing the maximum absolute value the device can play signals
|
||||||
|
* from audio haptic channels, or {@link Float#NaN NaN} if it's unknown.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public float getHapticChannelMaximumAmplitude() {
|
||||||
|
if (mHapticChannelMaxVibrationAmplitude <= 0) {
|
||||||
|
return Float.NaN;
|
||||||
|
}
|
||||||
|
return mHapticChannelMaxVibrationAmplitude;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure an always-on haptics effect.
|
* Configure an always-on haptics effect.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -3350,6 +3350,10 @@
|
|||||||
<!-- The default vibration strength, must be between 1 and 255 inclusive. -->
|
<!-- The default vibration strength, must be between 1 and 255 inclusive. -->
|
||||||
<integer name="config_defaultVibrationAmplitude">255</integer>
|
<integer name="config_defaultVibrationAmplitude">255</integer>
|
||||||
|
|
||||||
|
<!-- The max vibration strength allowed in audio haptic channels, must be positive or zero if
|
||||||
|
limit is unknown. -->
|
||||||
|
<item name="config_hapticChannelMaxVibrationAmplitude" format="float" type="dimen">0</item>
|
||||||
|
|
||||||
<!-- If the device should still vibrate even in low power mode, for certain priority vibrations
|
<!-- If the device should still vibrate even in low power mode, for certain priority vibrations
|
||||||
(e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. -->
|
(e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. -->
|
||||||
<bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool>
|
<bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool>
|
||||||
|
|||||||
@@ -2013,6 +2013,7 @@
|
|||||||
<java-symbol type="integer" name="config_notificationServiceArchiveSize" />
|
<java-symbol type="integer" name="config_notificationServiceArchiveSize" />
|
||||||
<java-symbol type="integer" name="config_previousVibrationsDumpLimit" />
|
<java-symbol type="integer" name="config_previousVibrationsDumpLimit" />
|
||||||
<java-symbol type="integer" name="config_defaultVibrationAmplitude" />
|
<java-symbol type="integer" name="config_defaultVibrationAmplitude" />
|
||||||
|
<java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" />
|
||||||
<java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" />
|
<java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" />
|
||||||
<java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" />
|
<java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" />
|
||||||
<java-symbol type="integer" name="config_radioScanningTimeout" />
|
<java-symbol type="integer" name="config_radioScanningTimeout" />
|
||||||
|
|||||||
@@ -353,6 +353,7 @@ final class VibrationSettings {
|
|||||||
+ ", mLowPowerMode=" + mLowPowerMode
|
+ ", mLowPowerMode=" + mLowPowerMode
|
||||||
+ ", mZenMode=" + Settings.Global.zenModeToString(mZenMode)
|
+ ", mZenMode=" + Settings.Global.zenModeToString(mZenMode)
|
||||||
+ ", mProcStatesCache=" + mUidObserver.mProcStatesCache
|
+ ", mProcStatesCache=" + mUidObserver.mProcStatesCache
|
||||||
|
+ ", mHapticChannelMaxVibrationAmplitude=" + getHapticChannelMaxVibrationAmplitude()
|
||||||
+ ", mHapticFeedbackIntensity="
|
+ ", mHapticFeedbackIntensity="
|
||||||
+ intensityToString(getCurrentIntensity(VibrationAttributes.USAGE_TOUCH))
|
+ intensityToString(getCurrentIntensity(VibrationAttributes.USAGE_TOUCH))
|
||||||
+ ", mHapticFeedbackDefaultIntensity="
|
+ ", mHapticFeedbackDefaultIntensity="
|
||||||
@@ -411,6 +412,12 @@ final class VibrationSettings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private float getHapticChannelMaxVibrationAmplitude() {
|
||||||
|
synchronized (mLock) {
|
||||||
|
return mVibrator == null ? Float.NaN : mVibrator.getHapticChannelMaximumAmplitude();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int getSystemSetting(String settingName, int defaultValue) {
|
private int getSystemSetting(String settingName, int defaultValue) {
|
||||||
return Settings.System.getIntForUser(mContext.getContentResolver(),
|
return Settings.System.getIntForUser(mContext.getContentResolver(),
|
||||||
settingName, defaultValue, UserHandle.USER_CURRENT);
|
settingName, defaultValue, UserHandle.USER_CURRENT);
|
||||||
|
|||||||
Reference in New Issue
Block a user