-
Notifications
You must be signed in to change notification settings - Fork 122
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
[Accepted with Revisions] SDL 0280 - Adding new parameter of requiresAudioSupport and BluetoothDeviceAddress #941
Comments
1. For clarification, Google deprecated audio streaming through AOA 2.0 in Android 8.0. See here. I'm honestly not sure any OEM has implemented the audio profiles for AOA anyways. 2. 3.
This completely changes how apps work today. There is no mention of this beyond "apps will launch regardless of audio state". If you go back and review the issue and PR you will see a lot of information about the issue and why the fix was put in place. I don't think this solution adequately addresses how older systems that can't be updated to support this logic will be handled. The author must take this into account as it will break OEMs implementations and create worse user experiences, ie apps showing up but playing audio through the phone speaker is worse than the app not showing up. Issue for reference: Audio over AOA Issues @stefanek22 Please pay attention to this proposal. This will break Ford's implementation, you need to review this. 4. What if bluetooth fails to connect? How will the app know? What should happen if the device is currently connected to another bluetooth device, will it disconnect from that device to await the connection from the head unit? Will the app stay registered even though there is no audio support? 5. What happens when the bluetooth adapter is off on the phone? Should the app automatically turn it on? 6. What if the device has never been paired with the IVI system before? Will the user be required to interact with their phone to accept the pair request? Is this an acceptable UX for driver distraction? 7. If a user selects the app before A2DP is connected the audio will start from the phone and transition to the IVI once connected. Does the app need to wait until the bluetooth connection is made before it starts streaming audio? Overall I think we do need to do something better than what is there today but I don't think this is the right way to go about it. |
@joeygrover -san
I agree with you.
After launching the app, display a message prompting automatic connection or BT connection.
For these, a message is displayed to the user.
If the bluetooth adapter is off, the bluetooth address cannot be obtained, so just display a message.
The implementation depends on the HMI, but I think it prompt the user with a message or voice requesting pairing later, not immediately while driving.
I think the app might be better to wait.
I don't think the current UX that silently rejects connection at least if BT is not connected is not good. |
3. I am going to have to ask for more explanation to this and some other answers. For example, just stating a message will be displayed to the user is not a satisfactory response. What does the message say? Where will be the message be displayed? What triggers the display of this message specifically? You also never addressed what happens to current systems. 4. See 3. 5. See 3. 6. So the app will be displayed on the HMI, and the user can activate the app but the sound will not be streamed to the IVI. How will the app ever know if the IVI system is still trying to connect bluetooth or if the feature has failed? 7. This is asking a lot from the developer and we would have to define specific requirements for SDL to make sure all apps follow the same behavior. Would the library have this ability or sample code for them? What does that look like? Currently app developers can change this flag in their settings and display their own messages on the IVI that would tell the user to connect bluetooth and that requires no change to SDL. |
The Steering Committee voted to keep this proposal in review, to allow the author time to respond to comments and for additional conversation on the review issue. |
@joeygrover -san
"BT connection required to launch Media app."
Display on the HU.
When an app is selected in the HMI app list (when BT is not connected and BT address is unknown).
I think that there is no effect on cases other than media applications.
It is assumed that the app will not be launched unless a BT connection is established.
The expression "the app might be better to wait" in my answer was incorrect. The BT connection is determined by the HMI when the app is selected from the app list.
I do not know this feature. Is it listed somewhere?
Sorry for making you misunderstand. Same assumption.
Does that mean that USB and BT connections are required?
If this is displayed every time, it is also likely to be bad UX for users.
I don't understand the meaning of the question, how does it relate to this proposal? |
3.
That's the entire issue though. Media apps need a way to work both with older implementations and this feature. If they only use this feature, the issue will regress that was fixed previously. So older systems, these media apps will connect over AOA with no way to connect bluetooth automatically; then the media would simply play out of the mobile device again. This has to be addressed. 8. I just noticed
I brought this as a point because Android can programmatically pair/connect with the IVI, so if driver distraction is an issue, it might be possible to do this in the background without user interaction. This would make the feature better and less distracting. I think it's important that all these details are provided in the proposal so OEMs know how this feature might be implemented. While the idea of the proposal is simple, the implications it has are much larger. So it would be helpful if you could provide a complete flow chart of what messages are sent when with the previously discussed situations. From a high level I understand the feature to work as:
|
@joeygrover -san
Can we address this problem by adding capability?
You're right.
Does the pairing / connection include the first time (never connected)?
There is no difference in your understanding of this feature. |
From the Ford perspective we have concerns regarding breaking fixes put in place for the resolved issue referenced below: In general, audio over AOA is not well supported across handsets with many implementations behaving differently. The statement below would break backwards compatibility with existing production head units in the field:
|
3. The issue is that the feature currently ignores the transport connection notification if there is no audio streaming (A2DP, Audio over APA, etc) available. This means the app does not register at all on the IVI system and no messages are sent. This works best for current production head units given the current specs. The problem with adding a capability is that the app won't be notified of the IVI's capabilities until after the app has registered. This is due to the face the IVI system would have to know the app is a MEDIA app and then include the capability into the RAI response. This means on an a current production system the app will appear connected and then disappear without informing the user of why. App developers currently have the option to allow the MEDIA app to connect through AOA with no audio streaming available and prompt the user to connect such methods through their UI (Show, Alert, etc). I agree this solution is not great as it puts the burden on app developers and there is no standard messaging put in place for all MEDIA apps in this situation. I believe current production IVI system owners will have to chime in on how they want to handle this feature and what they find acceptable in terms of UX. 9. (Numbering this for reference) 10. (Numbering this for reference) |
During the Steering Committee meeting, the Ford team expressed their concern about this proposal breaking their current implementation and suggested continuing the behavior currently in place. The author requested that the proposal be kept in review for another week, so they could review the last few comments on the issue and respond. The Steering Committee agreed to keep this proposal in review until the 2020-03-10 meeting. |
@mrapitis -san
Sorry. The sentence we wrote was wrong, therefore misleading. It should be, "the SDL app is always registered", not launched. By adding the capability that indicates the BT automatic connection function, the existing operation is maintained. Therefore, we assume that there will be no problem regarding that matter. @joeygrover -san
If the transport connection is ignored, users will not know which apps and for what reason those apps were not registered. We want to improve this as we have mentioned in our proposal.
The core will refer to these following three items. First, the So, when requiresAudioSupport is true, but there is no BT connection and the capability is false, the RAI request will be rejected. What do you think about this kind of behavior?
Does this mean that users can choose whether or not to automatically connect to BT?
Thank you for providing information. I would like to refer to it as needed.
In order to protect the existing operation, when the capability of BT automatic connection function (for now, we'll refer to it as The following cases are assumed:
|
@mrapitis -san Thank you. |
@Shohei-Kawano @Kazuki-Sugimoto one concern around the AutoBTCapability flag would be that the app would need to set / maintain the value based on the head unit that its connected to. An existing head unit implementation would require AutoBTCapability set to false while potential future implementations could accept true. If this work could automatically be managed at the proxy level it may take some burden away from the app developer. |
For older IVI systems, if the apps connect over USB with no BT connection, they will register and then disappear, users will not know for what reason those apps were registered but then disappeared. For older IVI systems, if the apps connect over USB, register, stay connected and then the user selects the app to be launched, the app will then play music out of the mobile phone speaker, users will not know for what reason SDL is not handling this. These items MUST be addressed in this proposal. There needs to be a specific section of what the use case is when the new version of the proxy that includes this feature connects to an older version of Core that does not support this feature.
The only way an app knows what head unit it is connected to is after the RAI response. This will cause the app to flash on the screen before being removed. This is worse than not showing the app in my opinion. |
Per the author's request, the Steering Committee voted to keep this proposal in review for an additional week, to allow the author time to respond to the questions posted to the review issue. It was emphasized that the author will need to respond to the major concerns of this feature breaking current implementations (see: this comment and this comment) before the next Steering Committee meeting. It was noted that it will be important to take action on this proposal next week, and if the reviewers' concerns cannot be addressed by the author, we may need to move to reject this proposal. |
The core version is determined based on the protocol version obtained in StartSession response. The audio requirement judgment that was performed before StartSession will be moved to before RAI, and the core that do not support this feature will not send RAI instead of ignoring the transport connection. I suggest this, what do you think?
I will add the use case and flowcharts for this case as well. |
Note that the version sent in the StartServiceAck is the negotiated protocol version, not the version of Core or the RPC spec. I believe tying this use case to a specific protocol version would be a major version change. This approach could work, but it means all headunits implementing SDL Core would have to support this feature for apps negotiating with the new protocol version. |
Well Core version is directly tied to protocol version nor the other way around. While it can be mostly assumed, since they are individual projects with their own specific versioning using one to determine the other is not something that should be done. Instead, features themselves can be tied directly to the protocol version. With that in mind, moving the check into the Prerequisites:
I might have made an error or two in the flow, but I believe that would be the requirements for a check that ensured old IVI systems still worked as well as preventing flashing of the app. EDIT: Changed from using |
@joeygrover Is there an advantage to requiring the MEDIA appHMIType instead of using the |
@JackLivio actually no. that's a good point. I will update. |
@joeygrover -san |
@Kazuki-Sugimoto I can't guarantee it will be accepted. Other members will need to review the updated proposal to make sure it works for them. I would ask that @mrapitis review my comment and hopefully we can vote to "Return for Revisions". If that is the result of the vote and once the proposal is updated, it will be brought back into review again to make sure the feature as a whole works for all members and is agreed upon. |
I have also reviewed the comment with the suggested flow, it does make sense and may be an adequate solution for the scenarios that were previously discussed. The flow seem fairly complicated, however I do not believe their is much of a way to simply. It would be beneficial if the proposal was updated to include a state diagram with the suggested flow as it may make it easier for reviewers to follow. |
The Steering Committee voted to return this proposal for the revisions included in this comment. |
The author has updated this proposal based on the Steering Committee's agreed upon revisions, and the revised proposal is now in review until September 29, 2020. The specific items that were updated since the last review can be found in this merged pull request: #1075. |
Note: Starting numbering over for the revised proposal. 1.
This needs to include the note about the MediaStreamingStatus class and its usage. For example, if the protocol version is lower, the library could and should check if audio is already connected. Otherwise, apps that require audio support wouldn't connect to anything currently in production. The flow chart will likely also have to be updated to reflect this change. 2.
The MediaStreamingStatus class actually checks for multiple Audio Output options. I just want to make sure that's clear. 3.
I think this is better stated as post-processing of StartService ACK or NAK. 4. I don't see any description of how the code will be refactored as mentioned, but with the upcoming release a lot of these classes are not accessible to developers so it can be considered implementation details that the project maintainer will have have discretion over unless any other members would like to weigh in beforehand. All these points are fairly minor and I think overall we could move to accept with those revisions if everything is agreed upon here. |
@joeygrover -san, That's right. OK. |
@Akihiro-Miyazaki, thanks for your responses! It appears we are in agreement on items 1 - 3. If you could please confirm your agreement with item 4 as well, we can ask the Steering Committee to vote on accepting this proposal with these 4 revisions during tomorrow's meeting. |
@joeygrover -san, @theresalech -san, |
The Steering Committee voted to accept this proposal with the following revisions:
|
@Akihiro-Miyazaki , please advise when a new PR has been entered to update the proposal to reflect the agreed upon revisions. I'll then merge the PR so the proposal is up to date, and enter issues in impacted repositories for implementation. Thanks! |
Proposal has been updated and implementation issues have been entered: |
Hello SDL community,
The review of the revised proposal "SDL 0280 - Adding new parameter of requiresAudioSupport and BluetoothDeviceAddress" begins now and runs through September 29, 2020. Previous reviews of this proposal took place February 19 - March 17, 2020, June 2 - 23, 2020, and July 22 - August 18, 2020. The proposal is available here:
https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0280-Adding-new-parameter-of-requiresAudioSupport-and-BluetoothDeviceAddress.md
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
#941
What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of SDL. When writing your review, here are some questions you might want to answer in your review:
Please state explicitly whether you believe that the proposal should be accepted into SDL.
More information about the SDL evolution process is available at
https://github.com/smartdevicelink/sdl_evolution/blob/master/process.md
Thank you,
Theresa Lech
Program Manager - Livio
[email protected]
The text was updated successfully, but these errors were encountered: