Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -28812,6 +28812,7 @@ package android.service.voice { ctor public VoiceInteractionSession(android.content.Context); ctor public VoiceInteractionSession(android.content.Context, android.os.Handler); method public void closeSystemDialogs(); method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public void finish(); method public android.content.Context getContext(); method public int getDisabledShowContext(); api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -30964,6 +30964,7 @@ package android.service.voice { ctor public VoiceInteractionSession(android.content.Context); ctor public VoiceInteractionSession(android.content.Context, android.os.Handler); method public void closeSystemDialogs(); method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public void finish(); method public android.content.Context getContext(); method public int getDisabledShowContext(); core/java/android/app/Activity.java +7 −1 Original line number Diff line number Diff line Loading @@ -1864,7 +1864,10 @@ public class Activity extends ContextThemeWrapper nci.children = children; nci.fragments = fragments; nci.loaders = loaders; if (mVoiceInteractor != null) { mVoiceInteractor.retainInstance(); nci.voiceInteractor = mVoiceInteractor; } return nci; } Loading Loading @@ -5547,6 +5550,9 @@ public class Activity extends ContextThemeWrapper mFragments.dumpLoaders(innerPrefix, fd, writer, args); mFragments.getFragmentManager().dump(innerPrefix, fd, writer, args); if (mVoiceInteractor != null) { mVoiceInteractor.dump(innerPrefix, fd, writer, args); } if (getWindow() != null && getWindow().peekDecorView() != null && Loading core/java/android/app/VoiceInteractor.java +165 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.Log; import com.android.internal.app.IVoiceInteractor; import com.android.internal.app.IVoiceInteractorCallback; Loading @@ -34,6 +35,8 @@ import com.android.internal.app.IVoiceInteractorRequest; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; /** Loading Loading @@ -68,6 +71,7 @@ public final class VoiceInteractor { Context mContext; Activity mActivity; boolean mRetaining; final HandlerCaller mHandlerCaller; final HandlerCaller.Callback mHandlerCallerCallback = new HandlerCaller.Callback() { Loading Loading @@ -272,6 +276,29 @@ public final class VoiceInteractor { public void onDetached() { } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); sb.append(" "); sb.append(getRequestTypeName()); sb.append(" name="); sb.append(mName); sb.append('}'); return sb.toString(); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mRequestInterface="); writer.println(mRequestInterface.asBinder()); writer.print(prefix); writer.print("mActivity="); writer.println(mActivity); writer.print(prefix); writer.print("mName="); writer.println(mName); } String getRequestTypeName() { return "Request"; } void clear() { mRequestInterface = null; mContext = null; Loading Loading @@ -333,6 +360,18 @@ public final class VoiceInteractor { public void onConfirmationResult(boolean confirmed, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "Confirmation"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startConfirmation(packageName, callback, mPrompt, mExtras); Loading Loading @@ -515,6 +554,38 @@ public final class VoiceInteractor { public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mOptions != null) { writer.print(prefix); writer.println("Options:"); for (int i=0; i<mOptions.length; i++) { Option op = mOptions[i]; writer.print(prefix); writer.print(" #"); writer.print(i); writer.println(":"); writer.print(prefix); writer.print(" mLabel="); writer.println(op.mLabel); writer.print(prefix); writer.print(" mIndex="); writer.println(op.mIndex); if (op.mSynonyms != null && op.mSynonyms.size() > 0) { writer.print(prefix); writer.println(" Synonyms:"); for (int j=0; j<op.mSynonyms.size(); j++) { writer.print(prefix); writer.print(" #"); writer.print(j); writer.print(": "); writer.println(op.mSynonyms.get(j)); } } if (op.mExtras != null) { writer.print(prefix); writer.print(" mExtras="); writer.println(op.mExtras); } } } if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "PickOption"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startPickOption(packageName, callback, mPrompt, mOptions, mExtras); Loading Loading @@ -560,6 +631,18 @@ public final class VoiceInteractor { public void onCompleteResult(Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "CompleteVoice"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startCompleteVoice(packageName, callback, mPrompt, mExtras); Loading Loading @@ -607,6 +690,18 @@ public final class VoiceInteractor { public void onAbortResult(Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "AbortVoice"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startAbortVoice(packageName, callback, mPrompt, mExtras); Loading Loading @@ -650,6 +745,18 @@ public final class VoiceInteractor { public void onCommandResult(boolean isCompleted, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mCommand="); writer.println(mCommand); if (mArgs != null) { writer.print(prefix); writer.print("mArgs="); writer.println(mArgs); } } String getRequestTypeName() { return "Command"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startCommand(packageName, callback, mCommand, mArgs); Loading Loading @@ -721,6 +828,30 @@ public final class VoiceInteractor { return mVisualPrompt; } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); if (mVisualPrompt != null && mVoicePrompts != null && mVoicePrompts.length == 1 && mVisualPrompt.equals(mVoicePrompts[0])) { sb.append(" "); sb.append(mVisualPrompt); } else { if (mVisualPrompt != null) { sb.append(" visual="); sb.append(mVisualPrompt); } if (mVoicePrompts != null) { sb.append(", voice="); for (int i=0; i<mVoicePrompts.length; i++) { if (i > 0) sb.append(" | "); sb.append(mVoicePrompts[i]); } } } sb.append('}'); return sb.toString(); } /** Constructor to support Parcelable behavior. */ Prompt(Parcel in) { mVoicePrompts = in.readCharSequenceArray(); Loading Loading @@ -773,7 +904,7 @@ public final class VoiceInteractor { if (N < 1) { return null; } ArrayList<Request> list = new ArrayList<Request>(N); ArrayList<Request> list = new ArrayList<>(N); for (int i=0; i<N; i++) { list.add(mActiveRequests.valueAt(i)); } Loading @@ -781,6 +912,7 @@ public final class VoiceInteractor { } void attachActivity(Activity activity) { mRetaining = false; if (mActivity == activity) { return; } Loading @@ -797,6 +929,10 @@ public final class VoiceInteractor { } } void retainInstance() { mRetaining = true; } void detachActivity() { ArrayList<Request> reqs = makeRequestList(); if (reqs != null) { Loading @@ -807,6 +943,16 @@ public final class VoiceInteractor { req.mContext = null; } } if (!mRetaining) { reqs = makeRequestList(); if (reqs != null) { for (int i=0; i<reqs.size(); i++) { Request req = reqs.get(i); req.cancel(); } } mActiveRequests.clear(); } mContext = null; mActivity = null; } Loading Loading @@ -902,4 +1048,22 @@ public final class VoiceInteractor { throw new RuntimeException("Voice interactor has died", e); } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { String innerPrefix = prefix + " "; if (mActiveRequests.size() > 0) { writer.print(prefix); writer.println("Active voice requests:"); for (int i=0; i<mActiveRequests.size(); i++) { Request req = mActiveRequests.valueAt(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(req); req.dump(innerPrefix, fd, writer, args); } } writer.print(prefix); writer.println("VoiceInteractor misc state:"); writer.print(prefix); writer.print(" mInteractor="); writer.println(mInteractor.asBinder()); writer.print(prefix); writer.print(" mActivity="); writer.println(mActivity); } } core/java/android/service/voice/VoiceInteractionSession.java +117 −0 Original line number Diff line number Diff line Loading @@ -37,7 +37,9 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; Loading @@ -55,6 +57,8 @@ import com.android.internal.app.IVoiceInteractorRequest; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.ref.WeakReference; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; Loading Loading @@ -369,6 +373,34 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); sb.append(" "); sb.append(mInterface.asBinder()); sb.append(" pkg="); sb.append(mCallingPackage); sb.append(" uid="); UserHandle.formatUid(sb, mCallingUid); sb.append('}'); return sb.toString(); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mInterface="); writer.println(mInterface.asBinder()); writer.print(prefix); writer.print("mCallingPackage="); writer.print(mCallingPackage); writer.print(" mCallingUid="); UserHandle.formatUid(writer, mCallingUid); writer.println(); writer.print(prefix); writer.print("mCallback="); writer.println(mCallback.asBinder()); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } } /** Loading Loading @@ -422,6 +454,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -504,6 +542,34 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) { sendPickOptionResult(true, selections, result); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mOptions != null) { writer.print(prefix); writer.println("Options:"); for (int i=0; i<mOptions.length; i++) { VoiceInteractor.PickOptionRequest.Option op = mOptions[i]; writer.print(prefix); writer.print(" #"); writer.print(i); writer.println(":"); writer.print(prefix); writer.print(" mLabel="); writer.println(op.getLabel()); writer.print(prefix); writer.print(" mIndex="); writer.println(op.getIndex()); if (op.countSynonyms() > 0) { writer.print(prefix); writer.println(" Synonyms:"); for (int j=0; j<op.countSynonyms(); j++) { writer.print(prefix); writer.print(" #"); writer.print(j); writer.print(": "); writer.println(op.getSynonymAt(j)); } } if (op.getExtras() != null) { writer.print(prefix); writer.print(" mExtras="); writer.println(op.getExtras()); } } } } } /** Loading Loading @@ -557,6 +623,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -607,6 +679,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -661,6 +739,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall public void sendResult(Bundle result) { sendCommandResult(true, result); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mCommand="); writer.println(mCommand); } } static final int MSG_START_CONFIRMATION = 1; Loading Loading @@ -1446,4 +1530,37 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall */ public void onCancelRequest(Request request) { } /** * Print the Service's state into the given stream. This gets invoked by * {@link VoiceInteractionSessionService} when its Service * {@link android.app.Service#dump} method is called. * * @param prefix Text to print at the front of each line. * @param fd The raw file descriptor that the dump is being sent to. * @param writer The PrintWriter to which you should dump your state. This will be * closed for you after you return. * @param args additional arguments to the dump request. */ public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mToken="); writer.println(mToken); writer.print(prefix); writer.print("mTheme=#"); writer.println(Integer.toHexString(mTheme)); writer.print(prefix); writer.print("mInitialized="); writer.println(mInitialized); writer.print(prefix); writer.print("mWindowAdded="); writer.print(mWindowAdded); writer.print(" mWindowVisible="); writer.println(mWindowVisible); writer.print(prefix); writer.print("mWindowWasVisible="); writer.print(mWindowWasVisible); writer.print(" mInShowWindow="); writer.println(mInShowWindow); if (mActiveRequests.size() > 0) { writer.print(prefix); writer.println("Active requests:"); String innerPrefix = prefix + " "; for (int i=0; i<mActiveRequests.size(); i++) { Request req = mActiveRequests.valueAt(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(req); req.dump(innerPrefix, fd, writer, args); } } } } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -28812,6 +28812,7 @@ package android.service.voice { ctor public VoiceInteractionSession(android.content.Context); ctor public VoiceInteractionSession(android.content.Context, android.os.Handler); method public void closeSystemDialogs(); method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public void finish(); method public android.content.Context getContext(); method public int getDisabledShowContext();
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -30964,6 +30964,7 @@ package android.service.voice { ctor public VoiceInteractionSession(android.content.Context); ctor public VoiceInteractionSession(android.content.Context, android.os.Handler); method public void closeSystemDialogs(); method public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public void finish(); method public android.content.Context getContext(); method public int getDisabledShowContext();
core/java/android/app/Activity.java +7 −1 Original line number Diff line number Diff line Loading @@ -1864,7 +1864,10 @@ public class Activity extends ContextThemeWrapper nci.children = children; nci.fragments = fragments; nci.loaders = loaders; if (mVoiceInteractor != null) { mVoiceInteractor.retainInstance(); nci.voiceInteractor = mVoiceInteractor; } return nci; } Loading Loading @@ -5547,6 +5550,9 @@ public class Activity extends ContextThemeWrapper mFragments.dumpLoaders(innerPrefix, fd, writer, args); mFragments.getFragmentManager().dump(innerPrefix, fd, writer, args); if (mVoiceInteractor != null) { mVoiceInteractor.dump(innerPrefix, fd, writer, args); } if (getWindow() != null && getWindow().peekDecorView() != null && Loading
core/java/android/app/VoiceInteractor.java +165 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.Log; import com.android.internal.app.IVoiceInteractor; import com.android.internal.app.IVoiceInteractorCallback; Loading @@ -34,6 +35,8 @@ import com.android.internal.app.IVoiceInteractorRequest; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; /** Loading Loading @@ -68,6 +71,7 @@ public final class VoiceInteractor { Context mContext; Activity mActivity; boolean mRetaining; final HandlerCaller mHandlerCaller; final HandlerCaller.Callback mHandlerCallerCallback = new HandlerCaller.Callback() { Loading Loading @@ -272,6 +276,29 @@ public final class VoiceInteractor { public void onDetached() { } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); sb.append(" "); sb.append(getRequestTypeName()); sb.append(" name="); sb.append(mName); sb.append('}'); return sb.toString(); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mRequestInterface="); writer.println(mRequestInterface.asBinder()); writer.print(prefix); writer.print("mActivity="); writer.println(mActivity); writer.print(prefix); writer.print("mName="); writer.println(mName); } String getRequestTypeName() { return "Request"; } void clear() { mRequestInterface = null; mContext = null; Loading Loading @@ -333,6 +360,18 @@ public final class VoiceInteractor { public void onConfirmationResult(boolean confirmed, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "Confirmation"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startConfirmation(packageName, callback, mPrompt, mExtras); Loading Loading @@ -515,6 +554,38 @@ public final class VoiceInteractor { public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mOptions != null) { writer.print(prefix); writer.println("Options:"); for (int i=0; i<mOptions.length; i++) { Option op = mOptions[i]; writer.print(prefix); writer.print(" #"); writer.print(i); writer.println(":"); writer.print(prefix); writer.print(" mLabel="); writer.println(op.mLabel); writer.print(prefix); writer.print(" mIndex="); writer.println(op.mIndex); if (op.mSynonyms != null && op.mSynonyms.size() > 0) { writer.print(prefix); writer.println(" Synonyms:"); for (int j=0; j<op.mSynonyms.size(); j++) { writer.print(prefix); writer.print(" #"); writer.print(j); writer.print(": "); writer.println(op.mSynonyms.get(j)); } } if (op.mExtras != null) { writer.print(prefix); writer.print(" mExtras="); writer.println(op.mExtras); } } } if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "PickOption"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startPickOption(packageName, callback, mPrompt, mOptions, mExtras); Loading Loading @@ -560,6 +631,18 @@ public final class VoiceInteractor { public void onCompleteResult(Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "CompleteVoice"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startCompleteVoice(packageName, callback, mPrompt, mExtras); Loading Loading @@ -607,6 +690,18 @@ public final class VoiceInteractor { public void onAbortResult(Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } String getRequestTypeName() { return "AbortVoice"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startAbortVoice(packageName, callback, mPrompt, mExtras); Loading Loading @@ -650,6 +745,18 @@ public final class VoiceInteractor { public void onCommandResult(boolean isCompleted, Bundle result) { } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mCommand="); writer.println(mCommand); if (mArgs != null) { writer.print(prefix); writer.print("mArgs="); writer.println(mArgs); } } String getRequestTypeName() { return "Command"; } IVoiceInteractorRequest submit(IVoiceInteractor interactor, String packageName, IVoiceInteractorCallback callback) throws RemoteException { return interactor.startCommand(packageName, callback, mCommand, mArgs); Loading Loading @@ -721,6 +828,30 @@ public final class VoiceInteractor { return mVisualPrompt; } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); if (mVisualPrompt != null && mVoicePrompts != null && mVoicePrompts.length == 1 && mVisualPrompt.equals(mVoicePrompts[0])) { sb.append(" "); sb.append(mVisualPrompt); } else { if (mVisualPrompt != null) { sb.append(" visual="); sb.append(mVisualPrompt); } if (mVoicePrompts != null) { sb.append(", voice="); for (int i=0; i<mVoicePrompts.length; i++) { if (i > 0) sb.append(" | "); sb.append(mVoicePrompts[i]); } } } sb.append('}'); return sb.toString(); } /** Constructor to support Parcelable behavior. */ Prompt(Parcel in) { mVoicePrompts = in.readCharSequenceArray(); Loading Loading @@ -773,7 +904,7 @@ public final class VoiceInteractor { if (N < 1) { return null; } ArrayList<Request> list = new ArrayList<Request>(N); ArrayList<Request> list = new ArrayList<>(N); for (int i=0; i<N; i++) { list.add(mActiveRequests.valueAt(i)); } Loading @@ -781,6 +912,7 @@ public final class VoiceInteractor { } void attachActivity(Activity activity) { mRetaining = false; if (mActivity == activity) { return; } Loading @@ -797,6 +929,10 @@ public final class VoiceInteractor { } } void retainInstance() { mRetaining = true; } void detachActivity() { ArrayList<Request> reqs = makeRequestList(); if (reqs != null) { Loading @@ -807,6 +943,16 @@ public final class VoiceInteractor { req.mContext = null; } } if (!mRetaining) { reqs = makeRequestList(); if (reqs != null) { for (int i=0; i<reqs.size(); i++) { Request req = reqs.get(i); req.cancel(); } } mActiveRequests.clear(); } mContext = null; mActivity = null; } Loading Loading @@ -902,4 +1048,22 @@ public final class VoiceInteractor { throw new RuntimeException("Voice interactor has died", e); } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { String innerPrefix = prefix + " "; if (mActiveRequests.size() > 0) { writer.print(prefix); writer.println("Active voice requests:"); for (int i=0; i<mActiveRequests.size(); i++) { Request req = mActiveRequests.valueAt(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(req); req.dump(innerPrefix, fd, writer, args); } } writer.print(prefix); writer.println("VoiceInteractor misc state:"); writer.print(prefix); writer.print(" mInteractor="); writer.println(mInteractor.asBinder()); writer.print(prefix); writer.print(" mActivity="); writer.println(mActivity); } }
core/java/android/service/voice/VoiceInteractionSession.java +117 −0 Original line number Diff line number Diff line Loading @@ -37,7 +37,9 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; Loading @@ -55,6 +57,8 @@ import com.android.internal.app.IVoiceInteractorRequest; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.ref.WeakReference; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; Loading Loading @@ -369,6 +373,34 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } @Override public String toString() { StringBuilder sb = new StringBuilder(128); DebugUtils.buildShortClassTag(this, sb); sb.append(" "); sb.append(mInterface.asBinder()); sb.append(" pkg="); sb.append(mCallingPackage); sb.append(" uid="); UserHandle.formatUid(sb, mCallingUid); sb.append('}'); return sb.toString(); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mInterface="); writer.println(mInterface.asBinder()); writer.print(prefix); writer.print("mCallingPackage="); writer.print(mCallingPackage); writer.print(" mCallingUid="); UserHandle.formatUid(writer, mCallingUid); writer.println(); writer.print(prefix); writer.print("mCallback="); writer.println(mCallback.asBinder()); if (mExtras != null) { writer.print(prefix); writer.print("mExtras="); writer.println(mExtras); } } } /** Loading Loading @@ -422,6 +454,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -504,6 +542,34 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) { sendPickOptionResult(true, selections, result); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); if (mOptions != null) { writer.print(prefix); writer.println("Options:"); for (int i=0; i<mOptions.length; i++) { VoiceInteractor.PickOptionRequest.Option op = mOptions[i]; writer.print(prefix); writer.print(" #"); writer.print(i); writer.println(":"); writer.print(prefix); writer.print(" mLabel="); writer.println(op.getLabel()); writer.print(prefix); writer.print(" mIndex="); writer.println(op.getIndex()); if (op.countSynonyms() > 0) { writer.print(prefix); writer.println(" Synonyms:"); for (int j=0; j<op.countSynonyms(); j++) { writer.print(prefix); writer.print(" #"); writer.print(j); writer.print(": "); writer.println(op.getSynonymAt(j)); } } if (op.getExtras() != null) { writer.print(prefix); writer.print(" mExtras="); writer.println(op.getExtras()); } } } } } /** Loading Loading @@ -557,6 +623,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -607,6 +679,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } catch (RemoteException e) { } } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mPrompt="); writer.println(mPrompt); } } /** Loading Loading @@ -661,6 +739,12 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall public void sendResult(Bundle result) { sendCommandResult(true, result); } void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); writer.print(prefix); writer.print("mCommand="); writer.println(mCommand); } } static final int MSG_START_CONFIRMATION = 1; Loading Loading @@ -1446,4 +1530,37 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall */ public void onCancelRequest(Request request) { } /** * Print the Service's state into the given stream. This gets invoked by * {@link VoiceInteractionSessionService} when its Service * {@link android.app.Service#dump} method is called. * * @param prefix Text to print at the front of each line. * @param fd The raw file descriptor that the dump is being sent to. * @param writer The PrintWriter to which you should dump your state. This will be * closed for you after you return. * @param args additional arguments to the dump request. */ public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { writer.print(prefix); writer.print("mToken="); writer.println(mToken); writer.print(prefix); writer.print("mTheme=#"); writer.println(Integer.toHexString(mTheme)); writer.print(prefix); writer.print("mInitialized="); writer.println(mInitialized); writer.print(prefix); writer.print("mWindowAdded="); writer.print(mWindowAdded); writer.print(" mWindowVisible="); writer.println(mWindowVisible); writer.print(prefix); writer.print("mWindowWasVisible="); writer.print(mWindowWasVisible); writer.print(" mInShowWindow="); writer.println(mInShowWindow); if (mActiveRequests.size() > 0) { writer.print(prefix); writer.println("Active requests:"); String innerPrefix = prefix + " "; for (int i=0; i<mActiveRequests.size(); i++) { Request req = mActiveRequests.valueAt(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(req); req.dump(innerPrefix, fd, writer, args); } } } }