diff options
author | Dianne Hackborn <hackbod@google.com> | 2015-06-08 17:07:40 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2015-06-09 14:15:49 -0700 |
commit | a3acdb33df7c7be7ff3d9f376ff833e4b0c1d897 (patch) | |
tree | 452c3cd2b7a2706fcbdcd1432e820c71e31b13bb /tests | |
parent | ea7438e4a698945b3e3a7786cff726c337291a68 (diff) | |
download | frameworks_base-a3acdb33df7c7be7ff3d9f376ff833e4b0c1d897.zip frameworks_base-a3acdb33df7c7be7ff3d9f376ff833e4b0c1d897.tar.gz frameworks_base-a3acdb33df7c7be7ff3d9f376ff833e4b0c1d897.tar.bz2 |
Fix issue #21621920: VI: need mechanism to get current request
Add new APIs to associate a Request with a name, get all active
requests, and get active request by name.
Also add a new Activity.onProvideReferrer() which will allow
applications to propagate referrer information to the assistant
(and other apps they launch) in a consistent way.
Change-Id: I4ef74b5ed07447da9303a74a1bdf42e4966df363
Diffstat (limited to 'tests')
3 files changed, 51 insertions, 22 deletions
diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java index dae1ac3..3090a11 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java @@ -23,6 +23,7 @@ import android.app.AssistStructure; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.net.Uri; import android.os.Bundle; import android.service.voice.VoiceInteractionSession; import android.util.Log; @@ -79,6 +80,9 @@ public class MainInteractionSession extends VoiceInteractionSession super.onShow(args, showFlags); mState = STATE_IDLE; mStartIntent = args.getParcelable("intent"); + if (mStartIntent == null) { + mStartIntent = new Intent(getContext(), TestInteractionActivity.class); + } if (mAssistVisualizer != null) { mAssistVisualizer.clearAssistData(); } @@ -119,6 +123,7 @@ public class MainInteractionSession extends VoiceInteractionSession } public void onHandleAssist(Bundle assistBundle) { + boolean hasStructure = false; if (assistBundle != null) { Bundle assistContext = assistBundle.getBundle(Intent.EXTRA_ASSIST_CONTEXT); if (assistContext != null) { @@ -126,6 +131,7 @@ public class MainInteractionSession extends VoiceInteractionSession if (mAssistStructure != null) { if (mAssistVisualizer != null) { mAssistVisualizer.setAssistStructure(mAssistStructure); + hasStructure = true; } } AssistContent content = AssistContent.getAssistContent(assistContext); @@ -133,10 +139,13 @@ public class MainInteractionSession extends VoiceInteractionSession Log.i(TAG, "Assist intent: " + content.getIntent()); Log.i(TAG, "Assist clipdata: " + content.getClipData()); } - return; + } + Uri referrer = assistBundle.getParcelable(Intent.EXTRA_REFERRER); + if (referrer != null) { + Log.i(TAG, "Referrer: " + referrer); } } - if (mAssistVisualizer != null) { + if (!hasStructure && mAssistVisualizer != null) { mAssistVisualizer.clearAssistData(); } } diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java index 67db289..c038414 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java @@ -23,15 +23,18 @@ import android.content.Intent; import android.os.Bundle; import android.service.voice.VoiceInteractionService; import android.util.Log; -import android.view.Gravity; import android.view.View; -import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class TestInteractionActivity extends Activity implements View.OnClickListener { static final String TAG = "TestInteractionActivity"; + static final String REQUEST_ABORT = "abort"; + static final String REQUEST_COMPLETE = "complete"; + static final String REQUEST_PICK = "pick"; + static final String REQUEST_CONFIRM = "confirm"; + VoiceInteractor mInteractor; VoiceInteractor.Request mCurrentRequest = null; TextView mLog; @@ -72,21 +75,32 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis mCancelButton.setOnClickListener(this); mInteractor = getVoiceInteractor(); - mCurrentRequest = new VoiceInteractor.ConfirmationRequest( - new VoiceInteractor.Prompt("This is a confirmation"), null) { - @Override - public void onCancel() { - Log.i(TAG, "Canceled!"); - getActivity().finish(); - } - - @Override - public void onConfirmationResult(boolean confirmed, Bundle result) { - Log.i(TAG, "Confirmation result: confirmed=" + confirmed + " result=" + result); - getActivity().finish(); - } - }; - mInteractor.submitRequest(mCurrentRequest); + + VoiceInteractor.Request[] active = mInteractor.getActiveRequests(); + for (int i=0; i<active.length; i++) { + Log.i(TAG, "Active #" + i + " / " + active[i].getName() + ": " + active[i]); + } + + mCurrentRequest = mInteractor.getActiveRequest(REQUEST_CONFIRM); + if (mCurrentRequest == null) { + mCurrentRequest = new VoiceInteractor.ConfirmationRequest( + new VoiceInteractor.Prompt("This is a confirmation"), null) { + @Override + public void onCancel() { + Log.i(TAG, "Canceled!"); + getActivity().finish(); + } + + @Override + public void onConfirmationResult(boolean confirmed, Bundle result) { + Log.i(TAG, "Confirmation result: confirmed=" + confirmed + " result=" + result); + getActivity().finish(); + } + }; + mInteractor.submitRequest(mCurrentRequest, REQUEST_CONFIRM); + } else { + Log.i(TAG, "Restarting with active confirmation: " + mCurrentRequest); + } } @Override @@ -112,7 +126,7 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis getActivity().finish(); } }; - mInteractor.submitRequest(req); + mInteractor.submitRequest(req, REQUEST_ABORT); } else if (v == mCompleteButton) { VoiceInteractor.CompleteVoiceRequest req = new VoiceInteractor.CompleteVoiceRequest( new VoiceInteractor.Prompt("Woohoo, completed!"), null) { @@ -129,7 +143,7 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis getActivity().finish(); } }; - mInteractor.submitRequest(req); + mInteractor.submitRequest(req, REQUEST_COMPLETE); } else if (v == mPickButton) { VoiceInteractor.PickOptionRequest.Option[] options = new VoiceInteractor.PickOptionRequest.Option[5]; @@ -168,7 +182,7 @@ public class TestInteractionActivity extends Activity implements View.OnClickLis } } }; - mInteractor.submitRequest(req); + mInteractor.submitRequest(req, REQUEST_PICK); } else if (v == mJumpOutButton) { Log.i(TAG, "Jump out"); Intent intent = new Intent(Intent.ACTION_MAIN); diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/VoiceInteractionMain.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/VoiceInteractionMain.java index 5d212a4..a7636c3 100644 --- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/VoiceInteractionMain.java +++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/VoiceInteractionMain.java @@ -18,6 +18,7 @@ package com.android.test.voiceinteraction; import android.app.Activity; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.view.View; @@ -41,6 +42,11 @@ public class VoiceInteractionMain extends Activity { super.onDestroy(); } + @Override + public Uri onProvideReferrer() { + return Uri.parse("http://www.example.com/VoiceInteractionMain"); + } + View.OnClickListener mStartListener = new View.OnClickListener() { public void onClick(View v) { startService(new Intent(VoiceInteractionMain.this, MainInteractionService.class)); |