Fix volume setting

This commit is contained in:
Thomas Farstrike
2026-02-24 16:47:02 +01:00
parent daa7125052
commit f358ed65ae
5 changed files with 30 additions and 11 deletions
+3
View File
@@ -30,3 +30,6 @@ __pycache__/
# these get created:
c_mpos/c_mpos
# build files
*.bin
@@ -62,19 +62,21 @@ class FullscreenPlayer(Activity):
def onCreate(self):
self._filename = self.getIntent().extras.get("filename")
qr_screen = lv.obj()
self._slider_label=lv.label(qr_screen)
self._slider_label = lv.label(qr_screen)
self._slider_label.set_text(f"Volume: {AudioManager.get_volume()}%")
self._slider_label.align(lv.ALIGN.TOP_MID,0,lv.pct(4))
self._slider=lv.slider(qr_screen)
self._slider.set_range(0,16)
self._slider.set_value(int(AudioManager.get_volume()/6.25), False)
self._slider_label.align(lv.ALIGN.TOP_MID, 0, lv.pct(4))
self._slider = lv.slider(qr_screen)
self._slider.set_range(0, 100)
self._slider.set_value(int(AudioManager.get_volume()), False)
self._slider.set_width(lv.pct(90))
self._slider.align_to(self._slider_label,lv.ALIGN.OUT_BOTTOM_MID,0,10)
self._slider.align_to(self._slider_label, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
def volume_slider_changed(e):
volume_int = self._slider.get_value()*6.25
volume_int = int(self._slider.get_value())
self._slider_label.set_text(f"Volume: {volume_int}%")
AudioManager.set_volume(volume_int)
self._slider.add_event_cb(volume_slider_changed,lv.EVENT.VALUE_CHANGED,None)
self._slider.add_event_cb(volume_slider_changed, lv.EVENT.VALUE_CHANGED, None)
self._filename_label = lv.label(qr_screen)
self._filename_label.align(lv.ALIGN.CENTER,0,0)
self._filename_label.set_text(self._filename)
@@ -187,7 +187,23 @@ class AudioManager:
@classmethod
def set_volume(cls, volume):
cls.get()._volume = max(0, min(100, volume))
manager = cls.get()
try:
volume_int = int(round(volume))
except (TypeError, ValueError):
return manager._volume
volume_int = max(0, min(100, volume_int))
manager._volume = volume_int
for session in list(manager._active_sessions):
stream = getattr(session, "_stream", None)
if stream and hasattr(stream, "set_volume"):
try:
stream.set_volume(volume_int)
except Exception:
pass
return volume_int
@classmethod
def get_volume(cls):
@@ -108,7 +108,6 @@ from mpos import AudioManager
# Desktop builds have no real audio hardware, but we simulate microphone
# recording with a 440Hz sine wave for testing WAV file generation
# The i2s_pins dict with 'sd_in' enables microphone simulation
AudioManager()
output_i2s_pins = {
'sck': 0, # Simulated - not used on desktop
@@ -48,7 +48,6 @@ MPU6886_I2C_FREQ = const(400000)
print("m5stack_fire.py init buzzer")
buzzer = PWM(Pin(BUZZER_PIN, Pin.OUT, value=1), duty=5)
AudioManager()
AudioManager.add(AudioManager.Output("buzzer", "buzzer", buzzer_pin=BUZZER_PIN))
AudioManager.set_volume(40)