diff --git a/solutions/android/VirtualAssistantClient/app/src/main/AndroidManifest.xml b/solutions/android/VirtualAssistantClient/app/src/main/AndroidManifest.xml
index e4478a4a98..9864d2a558 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/AndroidManifest.xml
+++ b/solutions/android/VirtualAssistantClient/app/src/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
+
@@ -46,7 +48,7 @@
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/MainApplication.java b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/MainApplication.java
index 98464d82e9..fd47091f17 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/MainApplication.java
+++ b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/MainApplication.java
@@ -2,10 +2,15 @@
import android.app.Application;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatDelegate;
import com.microsoft.bot.builder.solutions.virtualassistant.service.SpeechService;
+import static com.microsoft.bot.builder.solutions.virtualassistant.activities.BaseActivity.SHARED_PREFS_NAME;
+import static com.microsoft.bot.builder.solutions.virtualassistant.activities.BaseActivity.SHARED_PREF_DARK_MODE;
+
public class MainApplication extends Application {
// STATE
@@ -20,6 +25,11 @@ public void onCreate() {
Intent intent = new Intent(this, SpeechService.class);
intent.setAction(SpeechService.ACTION_START_FOREGROUND_SERVICE);
ContextCompat.startForegroundService(this, intent);
+
+ // read the dark-mode setting (necessary because setDefaultNightMode() doesn't persist between app restarts)
+ SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS_NAME, MODE_PRIVATE);
+ boolean darkModeEnabled = sharedPreferences.getBoolean(SHARED_PREF_DARK_MODE, false);
+ AppCompatDelegate.setDefaultNightMode(darkModeEnabled?AppCompatDelegate.MODE_NIGHT_YES:AppCompatDelegate.MODE_NIGHT_NO);
}
public static MainApplication getInstance(){
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/BaseActivity.java b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/BaseActivity.java
index 710a1cf880..ea38416d1f 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/BaseActivity.java
+++ b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/BaseActivity.java
@@ -34,9 +34,10 @@ public abstract class BaseActivity extends AppCompatActivity {
public static final String LOGTAG = "BaseActivity";
private static final Integer PERMISSION_REQUEST_RECORD_AUDIO = 101;
private static final Integer PERMISSION_REQUEST_FINE_LOCATION = 102;
- private static final String SHARED_PREFS_NAME = "my_shared_prefs";
+ public static final String SHARED_PREFS_NAME = "my_shared_prefs";
protected static final String SHARED_PREF_SHOW_TEXTINPUT = "SHARED_PREF_SHOW_TEXTINPUT";
protected static final String SHARED_PREF_SHOW_FULL_CONVERSATION = "SHARED_PREF_SHOW_FULL_CONVERSATION";
+ public static final String SHARED_PREF_DARK_MODE = "SHARED_PREF_DARK_MODE";
// State
private SharedPreferences sharedPreferences;
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/main/MainActivity.java b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/main/MainActivity.java
index 0638098be5..ed01120a0d 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/main/MainActivity.java
+++ b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/activities/main/MainActivity.java
@@ -4,6 +4,7 @@
import android.app.assist.AssistContent;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.graphics.drawable.AnimationDrawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
@@ -18,6 +19,8 @@
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.app.AppCompatDelegate;
+import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SwitchCompat;
@@ -61,11 +64,13 @@
import butterknife.OnEditorAction;
import client.model.BotConnectorActivity;
import client.model.CardAction;
+import client.model.InputHints;
import events.ActivityReceived;
import events.Disconnected;
import events.Recognized;
import events.RecognizedIntermediateResult;
import events.RequestTimeout;
+import events.SynthesizerStopped;
public class MainActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener, ViewholderBot.OnClickListener, ActionsViewholder.OnClickListener {
@@ -80,8 +85,10 @@ public class MainActivity extends BaseActivity
@BindView(R.id.nav_view) NavigationView navigationView;
@BindView(R.id.switch_show_textinput) SwitchCompat switchShowTextInput;
@BindView(R.id.switch_show_full_conversation) SwitchCompat switchShowFullConversation;
+ @BindView(R.id.switch_night_mode) SwitchCompat switchNightMode;
@BindView(R.id.speech_detection) TextView detectedSpeechToText;
- @BindView(R.id.agent_image) ImageView agentImage;
+ @BindView(R.id.mic_image) ImageView micImage;
+ @BindView(R.id.animated_assistant) AppCompatImageView animatedAssistant;
// CONSTANTS
private static final int CONTENT_VIEW = R.layout.activity_main;
@@ -97,6 +104,7 @@ public class MainActivity extends BaseActivity
private Gson gson;
private SfxManager sfxManager;
private ConfigurationManager configurationManager;
+ private boolean willListenAgain;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -116,6 +124,7 @@ protected void onCreate(Bundle savedInstanceState) {
switchShowTextInput.setChecked(alwaysShowTextInput);
showFullConversation = getBooleanSharedPref(SHARED_PREF_SHOW_FULL_CONVERSATION);
switchShowFullConversation.setChecked(showFullConversation);
+ switchNightMode.setChecked(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES);
// NAV DRAWER
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
@@ -146,6 +155,9 @@ protected void onCreate(Bundle savedInstanceState) {
sfxManager = new SfxManager();
sfxManager.initialize(this);
+
+ // assign animation
+ animatedAssistant.setBackgroundResource(R.drawable.agent_listening_animation);
}
// Register for EventBus messages and SpeechService
@@ -208,7 +220,7 @@ protected void permissionDenied(String manifestPermission) {
try {
speechServiceBinder.initializeSpeechSdk(false);
speechServiceBinder.connectAsync();
- agentImage.setVisibility(View.GONE);//hide the assistant since voice is deactivated
+ micImage.setVisibility(View.GONE);//hide the mic since voice is deactivated
textInputLayout.setVisibility(View.VISIBLE);// show the text-input prompt
} catch (RemoteException exception){
Log.e(LOGTAG, exception.getMessage());
@@ -280,11 +292,21 @@ public boolean onNavigationItemSelected(MenuItem item) {
return true;
}
- @OnClick(R.id.agent_image)
- public void onAssistantClick() {
+ private void showListeningAnimation(){
+ animatedAssistant.setVisibility(View.VISIBLE);
+ ((AnimationDrawable) animatedAssistant.getBackground()).start();
+ sfxManager.playEarconListening();
+ }
+
+ private void hideListeningAnimation(){
+ animatedAssistant.setVisibility(View.GONE);
+ sfxManager.playEarconDoneListening();
+ }
+
+ @OnClick(R.id.mic_image)
+ public void onClickAssistant() {
try {
- showSnackbar(uiContainer, getString(R.string.msg_listening));
- sfxManager.playEarconListening();
+ showListeningAnimation();
speechServiceBinder.listenOnceAsync();
} catch (RemoteException exception){
Log.e(LOGTAG, exception.getMessage());
@@ -308,6 +330,13 @@ public void OnShowFullConversation(CompoundButton button, boolean checked){
chatAdapter.setShowFullConversation(showFullConversation);
}
+ @OnCheckedChanged(R.id.switch_night_mode)
+ public void OnEnableNightMode(CompoundButton button, boolean checked){
+ putBooleanSharedPref(SHARED_PREF_DARK_MODE, checked);
+ AppCompatDelegate.setDefaultNightMode(checked?AppCompatDelegate.MODE_NIGHT_YES:AppCompatDelegate.MODE_NIGHT_NO);
+ getDelegate().applyDayNight();
+ }
+
@OnEditorAction(R.id.textinput)
boolean onEditorAction(int actionId, KeyEvent key){
boolean handled = false;
@@ -364,6 +393,20 @@ public void onEventDisconnected(Disconnected event) {
}
}
+ // EventBus: the synthesizer has stopped playing
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onEventSynthesizerStopped(SynthesizerStopped event) {
+
+ // Note: the SpeechService will trigger the actual listening. Since the app needs to show a
+ // visual, the app also needs to subscribe to this event and act on it.
+ if(willListenAgain){
+ willListenAgain = false;
+ Log.i(LOGTAG, "Listening again");
+ showListeningAnimation();
+ }
+
+ }
+
// EventBus: the user spoke and the app recognized intermediate speech
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventRecognizedIntermediateResult(RecognizedIntermediateResult event) {
@@ -373,8 +416,9 @@ public void onEventRecognizedIntermediateResult(RecognizedIntermediateResult eve
// EventBus: the user spoke and the app recognized the speech. Disconnect mic.
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventRecognized(Recognized event) {
- sfxManager.playEarconDoneListening();
+ hideListeningAnimation();
detectedSpeechToText.setText(event.recognized_speech);
+
// in 2 seconds clear the text (at this point the bot should be giving its' response)
handler.postDelayed(() -> detectedSpeechToText.setText(""), 2000);
}
@@ -414,6 +458,14 @@ public void onEventActivityReceived(ActivityReceived activityReceived) throws IO
default:
break;
}
+
+ // the service looks for the same expectingInput event. The app needs it to trigger visuals
+ if(botConnectorActivity.getInputHint() != null){
+ Log.i(LOGTAG, "InputHint: "+botConnectorActivity.getInputHint());
+ if(botConnectorActivity.getInputHint().equals(InputHints.EXPECTINGINPUT.toString())){
+ willListenAgain = true;
+ }
+ }
}
}
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/service/SpeechService.java b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/service/SpeechService.java
index 75ddefac6a..ebbe81a39a 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/service/SpeechService.java
+++ b/solutions/android/VirtualAssistantClient/app/src/main/java/com/microsoft/bot/builder/solutions/virtualassistant/service/SpeechService.java
@@ -340,6 +340,7 @@ public void onEventSynthesizerStopped(SynthesizerStopped event) {
if(shouldListenAgain){
shouldListenAgain = false;
+ Log.i(TAG_FOREGROUND_SERVICE, "Listening again");
speechSdk.listenOnceAsync();
}
@@ -394,7 +395,8 @@ public void onEventActivityReceived(ActivityReceived activityReceived) throws IO
// make the bot automatically listen again
if(botConnectorActivity.getInputHint() != null){
- if(botConnectorActivity.getInputHint().equals(InputHints.EXPECTINGINPUT)){
+ Log.i(TAG_FOREGROUND_SERVICE, "InputHint: "+botConnectorActivity.getInputHint());
+ if(botConnectorActivity.getInputHint().equals(InputHints.EXPECTINGINPUT.toString())){
shouldListenAgain = true;
}
}
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_animation.xml b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_animation.xml
new file mode 100644
index 0000000000..a956269d56
--- /dev/null
+++ b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_animation.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_00.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_00.png
new file mode 100644
index 0000000000..cd6ea6f0c2
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_00.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_01.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_01.png
new file mode 100644
index 0000000000..ceb25e30c3
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_01.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_02.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_02.png
new file mode 100644
index 0000000000..296af4a52a
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_02.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_03.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_03.png
new file mode 100644
index 0000000000..b33ff4ab3a
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_03.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_04.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_04.png
new file mode 100644
index 0000000000..a16b5d6346
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_04.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_05.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_05.png
new file mode 100644
index 0000000000..5656b97b9a
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_05.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_06.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_06.png
new file mode 100644
index 0000000000..a97d249d05
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_06.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_07.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_07.png
new file mode 100644
index 0000000000..c7d8d148f8
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_07.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_08.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_08.png
new file mode 100644
index 0000000000..c1c66747dc
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_08.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_09.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_09.png
new file mode 100644
index 0000000000..2aa6aef0c5
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_09.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_10.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_10.png
new file mode 100644
index 0000000000..d7612fad10
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_10.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_11.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_11.png
new file mode 100644
index 0000000000..15136ebf3e
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_11.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_12.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_12.png
new file mode 100644
index 0000000000..4456c13ba6
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_12.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_13.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_13.png
new file mode 100644
index 0000000000..b39e70ec9b
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_13.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_14.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_14.png
new file mode 100644
index 0000000000..8718a29de7
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_14.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_15.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_15.png
new file mode 100644
index 0000000000..a6cd12e9b5
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_15.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_16.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_16.png
new file mode 100644
index 0000000000..7fffe0b02e
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_16.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_17.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_17.png
new file mode 100644
index 0000000000..9920db66e4
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_17.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_18.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_18.png
new file mode 100644
index 0000000000..6d911362cc
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_18.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_19.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_19.png
new file mode 100644
index 0000000000..a3aab6018b
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_19.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_20.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_20.png
new file mode 100644
index 0000000000..a04e85a0b3
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_20.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_21.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_21.png
new file mode 100644
index 0000000000..9ef56e4e9f
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_21.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_22.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_22.png
new file mode 100644
index 0000000000..c26ce0813f
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_22.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_23.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_23.png
new file mode 100644
index 0000000000..cd6859b3c4
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_23.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_24.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_24.png
new file mode 100644
index 0000000000..29c937d481
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_24.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_25.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_25.png
new file mode 100644
index 0000000000..05963f6a8b
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_25.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_26.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_26.png
new file mode 100644
index 0000000000..e101fc4bd9
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_26.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_27.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_27.png
new file mode 100644
index 0000000000..6be9dead55
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_27.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_28.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_28.png
new file mode 100644
index 0000000000..006ad0330e
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_28.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_29.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_29.png
new file mode 100644
index 0000000000..323202caeb
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_29.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_30.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_30.png
new file mode 100644
index 0000000000..64e9c54c9f
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_30.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_31.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_31.png
new file mode 100644
index 0000000000..12c8e0d518
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_31.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_32.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_32.png
new file mode 100644
index 0000000000..fd48d19f33
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_32.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_33.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_33.png
new file mode 100644
index 0000000000..81f66c1acc
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_33.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_34.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_34.png
new file mode 100644
index 0000000000..8df0fd49ac
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_34.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_35.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_35.png
new file mode 100644
index 0000000000..5fcb81899a
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_35.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_36.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_36.png
new file mode 100644
index 0000000000..fbc02353ca
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_36.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_37.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_37.png
new file mode 100644
index 0000000000..05cdd69f1d
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_37.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_38.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_38.png
new file mode 100644
index 0000000000..154b2b178f
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_38.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_39.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_39.png
new file mode 100644
index 0000000000..bbec2ae900
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_39.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_40.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_40.png
new file mode 100644
index 0000000000..f5b120d554
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_40.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_41.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_41.png
new file mode 100644
index 0000000000..e45c2dea2b
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_41.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_42.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_42.png
new file mode 100644
index 0000000000..ee05f7e66c
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_42.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_43.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_43.png
new file mode 100644
index 0000000000..05d6ad1a21
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_43.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_44.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_44.png
new file mode 100644
index 0000000000..f95b475a52
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_44.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_45.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_45.png
new file mode 100644
index 0000000000..1f81a3df70
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_45.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_46.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_46.png
new file mode 100644
index 0000000000..4ec1eebd32
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_46.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_47.png b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_47.png
new file mode 100644
index 0000000000..92c947b890
Binary files /dev/null and b/solutions/android/VirtualAssistantClient/app/src/main/res/drawable/agent_listening_loop_47.png differ
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/layout/activity_main.xml b/solutions/android/VirtualAssistantClient/app/src/main/res/layout/activity_main.xml
index 3ecbea0b18..6500a3d1f8 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/res/layout/activity_main.xml
+++ b/solutions/android/VirtualAssistantClient/app/src/main/res/layout/activity_main.xml
@@ -10,26 +10,26 @@
tools:context=".activities.main.MainActivity">
+ android:layout_height="match_parent">
+ android:layout_above="@+id/suggestedactions"/>
+ android:layout_above="@+id/container_buttons"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/values/colors.xml b/solutions/android/VirtualAssistantClient/app/src/main/res/values/colors.xml
index 6587616b2e..a835eadf0a 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/res/values/colors.xml
+++ b/solutions/android/VirtualAssistantClient/app/src/main/res/values/colors.xml
@@ -5,10 +5,14 @@
#3062d6
- #272727
+ #ffffff
+ #272727
+
+
+ #B1B1B1
+ #272727
- #242424
#000000
#ffffff
#f2f2f2
@@ -21,4 +25,20 @@
#84d9f8
+
+
+ #008577
+ #00574B
+ #3062d6
+
+
+ #272727
+ #ffffff
+
+
+ #2e2e2e
+ #FFFFFF
+
+
+
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/values/dimens.xml b/solutions/android/VirtualAssistantClient/app/src/main/res/values/dimens.xml
index 22425a6da8..440e51eab5 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/res/values/dimens.xml
+++ b/solutions/android/VirtualAssistantClient/app/src/main/res/values/dimens.xml
@@ -13,6 +13,10 @@
4dp
+
+ 400dp
+ 100dp
+
Speech Service Subscription Key
diff --git a/solutions/android/VirtualAssistantClient/app/src/main/res/values/styles.xml b/solutions/android/VirtualAssistantClient/app/src/main/res/values/styles.xml
index 56d9f6634b..e1436e7ca3 100644
--- a/solutions/android/VirtualAssistantClient/app/src/main/res/values/styles.xml
+++ b/solutions/android/VirtualAssistantClient/app/src/main/res/values/styles.xml
@@ -1,16 +1,14 @@
+
+
-
-
-
@@ -18,6 +16,10 @@
+
+
+
+
+
+
+
+
+
+