Skip to content

Commit fd548d4

Browse files
AudioFlinger framework: simplify import, use singleton class
1 parent b7db1a7 commit fd548d4

File tree

12 files changed

+537
-395
lines changed

12 files changed

+537
-395
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
0.5.3
1+
0.6.0
22
=====
33
- AppStore app: add Settings screen to choose backend
4+
- Camera app: fix aspect ratio for higher resolutions
45
- WiFi app: check "hidden" in EditNetwork
56
- Wifi app: add support for scanning wifi QR codes to "Add Network"
67
- Make "Power Off" button on desktop exit completely
78
- App framework: simplify MANIFEST.JSON
9+
- AudioFlinger framework: simplify import, use singleton class
810
- Create new SettingsActivity and SettingActivity framework so apps can easily add settings screens with just a few lines of code
911
- Improve robustness by catching unhandled app exceptions
1012
- Improve robustness with custom exception that does not deinit() the TaskHandler

internal_filesystem/apps/com.micropythonos.musicplayer/assets/music_player.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
import time
44

5-
from mpos import Activity, Intent, sdcard, get_event_name, audio as AudioFlinger
5+
from mpos import Activity, Intent, sdcard, get_event_name, AudioFlinger
66

77
class MusicPlayer(Activity):
88

internal_filesystem/apps/com.micropythonos.soundrecorder/assets/sound_recorder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
import time
44

5-
from mpos import Activity, ui, audio as AudioFlinger
5+
from mpos import Activity, ui, AudioFlinger
66

77

88
def _makedirs(path):

internal_filesystem/lib/mpos/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .net.connectivity_manager import ConnectivityManager
66
from .net import download_manager as DownloadManager
77
from .net.wifi_service import WifiService
8+
from .audio.audioflinger import AudioFlinger
89
from .content.intent import Intent
910
from .activity_navigator import ActivityNavigator
1011
from .content.package_manager import PackageManager
@@ -61,7 +62,7 @@
6162
"App",
6263
"Activity",
6364
"SharedPreferences",
64-
"ConnectivityManager", "DownloadManager", "WifiService", "Intent",
65+
"ConnectivityManager", "DownloadManager", "WifiService", "AudioFlinger", "Intent",
6566
"ActivityNavigator", "PackageManager", "TaskManager",
6667
# Common activities
6768
"ChooserActivity", "ViewActivity", "ShareActivity",

internal_filesystem/lib/mpos/audio/__init__.py

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,36 @@
22
# Android-inspired audio routing with priority-based audio focus
33
# Simple routing: play_wav() -> I2S, play_rtttl() -> buzzer, record_wav() -> I2S mic
44

5-
from . import audioflinger
6-
7-
# Re-export main API
8-
from .audioflinger import (
9-
# Stream types (for priority-based audio focus)
10-
STREAM_MUSIC,
11-
STREAM_NOTIFICATION,
12-
STREAM_ALARM,
13-
14-
# Core playback functions
15-
init,
16-
play_wav,
17-
play_rtttl,
18-
stop,
19-
pause,
20-
resume,
21-
set_volume,
22-
get_volume,
23-
is_playing,
24-
25-
# Recording functions
26-
record_wav,
27-
is_recording,
28-
29-
# Hardware availability checks
30-
has_i2s,
31-
has_buzzer,
32-
has_microphone,
33-
)
5+
from .audioflinger import AudioFlinger
6+
7+
# Create singleton instance
8+
_instance = AudioFlinger.get()
9+
10+
# Re-export stream type constants for convenience
11+
STREAM_MUSIC = AudioFlinger.STREAM_MUSIC
12+
STREAM_NOTIFICATION = AudioFlinger.STREAM_NOTIFICATION
13+
STREAM_ALARM = AudioFlinger.STREAM_ALARM
14+
15+
# Re-export main API from singleton instance for backward compatibility
16+
init = _instance.init
17+
play_wav = _instance.play_wav
18+
play_rtttl = _instance.play_rtttl
19+
stop = _instance.stop
20+
pause = _instance.pause
21+
resume = _instance.resume
22+
set_volume = _instance.set_volume
23+
get_volume = _instance.get_volume
24+
is_playing = _instance.is_playing
25+
record_wav = _instance.record_wav
26+
is_recording = _instance.is_recording
27+
has_i2s = _instance.has_i2s
28+
has_buzzer = _instance.has_buzzer
29+
has_microphone = _instance.has_microphone
3430

3531
__all__ = [
32+
# Class
33+
'AudioFlinger',
34+
3635
# Stream types
3736
'STREAM_MUSIC',
3837
'STREAM_NOTIFICATION',

0 commit comments

Comments
 (0)