diff options
author | Dianne Hackborn <hackbod@google.com> | 2015-06-30 14:38:17 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2015-06-30 16:59:41 -0700 |
commit | 593334ab70a8341c7d24d71a377ab5617e3f4ab7 (patch) | |
tree | 7005af1c583f459a8ce7a02a30f65502258ba015 | |
parent | 1aaad610dfc7445ec29fd906974677515c3a9f87 (diff) | |
download | frameworks_base-593334ab70a8341c7d24d71a377ab5617e3f4ab7.zip frameworks_base-593334ab70a8341c7d24d71a377ab5617e3f4ab7.tar.gz frameworks_base-593334ab70a8341c7d24d71a377ab5617e3f4ab7.tar.bz2 |
Fix issue #22124996: VI: Command Request not Active
Just forgot to add the request to the active set.
Also eradicate a bunch of old cruft that has been replaced
by the final APIs, and improve voice interaction test to
sit fully on top of the final APIs and have a test for
command request.
Change-Id: Ieff7a6165ebf2a4c5fb80c1ebd020511a2ae63ee
12 files changed, 188 insertions, 212 deletions
diff --git a/api/current.txt b/api/current.txt index 376c2c3..3ae5372 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5805,7 +5805,7 @@ package android.app.admin { package android.app.assist { - public deprecated class AssistContent implements android.os.Parcelable { + public class AssistContent implements android.os.Parcelable { ctor public AssistContent(); method public int describeContents(); method public android.content.ClipData getClipData(); diff --git a/api/system-current.txt b/api/system-current.txt index 57f3a30..8a633df 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5937,7 +5937,7 @@ package android.app.admin { package android.app.assist { - public deprecated class AssistContent implements android.os.Parcelable { + public class AssistContent implements android.os.Parcelable { ctor public AssistContent(); method public int describeContents(); method public android.content.ClipData getClipData(); diff --git a/core/java/android/app/assist/AssistContent.java b/core/java/android/app/assist/AssistContent.java index 07b2d57..cddf47a 100644 --- a/core/java/android/app/assist/AssistContent.java +++ b/core/java/android/app/assist/AssistContent.java @@ -12,7 +12,6 @@ import android.os.Parcelable; * assistant at the user's request. This is filled in by * {@link android.app.Activity#onProvideAssistContent Activity.onProvideAssistContent}. */ -@Deprecated public class AssistContent implements Parcelable { private boolean mIsAppProvidedIntent = false; private Intent mIntent; diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index 8119049..549c93e 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -172,15 +172,6 @@ public class VoiceInteractionService extends Service { } } - /** @hide */ - public void startSession(Bundle args, int flags) { - showSession(args, flags); - } - /** @hide */ - public void startSession(Bundle args) { - startSession(args, 0); - } - @Override public void onCreate() { super.onCreate(); diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java index f9e216a..7eb936a 100644 --- a/core/java/android/service/voice/VoiceInteractionSession.java +++ b/core/java/android/service/voice/VoiceInteractionSession.java @@ -71,7 +71,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; */ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCallbacks2 { static final String TAG = "VoiceInteractionSession"; - static final boolean DEBUG = true; + static final boolean DEBUG = false; /** * Flag received in {@link #onShow}: originator requested that the session be started with @@ -175,6 +175,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall CommandRequest request = new CommandRequest(callingPackage, Binder.getCallingUid(), callback, VoiceInteractionSession.this, command, extras); + addRequest(request); mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_COMMAND, request)); return request.mInterface; @@ -249,16 +250,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } }; - /** @hide */ - public static class Caller { - } - /** * Base class representing a request from a voice-driver app to perform a particular * voice operation with the user. See related subclasses for the types of requests * that are possible. */ - public static class Request extends Caller { + public static class Request { final IVoiceInteractorRequest mInterface = new IVoiceInteractorRequest.Stub() { @Override public void cancel() throws RemoteException { @@ -319,74 +316,8 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } } - /** @hide */ - public void sendConfirmResult(boolean confirmed, Bundle result) { - try { - if (DEBUG) Log.d(TAG, "sendConfirmResult: req=" + mInterface - + " confirmed=" + confirmed + " result=" + result); - finishRequest(); - mCallback.deliverConfirmationResult(mInterface, confirmed, result); - } catch (RemoteException e) { - } - } - - /** @hide */ - public void sendPickOptionResult(boolean finished, - VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) { - try { - if (DEBUG) Log.d(TAG, "sendPickOptionResult: req=" + mInterface - + " finished=" + finished + " selections=" + selections - + " result=" + result); - if (finished) { - finishRequest(); - } - mCallback.deliverPickOptionResult(mInterface, finished, selections, result); - } catch (RemoteException e) { - } - } - - /** @hide */ - public void sendCompleteVoiceResult(Bundle result) { - try { - if (DEBUG) Log.d(TAG, "sendCompleteVoiceResult: req=" + mInterface - + " result=" + result); - finishRequest(); - mCallback.deliverCompleteVoiceResult(mInterface, result); - } catch (RemoteException e) { - } - } - - /** @hide */ - public void sendAbortVoiceResult(Bundle result) { - try { - if (DEBUG) Log.d(TAG, "sendConfirmResult: req=" + mInterface - + " result=" + result); - finishRequest(); - mCallback.deliverAbortVoiceResult(mInterface, result); - } catch (RemoteException e) { - } - } - - /** @hide */ - public void sendCommandResult(boolean finished, Bundle result) { - try { - if (DEBUG) Log.d(TAG, "sendCommandResult: req=" + mInterface - + " result=" + result); - if (finished) { - finishRequest(); - } - mCallback.deliverCommandResult(mInterface, finished, result); - } catch (RemoteException e) { - } - } - - /** @hide */ - public void sendCancelResult() { - cancel(); - } - /** - * ASk the app to cancelLocked this current request. + * Ask the app to cancel this current request. */ public void cancel() { try { @@ -440,7 +371,13 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * VoiceInteractor.ConfirmationRequest.onConfirmationResult}. */ public void sendConfirmationResult(boolean confirmed, Bundle result) { - sendConfirmResult(confirmed, result); + try { + if (DEBUG) Log.d(TAG, "sendConfirmationResult: req=" + mInterface + + " confirmed=" + confirmed + " result=" + result); + finishRequest(); + mCallback.deliverConfirmationResult(mInterface, confirmed, result); + } catch (RemoteException e) { + } } } @@ -487,6 +424,20 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall return mOptions; } + void sendPickOptionResult(boolean finished, + VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) { + try { + if (DEBUG) Log.d(TAG, "sendPickOptionResult: req=" + mInterface + + " finished=" + finished + " selections=" + selections + + " result=" + result); + if (finished) { + finishRequest(); + } + mCallback.deliverPickOptionResult(mInterface, finished, selections, result); + } catch (RemoteException e) { + } + } + /** * Report an intermediate option selection from the request, without completing it (the * request is still active and the app is waiting for the final option selection), @@ -553,7 +504,13 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * VoiceInteractor.CompleteVoiceRequest.onCompleteResult}. */ public void sendCompleteResult(Bundle result) { - sendCompleteVoiceResult(result); + try { + if (DEBUG) Log.d(TAG, "sendCompleteVoiceResult: req=" + mInterface + + " result=" + result); + finishRequest(); + mCallback.deliverCompleteVoiceResult(mInterface, result); + } catch (RemoteException e) { + } } } @@ -596,7 +553,13 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * VoiceInteractor.AbortVoiceRequest.onAbortResult}. */ public void sendAbortResult(Bundle result) { - sendAbortVoiceResult(result); + try { + if (DEBUG) Log.d(TAG, "sendConfirmResult: req=" + mInterface + + " result=" + result); + finishRequest(); + mCallback.deliverAbortVoiceResult(mInterface, result); + } catch (RemoteException e) { + } } } @@ -621,6 +584,18 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall return mCommand; } + void sendCommandResult(boolean finished, Bundle result) { + try { + if (DEBUG) Log.d(TAG, "sendCommandResult: req=" + mInterface + + " result=" + result); + if (finished) { + finishRequest(); + } + mCallback.deliverCommandResult(mInterface, finished, result); + } catch (RemoteException e) { + } + } + /** * Report an intermediate result of the request, without completing it (the request * is still active and the app is waiting for the final result), resulting in a call to @@ -829,11 +804,10 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } } - void doCreate(IVoiceInteractionManagerService service, IBinder token, Bundle args, - int startFlags) { + void doCreate(IVoiceInteractionManagerService service, IBinder token) { mSystemService = service; mToken = token; - onCreate(args, startFlags); + onCreate(); } void doShow(Bundle args, int flags, final IVoiceInteractionSessionShowCallback showCallback) { @@ -919,11 +893,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall mContentFrame = (FrameLayout)mRootView.findViewById(android.R.id.content); } - /** @hide */ - public void show() { - show(null, 0); - } - /** * Show the UI for this session. This asks the system to go through the process of showing * your UI, which will eventually culminate in {@link #onShow}. This is similar to calling @@ -958,14 +927,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } } - /** @hide */ - public void showWindow() { - } - - /** @hide */ - public void hideWindow() { - } - /** * You can call this to customize the theme used by your IME's window. * This must be set before {@link #onCreate}, so you @@ -1062,7 +1023,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall if (mToken == null) { throw new IllegalStateException("Can't call before onCreate()"); } - hideWindow(); try { mSystemService.finish(mToken); } catch (RemoteException e) { @@ -1077,16 +1037,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall doOnCreate(); } - /** @hide */ - public void onCreate(Bundle args) { - doOnCreate(); - } - - /** @hide */ - public void onCreate(Bundle args, int showFlags) { - doOnCreate(); - } - private void doOnCreate() { mTheme = mTheme != 0 ? mTheme : com.android.internal.R.style.Theme_DeviceDefault_VoiceInteractionSession; @@ -1244,34 +1194,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall hide(); } - /** @hide */ - public boolean[] onGetSupportedCommands(Caller caller, String[] commands) { - return new boolean[commands.length]; - } - /** @hide */ - public void onConfirm(Caller caller, Request request, CharSequence prompt, - Bundle extras) { - } - /** @hide */ - public void onPickOption(Caller caller, Request request, CharSequence prompt, - VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) { - } - /** @hide */ - public void onCompleteVoice(Caller caller, Request request, CharSequence message, - Bundle extras) { - request.sendCompleteVoiceResult(null); - } - /** @hide */ - public void onAbortVoice(Caller caller, Request request, CharSequence message, Bundle extras) { - request.sendAbortVoiceResult(null); - } - /** @hide */ - public void onCommand(Caller caller, Request request, String command, Bundle extras) { - } - /** @hide */ - public void onCancel(Request request) { - } - /** * Request to query for what extended commands the session supports. * @@ -1282,7 +1204,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * an array of all false entries. */ public boolean[] onGetSupportedCommands(String[] commands) { - return onGetSupportedCommands(new Caller(), commands); + return new boolean[commands.length]; } /** @@ -1293,7 +1215,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The active request. */ public void onRequestConfirmation(ConfirmationRequest request) { - onConfirm(request, request, request.getPrompt(), request.getExtras()); } /** @@ -1303,8 +1224,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The active request. */ public void onRequestPickOption(PickOptionRequest request) { - onPickOption(request, request, request.getPrompt(), request.getOptions(), - request.getExtras()); } /** @@ -1317,7 +1236,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The active request. */ public void onRequestCompleteVoice(CompleteVoiceRequest request) { - onCompleteVoice(request, request, request.getMessage(), request.getExtras()); } /** @@ -1330,7 +1248,6 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The active request. */ public void onRequestAbortVoice(AbortVoiceRequest request) { - onAbortVoice(request, request, request.getMessage(), request.getExtras()); } /** @@ -1341,11 +1258,10 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The active request. */ public void onRequestCommand(CommandRequest request) { - onCommand(request, request, request.getCommand(), request.getExtras()); } /** - * Called when the {@link android.app.VoiceInteractor} has asked to cancelLocked a {@link Request} + * Called when the {@link android.app.VoiceInteractor} has asked to cancel a {@link Request} * that was previously delivered to {@link #onRequestConfirmation}, * {@link #onRequestPickOption}, {@link #onRequestCompleteVoice}, {@link #onRequestAbortVoice}, * or {@link #onRequestCommand}. @@ -1353,6 +1269,5 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * @param request The request that is being canceled. */ public void onCancelRequest(Request request) { - onCancel(request); } } diff --git a/core/java/android/service/voice/VoiceInteractionSessionService.java b/core/java/android/service/voice/VoiceInteractionSessionService.java index 8f988f3..fb9f973 100644 --- a/core/java/android/service/voice/VoiceInteractionSessionService.java +++ b/core/java/android/service/voice/VoiceInteractionSessionService.java @@ -109,7 +109,7 @@ public abstract class VoiceInteractionSessionService extends Service { mSession = onNewSession(args); try { mSystemService.deliverNewSession(token, mSession.mSession, mSession.mInteractor); - mSession.doCreate(mSystemService, token, args, startFlags); + mSession.doCreate(mSystemService, token); } catch (RemoteException e) { } } diff --git a/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java b/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java index e4ea0bc..43f1e32 100644 --- a/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java +++ b/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java @@ -52,28 +52,23 @@ public class AssistInteractionSession extends VoiceInteractionSession { } @Override - public void onConfirm(Caller caller, - Request request, CharSequence prompt, Bundle extras) { - + public void onRequestConfirmation(ConfirmationRequest request) { } @Override - public void onPickOption(Caller caller, - Request request, CharSequence prompt, - VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) { - + public void onRequestPickOption(PickOptionRequest request) { } @Override - public void onCommand(Caller caller, - Request request, String command, Bundle extras) { - + public void onRequestCommand(CommandRequest request) { } @Override - public void onCreate(Bundle args) { - super.onCreate(args); + public void onCancelRequest(Request request) { + } + @Override + public void onCreate() { // Simulate slowness of Assist app try { Thread.sleep(1000); @@ -83,11 +78,6 @@ public class AssistInteractionSession extends VoiceInteractionSession { } @Override - public void onCancel(Request request) { - - } - - @Override public View onCreateContentView() { View v = getLayoutInflater().inflate(R.layout.assist, null); mScrim = v.findViewById(R.id.scrim); diff --git a/tests/VoiceInteraction/res/layout/test_interaction.xml b/tests/VoiceInteraction/res/layout/test_interaction.xml index 6209bd0..d1a7ad5 100644 --- a/tests/VoiceInteraction/res/layout/test_interaction.xml +++ b/tests/VoiceInteraction/res/layout/test_interaction.xml @@ -51,6 +51,19 @@ android:text="@string/abortVoice" /> + </LinearLayout> + + <LinearLayout android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:orientation="horizontal"> + + <Button android:id="@+id/command" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/commandVoice" + /> + <Button android:id="@+id/pick" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/tests/VoiceInteraction/res/values/strings.xml b/tests/VoiceInteraction/res/values/strings.xml index 4cf4104..cf660e6 100644 --- a/tests/VoiceInteraction/res/values/strings.xml +++ b/tests/VoiceInteraction/res/values/strings.xml @@ -24,6 +24,7 @@ <string name="abort">Abort</string> <string name="complete">Complete</string> <string name="abortVoice">Abort Voice</string> + <string name="commandVoice">Command</string> <string name="completeVoice">Complete Voice</string> <string name="pickVoice">Pick Voice</string> <string name="cancelVoice">Cancel</string> diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionService.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionService.java index 578e356..8381aa1 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionService.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionService.java @@ -80,7 +80,8 @@ public class MainInteractionService extends VoiceInteractionService { Bundle args = new Bundle(); args.putParcelable("intent", new Intent(this, TestInteractionActivity.class)); args.putBundle("assist", intent.getExtras()); - startSession(args, VoiceInteractionSession.SHOW_WITH_ASSIST | VoiceInteractionSession.SHOW_WITH_SCREENSHOT); + showSession(args, VoiceInteractionSession.SHOW_WITH_ASSIST + | VoiceInteractionSession.SHOW_WITH_SCREENSHOT); } else { Log.w(TAG, "Not starting -- not current voice interaction service"); } diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java index 97c1e85..a6585ba 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java @@ -60,7 +60,7 @@ public class MainInteractionSession extends VoiceInteractionSession static final int STATE_COMMAND = 4; static final int STATE_ABORT_VOICE = 5; static final int STATE_COMPLETE_VOICE = 6; - static final int STATE_DONE=7; + static final int STATE_DONE = 7; int mState = STATE_IDLE; VoiceInteractor.PickOptionRequest.Option[] mPendingOptions; @@ -72,8 +72,8 @@ public class MainInteractionSession extends VoiceInteractionSession } @Override - public void onCreate(Bundle args, int startFlags) { - super.onCreate(args, startFlags); + public void onCreate() { + super.onCreate(); ActivityManager am = getContext().getSystemService(ActivityManager.class); am.setWatchHeapLimit(40 * 1024 * 1024); } @@ -163,8 +163,8 @@ public class MainInteractionSession extends VoiceInteractionSession if (screenshot != null) { mScreenshot.setImageBitmap(screenshot); mScreenshot.setAdjustViewBounds(true); - mScreenshot.setMaxWidth(screenshot.getWidth()/3); - mScreenshot.setMaxHeight(screenshot.getHeight()/3); + mScreenshot.setMaxWidth(screenshot.getWidth() / 3); + mScreenshot.setMaxHeight(screenshot.getHeight() / 3); mFullScreenshot.setImageBitmap(screenshot); } else { mScreenshot.setImageDrawable(null); @@ -207,11 +207,12 @@ public class MainInteractionSession extends VoiceInteractionSession updateState(); startVoiceActivity(mStartIntent); } else if (v == mConfirmButton) { - if (mState == STATE_CONFIRM) { - mPendingRequest.sendConfirmResult(true, null); + if (mPendingRequest instanceof ConfirmationRequest) { + ((ConfirmationRequest)mPendingRequest).sendConfirmationResult(true, null); mPendingRequest = null; mState = STATE_LAUNCHING; - } else if (mState == STATE_PICK_OPTION) { + } else if (mPendingRequest instanceof PickOptionRequest) { + PickOptionRequest pick = (PickOptionRequest)mPendingRequest; int numReturn = mPendingOptions.length/2; if (numReturn <= 0) { numReturn = 1; @@ -223,23 +224,25 @@ public class MainInteractionSession extends VoiceInteractionSession } mPendingOptions = picked; if (picked.length <= 1) { - mPendingRequest.sendPickOptionResult(true, picked, null); + pick.sendPickOptionResult(picked, null); mPendingRequest = null; mState = STATE_LAUNCHING; } else { - mPendingRequest.sendPickOptionResult(false, picked, null); + pick.sendIntermediatePickOptionResult(picked, null); updatePickText(); } - } else if (mPendingRequest != null) { - mPendingRequest.sendCommandResult(true, null); + } else if (mPendingRequest instanceof CommandRequest) { + Bundle result = new Bundle(); + result.putString("key", "a result!"); + ((CommandRequest)mPendingRequest).sendResult(result); mPendingRequest = null; mState = STATE_LAUNCHING; } - } else if (v == mAbortButton) { - mPendingRequest.sendAbortVoiceResult(null); + } else if (v == mAbortButton && mPendingRequest instanceof AbortVoiceRequest) { + ((AbortVoiceRequest)mPendingRequest).sendAbortResult(null); mPendingRequest = null; - } else if (v == mCompleteButton) { - mPendingRequest.sendCompleteVoiceResult(null); + } else if (v == mCompleteButton && mPendingRequest instanceof CompleteVoiceRequest) { + ((CompleteVoiceRequest)mPendingRequest).sendCompleteResult(null); mPendingRequest = null; } else if (v == mScreenshot) { if (mFullScreenshot.getVisibility() != View.VISIBLE) { @@ -261,29 +264,45 @@ public class MainInteractionSession extends VoiceInteractionSession } @Override - public boolean[] onGetSupportedCommands(Caller caller, String[] commands) { - return new boolean[commands.length]; + public boolean[] onGetSupportedCommands(String[] commands) { + boolean[] res = new boolean[commands.length]; + for (int i=0; i<commands.length; i++) { + if ("com.android.test.voiceinteraction.COMMAND".equals(commands[i])) { + res[i] = true; + } + } + return res; } + void setPrompt(VoiceInteractor.Prompt prompt) { + if (prompt == null) { + mText.setText("(null)"); + mPendingPrompt = ""; + } else { + mText.setText(prompt.getVisualPrompt()); + mPendingPrompt = prompt.getVisualPrompt(); + } + } + @Override - public void onConfirm(Caller caller, Request request, CharSequence prompt, Bundle extras) { - Log.i(TAG, "onConfirm: prompt=" + prompt + " extras=" + extras); - mText.setText(prompt); + public void onRequestConfirmation(ConfirmationRequest request) { + Log.i(TAG, "onConfirm: prompt=" + request.getVoicePrompt() + " extras=" + + request.getExtras()); + setPrompt(request.getVoicePrompt()); mConfirmButton.setText("Confirm"); mPendingRequest = request; - mPendingPrompt = prompt; mState = STATE_CONFIRM; updateState(); } @Override - public void onPickOption(Caller caller, Request request, CharSequence prompt, - VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) { - Log.i(TAG, "onPickOption: prompt=" + prompt + " options=" + options + " extras=" + extras); + public void onRequestPickOption(PickOptionRequest request) { + Log.i(TAG, "onPickOption: prompt=" + request.getVoicePrompt() + " options=" + + request.getOptions() + " extras=" + request.getExtras()); mConfirmButton.setText("Pick Option"); mPendingRequest = request; - mPendingPrompt = prompt; - mPendingOptions = options; + setPrompt(request.getVoicePrompt()); + mPendingOptions = request.getOptions(); mState = STATE_PICK_OPTION; updatePickText(); updateState(); @@ -303,27 +322,33 @@ public class MainInteractionSession extends VoiceInteractionSession } @Override - public void onCompleteVoice(Caller caller, Request request, CharSequence message, Bundle extras) { - Log.i(TAG, "onCompleteVoice: message=" + message + " extras=" + extras); - mText.setText(message); + public void onRequestCompleteVoice(CompleteVoiceRequest request) { + Log.i(TAG, "onCompleteVoice: message=" + request.getVoicePrompt() + " extras=" + + request.getExtras()); + setPrompt(request.getVoicePrompt()); mPendingRequest = request; mState = STATE_COMPLETE_VOICE; updateState(); } @Override - public void onAbortVoice(Caller caller, Request request, CharSequence message, Bundle extras) { - Log.i(TAG, "onAbortVoice: message=" + message + " extras=" + extras); - mText.setText(message); + public void onRequestAbortVoice(AbortVoiceRequest request) { + Log.i(TAG, "onAbortVoice: message=" + request.getVoicePrompt() + " extras=" + + request.getExtras()); + setPrompt(request.getVoicePrompt()); mPendingRequest = request; mState = STATE_ABORT_VOICE; updateState(); } @Override - public void onCommand(Caller caller, Request request, String command, Bundle extras) { - Log.i(TAG, "onCommand: command=" + command + " extras=" + extras); - mText.setText("Command: " + command); + public void onRequestCommand(CommandRequest request) { + Bundle extras = request.getExtras(); + if (extras != null) { + extras.getString("arg"); + } + Log.i(TAG, "onCommand: command=" + request.getCommand() + " extras=" + extras); + mText.setText("Command: " + request.getCommand() + ", " + extras); mConfirmButton.setText("Finish Command"); mPendingRequest = request; mState = STATE_COMMAND; @@ -331,8 +356,13 @@ public class MainInteractionSession extends VoiceInteractionSession } @Override - public void onCancel(Request request) { + public void onCancelRequest(Request request) { Log.i(TAG, "onCancel"); - request.sendCancelResult(); + if (mPendingRequest == request) { + mPendingRequest = null; + mState = STATE_LAUNCHING; + updateState(); + } + request.cancel(); } } diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java index 943c647..2487e1ca 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java @@ -33,6 +33,7 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis static final String REQUEST_ABORT = "abort"; static final String REQUEST_COMPLETE = "complete"; + static final String REQUEST_COMMAND = "command"; static final String REQUEST_PICK = "pick"; static final String REQUEST_CONFIRM = "confirm"; @@ -41,6 +42,7 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis TextView mLog; Button mAbortButton; Button mCompleteButton; + Button mCommandButton; Button mPickButton; Button mJumpOutButton; Button mCancelButton; @@ -68,6 +70,8 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis mAbortButton.setOnClickListener(this); mCompleteButton = (Button)findViewById(R.id.complete); mCompleteButton.setOnClickListener(this); + mCommandButton = (Button)findViewById(R.id.command); + mCommandButton.setOnClickListener(this); mPickButton = (Button)findViewById(R.id.pick); mPickButton.setOnClickListener(this); mJumpOutButton = (Button)findViewById(R.id.jump); @@ -117,6 +121,9 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis } else if (v == mCompleteButton) { VoiceInteractor.CompleteVoiceRequest req = new TestCompleteVoice(); mInteractor.submitRequest(req, REQUEST_COMPLETE); + } else if (v == mCommandButton) { + VoiceInteractor.CommandRequest req = new TestCommand("Some arg"); + mInteractor.submitRequest(req, REQUEST_COMMAND); } else if (v == mPickButton) { VoiceInteractor.PickOptionRequest.Option[] options = new VoiceInteractor.PickOptionRequest.Option[5]; @@ -176,6 +183,37 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis } } + static class TestCommand extends VoiceInteractor.CommandRequest { + public TestCommand(String arg) { + super("com.android.test.voiceinteraction.COMMAND", makeBundle(arg)); + } + @Override public void onCancel() { + Log.i(TAG, "Canceled!"); + ((TestInteractionActivity)getActivity()).mLog.append("Canceled command\n"); + } + @Override + public void onCommandResult(boolean finished, Bundle result) { + Log.i(TAG, "Command result: finished=" + finished + " result=" + result); + StringBuilder sb = new StringBuilder(); + if (finished) { + sb.append("Command final result: "); + } else { + sb.append("Command intermediate result: "); + } + if (result != null) { + result.getString("key"); + } + sb.append(result); + sb.append("\n"); + ((TestInteractionActivity)getActivity()).mLog.append(sb.toString()); + } + static Bundle makeBundle(String arg) { + Bundle b = new Bundle(); + b.putString("key", arg); + return b; + } + } + static class TestPickOption extends VoiceInteractor.PickOptionRequest { public TestPickOption(Option[] options) { super(new VoiceInteractor.Prompt("Need to pick something"), options, null); @@ -200,10 +238,8 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis } sb.append(selections[i].getLabel()); } + sb.append("\n"); ((TestInteractionActivity)getActivity()).mLog.append(sb.toString()); - if (finished) { - getActivity().finish(); - } } } } |