Succescriterium 1.4.2 - Niveau A
Geluidsbediening
Zorg ervoor dat geluid dat langer dan drie seconden duurt kan worden gepauzeerd of gestopt. Vooral voor mensen die gebruik maken van een schermlezer is het storend als geluid niet te pauzeren is. Hierdoor kunnen ze de stem van de schermlezer namelijk niet goed horen. Voor mensen die zich moeilijker kunnen concentreren is het ook fijn als geluid kan worden gestopt. Hierdoor kunnen ze zich beter focussen op de overige informatie .
Impact
Voor gebruikers van de schermlezer is het storend als er automatisch afspelend geluid wordt afgespeeld.
Automatisch afspelend geluid maakt het lastig voor mensen die zich moeilijker kunnen concentreren om informatie te verwerken.
Controleren
“Kan het geluid bediend worden?“
Dit kan getest worden zonder hulpmiddelen.
Oplossing
Bied altijd een pauze- of stopknop aan bij het afspelen van geluid.
Geluidsbediening toevoegen
In Android apps, you should always be able to control audio. When using MediaPlayer
, you should implement buttons to call the start
, pause
and stop
methods.
It is a best practice to play audio through the correct channel. Android has introduced AudioAttributes
as a replacement of the STREAM
types defined in AudioManager.
AudioAttributes
defines the following content types:
CONTENT_TYPE_MOVIE
: used for soundtracks, typically in moviesCONTENT_TYPE_MUSIC
: used for musicCONTENT_TYPE_SONIFICATION
: used for accompanying sounds, such as beepsCONTENT_TYPE_SPEECH
: used for speechCONTENT_TYPE_UNKNOWN
: used when the content type is unknown, or other than the available options
AudioAttributes
defines the following usages:
USAGE_ALARM
: used for alarmsUSAGE_ASSISTANCE_ACCESSIBILITY
: used for accessibility, e.g. for screen reader usersUSAGE_ASSISTANCE_NAVIGATION_GUIDANCE
: used for navigation directions, e.g. while drivingUSAGE_ASSISTANCE_SONIFICATION
: used for user interface soundsUSAGE_ASSISTANT
: used for user queries, audio instructions or help utterances.USAGE_GAME
: used for audio inside gamesUSAGE_MEDIA
: used for audio in media, such as moviesUSAGE_NOTIFICATION
: used for notification soundsUSAGE_NOTIFICATION_EVENT
: used to attract the user's attention, such as a reminder or low battery warning.USAGE_NOTIFICATION_RINGTONE
: used for telephony ringtonesUSAGE_UNKNOWN
: used when the usage is unknown, or not definedUSAGE_VOICE_COMMUNICATION
: used for voice communication, such as telephony or VoIPUSAGE_VOICE_COMMUNICATION_SIGNALLING
: used for in-call signalling, such as with a "busy" beep, orDTMF
tones.
AudioManager
defines the following legacy channels:
STREAM_ACCESSIBILITY
: channel for accessibility, such as assistive technologiesSTREAM_ALARM
: channel for alarmsSTREAM_DMTF
: channel for dual-tone multi-frequency signaling, such as phone dialing tonesSTREAM_MUSIC
: channel for musicSTREAM_NOTIFICATION
: channel for notificationsSTREAM_RING
: channel for incoming phone callsSTREAM_SYSTEM
: channel for system soundsSTREAM_VOICE_CALL
: channel for voice calls
// Set audio attributes
val player = MediaPlayer()
player.setAudioAttributes(
AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.setLegacyStreamType(AudioManager.STREAM_ACCESSIBILITY)
.build()
)
// Provide media controls
button.setOnClickListener {
if (player.isPlaying()) {
player.pause()
} else {
player.start()
}
}