This document discusses challenges and solutions related to audio management in the Firefox OS operating system. It covers issues like multi-channel audio, background audio playback, competing audio streams, and ensuring alarms can still sound when other audio is muted. The document proposes attributes for <audio> tags, different volume settings for notification, content, and alarm audio, and an "interrupt" event for notifying when audio is interrupted by a higher priority stream. It also addresses related topics like silent mode policies, video element audio, and ensuring compliance with standards for safe audio output levels.
22. Cases
• one <audio/> in one app.
• two <audio/> in one app.
• two <audio/> in two apps.
• one <audio/> and one not-audio-sound in two
apps.
23. It’s all about UX.
User wants to listen music in background..
User has difficulty to mute the background app..
User needs the alarm to sound anyway..
24. Android solution: audio focus
• http://developer.android.com/training/managing
-audio/audio-focus.html
• App is responsible to request the audio focus on
demand and release the focus actively.
25. Problems
• How to request audio focus in web?
• Volume control of different type of audio source.
• Telephony is not using audio tag.
• FM is not using audio tag.
• …
26. Proposal
• New attribute for media tags.
• Background play and competing needs permission
check.
• Expose current occupied media info to system.
27. Page Visibility
• HTML5 Page Visibility
• The page visibility state is simple on desktop
browsers by toggling tabs.
• A little complicated on FirefoxOS
• Window(App) has opening/closing transitions.
• Screen off means page visibility is hidden, too.
• Background page has higher possibility to be
killed. (Memory Management!)
32. Current Competing Policies
• Channel with higher priority interrupts the
lower channel.
• Foreground page is always playable. But
interruption occurs or not depends on
the channel of the media element.
• When screen is off, the current app or
page is not brought to background now if
it’s playing normal channel audio now.
(Memory and Power concern!)
• Audio elements being interrupted could
know by ‘mozinterruptbegin’ and
‘mozinterruptend’.
content
normal
36. Incoming Issues
• Silent mode under multi channels
• Background play ability of existing web pages
• Background play and competing for video
• Short playing sound is hard to adjust.
• DTMF tones
• Power consumptions.
• Bluetooth earphone has its own profile.
• …
37. Policy for Silent mode
• Easy for single channel
• Multi channels
• The default channel for volume rockers is
‘notification’. (Same as Android)
• Silent mode interesting channels
• notification
• content/normal
• Alarm is not affected by silent mode.
38. Policy for video element
• video doesn’t need to play at background.
• Currently, use ‘visibilitychange’ event.
• video by default shall be able to compete the
background playing content channel.
• Separate background play and audio competing
for video element.
39. Background play issues
• Existing web pages: “Hey, I’m a music site!”
• grooveshark
• youtube
• …
• How to play when screen is off without adding
mozAudioChannelType to each web site?
• Depart screen off state from invisible page
visibility state.
40. CE Certification
• EN 50332-1
• Output level through earphone
should be under 85 dBA.
• Prompt a warning when earphone is
plugged and the volume is greater
than 85 dBA.
• The cool down time of CE warning
popup is continuous 20 hours music
listening.
41. OS level policy for CE
• Only apply to content/normal channel.
• Output power is hardware-dependent. Exactly,
we don’t know the db value for specific devices.
• The CE maximum value is customizable for
different OEM via default settings.
46. To be honest, I wrote few
code in these issues.
But lots of online/offline discussions.
47. The position of Frontend
https://speakerdeck.com/josephj/f2e-the-keystone
48. • It doesn’t matter you are making a web site, a
web app or an operating system.
• Frontend is the one connecting UX and Backend,
and struggle for ideal design and real
requirement.