Here’s a game I’d like to play. Someone explains some bit of functionality they don’t understand, and someone else explains the concepts behind it and what’s going on. My motivation here isn’t only to explore concept design, but to actually understand these things.
I’ll start. I am totally puzzled by how my iPhone decides what output device to send sound to. More often than not, it’s the wrong device—or at least not what I wanted it to be—and changing it to what I want is not easy. As far as I can tell, the following mechanisms (at least!) are involved:
Bluetooth, and whether my AirPods are within range. If they are, the phone will often switch to them spontaneously even though they’re in my pocket.
Phone calls and FaceTime calls can be streamed to a computer, so a laptop nearby will appear as an option for sound output when I click on the loudspeaker icon during a call. I assume this is connecting by wifi through my home network, but maybe it’s Bluetooth.
I have a Sonos speaker, which has its own app to control the selection of device used for output. If I’m playing a song from Spotify, the Spotify app also has a device selection menu under settings.
A non-mechanism: unlike in macOS which has a system preference panel for sound i/o, there appears to be no way to make a global selection in iOS.
There’s AirPlay and CarPlay. Sonos seems to offer both AirPlay and Bluetooth connections to the Sonos speaker, but I don’t understand the difference. CarPlay doesn’t just stream output, because it lets the head unit of a car send commands. For reasons I don’t understand, when I plug by phone into the USB connection in my car and CarPlay starts, it spontaneously opens the iPhone music app and starts playing the currently selected song (even though opening the app explicitly does not do this).
Daniel, please sign me up as a member of your team in the iPhone game. I’ve experienced similar mysteries and can’t make any sense of them either.
My iPhone rings when both my laptop and desktop Macintosh are nearby. One of those devices gives me the option of using it to answer the call. Which one and why?
Audio from my iPhone goes to my hearing aids for incoming calls, but not for incoming messages. Why not?
CarPlay sometimes interrupts FM radio reception by connecting to my iPhone or someone else’s. When does this happen and why? Can it be turned off?
My hearing aids work as an output device for my iPhone, but not for my laptop. My audiologist tells me the cause is a difference in Bluetooth implementations. Huh?
@garland What a complicated mess! My guess is that Apple (and others) developed all these nice protocols, with some of them incorporating quite domain-specific features—AirPlay for example supports audio volume to ensure a high signal/noise ratio and to allow playing simultaneously to different output devices at different volumes. But somehow it seems that there hasn’t been an effort to consolidate all these pieces with a few simple concepts. One symptom of this is that (in Spotify, for example) the output device selection first asks me to choose the protocol (AirPlay, Bluetooth, etc), rather than showing the devices themselves and either hiding the protocol they use or offering that as a configuration option for talking to that device.
It would be interesting to sketch out what a suitable concept might look like. A good start might be macOS’s sound preference panel:
Note that the channel selections are listed by device, with “type” as a secondary column. It wasn’t until I looked at this that I realized that my Sonos speaker (which I’d labeled “bedroom” with the Sonos app) runs on AirPlay. That’s, of course, as it should be!
I don’t know that better concepts can save a bad technical implementation. Maybe they could make it easier to identify the problems in the implementation.
Specific to question #4 - AirPlay vs Bluetooth:
AirPlay is a proprietary Apple protocol for streaming audio or video over a wifi network. Bluetooth is a point to point protocol for connecting devices wirelessly; video isn’t supported. Bluetooth is a more open protocol.
A small discovery: there is actually a nice way to set the sound output channel on an iPhone, described here:
Swipe down from the top right corner of the screen to bring up Control Center, press and hold on the music controls top open them, and then press on the “triangle with circles over it” on the top corner of the music controls to bring up the audio output menu, all currently detected and accessible audio output devices will be listed there.
Some strange things about it, though:
First, the mapping of this concept to the UI is almost designed to make it hard to find.
This control seems to override the default output setting for all apps, except for the Phone app!
And of course this doesn’t address the issue of how AirPods preempt the selection.
Another interesting thing (and I believe a source of confusion) is that these options do not appear in the general Settings app. In contrast, in macOS, the Control Center settings are almost (?) all replicated in the Preference panes, and the controls provide optional redirection to those panes. So in macOS, the Control Center seems to be a collection of shortcuts, but on iOS, it seems to contain controls not available elsewhere.
After I stopped laughing (sorry), I looked at the last post, about Settings, and then back at the earlier posts, and some concepts came together for me.
OS
Application
Settings
Device
Content
Connection
A careful design of these concepts, à la EOS, could put some order into where Applications’ Settings are stored and adjustable and what combination of proximity, Device, and Content type should create a Connection.
Being driven mad by my iPhone routing sound to my AirPods after I’ve taken them out. It seems that “ear detection” is supposed to ensure that sound only plays to AirPods when they’re in your ear, but I suspect that the Sonos app that I installed to controlled my Sonos speaker preempts this and breaks everything.
I’m not sure if this is properly an Apple question or a Spotify question or a Sonos question but I figured I would ask here first. My issue is as follows:
I am listening to music on my Sonos setup, playing music from Spotify, controlling off of my iPhone
I go to make a call and put my AirPods in my ears
The music in the entire house switches to playing in my AirPods (and stops playing in the rest of the house)