APPLINK BEST PRACTICES - Ford - Track 5 - Best Practices.pdf · APPLINK BEST PRACTICES ELIZABETH...
Transcript of APPLINK BEST PRACTICES - Ford - Track 5 - Best Practices.pdf · APPLINK BEST PRACTICES ELIZABETH...
APPLINK BEST PRACTICESELIZABETH HALASH
PRODUCT DEVELOPMENT ENGINEER
Static Buttons Soft Buttons
Voice Commands
• Detecting different displays and graphics support
• Performance in-vehicle
–How to best initialize app
–Options for loading voice commands
• Providing feedback regarding current app status
–Display vs. voice
– Ideally near instant acknowledgment to any user input
• Navigating AppLink in vehicle
• Language Considerations
–Changing app language to match SYNC (19 languages)
–Regional languages
Additional considerations
3
• onButtonPress() notification
– Sent to app from SYNC whenever any button is pressed (steering wheel, center stack, touch screen, softbutton)
• LONG vs SHORT Press // BUTTONDOWN vs. BUTTONUP Modes
– Example: SEEK button
• Skip, Thumbs up, Fast forward
• Presets
– Up to 10 (0-9) buttons
– Often used to mimic radio presets with hold & save
• Which hard buttons are available?
– Response to proxy.subscribeButton(ButtonName.PRESET_9, CorrId);
– SYNC will return NOT_SUPPORTED
Buttons
4
• MFD displays (3-5 in, color, non-touch)
Softbuttons
5
• Touch screen display implementation:
App can write text, icon (static or dynamic), or both
4 dynamic fields
same
• How to use it:
– Register commands you want SYNC to recognize by loading grammars onto the system via either a string of text or phonemes (phonetic sounds, i.e. read vs reed)
• How it works:
– SYNC does the recognition on behalf of the app
– If unsure of what the user said, it will provide an N-best list for the user to choose their command.
– If no match is found, it will ask the user to repeat the utterance.
• Upon successful recognition:
– Positive chime is played
– onCommand() notification is sent to app using a commandID
Using Voice with SYNC
6
• SYNC itself comes with embedded, system voice commands that cannot be re-used by an app, such as ‘help,’ ‘exit,’ ‘cancel’
• SYNC executes these commands on behalf of an app
• For example: “<AppName> Help”:
–Option 1Option 1Option 1Option 1: setGlobalProperties() – app populates the help prompt
• App can sent this at any time for contextual help
–Option Option Option Option 2222: Let sync populate this for you with the first few voice grammar you load onto the system.
• Not ideal: the list of commands in the help prompt may vary.
App Commands and SYNC System Commands
7
Q: What are the major features/functions of my app?
A: Top-level voice commands (AddCommands()).
Q: Do I use shortcuts, favorites, presets, etc. within my app?
A: Preset buttons in vehicle.
Q: Is there long list(s) of items to select from within your application?
A: Load these as items in a ChoiceSet
– 300 items take about 15-25 seconds to load and slightly slows SYNC’s response to user input during loading.
– Ability to concatenate ChoiceSets during a single PerformInteraction().
Q: What AddCommands() should my audio streaming application use?
A: Play, Pause or Stop, Resume, Skip, Skip back
Choosing Which Commands to Load
8
• Current SYNC displays offer 2-4 lines of text, media clock timer, media track field
Utilizing the In-Vehicle Display
9
Media clock
Lines 1&2
Media Track
• Update meta data
• Provide simple information to the user
• Update status information of the app, such as “Buffering”
• No scrolling/flashing text
• Determine which display is currently connected
if (currentDisplay == DisplayType.MFD4 || currentDisplay == DisplayType.MFD5
|| currentDisplay == DisplayType.MFD3)
{…setup}
else if( currentDisplay == DisplayType.CID)
{…setup}
else if (currentDisplay == DisplayType.8-INCH)
{…setup}
Utilizing the In-Vehicle Display
10
• If your app loads many commands:
– Send a small number of the most important requests
immediately, including:
• button subscriptions
• custom prompts (SetGlobalProperties())
• 4 or 5 of the most important commands.
• Using a timer or background thread, send the remaining AddCommand()
requests in batches of 5 or every second or so.
• SYNC will disconnect on these conditions:
– More than 200 RPC requests in 2 seconds.
– Mobile application sends more than 5 requests within 5 seconds in HMILevel NONE.
Performance in-vehicle
11
• Alerts(): short, informative messages that can be:
– Similar to push notifications on your phone
– Dismissed by:
• User closing
• Time out
• User input via softbuttons
• PerformInteractions(): dedicated one-time question and answer sessions that require a user’s response from a set of choices.
– Example:
• App initial prompt: “Please select a state.”
• User: “Michigan” (1 of 50 items in the choiceSet of states)
• If your application requires the user to choose from muttiple options (more than 2), you should use the PerformInteraction() API.
Alert vs PerformInteraction
12
• Instant acknowledgment to any user input
• Providing updates during buffering or other delays
• How to provide feedback?
– Display vs. voice
• When designing your voice tree, be aware that you can trigger up to 3 voice prompts in a row using PerformInteraction. This is due to both driver distraction rules as well as ease-of-use. The following is an example:
– SYNC®: “Please select a country.”
– User: “USA”
– SYNC®: “USA, please select a state.”
– User: “Michigan”
– SYNC®: “Michigan, please select a city.”
– User: “Detroit.”
Providing Feedback to the User
13
Finding Mobile Apps In Vehicle: setAppIcon()
14
• What is SYNC’s language?
– The “RegisterAppInterface” RPC will report
SYNC’s language to you
Or
– proxy.getSyncLanguage()
• Changing app language to match SYNC (19 languages)
– ChangeRegistration()
– If this is not possible to change, SYNC will inform the user that the App’s language differs from SYNC and that Voice commands will not work as expected
• Ensure SYNC pronounces AppName correctly.
Different Languages
15
• Keep it Simple, want it to “Just Work” in the car
• Consumption vs. Discovery
• Focus on using voice instead of the display.
– Driver distraction rules prevent traversing through submenus
Final considerations
16
QUESTIONS?