fix(alarm): cap the ring at the configured volume instead of the device max
Build & Deploy PluriWave / Análisis de código (push) Successful in 35s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 1m48s

The ring-scoped media override forced STREAM_MUSIC to the hardware
maximum, so the alarm's configured percentage was applied on top of a
maxed speaker: "50%" meant 50% of the phone's absolute maximum and
the fade rode against that ceiling, far louder than the device-
relative level users were used to. On-device logcat also showed the
just_audio player emitting one buffer at volume 1.0 before the 5%
pre-start took effect, a full-scale click on the maxed stream.

The stream is now capped at the alarm's configured volume (still
independent of the device's own level, so it rings at device-volume
0), and the player ramps from ~5% up to its full range under that
cap. Perceived peak is the configured fraction of the device maximum,
reached gradually; the opening click drops to the configured fraction
instead of full scale.
This commit is contained in:
2026-07-11 22:48:56 +02:00
parent 2c28f1696a
commit 5291221fc8
3 changed files with 20 additions and 5 deletions
@@ -205,7 +205,9 @@ void main() {
await tester.pumpAndSettle();
expect(entorno.android.detenidas, contains('ring1'));
expect(entorno.audio.volumenesAplicados, [0.05, 0.85]);
// Player ramps to its OWN full range (1.0); the configured level is
// enforced by the media-stream cap, not by the player target.
expect(entorno.audio.volumenesAplicados, [0.05, 1.0]);
});
testWidgets('si confirmar el audio con el nativo falla, el fade-in de Dart '
@@ -225,7 +227,7 @@ void main() {
// unica fuente audible, y el ring no debe quedar pegado en
// _volumenInicialFadeIn para siempre.
expect(entorno.android.detenidas, isEmpty);
expect(entorno.audio.volumenesAplicados, [0.05, 0.85]);
expect(entorno.audio.volumenesAplicados, [0.05, 1.0]);
});
});
@@ -247,7 +249,7 @@ void main() {
);
expect(
entorno.audio.volumenesAplicados,
[0.05, 0.85],
[0.05, 1.0],
reason: 'el fade-in debe arrancar tambien en el camino ya-sonando',
);
});