Loading src/com/android/server/telecom/Ringer.java +5 −33 Original line number Diff line number Diff line Loading @@ -281,11 +281,11 @@ public class Ringer { mSystemSettingsUtil.getRampingRingerVibrationDuration() >= 0 ? mSystemSettingsUtil.getRampingRingerVibrationDuration() / 1000 : 0; if (mRampingRingerVibrationDuration != previousRampingRingerVibrationDuration) { mRampingRingerVibrationEffect = createRampingRingerVibrationEffect(mRampingRingerVibrationDuration); if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) { effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall); } else { effect = mDefaultVibrationEffect; } effect = mRampingRingerVibrationEffect; // configure volume shaper for ramping ringer int previousRampingRingerDuration = mRampingRingerDuration; Loading Loading @@ -363,7 +363,7 @@ public class Ringer { && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig() && isRingerAudible) { Log.i(this, "start vibration for ramping ringer."); mVibrator.vibrate(effect); mVibrator.vibrate(effect, VIBRATION_ATTRIBUTES); mIsVibrating = true; } else { Log.i(this, "start normal vibration."); Loading @@ -375,34 +375,6 @@ public class Ringer { } } private VibrationEffect createRampingRingerVibrationEffect(int vibrationSeconds) { if (vibrationSeconds < 1) { // vibration duration has to be at least 1 second long. return null; } List<Long> rampingRingerVibrationPatternList = new ArrayList<>(); List<Integer> rampingRingerVibrationAmplitudeList = new ArrayList<>(); while (vibrationSeconds > 0) { rampingRingerVibrationPatternList.addAll( Arrays.stream(PULSE_RAMPING_PATTERN).boxed().collect(Collectors.toList())); rampingRingerVibrationAmplitudeList.addAll( Arrays.stream(PULSE_RAMPING_AMPLITUDE).boxed().collect(Collectors.toList())); vibrationSeconds -= 2; } // remove the last second of pause if (vibrationSeconds < 0) { rampingRingerVibrationPatternList.remove( rampingRingerVibrationPatternList.size() - 1); rampingRingerVibrationAmplitudeList.remove( rampingRingerVibrationAmplitudeList.size() - 1); } long[] rampingRingerVibrationPatternArray = rampingRingerVibrationPatternList.stream().mapToLong(i -> i).toArray(); int[] rampingRingerVibrationAmplitudeArray = rampingRingerVibrationAmplitudeList.stream().mapToInt(i -> i).toArray(); return VibrationEffect.createWaveform(rampingRingerVibrationPatternArray, rampingRingerVibrationAmplitudeArray, -1 /* not repeat */); } private VibrationEffect getVibrationEffectForCall(RingtoneFactory factory, Call call) { VibrationEffect effect = null; Ringtone ringtone = factory.getRingtone(call); Loading src/com/android/server/telecom/SystemSettingsUtil.java +10 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ public class SystemSettingsUtil { /** Flag for whether or not to apply ramping ringer on incoming phone calls. */ private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled"; /** Flag for whether or not to support audio coupled haptics in ramping ringer. */ private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED = "ramping_ringer_audio_coupled_vibration_enabled"; public boolean isTheaterModeOn(Context context) { return Settings.Global.getInt(context.getContentResolver(), Settings.Global.THEATER_MODE_ON, 0) == 1; Loading Loading @@ -70,6 +74,11 @@ public class SystemSettingsUtil { false); } public boolean enableAudioCoupledVibrationForRampingRinger() { return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false); } public int getRampingRingerDuration() { return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_DURATION_MILLIS, -1); Loading Loading
src/com/android/server/telecom/Ringer.java +5 −33 Original line number Diff line number Diff line Loading @@ -281,11 +281,11 @@ public class Ringer { mSystemSettingsUtil.getRampingRingerVibrationDuration() >= 0 ? mSystemSettingsUtil.getRampingRingerVibrationDuration() / 1000 : 0; if (mRampingRingerVibrationDuration != previousRampingRingerVibrationDuration) { mRampingRingerVibrationEffect = createRampingRingerVibrationEffect(mRampingRingerVibrationDuration); if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) { effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall); } else { effect = mDefaultVibrationEffect; } effect = mRampingRingerVibrationEffect; // configure volume shaper for ramping ringer int previousRampingRingerDuration = mRampingRingerDuration; Loading Loading @@ -363,7 +363,7 @@ public class Ringer { && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig() && isRingerAudible) { Log.i(this, "start vibration for ramping ringer."); mVibrator.vibrate(effect); mVibrator.vibrate(effect, VIBRATION_ATTRIBUTES); mIsVibrating = true; } else { Log.i(this, "start normal vibration."); Loading @@ -375,34 +375,6 @@ public class Ringer { } } private VibrationEffect createRampingRingerVibrationEffect(int vibrationSeconds) { if (vibrationSeconds < 1) { // vibration duration has to be at least 1 second long. return null; } List<Long> rampingRingerVibrationPatternList = new ArrayList<>(); List<Integer> rampingRingerVibrationAmplitudeList = new ArrayList<>(); while (vibrationSeconds > 0) { rampingRingerVibrationPatternList.addAll( Arrays.stream(PULSE_RAMPING_PATTERN).boxed().collect(Collectors.toList())); rampingRingerVibrationAmplitudeList.addAll( Arrays.stream(PULSE_RAMPING_AMPLITUDE).boxed().collect(Collectors.toList())); vibrationSeconds -= 2; } // remove the last second of pause if (vibrationSeconds < 0) { rampingRingerVibrationPatternList.remove( rampingRingerVibrationPatternList.size() - 1); rampingRingerVibrationAmplitudeList.remove( rampingRingerVibrationAmplitudeList.size() - 1); } long[] rampingRingerVibrationPatternArray = rampingRingerVibrationPatternList.stream().mapToLong(i -> i).toArray(); int[] rampingRingerVibrationAmplitudeArray = rampingRingerVibrationAmplitudeList.stream().mapToInt(i -> i).toArray(); return VibrationEffect.createWaveform(rampingRingerVibrationPatternArray, rampingRingerVibrationAmplitudeArray, -1 /* not repeat */); } private VibrationEffect getVibrationEffectForCall(RingtoneFactory factory, Call call) { VibrationEffect effect = null; Ringtone ringtone = factory.getRingtone(call); Loading
src/com/android/server/telecom/SystemSettingsUtil.java +10 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ public class SystemSettingsUtil { /** Flag for whether or not to apply ramping ringer on incoming phone calls. */ private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled"; /** Flag for whether or not to support audio coupled haptics in ramping ringer. */ private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED = "ramping_ringer_audio_coupled_vibration_enabled"; public boolean isTheaterModeOn(Context context) { return Settings.Global.getInt(context.getContentResolver(), Settings.Global.THEATER_MODE_ON, 0) == 1; Loading Loading @@ -70,6 +74,11 @@ public class SystemSettingsUtil { false); } public boolean enableAudioCoupledVibrationForRampingRinger() { return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false); } public int getRampingRingerDuration() { return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_DURATION_MILLIS, -1); Loading