am 4f57deb9: am 0d69c19d: am 9ed0c410: Merge "Update VoiceInteractionService from API review." into mnc-dev
* commit '4f57deb99025c6d625ffb17eba92190670a26f67': Update VoiceInteractionService from API review.
This commit is contained in:
@@ -28892,11 +28892,9 @@ package android.service.voice {
|
||||
method public void showSession(android.os.Bundle, int);
|
||||
field public static final java.lang.String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
|
||||
field public static final java.lang.String SERVICE_META_DATA = "android.voice_interaction";
|
||||
field public static final int START_SOURCE_ASSIST_GESTURE = 4; // 0x4
|
||||
field public static final int START_WITH_ASSIST = 1; // 0x1
|
||||
}
|
||||
|
||||
public abstract class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
|
||||
public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
|
||||
ctor public VoiceInteractionSession(android.content.Context);
|
||||
ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
|
||||
method public void finish();
|
||||
@@ -28904,20 +28902,15 @@ package android.service.voice {
|
||||
method public android.view.LayoutInflater getLayoutInflater();
|
||||
method public android.app.Dialog getWindow();
|
||||
method public void hide();
|
||||
method public void hideWindow();
|
||||
method public void onAbortVoice(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onBackPressed();
|
||||
method public abstract void onCancel(android.service.voice.VoiceInteractionSession.Request);
|
||||
method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
|
||||
method public void onCloseSystemDialogs();
|
||||
method public abstract void onCommand(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.String, android.os.Bundle);
|
||||
method public void onCompleteVoice(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onComputeInsets(android.service.voice.VoiceInteractionSession.Insets);
|
||||
method public void onConfigurationChanged(android.content.res.Configuration);
|
||||
method public abstract void onConfirm(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onCreate(android.os.Bundle, int);
|
||||
method public void onCreate();
|
||||
method public android.view.View onCreateContentView();
|
||||
method public void onDestroy();
|
||||
method public boolean[] onGetSupportedCommands(android.service.voice.VoiceInteractionSession.Caller, java.lang.String[]);
|
||||
method public boolean[] onGetSupportedCommands(java.lang.String[]);
|
||||
method public void onHandleAssist(android.os.Bundle, android.app.AssistStructure, android.app.AssistContent);
|
||||
method public void onHide();
|
||||
method public boolean onKeyDown(int, android.view.KeyEvent);
|
||||
@@ -28925,7 +28918,11 @@ package android.service.voice {
|
||||
method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
|
||||
method public boolean onKeyUp(int, android.view.KeyEvent);
|
||||
method public void onLowMemory();
|
||||
method public abstract void onPickOption(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void onRequestAbortVoice(android.service.voice.VoiceInteractionSession.AbortVoiceRequest);
|
||||
method public void onRequestCommand(android.service.voice.VoiceInteractionSession.CommandRequest);
|
||||
method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest);
|
||||
method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest);
|
||||
method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest);
|
||||
method public void onShow(android.os.Bundle, int);
|
||||
method public void onTaskFinished(android.content.Intent, int);
|
||||
method public void onTaskStarted(android.content.Intent, int);
|
||||
@@ -28933,12 +28930,31 @@ package android.service.voice {
|
||||
method public void setContentView(android.view.View);
|
||||
method public void setKeepAwake(boolean);
|
||||
method public void setTheme(int);
|
||||
method public void show();
|
||||
method public void showWindow();
|
||||
method public void show(android.os.Bundle, int);
|
||||
method public void startVoiceActivity(android.content.Intent);
|
||||
field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
|
||||
field public static final int SHOW_WITH_ASSIST = 1; // 0x1
|
||||
}
|
||||
|
||||
public static class VoiceInteractionSession.Caller {
|
||||
public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getMessage();
|
||||
method public void sendAbortResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.String getCommand();
|
||||
method public void sendIntermediateResult(android.os.Bundle);
|
||||
method public void sendResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getMessage();
|
||||
method public void sendCompleteResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getPrompt();
|
||||
method public void sendConfirmationResult(boolean, android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.Insets {
|
||||
@@ -28951,13 +28967,18 @@ package android.service.voice {
|
||||
field public final android.graphics.Region touchableRegion;
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
|
||||
method public java.lang.CharSequence getPrompt();
|
||||
method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
}
|
||||
|
||||
public static class VoiceInteractionSession.Request {
|
||||
method public void sendAbortVoiceResult(android.os.Bundle);
|
||||
method public void sendCancelResult();
|
||||
method public void sendCommandResult(boolean, android.os.Bundle);
|
||||
method public void sendCompleteVoiceResult(android.os.Bundle);
|
||||
method public void sendConfirmResult(boolean, android.os.Bundle);
|
||||
method public void sendPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void cancel();
|
||||
method public java.lang.String getCallingPackage();
|
||||
method public int getCallingUid();
|
||||
method public android.os.Bundle getExtras();
|
||||
}
|
||||
|
||||
public abstract class VoiceInteractionSessionService extends android.app.Service {
|
||||
|
||||
@@ -31018,11 +31018,9 @@ package android.service.voice {
|
||||
method public void showSession(android.os.Bundle, int);
|
||||
field public static final java.lang.String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
|
||||
field public static final java.lang.String SERVICE_META_DATA = "android.voice_interaction";
|
||||
field public static final int START_SOURCE_ASSIST_GESTURE = 4; // 0x4
|
||||
field public static final int START_WITH_ASSIST = 1; // 0x1
|
||||
}
|
||||
|
||||
public abstract class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
|
||||
public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
|
||||
ctor public VoiceInteractionSession(android.content.Context);
|
||||
ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
|
||||
method public void finish();
|
||||
@@ -31030,20 +31028,15 @@ package android.service.voice {
|
||||
method public android.view.LayoutInflater getLayoutInflater();
|
||||
method public android.app.Dialog getWindow();
|
||||
method public void hide();
|
||||
method public void hideWindow();
|
||||
method public void onAbortVoice(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onBackPressed();
|
||||
method public abstract void onCancel(android.service.voice.VoiceInteractionSession.Request);
|
||||
method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
|
||||
method public void onCloseSystemDialogs();
|
||||
method public abstract void onCommand(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.String, android.os.Bundle);
|
||||
method public void onCompleteVoice(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onComputeInsets(android.service.voice.VoiceInteractionSession.Insets);
|
||||
method public void onConfigurationChanged(android.content.res.Configuration);
|
||||
method public abstract void onConfirm(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.os.Bundle);
|
||||
method public void onCreate(android.os.Bundle, int);
|
||||
method public void onCreate();
|
||||
method public android.view.View onCreateContentView();
|
||||
method public void onDestroy();
|
||||
method public boolean[] onGetSupportedCommands(android.service.voice.VoiceInteractionSession.Caller, java.lang.String[]);
|
||||
method public boolean[] onGetSupportedCommands(java.lang.String[]);
|
||||
method public void onHandleAssist(android.os.Bundle, android.app.AssistStructure, android.app.AssistContent);
|
||||
method public void onHide();
|
||||
method public boolean onKeyDown(int, android.view.KeyEvent);
|
||||
@@ -31051,7 +31044,11 @@ package android.service.voice {
|
||||
method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
|
||||
method public boolean onKeyUp(int, android.view.KeyEvent);
|
||||
method public void onLowMemory();
|
||||
method public abstract void onPickOption(android.service.voice.VoiceInteractionSession.Caller, android.service.voice.VoiceInteractionSession.Request, java.lang.CharSequence, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void onRequestAbortVoice(android.service.voice.VoiceInteractionSession.AbortVoiceRequest);
|
||||
method public void onRequestCommand(android.service.voice.VoiceInteractionSession.CommandRequest);
|
||||
method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest);
|
||||
method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest);
|
||||
method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest);
|
||||
method public void onShow(android.os.Bundle, int);
|
||||
method public void onTaskFinished(android.content.Intent, int);
|
||||
method public void onTaskStarted(android.content.Intent, int);
|
||||
@@ -31059,12 +31056,31 @@ package android.service.voice {
|
||||
method public void setContentView(android.view.View);
|
||||
method public void setKeepAwake(boolean);
|
||||
method public void setTheme(int);
|
||||
method public void show();
|
||||
method public void showWindow();
|
||||
method public void show(android.os.Bundle, int);
|
||||
method public void startVoiceActivity(android.content.Intent);
|
||||
field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
|
||||
field public static final int SHOW_WITH_ASSIST = 1; // 0x1
|
||||
}
|
||||
|
||||
public static class VoiceInteractionSession.Caller {
|
||||
public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getMessage();
|
||||
method public void sendAbortResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.String getCommand();
|
||||
method public void sendIntermediateResult(android.os.Bundle);
|
||||
method public void sendResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getMessage();
|
||||
method public void sendCompleteResult(android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public java.lang.CharSequence getPrompt();
|
||||
method public void sendConfirmationResult(boolean, android.os.Bundle);
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.Insets {
|
||||
@@ -31077,13 +31093,18 @@ package android.service.voice {
|
||||
field public final android.graphics.Region touchableRegion;
|
||||
}
|
||||
|
||||
public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
|
||||
method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
|
||||
method public java.lang.CharSequence getPrompt();
|
||||
method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
}
|
||||
|
||||
public static class VoiceInteractionSession.Request {
|
||||
method public void sendAbortVoiceResult(android.os.Bundle);
|
||||
method public void sendCancelResult();
|
||||
method public void sendCommandResult(boolean, android.os.Bundle);
|
||||
method public void sendCompleteVoiceResult(android.os.Bundle);
|
||||
method public void sendConfirmResult(boolean, android.os.Bundle);
|
||||
method public void sendPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
|
||||
method public void cancel();
|
||||
method public java.lang.String getCallingPackage();
|
||||
method public int getCallingUid();
|
||||
method public android.os.Bundle getExtras();
|
||||
}
|
||||
|
||||
public abstract class VoiceInteractionSessionService extends android.app.Service {
|
||||
|
||||
@@ -510,7 +510,7 @@ public class VoiceInteractor {
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute an extended command using the trusted system VoiceInteractionService.
|
||||
* Execute a vendor-specific command using the trusted system VoiceInteractionService.
|
||||
* This allows an Activity to request additional information from the user needed to
|
||||
* complete an action (e.g. booking a table might have several possible times that the
|
||||
* user could select from or an app might need the user to agree to a terms of service).
|
||||
|
||||
@@ -70,25 +70,6 @@ public class VoiceInteractionService extends Service {
|
||||
*/
|
||||
public static final String SERVICE_META_DATA = "android.voice_interaction";
|
||||
|
||||
/**
|
||||
* Flag for use with {@link #showSession}: request that the session be started with
|
||||
* assist data from the currently focused activity.
|
||||
*/
|
||||
public static final int START_WITH_ASSIST = 1<<0;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Flag for use with {@link #showSession}: request that the session be started with
|
||||
* a screen shot of the currently focused activity.
|
||||
*/
|
||||
public static final int START_WITH_SCREENSHOT = 1<<1;
|
||||
|
||||
/**
|
||||
* Flag for use with {@link #showSession}: indicate that the session has been started from the
|
||||
* system assist gesture.
|
||||
*/
|
||||
public static final int START_SOURCE_ASSIST_GESTURE = 1<<2;
|
||||
|
||||
IVoiceInteractionService mInterface = new IVoiceInteractionService.Stub() {
|
||||
@Override public void ready() {
|
||||
mHandler.sendEmptyMessage(MSG_READY);
|
||||
@@ -176,6 +157,10 @@ public class VoiceInteractionService extends Service {
|
||||
* Request that the associated {@link android.service.voice.VoiceInteractionSession} be
|
||||
* shown to the user, starting it if necessary.
|
||||
* @param args Arbitrary arguments that will be propagated to the session.
|
||||
* @param flags Indicates additional optional behavior that should be performed. May
|
||||
* be {@link VoiceInteractionSession#SHOW_WITH_ASSIST VoiceInteractionSession.SHOW_WITH_ASSIST}
|
||||
* to request that the system generate and deliver assist data on the current foreground
|
||||
* app as part of showing the session UI.
|
||||
*/
|
||||
public void showSession(Bundle args, int flags) {
|
||||
if (mSystemService == null) {
|
||||
|
||||
@@ -68,11 +68,29 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
* when done. It can also initiate voice interactions with applications by calling
|
||||
* {@link #startVoiceActivity}</p>.
|
||||
*/
|
||||
public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
ComponentCallbacks2 {
|
||||
public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCallbacks2 {
|
||||
static final String TAG = "VoiceInteractionSession";
|
||||
static final boolean DEBUG = true;
|
||||
|
||||
/**
|
||||
* Flag received in {@link #onShow}: originator requested that the session be started with
|
||||
* assist data from the currently focused activity.
|
||||
*/
|
||||
public static final int SHOW_WITH_ASSIST = 1<<0;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Flag received in {@link #onShow}: originator requested that the session be started with
|
||||
* a screen shot of the currently focused activity.
|
||||
*/
|
||||
public static final int SHOW_WITH_SCREENSHOT = 1<<1;
|
||||
|
||||
/**
|
||||
* Flag for use with {@link #onShow}: indicates that the session has been started from the
|
||||
* system assist gesture.
|
||||
*/
|
||||
public static final int SHOW_SOURCE_ASSIST_GESTURE = 1<<2;
|
||||
|
||||
final Context mContext;
|
||||
final HandlerCaller mHandlerCaller;
|
||||
|
||||
@@ -105,10 +123,12 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
@Override
|
||||
public IVoiceInteractorRequest startConfirmation(String callingPackage,
|
||||
IVoiceInteractorCallback callback, CharSequence prompt, Bundle extras) {
|
||||
Request request = newRequest(callback);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageOOOO(MSG_START_CONFIRMATION,
|
||||
new Caller(callingPackage, Binder.getCallingUid()), request,
|
||||
prompt, extras));
|
||||
ConfirmationRequest request = new ConfirmationRequest(callingPackage,
|
||||
Binder.getCallingUid(), callback, VoiceInteractionSession.this,
|
||||
prompt, extras);
|
||||
addRequest(request);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_CONFIRMATION,
|
||||
request));
|
||||
return request.mInterface;
|
||||
}
|
||||
|
||||
@@ -116,47 +136,54 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
public IVoiceInteractorRequest startPickOption(String callingPackage,
|
||||
IVoiceInteractorCallback callback, CharSequence prompt,
|
||||
VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) {
|
||||
Request request = newRequest(callback);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageOOOOO(MSG_START_PICK_OPTION,
|
||||
new Caller(callingPackage, Binder.getCallingUid()), request,
|
||||
prompt, options, extras));
|
||||
PickOptionRequest request = new PickOptionRequest(callingPackage,
|
||||
Binder.getCallingUid(), callback, VoiceInteractionSession.this,
|
||||
prompt, options, extras);
|
||||
addRequest(request);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_PICK_OPTION,
|
||||
request));
|
||||
return request.mInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IVoiceInteractorRequest startCompleteVoice(String callingPackage,
|
||||
IVoiceInteractorCallback callback, CharSequence message, Bundle extras) {
|
||||
Request request = newRequest(callback);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageOOOO(MSG_START_COMPLETE_VOICE,
|
||||
new Caller(callingPackage, Binder.getCallingUid()), request,
|
||||
message, extras));
|
||||
CompleteVoiceRequest request = new CompleteVoiceRequest(callingPackage,
|
||||
Binder.getCallingUid(), callback, VoiceInteractionSession.this,
|
||||
message, extras);
|
||||
addRequest(request);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_COMPLETE_VOICE,
|
||||
request));
|
||||
return request.mInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IVoiceInteractorRequest startAbortVoice(String callingPackage,
|
||||
IVoiceInteractorCallback callback, CharSequence message, Bundle extras) {
|
||||
Request request = newRequest(callback);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageOOOO(MSG_START_ABORT_VOICE,
|
||||
new Caller(callingPackage, Binder.getCallingUid()), request,
|
||||
message, extras));
|
||||
AbortVoiceRequest request = new AbortVoiceRequest(callingPackage,
|
||||
Binder.getCallingUid(), callback, VoiceInteractionSession.this,
|
||||
message, extras);
|
||||
addRequest(request);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_ABORT_VOICE,
|
||||
request));
|
||||
return request.mInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IVoiceInteractorRequest startCommand(String callingPackage,
|
||||
IVoiceInteractorCallback callback, String command, Bundle extras) {
|
||||
Request request = newRequest(callback);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageOOOO(MSG_START_COMMAND,
|
||||
new Caller(callingPackage, Binder.getCallingUid()), request,
|
||||
command, extras));
|
||||
CommandRequest request = new CommandRequest(callingPackage,
|
||||
Binder.getCallingUid(), callback, VoiceInteractionSession.this,
|
||||
command, extras);
|
||||
mHandlerCaller.sendMessage(mHandlerCaller.obtainMessageO(MSG_START_COMMAND,
|
||||
request));
|
||||
return request.mInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean[] supportsCommands(String callingPackage, String[] commands) {
|
||||
Message msg = mHandlerCaller.obtainMessageIOO(MSG_SUPPORTS_COMMANDS,
|
||||
0, new Caller(callingPackage, Binder.getCallingUid()), commands);
|
||||
0, commands, null);
|
||||
SomeArgs args = mHandlerCaller.sendMessageAndWait(msg);
|
||||
if (args != null) {
|
||||
boolean[] res = (boolean[])args.arg1;
|
||||
@@ -222,7 +249,16 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
};
|
||||
|
||||
public static class Request {
|
||||
/** @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 {
|
||||
final IVoiceInteractorRequest mInterface = new IVoiceInteractorRequest.Stub() {
|
||||
@Override
|
||||
public void cancel() throws RemoteException {
|
||||
@@ -233,12 +269,40 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
};
|
||||
final String mCallingPackage;
|
||||
final int mCallingUid;
|
||||
final IVoiceInteractorCallback mCallback;
|
||||
final WeakReference<VoiceInteractionSession> mSession;
|
||||
final Bundle mExtras;
|
||||
|
||||
Request(IVoiceInteractorCallback callback, VoiceInteractionSession session) {
|
||||
Request(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, Bundle extras) {
|
||||
mCallingPackage = packageName;
|
||||
mCallingUid = uid;
|
||||
mCallback = callback;
|
||||
mSession = session.mWeakRef;
|
||||
mExtras = extras;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the uid of the application that initiated the request.
|
||||
*/
|
||||
public int getCallingUid() {
|
||||
return mCallingUid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the package name of the application that initiated the request.
|
||||
*/
|
||||
public String getCallingPackage() {
|
||||
return mCallingPackage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return any additional extra information that was supplied as part of the request.
|
||||
*/
|
||||
public Bundle getExtras() {
|
||||
return mExtras;
|
||||
}
|
||||
|
||||
void finishRequest() {
|
||||
@@ -255,6 +319,7 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendConfirmResult(boolean confirmed, Bundle result) {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "sendConfirmResult: req=" + mInterface
|
||||
@@ -265,6 +330,7 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendPickOptionResult(boolean finished,
|
||||
VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) {
|
||||
try {
|
||||
@@ -279,6 +345,7 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendCompleteVoiceResult(Bundle result) {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "sendCompleteVoiceResult: req=" + mInterface
|
||||
@@ -289,6 +356,7 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendAbortVoiceResult(Bundle result) {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "sendConfirmResult: req=" + mInterface
|
||||
@@ -299,6 +367,7 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendCommandResult(boolean finished, Bundle result) {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "sendCommandResult: req=" + mInterface
|
||||
@@ -311,7 +380,15 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void sendCancelResult() {
|
||||
cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* ASk the app to cancel this current request.
|
||||
*/
|
||||
public void cancel() {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "sendCancelResult: req=" + mInterface);
|
||||
finishRequest();
|
||||
@@ -321,13 +398,200 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
public static class Caller {
|
||||
final String packageName;
|
||||
final int uid;
|
||||
/**
|
||||
* A request for confirmation from the user of an operation, as per
|
||||
* {@link android.app.VoiceInteractor.ConfirmationRequest
|
||||
* VoiceInteractor.ConfirmationRequest}.
|
||||
*/
|
||||
public static final class ConfirmationRequest extends Request {
|
||||
final CharSequence mPrompt;
|
||||
|
||||
Caller(String _packageName, int _uid) {
|
||||
packageName = _packageName;
|
||||
uid = _uid;
|
||||
ConfirmationRequest(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, CharSequence prompt, Bundle extras) {
|
||||
super(packageName, uid, callback, session, extras);
|
||||
mPrompt = prompt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the prompt informing the user of what will happen, as per
|
||||
* {@link android.app.VoiceInteractor.ConfirmationRequest
|
||||
* VoiceInteractor.ConfirmationRequest}.
|
||||
*/
|
||||
public CharSequence getPrompt() {
|
||||
return mPrompt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report that the voice interactor has confirmed the operation with the user, resulting
|
||||
* in a call to
|
||||
* {@link android.app.VoiceInteractor.ConfirmationRequest#onConfirmationResult
|
||||
* VoiceInteractor.ConfirmationRequest.onConfirmationResult}.
|
||||
*/
|
||||
public void sendConfirmationResult(boolean confirmed, Bundle result) {
|
||||
sendConfirmResult(confirmed, result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A request for the user to pick from a set of option, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
*/
|
||||
public static final class PickOptionRequest extends Request {
|
||||
final CharSequence mPrompt;
|
||||
final VoiceInteractor.PickOptionRequest.Option[] mOptions;
|
||||
|
||||
PickOptionRequest(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, CharSequence prompt,
|
||||
VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) {
|
||||
super(packageName, uid, callback, session, extras);
|
||||
mPrompt = prompt;
|
||||
mOptions = options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the prompt informing the user of what they are picking, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
*/
|
||||
public CharSequence getPrompt() {
|
||||
return mPrompt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the set of options the user is picking from, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
*/
|
||||
public VoiceInteractor.PickOptionRequest.Option[] getOptions() {
|
||||
return mOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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),
|
||||
* resulting in a call to
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest#onPickOptionResult
|
||||
* VoiceInteractor.PickOptionRequest.onPickOptionResult} with false for finished.
|
||||
*/
|
||||
public void sendIntermediatePickOptionResult(
|
||||
VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) {
|
||||
sendPickOptionResult(false, selections, result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Report the final option selection for the request, completing the request
|
||||
* and resulting in a call to
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest#onPickOptionResult
|
||||
* VoiceInteractor.PickOptionRequest.onPickOptionResult} with false for finished.
|
||||
*/
|
||||
public void sendPickOptionResult(
|
||||
VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) {
|
||||
sendPickOptionResult(true, selections, result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A request to simply inform the user that the voice operation has completed, as per
|
||||
* {@link android.app.VoiceInteractor.CompleteVoiceRequest
|
||||
* VoiceInteractor.CompleteVoiceRequest}.
|
||||
*/
|
||||
public static final class CompleteVoiceRequest extends Request {
|
||||
final CharSequence mMessage;
|
||||
|
||||
CompleteVoiceRequest(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, CharSequence message, Bundle extras) {
|
||||
super(packageName, uid, callback, session, extras);
|
||||
mMessage = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the message informing the user of the completion, as per
|
||||
* {@link android.app.VoiceInteractor.CompleteVoiceRequest
|
||||
* VoiceInteractor.CompleteVoiceRequest}.
|
||||
*/
|
||||
public CharSequence getMessage() {
|
||||
return mMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report that the voice interactor has finished completing the voice operation, resulting
|
||||
* in a call to
|
||||
* {@link android.app.VoiceInteractor.CompleteVoiceRequest#onCompleteResult
|
||||
* VoiceInteractor.CompleteVoiceRequest.onCompleteResult}.
|
||||
*/
|
||||
public void sendCompleteResult(Bundle result) {
|
||||
sendCompleteVoiceResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A request to report that the current user interaction can not be completed with voice, as per
|
||||
* {@link android.app.VoiceInteractor.AbortVoiceRequest VoiceInteractor.AbortVoiceRequest}.
|
||||
*/
|
||||
public static final class AbortVoiceRequest extends Request {
|
||||
final CharSequence mMessage;
|
||||
|
||||
AbortVoiceRequest(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, CharSequence message, Bundle extras) {
|
||||
super(packageName, uid, callback, session, extras);
|
||||
mMessage = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the message informing the user of the problem, as per
|
||||
* {@link android.app.VoiceInteractor.AbortVoiceRequest VoiceInteractor.AbortVoiceRequest}.
|
||||
*/
|
||||
public CharSequence getMessage() {
|
||||
return mMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report that the voice interactor has finished aborting the voice operation, resulting
|
||||
* in a call to
|
||||
* {@link android.app.VoiceInteractor.AbortVoiceRequest#onAbortResult
|
||||
* VoiceInteractor.AbortVoiceRequest.onAbortResult}.
|
||||
*/
|
||||
public void sendAbortResult(Bundle result) {
|
||||
sendAbortVoiceResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A generic vendor-specific request, as per
|
||||
* {@link android.app.VoiceInteractor.CommandRequest VoiceInteractor.CommandRequest}.
|
||||
*/
|
||||
public static final class CommandRequest extends Request {
|
||||
final String mCommand;
|
||||
|
||||
CommandRequest(String packageName, int uid, IVoiceInteractorCallback callback,
|
||||
VoiceInteractionSession session, String command, Bundle extras) {
|
||||
super(packageName, uid, callback, session, extras);
|
||||
mCommand = command;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the command that is being executed, as per
|
||||
* {@link android.app.VoiceInteractor.CommandRequest VoiceInteractor.CommandRequest}.
|
||||
*/
|
||||
public String getCommand() {
|
||||
return mCommand;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* {@link android.app.VoiceInteractor.CommandRequest#onCommandResult
|
||||
* VoiceInteractor.CommandRequest.onCommandResult} with false for isCompleted.
|
||||
*/
|
||||
public void sendIntermediateResult(Bundle result) {
|
||||
sendCommandResult(false, result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Report the final result of the request, completing the request and resulting in a call to
|
||||
* {@link android.app.VoiceInteractor.CommandRequest#onCommandResult
|
||||
* VoiceInteractor.CommandRequest.onCommandResult} with true for isCompleted.
|
||||
*/
|
||||
public void sendResult(Bundle result) {
|
||||
sendCommandResult(true, result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,50 +618,33 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
SomeArgs args;
|
||||
switch (msg.what) {
|
||||
case MSG_START_CONFIRMATION:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onConfirm: req=" + ((Request) args.arg2).mInterface
|
||||
+ " prompt=" + args.arg3 + " extras=" + args.arg4);
|
||||
onConfirm((Caller)args.arg1, (Request)args.arg2, (CharSequence)args.arg3,
|
||||
(Bundle)args.arg4);
|
||||
if (DEBUG) Log.d(TAG, "onConfirm: req=" + msg.obj);
|
||||
onRequestConfirmation((ConfirmationRequest) msg.obj);
|
||||
break;
|
||||
case MSG_START_PICK_OPTION:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onPickOption: req=" + ((Request) args.arg2).mInterface
|
||||
+ " prompt=" + args.arg3 + " options=" + args.arg4
|
||||
+ " extras=" + args.arg5);
|
||||
onPickOption((Caller)args.arg1, (Request)args.arg2, (CharSequence)args.arg3,
|
||||
(VoiceInteractor.PickOptionRequest.Option[])args.arg4,
|
||||
(Bundle)args.arg5);
|
||||
if (DEBUG) Log.d(TAG, "onPickOption: req=" + msg.obj);
|
||||
onRequestPickOption((PickOptionRequest) msg.obj);
|
||||
break;
|
||||
case MSG_START_COMPLETE_VOICE:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onCompleteVoice: req=" + ((Request) args.arg2).mInterface
|
||||
+ " message=" + args.arg3 + " extras=" + args.arg4);
|
||||
onCompleteVoice((Caller) args.arg1, (Request) args.arg2,
|
||||
(CharSequence) args.arg3, (Bundle) args.arg4);
|
||||
if (DEBUG) Log.d(TAG, "onCompleteVoice: req=" + msg.obj);
|
||||
onRequestCompleteVoice((CompleteVoiceRequest) msg.obj);
|
||||
break;
|
||||
case MSG_START_ABORT_VOICE:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onAbortVoice: req=" + ((Request) args.arg2).mInterface
|
||||
+ " message=" + args.arg3 + " extras=" + args.arg4);
|
||||
onAbortVoice((Caller) args.arg1, (Request) args.arg2, (CharSequence) args.arg3,
|
||||
(Bundle) args.arg4);
|
||||
if (DEBUG) Log.d(TAG, "onAbortVoice: req=" + msg.obj);
|
||||
onRequestAbortVoice((AbortVoiceRequest) msg.obj);
|
||||
break;
|
||||
case MSG_START_COMMAND:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onCommand: req=" + ((Request) args.arg2).mInterface
|
||||
+ " command=" + args.arg3 + " extras=" + args.arg4);
|
||||
onCommand((Caller) args.arg1, (Request) args.arg2, (String) args.arg3,
|
||||
(Bundle) args.arg4);
|
||||
if (DEBUG) Log.d(TAG, "onCommand: req=" + msg.obj);
|
||||
onRequestCommand((CommandRequest) msg.obj);
|
||||
break;
|
||||
case MSG_SUPPORTS_COMMANDS:
|
||||
args = (SomeArgs)msg.obj;
|
||||
if (DEBUG) Log.d(TAG, "onGetSupportedCommands: cmds=" + args.arg2);
|
||||
args.arg1 = onGetSupportedCommands((Caller) args.arg1, (String[]) args.arg2);
|
||||
if (DEBUG) Log.d(TAG, "onGetSupportedCommands: cmds=" + args.arg1);
|
||||
args.arg1 = onGetSupportedCommands((String[]) args.arg1);
|
||||
break;
|
||||
case MSG_CANCEL:
|
||||
if (DEBUG) Log.d(TAG, "onCancel: req=" + ((Request)msg.obj));
|
||||
onCancel((Request)msg.obj);
|
||||
onCancelRequest((Request) msg.obj);
|
||||
break;
|
||||
case MSG_TASK_STARTED:
|
||||
if (DEBUG) Log.d(TAG, "onTaskStarted: intent=" + msg.obj
|
||||
@@ -526,12 +773,8 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
return mContext;
|
||||
}
|
||||
|
||||
Request newRequest(IVoiceInteractorCallback callback) {
|
||||
synchronized (this) {
|
||||
Request req = new Request(callback, this);
|
||||
mActiveRequests.put(req.mInterface.asBinder(), req);
|
||||
return req;
|
||||
}
|
||||
void addRequest(Request req) {
|
||||
mActiveRequests.put(req.mInterface.asBinder(), req);
|
||||
}
|
||||
|
||||
Request removeRequest(IBinder reqInterface) {
|
||||
@@ -630,7 +873,12 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
mContentFrame = (FrameLayout)mRootView.findViewById(android.R.id.content);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void show() {
|
||||
show(null, 0);
|
||||
}
|
||||
|
||||
public void show(Bundle args, int showFlags) {
|
||||
try {
|
||||
mSystemService.showSessionFromSession(mToken, null, 0);
|
||||
} catch (RemoteException e) {
|
||||
@@ -644,11 +892,11 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/** TODO: remove */
|
||||
/** @hide */
|
||||
public void showWindow() {
|
||||
}
|
||||
|
||||
/** TODO: remove */
|
||||
/** @hide */
|
||||
public void hideWindow() {
|
||||
}
|
||||
|
||||
@@ -677,7 +925,9 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
* <p>As the voice activity runs, it can retrieve a {@link android.app.VoiceInteractor}
|
||||
* through which it can perform voice interactions through your session. These requests
|
||||
* for voice interactions will appear as callbacks on {@link #onGetSupportedCommands},
|
||||
* {@link #onConfirm}, {@link #onCommand}, and {@link #onCancel}.
|
||||
* {@link #onRequestConfirmation}, {@link #onRequestPickOption},
|
||||
* {@link #onRequestCompleteVoice}, {@link #onRequestAbortVoice},
|
||||
* or {@link #onRequestCommand}
|
||||
*
|
||||
* <p>You will receive a call to {@link #onTaskStarted} when the task starts up
|
||||
* and {@link #onTaskFinished} when the last activity has finished.
|
||||
@@ -748,8 +998,25 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiatize a new session. At this point you don't know exactly what this
|
||||
* session will be used for; you will find that out in {@link #onShow}.
|
||||
*/
|
||||
public void onCreate() {
|
||||
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;
|
||||
mInflater = (LayoutInflater)mContext.getSystemService(
|
||||
@@ -765,15 +1032,6 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
mWindow.setToken(mToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiatize a new session. The given args and showFlags are the initial values
|
||||
* passed to {@link VoiceInteractionService#showSession VoiceInteractionService.showSession},
|
||||
* if possible. Normally you should handle these in {@link #onShow}.
|
||||
*/
|
||||
public void onCreate(Bundle args, int showFlags) {
|
||||
onCreate(args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the session UI is going to be shown. This is called after
|
||||
* {@link #onCreateContentView} (if the session's content UI needed to be created) and
|
||||
@@ -928,18 +1186,45 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
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.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param commands An array of commands that are being queried.
|
||||
* @return Return an array of booleans indicating which of each entry in the
|
||||
* command array is supported. A true entry in the array indicates the command
|
||||
* is supported; false indicates it is not. The default implementation returns
|
||||
* an array of all false entries.
|
||||
*/
|
||||
public boolean[] onGetSupportedCommands(Caller caller, String[] commands) {
|
||||
return new boolean[commands.length];
|
||||
public boolean[] onGetSupportedCommands(String[] commands) {
|
||||
return onGetSupportedCommands(new Caller(), commands);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -947,31 +1232,22 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
* corresponding to a {@link android.app.VoiceInteractor.ConfirmationRequest
|
||||
* VoiceInteractor.ConfirmationRequest}.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param request The active request.
|
||||
* @param prompt The prompt informing the user of what will happen, as per
|
||||
* {@link android.app.VoiceInteractor.ConfirmationRequest VoiceInteractor.ConfirmationRequest}.
|
||||
* @param extras Any additional information, as per
|
||||
* {@link android.app.VoiceInteractor.ConfirmationRequest VoiceInteractor.ConfirmationRequest}.
|
||||
*/
|
||||
public abstract void onConfirm(Caller caller, Request request, CharSequence prompt,
|
||||
Bundle extras);
|
||||
public void onRequestConfirmation(ConfirmationRequest request) {
|
||||
onConfirm(request, request, request.getPrompt(), request.getExtras());
|
||||
}
|
||||
|
||||
/**
|
||||
* Request for the user to pick one of N options, corresponding to a
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param request The active request.
|
||||
* @param prompt The prompt informing the user of what they are picking, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
* @param options The set of options the user is picking from, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
* @param extras Any additional information, as per
|
||||
* {@link android.app.VoiceInteractor.PickOptionRequest VoiceInteractor.PickOptionRequest}.
|
||||
*/
|
||||
public abstract void onPickOption(Caller caller, Request request, CharSequence prompt,
|
||||
VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras);
|
||||
public void onRequestPickOption(PickOptionRequest request) {
|
||||
onPickOption(request, request, request.getPrompt(), request.getOptions(),
|
||||
request.getExtras());
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to complete the voice interaction session because the voice activity successfully
|
||||
@@ -980,18 +1256,10 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
* VoiceInteractor.CompleteVoiceRequest}. The default implementation just sends an empty
|
||||
* confirmation back to allow the activity to exit.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param request The active request.
|
||||
* @param message The message informing the user of the problem, as per
|
||||
* {@link android.app.VoiceInteractor.CompleteVoiceRequest
|
||||
* VoiceInteractor.CompleteVoiceRequest}.
|
||||
* @param extras Any additional information, as per
|
||||
* {@link android.app.VoiceInteractor.CompleteVoiceRequest
|
||||
* VoiceInteractor.CompleteVoiceRequest}.
|
||||
*/
|
||||
public void onCompleteVoice(Caller caller, Request request, CharSequence message,
|
||||
Bundle extras) {
|
||||
request.sendCompleteVoiceResult(null);
|
||||
public void onRequestCompleteVoice(CompleteVoiceRequest request) {
|
||||
onCompleteVoice(request, request, request.getMessage(), request.getExtras());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1001,15 +1269,10 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
* VoiceInteractor.AbortVoiceRequest}. The default implementation just sends an empty
|
||||
* confirmation back to allow the activity to exit.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param request The active request.
|
||||
* @param message The message informing the user of the problem, as per
|
||||
* {@link android.app.VoiceInteractor.AbortVoiceRequest VoiceInteractor.AbortVoiceRequest}.
|
||||
* @param extras Any additional information, as per
|
||||
* {@link android.app.VoiceInteractor.AbortVoiceRequest VoiceInteractor.AbortVoiceRequest}.
|
||||
*/
|
||||
public void onAbortVoice(Caller caller, Request request, CharSequence message, Bundle extras) {
|
||||
request.sendAbortVoiceResult(null);
|
||||
public void onRequestAbortVoice(AbortVoiceRequest request) {
|
||||
onAbortVoice(request, request, request.getMessage(), request.getExtras());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1017,20 +1280,21 @@ public abstract class VoiceInteractionSession implements KeyEvent.Callback,
|
||||
* corresponding to a {@link android.app.VoiceInteractor.CommandRequest
|
||||
* VoiceInteractor.CommandRequest}.
|
||||
*
|
||||
* @param caller Who is making the request.
|
||||
* @param request The active request.
|
||||
* @param command The command that is being executed, as per
|
||||
* {@link android.app.VoiceInteractor.CommandRequest VoiceInteractor.CommandRequest}.
|
||||
* @param extras Any additional information, as per
|
||||
* {@link android.app.VoiceInteractor.CommandRequest VoiceInteractor.CommandRequest}.
|
||||
*/
|
||||
public abstract void onCommand(Caller caller, Request request, String command, Bundle extras);
|
||||
public void onRequestCommand(CommandRequest request) {
|
||||
onCommand(request, request, request.getCommand(), request.getExtras());
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the {@link android.app.VoiceInteractor} has asked to cancel a {@link Request}
|
||||
* that was previously delivered to {@link #onConfirm} or {@link #onCommand}.
|
||||
* that was previously delivered to {@link #onRequestConfirmation},
|
||||
* {@link #onRequestPickOption}, {@link #onRequestCompleteVoice}, {@link #onRequestAbortVoice},
|
||||
* or {@link #onRequestCommand}.
|
||||
*
|
||||
* @param request The request that is being canceled.
|
||||
*/
|
||||
public abstract void onCancel(Request request);
|
||||
public void onCancelRequest(Request request) {
|
||||
onCancel(request);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ import android.service.voice.IVoiceInteractionService;
|
||||
import android.service.voice.IVoiceInteractionSession;
|
||||
import android.service.voice.VoiceInteractionService;
|
||||
import android.service.voice.VoiceInteractionServiceInfo;
|
||||
import android.service.voice.VoiceInteractionSession;
|
||||
import android.speech.RecognitionService;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Slog;
|
||||
@@ -732,9 +733,9 @@ public class VoiceInteractionManagerService extends SystemService {
|
||||
final long caller = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mImpl.showSessionLocked(new Bundle() /* sessionArgs */,
|
||||
VoiceInteractionService.START_SOURCE_ASSIST_GESTURE
|
||||
| VoiceInteractionService.START_WITH_ASSIST
|
||||
| VoiceInteractionService.START_WITH_SCREENSHOT,
|
||||
VoiceInteractionSession.SHOW_SOURCE_ASSIST_GESTURE
|
||||
| VoiceInteractionSession.SHOW_WITH_ASSIST
|
||||
| VoiceInteractionSession.SHOW_WITH_SCREENSHOT,
|
||||
showCallback);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(caller);
|
||||
|
||||
@@ -40,6 +40,7 @@ import android.provider.Settings;
|
||||
import android.service.voice.IVoiceInteractionSession;
|
||||
import android.service.voice.IVoiceInteractionSessionService;
|
||||
import android.service.voice.VoiceInteractionService;
|
||||
import android.service.voice.VoiceInteractionSession;
|
||||
import android.util.Slog;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.WindowManager;
|
||||
@@ -180,7 +181,7 @@ final class VoiceInteractionSessionConnection implements ServiceConnection {
|
||||
public boolean showLocked(Bundle args, int flags,
|
||||
IVoiceInteractionSessionShowCallback showCallback) {
|
||||
// For now we never allow screenshots.
|
||||
flags &= ~VoiceInteractionService.START_WITH_SCREENSHOT;
|
||||
flags &= ~VoiceInteractionSession.SHOW_WITH_SCREENSHOT;
|
||||
if (mBound) {
|
||||
if (!mFullyBound) {
|
||||
mFullyBound = mContext.bindServiceAsUser(mBindIntent, mFullConnection,
|
||||
@@ -192,7 +193,7 @@ final class VoiceInteractionSessionConnection implements ServiceConnection {
|
||||
mShowArgs = args;
|
||||
mShowFlags = flags;
|
||||
mHaveAssistData = false;
|
||||
if ((flags&VoiceInteractionService.START_WITH_ASSIST) != 0) {
|
||||
if ((flags& VoiceInteractionSession.SHOW_WITH_ASSIST) != 0) {
|
||||
if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ASSIST_STRUCTURE, mCallingUid,
|
||||
mSessionComponentName.getPackageName()) == AppOpsManager.MODE_ALLOWED
|
||||
&& isStructureEnabled()) {
|
||||
@@ -209,7 +210,7 @@ final class VoiceInteractionSessionConnection implements ServiceConnection {
|
||||
mAssistData = null;
|
||||
}
|
||||
mHaveScreenshot = false;
|
||||
if ((flags&VoiceInteractionService.START_WITH_SCREENSHOT) != 0) {
|
||||
if ((flags& VoiceInteractionSession.SHOW_WITH_SCREENSHOT) != 0) {
|
||||
if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ASSIST_SCREENSHOT, mCallingUid,
|
||||
mSessionComponentName.getPackageName()) == AppOpsManager.MODE_ALLOWED) {
|
||||
try {
|
||||
|
||||
@@ -17,16 +17,13 @@
|
||||
package com.android.test.assist;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.RevealAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.app.VoiceInteractor;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.service.voice.VoiceInteractionService;
|
||||
import android.service.voice.VoiceInteractionSession;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewTreeObserver;
|
||||
@@ -105,7 +102,7 @@ public class AssistInteractionSession extends VoiceInteractionSession {
|
||||
@Override
|
||||
public void onShow(Bundle args, int showFlags) {
|
||||
super.onShow(args, showFlags);
|
||||
if ((showFlags & VoiceInteractionService.START_SOURCE_ASSIST_GESTURE) != 0) {
|
||||
if ((showFlags & SHOW_SOURCE_ASSIST_GESTURE) != 0) {
|
||||
mBackground.getViewTreeObserver().addOnPreDrawListener(
|
||||
new ViewTreeObserver.OnPreDrawListener() {
|
||||
@Override
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.service.voice.AlwaysOnHotwordDetector;
|
||||
import android.service.voice.AlwaysOnHotwordDetector.Callback;
|
||||
import android.service.voice.AlwaysOnHotwordDetector.EventPayload;
|
||||
import android.service.voice.VoiceInteractionService;
|
||||
import android.service.voice.VoiceInteractionSession;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -79,7 +80,7 @@ public class MainInteractionService extends VoiceInteractionService {
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelable("intent", new Intent(this, TestInteractionActivity.class));
|
||||
args.putBundle("assist", intent.getExtras());
|
||||
startSession(args, START_WITH_ASSIST|START_WITH_SCREENSHOT);
|
||||
startSession(args, VoiceInteractionSession.SHOW_WITH_ASSIST | VoiceInteractionSession.SHOW_WITH_SCREENSHOT);
|
||||
} else {
|
||||
Log.w(TAG, "Not starting -- not current voice interaction service");
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class MainInteractionSession extends VoiceInteractionSession
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle args, int startFlags) {
|
||||
super.onCreate(args);
|
||||
super.onCreate(args, startFlags);
|
||||
ActivityManager am = getContext().getSystemService(ActivityManager.class);
|
||||
am.setWatchHeapLimit(40*1024*1024);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user