-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better Accessibility for Screen Readers (Voiceover/TalkBack) #560
Comments
Hey, thanks for reaching out to us about this! As someone interested in user experience design, I'm actually unreasonable exited to hear from you, as I've been wondering about this topic for a while now. I've never looked into improving this kind of accessibility yet, but I would be glad to remove any pain points you might be experiencing! I'll try to take a look at this whole topic soon, and if you are able to share any additional info about how you use the app, how you interact with the different functions, and how it's being done by similar apps, that would be immensely helpful! |
I've also been meaning to look into this, since I haven't done much beyond labeling. One issue I noticed when messing about with VoiceOver a while ago was that it would describe album covers, would it make sense for them to be ignored/marked as decorative? |
Hi, |
Thanks for getting back to us! I only have an Android phone, but I did spend half an hour today using TalkBack to navigate Finamp. I also noticed the unlabeled player buttons and will investigate how to fix those. However, I didn't encounter any issues with scrolling through albums and artists. Both the list of albums, and the album screen itself that lists the songs within the album work just fine for me. So if you could explain a bit more what exactly isn't working for you that would be great. If you are able to record your screen as a demonstration, that would be even better, but I'm not sure if you're comfortable doing that. And please take your time with the write up, there's no rush from our side. We're busy with the redesign anyway, but that still has a long way to go, so your feedback should be able to have a positive influence on the new layout! |
Hi, just wanted to let you know that the redesign beta is now available via Apple Testflight. I'm sure that the initial experience using a screen ready will be slightly worse, but the design is an interim state and many things will still change to better fit with the rest. However, if there's somthing critical that's not accessible, or you don't understand how to navigate the UI properly, I might be able to do some basic fixes for now :) |
Also, I just stumbled across a Flutter app that has a "Screen Reader Mode". Essentially, it's a preset for various settings within the app that tries to minimize the amount of elements and added complexity. Given that some level of customization is already planned (since many requested it), I think it would be feasible to do something similar. |
Hi again, |
Thanks for getting back to me. I'm actually one of the maintainers and already tried interacting with the app using Android's Talk Back feature. The problem is that I'm not used to interacting with the app that way, and I'm already familiar with the layout and structure of the app. If you could provide a recording, that would certainly help! Even better would be a list of features that you frequently use, or a step-by-step overview of how you usually interact with the app. That would help me figure out how you're using the app, and what could be improved. |
No problem, can do. This may very well be an ios specific problem although I'm happy to document as much as I can. |
so, let's get afew things straight: The concept of explore by touch is relatively simple, and is basically what everyone without screenreaders does to activate an item. Basically, after a while, even with screenreaders and the swiping we often do to get information, we end up creating spacial, topographic, memory, of apps we use often. So, we might know, for example, that the back button for a certain screen is on the top left corner, that the tabs to switch between various categories is towards the bottom of the screen, etc. Some of us could, though rarely, pay close enough attention to notice kinda where a specific list is, so we go to that, and even rarer, how much space is generally between items, so one can reach a more approximately correct place for the item they were looking for. How we do this? this works on both android and ios btw, normally anyway. You...just put your finger on a part of the screen, where you think a control is or near it anyway. If you were correct in your assumption, focus will be moved to that control and the screenreader will read it. To activate it, you have to touch your screen twice in quick succession, this disambiguates explore by touch from activation. The focus would be moved from your current position to the one where your finger is, only after you released the finger. What that means in practice is that, if you know circa where the item is, but you're not sure, you can keep sliding your finger in the aria till you get confirmation you're on the correct thing, then release to be moved there, but you still have to double tap, as the gesture mentioned above is described, in order to activate the item. So then, what @danielw97 describes could be either a case of having too many custom widgets which are not wrapped in semantic(more about that later), or having too small a touch area, meaning that the sensitivity rectangle for a control is far too small, in which case, even people with motor disabilities would struggle with your app, because the touch target would be too small. Also, you could have a bounding rectangles problem, because the screenreader is reading not from the actual screen of the phone, but from a virtual accessibility tree, so if you say that your rectangle is 20X20 DPI while it's on screen half that, you're gonna get what issue author described. About accessibility information: while apple documentation is indeed slightly relevant here, what you need is flutter specific documentation, which tells you how to decorate your widgets, how you can hide certain widgets from the accessibility tree entirely at all times, move elements semantically to make them easier to access for screenreader users even as you keep their place visually, and so on. The links which should have been given in that instance, then, are these:
I do agree though, a recording from the issue author would also be very informative for most people here, so my explanations should in no way be interpreted as detracting from the value of such, in fact, I believe they have an aditive role, as those can be checked side by side and connections can more easily be made. |
albertotirla, thanks a tun for the detailed development-orientated feedback. |
Hello. I created a very similar issue without knowing that this one existed, (#756) apologies. There is a flutter library called semantics one tip I have is that buttons can be labeled by making a text widget the button's child widget. |
I just tried the iOS app with VoiceOver on an iPhone 11 and have to agree with what has been said. The main issues for a screen reader user are either unlabeled controls that just say things like button, controls that are probably buttons but don't indicate they are, and focus issues. A lot of this should be easy to fix. Controls need clear labels that indicate to a screen reader user what the purpose is. For example, instead of saying button when navigating to the control to play or pause media, it should say play button or pause button depending on the current state. Controls without labels are also a little difficult to understand, as a screen reader user might confuse them as text and not know they can be clicked on. The type attribute should be assigned to such areas, so the screen reader can clearly communicate to the user what they are. The tab bar should be located at the bottom of the screen for better consistency. Everything should be navigable by either dragging a finger around the screen, or swiping through the elements with a single finger left or right swipe. The screen reader focus shouldn't jump randomly while navigating the UI. I haven't tested the Android app yet, but I imagine the problems are very similar there as well. I have a Pixel 7 with Android 14, and if I find anything significantly different, I'll add another comment. Remember that you can always test the changes yourself by enabling VoiceOver and/or TalkBack on your device. VoiceOver is in Settings>Accessibility>VoiceOver, and TalkBack can be found in Settings>Accessibility>TalkBack. You may find it convenient to enable the accessibility shortcut in both operating systems to quickly toggle the screen reader on and off. I recommend doing this before anything else, as it allows you to quickly turn the screen reader off if you need to do something and don't want to deal with the modified gestures. In iOS, it's at the bottom of the accessibility screen. Configure it to toggle VoiceOver by clicking the side or home button three times. On modern versions of Android, the shortcut can be found in TalkBack settings. Press and hold both volume keys for a couple seconds to turn it on or off. |
I've just added a few improvements, mostly button labels. This will be released with the next beta update. I still don't know why Explore by Touch isn't working / buggy, since the Android-equivalent works just fine for me. I also don't have an iOS device to test with, so if anyone could investigate this, it would be much appreciated! |
Thanks for your continued work on this. I'll download the next version via testflight and report back. |
Hey, any updates regarding the new accessibility labels? Anything still missing or unclear? |
You did an amazing job, and, at least on my end, the explore by touch issue has been resolved. There's a label missing on the miniplayer for the pause button, but that is pretty recognizable by the way you have the app laid out. The download button on an artist's page appears twice, once as a labeled button, and right beside it is an unlabeled button that appears to do the same thing. Those are nitpicks though and the issues I've been talking about have been largely resolved. |
That's wonderful to hear! I'm surprised that explore by touch works now, but maybe some internal component got update, which fixed the issue. Would be nice if someone else could confirm that it works now! |
Hey, did you find anything else so far that is still unlabeled or unclear? Planning to push a beta update soon and maybe I can get some more fixes in before releasing that! |
the only real bug is download buttons appear twice, (one without a label), but that's not an accessibility issue more of a ui clutter issue for screen reader users. It doesn't just show up once, there's a download button in the navigation menu, and anything that has a download button in the "download settings" menu of the settings. Hope I was clear about what I meant. |
Yeah, that's a bug which I already fixed. Just wanted to make sure nothing new came up. |
Got a question for you: I also noticed one more thing I'd like to improve in the queue. In the "Playing from" section, the current progress is shown, as a fraction like 10 out of 13, with a slash in-between. This seems to be pronounced like an actual fraction by screen readers, so I'll try to re-word it. The remaining duration is also inconsistent with the other durations throughout the app. |
I'm confused, do you mean the playing screen or the list of tracks in your library? If it's the player screen, the add to playlist button would avoid the extra step of clicking on the menu |
It's about the list of track in the library. On the player screen, you can already skip the menu by "long-pressing" the menu button, that will open the playlist selection right-away. However, this isn't obvious at the moment, neither for screen readers nor in the graphical user interface. I'm not quite sure what you mean regarding the progress bar. Right now there is a progress bar that reflects the current position in the track. There currently are no rewind or fast forward buttons, just those for skipping to the next track or going back to the previous track. Regarding Siri, that has been requested before, but there currently isn't great support for this in Flutter (the development framework we're using). The functionality for voice commands is already implemented, because that is used in Android Auto. So once Flutter's Siri support improves, it should be relatively quick and easy to add support for it. |
Hi there,
Many thanks for all of the work done on this project so far.
I have no vision and use voiceover (which is a screen-reader built into iOS).
Whilst a vast majority of the app is accessible already (as far as button labeling etc go) there are a few issues such as not being able to use explore by touch and scroll through albums/artists.
It is difficult to summarize succinctly as voiceover is a large topic, although it would be great to have some improved voiceover support in the future if possible.
There is a link on Apple's developer docs, although not sure if it is any use in this instance:
https://developer.apple.com/documentation/uikit/accessibility_for_uikit/supporting_voiceover_in_your_app
Let me know if there is any way I can assist with this as someone who isn't a developer, although I'm happy to answer any questions or test things as they are investigated.
Thanks in advance.
The text was updated successfully, but these errors were encountered: