An alert is a pop-up window showing a short message with optional buttons. When an alert is activated, it will abort any SDL operation that is in-progress, except the already-in-progress alert. If an alert is issued while another alert is still in progress, the newest alert will simply be ignored.
Depending the platform, an alert can have up to three lines of text, a progress indicator (e.g. a spinning wheel or hourglass), and up to four soft buttons.
The alert will persist on the screen until the timeout has elapsed, or the user dismisses the alert by selecting a button. There is no way to dismiss the alert programmatically other than to set the timeout length.
If no soft buttons are added to an alert some OEMs may add a default "cancel" or "close" button.
Alert alert = new Alert(); alert.setAlertText1("Line 1"); alert.setAlertText2("Line 2"); alert.setAlertText3("Line 3");
Alert alert = new Alert(); alert.setAlertText1("Line 1"); alert.setAlertText2("Line 2"); alert.setAlertText3("Line 3"); // Soft buttons final int softButtonId = 123; // Set it to any unique ID SoftButton okButton = new SoftButton(SoftButtonType.SBT_TEXT, softButtonId); okButton.setText("OK"); // Set the softbuttons(s) to the alert alert.setSoftButtons(Collections.singletonList(okButton)); // This listener is only needed once, and will work for all of soft buttons you send with your alert sdlManager.addOnRPCNotificationListener(FunctionID.ON_BUTTON_PRESS, new OnRPCNotificationListener() { @Override public void onNotified(RPCNotification notification) { OnButtonPress onButtonPress = (OnButtonPress) notification; if (onButtonPress.getCustomButtonName() == softButtonId){ Log.i(TAG, "Ok button pressed"); } } });
An optional timeout can be added that will dismiss the alert when the duration is over. Typical timeouts are between 3 and 10 seconds. If omitted a default of 5 seconds is used.
alert.setDuration(5000);
Not all OEMs support a progress indicator. If supported, the alert will show an animation that indicates that the user must wait (e.g. a spinning wheel or hourglass, etc). If omitted, no progress indicator will be shown.
alert.setProgressIndicator(true);
An alert can also speak a prompt or play a sound file when the alert appears on the screen. This is done by setting the ttsChunks
parameter.
alert.setTtsChunks(TTSChunkFactory.createSimpleTTSChunks("Text to Speak"));
The ttsChunks
parameter can also take a file to play/speak. For more information on how to upload the file please refer to the Playing Audio Indications guide.
TTSChunk ttsChunk = new TTSChunk(sdlFile.getName(), SpeechCapabilities.FILE); alert.setTtsChunks(Collections.singletonList(ttsChunk));
To play the alert tone when the alert appears and before the text-to-speech is spoken, set playTone
to true
.
alert.setPlayTone(true);
// Handle RPC response alert.setOnRPCResponseListener(new OnRPCResponseListener() { @Override public void onResponse(int correlationId, RPCResponse response) { if (response.getSuccess()){ Log.i(TAG, "Alert was dismissed successfully"); } } @Override public void onError(int correlationId, Result resultCode, String info){ Log.e(TAG, "onError: "+ resultCode+ " | Info: "+ info ); } }); sdlManager.sendRPC(alert);