public class VoiceInteractionSession
extends Object
implements KeyEvent.Callback, ComponentCallbacks2
java.lang.Object | |
↳ | android.service.voice.VoiceInteractionSession |
活动的语音交互会话,为实现与语音交互层中的用户交互提供了一种工具。 用户界面默认初始显示,并且可以创建为重写onCreateContentView()
,其中可以构建UI。
语音交互会话可以是独立的,最终在完成时调用finish()
。 它还可以通过调用startVoiceActivity(Intent)
来启动与应用程序的语音交互
Nested classes |
|
---|---|
class |
VoiceInteractionSession.AbortVoiceRequest 按照 |
class |
VoiceInteractionSession.CommandRequest 根据供应商的具体要求,按照 |
class |
VoiceInteractionSession.CompleteVoiceRequest 按照 |
class |
VoiceInteractionSession.ConfirmationRequest 按照 |
class |
VoiceInteractionSession.Insets 有关输入法UI的哪些有趣部分出现的信息。 |
class |
VoiceInteractionSession.PickOptionRequest 按照 |
class |
VoiceInteractionSession.Request 表示来自语音驱动程序应用程序的与用户执行特定语音操作的请求的基类。 |
Constants |
|
---|---|
int |
SHOW_SOURCE_ACTIVITY 与 |
int |
SHOW_SOURCE_APPLICATION 与 |
int |
SHOW_SOURCE_ASSIST_GESTURE 与 |
int |
SHOW_WITH_ASSIST 在 |
int |
SHOW_WITH_SCREENSHOT 在 |
Inherited constants |
---|
From interface android.content.ComponentCallbacks2
|
Public constructors |
|
---|---|
VoiceInteractionSession(Context context) |
|
VoiceInteractionSession(Context context, Handler handler) |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.view.KeyEvent.Callback
|
|
From interface android.content.ComponentCallbacks2
|
|
From interface android.content.ComponentCallbacks
|
int SHOW_SOURCE_ACTIVITY
与 onShow(Bundle, int)
一起使用的 onShow(Bundle, int)
:表示一个活动已使用 startLocalVoiceInteraction(Bundle)
为本地交互调用语音交互服务。
常量值:16(0x00000010)
int SHOW_SOURCE_APPLICATION
与 onShow(Bundle, int)
一起使用的 onShow(Bundle, int)
:表示应用程序本身已调用助手。
常量值:8(0x00000008)
int SHOW_SOURCE_ASSIST_GESTURE
与 onShow(Bundle, int)
一起使用的 onShow(Bundle, int)
:表示会话已从系统辅助手势开始。
常量值:4(0x00000004)
int SHOW_WITH_ASSIST
在 onShow(Bundle, int)
收到的 onShow(Bundle, int)
:始发者请求以当前重点活动的辅助数据开始会话。
常数值:1(0x00000001)
int SHOW_WITH_SCREENSHOT
在 onShow(Bundle, int)
收到的 onShow(Bundle, int)
:始发者要求会话以当前焦点活动的屏幕截图开始。
常量值:2(0x00000002)
VoiceInteractionSession (Context context)
Parameters | |
---|---|
context |
Context
|
VoiceInteractionSession (Context context, Handler handler)
Parameters | |
---|---|
context |
Context
|
handler |
Handler
|
void closeSystemDialogs ()
要求关闭所有系统对话框(和状态栏阴影等),以允许访问会话的UI。 这不会导致锁屏被解除。
void dump (String prefix, FileDescriptor fd, PrintWriter writer, String[] args)
将服务的状态打印到给定的流中。 当它的Service dump(FileDescriptor, PrintWriter, String[])
方法被调用时,它会被调用VoiceInteractionSessionService
。
Parameters | |
---|---|
prefix |
String : Text to print at the front of each line. |
fd |
FileDescriptor : The raw file descriptor that the dump is being sent to. |
writer |
PrintWriter : The PrintWriter to which you should dump your state. This will be closed for you after you return. |
args |
String : additional arguments to the dump request. |
void finish ()
完成会话。 这完全破坏了会话 - 下次显示时,会创建一个全新的会话。 你通常不会调用这个函数; 相反,使用hide()
并允许系统在需要其RAM的情况下销毁会话。
int getDisabledShowContext ()
相当于 VoiceInteractionService.getDisabledShowContext
。
Returns | |
---|---|
int |
LayoutInflater getLayoutInflater ()
方便充气的意见。
Returns | |
---|---|
LayoutInflater |
int getUserDisabledShowContext ()
返回哪些显示上下文标志已被用户通过系统设置UI禁用,因此会话永远不会获得这些数据。 返回的标志是VoiceInteractionSession.SHOW_WITH_ASSIST
和VoiceInteractionSession.SHOW_WITH_SCREENSHOT
任意组合。 请注意,这只会告诉您全局用户设置,而不是基于用户所处当前应用程序或其他瞬态状态应用的上下文限制。
Returns | |
---|---|
int |
void onAssistStructureFailure (Throwable failure)
当传送AssistStructure
给助理失败时调用。 例如,如果数据太大并导致内存不足异常,或者客户端提供了损坏的数据,则可能会发生这种情况。 这将在onHandleAssist(Bundle, AssistStructure, AssistContent)
之前立即被调用,并且之后提供的AssistStructure将为空。
Parameters | |
---|---|
failure |
Throwable : The failure exception that was thrown when building the AssistStructure . |
void onBackPressed ()
当焦点位于会话UI中时用户按下后退按钮时调用。 请注意,这只会在会话UI在其窗口中请求输入焦点时才会发生; 否则,后退键将转到任何有焦点的窗口,并执行它通常在那里的任何行为。 默认实现只需调用hide()
。
void onCancelRequest (VoiceInteractionSession.Request request)
调用的时候 VoiceInteractor
已要求取消 VoiceInteractionSession.Request
以前交付给 onRequestConfirmation(VoiceInteractionSession.ConfirmationRequest)
, onRequestPickOption(VoiceInteractionSession.PickOptionRequest)
, onRequestCompleteVoice(VoiceInteractionSession.CompleteVoiceRequest)
, onRequestAbortVoice(VoiceInteractionSession.AbortVoiceRequest)
,或 onRequestCommand(VoiceInteractionSession.CommandRequest)
。
Parameters | |
---|---|
request |
VoiceInteractionSession.Request : The request that is being canceled. |
void onCloseSystemDialogs ()
会话会自动监视关闭所有系统UI的请求(例如,当用户按下HOME时),这将显示在此处。 默认实现始终调用hide()
。
void onComputeInsets (VoiceInteractionSession.Insets outInsets)
计算有趣的插入到您的用户界面。 默认实现将outInsets.contentInsets.top
设置为窗口的高度,这意味着它不应调整下方的内容。 默认可触摸的插图是TOUCHABLE_INSETS_FRAME
,这意味着它消耗了其窗口框架内的所有触摸事件。
Parameters | |
---|---|
outInsets |
VoiceInteractionSession.Insets : Fill in with the current UI insets. |
void onConfigurationChanged (Configuration newConfig)
设备配置在组件运行时发生更改时由系统调用。 请注意,与活动不同,当配置更改时,其他组件不会重新启动:它们必须始终处理更改的结果,例如通过重新获取资源。
在调用此函数时,您的Resources对象将被更新为返回与新配置相匹配的资源值。
有关更多信息,请阅读 Handling Runtime Changes 。
Parameters | |
---|---|
newConfig |
Configuration : The new device configuration. |
void onCreate ()
倡议新的会议。 在这一点上,你不知道这届会议将用于什么; 你会发现在onShow(Bundle, int)
。
boolean[] onGetSupportedCommands (String[] commands)
请求查询会话支持的扩展命令。
Parameters | |
---|---|
commands |
String : An array of commands that are being queried. |
Returns | |
---|---|
boolean[] |
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. |
void onHandleAssist (Bundle data, AssistStructure structure, AssistContent content)
调用以从辅助会话启动时用户当前正在查看的应用程序接收数据。 如果原始演出请求未指定SHOW_WITH_ASSIST
,则不会调用此方法。
Parameters | |
---|---|
data |
Bundle : Arbitrary data supplied by the app through Activity.onProvideAssistData . May be null if assist data has been disabled by the user or device policy. |
structure |
AssistStructure : If available, the structure definition of all windows currently displayed by the app. May be null if assist data has been disabled by the user or device policy; will be an empty stub if the application has disabled assist by marking its window as secure. |
content |
AssistContent : Additional content data supplied by the app through Activity.onProvideAssistContent . May be null if assist data has been disabled by the user or device policy; will not be automatically filled in with data from the app if the app has marked its window as secure. |
void onHandleAssistSecondary (Bundle data, AssistStructure structure, AssistContent content, int index, int count)
被调用来接收用户当前正在或正在与之交互的其他应用程序的数据,这些应用程序当前正在多窗口显示环境中的屏幕上,而不包括当前重点活动。 这可以是自由形式的窗口,画中画窗口或分屏显示中的另一个窗口。
该方法非常类似于onHandleAssist(Bundle, AssistStructure, AssistContent)
不同之处在于它被称为额外的非重点活动以及指示数据用于哪些额外活动的索引和计数。 index
将在1和count
-1之间,并且此方法对于每个附加窗口都会调用一次,顺序不特定。 count
指示有多少个窗口期望辅助数据,包括顶级重点活动,该活动通过onHandleAssist(Bundle, AssistStructure, AssistContent)
继续返回。
为了响应协助请求,一接收到协助数据就立即处理,而不必等待所有排队的活动返回辅助数据。
Parameters | |
---|---|
data |
Bundle : Arbitrary data supplied by the app through Activity.onProvideAssistData . May be null if assist data has been disabled by the user or device policy. |
structure |
AssistStructure : If available, the structure definition of all windows currently displayed by the app. May be null if assist data has been disabled by the user or device policy; will be an empty stub if the application has disabled assist by marking its window as secure. |
content |
AssistContent : Additional content data supplied by the app through Activity.onProvideAssistContent . May be null if assist data has been disabled by the user or device policy; will not be automatically filled in with data from the app if the app has marked its window as secure. |
index |
int : the index of the additional activity that this data is for. |
count |
int : the total number of additional activities for which the assist data is being returned, including the focused activity that is returned via onHandleAssist(Bundle, AssistStructure, AssistContent) . |
void onHandleScreenshot (Bitmap screenshot)
被称为接收用户在辅助会话启动时正在查看的内容的屏幕截图。 如果屏幕截图由用户,策略或应用程序禁用,则可能为空。 如果原始演出请求未指定SHOW_WITH_SCREENSHOT
,则不会调用此方法。
Parameters | |
---|---|
screenshot |
Bitmap
|
boolean onKeyDown (int keyCode, KeyEvent event)
当关键事件发生时调用。 如果返回true,则可以先致电KeyEvent.startTracking()
让框架通过其onKeyUp(int, KeyEvent)
跟踪事件,如果发生,也请致电onKeyLongPress(int, KeyEvent)
。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
event |
KeyEvent : Description of the key event. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
boolean onKeyLongPress (int keyCode, KeyEvent event)
长时间按下时发生。 如果返回true,则最终密钥将会设置为FLAG_CANCELED
和FLAG_CANCELED_LONG_PRESS
。 请注意,为了接收此回叫,活动中的某人必须从onKeyDown(int, KeyEvent)
返回true, 并致电startTracking()
参加活动。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
event |
KeyEvent : Description of the key event. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
boolean onKeyMultiple (int keyCode, int count, KeyEvent event)
当连续发生同一个键的多个向下/向上对时调用。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
count |
int : Number of pairs as returned by event.getRepeatCount(). |
event |
KeyEvent : Description of the key event. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
boolean onKeyUp (int keyCode, KeyEvent event)
发生关键事件时调用。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
event |
KeyEvent : Description of the key event. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
void onLowMemory ()
这在整个系统内存不足时调用,并且主动运行的进程应该修剪内存使用情况。 虽然没有定义它的确切位置,但通常会在所有后台进程都被终止时发生。 也就是说,在达到托管服务和前台UI的杀死进程之前,我们希望避免杀死。
你应该实现这个方法来释放你可能持有的任何缓存或其他不必要的资源。 系统将从此方法返回后为您执行垃圾回收。
最好是,您应该从ComponentCallbacks2
开始实施onTrimMemory(int)
,以根据不同级别的内存需求逐步卸载资源。 该API可用于API级别14和更高的,所以你应该只使用这个onLowMemory()
方法,旧版本的回退,可以治疗一样onTrimMemory(int)
与TRIM_MEMORY_COMPLETE
水平。
void onRequestAbortVoice (VoiceInteractionSession.AbortVoiceRequest request)
请求中止语音交互会话,因为语音活动无法使用语音完成其交互。 对应于VoiceInteractor.AbortVoiceRequest
。 默认的实现只是发回一个空的确认以允许该活动退出。
Parameters | |
---|---|
request |
VoiceInteractionSession.AbortVoiceRequest : The active request. |
void onRequestCommand (VoiceInteractionSession.CommandRequest request)
处理来自调用者的任意扩展命令,对应于 VoiceInteractor.CommandRequest
。
Parameters | |
---|---|
request |
VoiceInteractionSession.CommandRequest : The active request. |
void onRequestCompleteVoice (VoiceInteractionSession.CompleteVoiceRequest request)
请求完成语音交互会话,因为语音活动使用语音成功完成其交互。 对应于VoiceInteractor.CompleteVoiceRequest
。 默认的实现只是发回一个空的确认以允许该活动退出。
Parameters | |
---|---|
request |
VoiceInteractionSession.CompleteVoiceRequest : The active request. |
void onRequestConfirmation (VoiceInteractionSession.ConfirmationRequest request)
在继续进行不可恢复的操作之前,请求用户确认,对应于 VoiceInteractor.ConfirmationRequest
。
Parameters | |
---|---|
request |
VoiceInteractionSession.ConfirmationRequest : The active request. |
void onRequestPickOption (VoiceInteractionSession.PickOptionRequest request)
请求用户选择N个选项中的一个,对应于 VoiceInteractor.PickOptionRequest
。
Parameters | |
---|---|
request |
VoiceInteractionSession.PickOptionRequest : The active request. |
void onShow (Bundle args, int showFlags)
在会话UI将要显示时调用。 这在onCreateContentView()
之后(如果需要创建会话的内容UI)和窗口显示之前调用。 这可以在窗口已经显示的情况下被调用,如果显示请求已经进入,允许你更新UI以匹配新的显示参数。
Parameters | |
---|---|
args |
Bundle : The arguments that were supplied to VoiceInteractionService.showSession . |
showFlags |
int : The show flags originally provided to VoiceInteractionService.showSession . |
void onTaskFinished (Intent intent, int taskId)
当由startVoiceActivity(android.content.Intent)
发起的任务的最后一个活动完成时调用。 假设这表示完成语音操作,则默认实现调用finish()
。 如果你想要一个不同的行为,你可以重写实现。
Parameters | |
---|---|
intent |
Intent : The original Intent supplied to startVoiceActivity(android.content.Intent) . |
taskId |
int : Unique ID of the finished task. |
void onTaskStarted (Intent intent, int taskId)
当由 startVoiceActivity(android.content.Intent)
发起的任务实际开始时调用。
Parameters | |
---|---|
intent |
Intent : The original Intent supplied to startVoiceActivity(android.content.Intent) . |
taskId |
int : Unique ID of the now running task. |
void onTrimMemory (int level)
当操作系统确定进程从其进程中删除不需要的内存是一个好时机时调用。 例如,当它进入后台并且没有足够的内存来保持尽可能多的后台进程运行时,会发生这种情况。 您不应该与级别的确切值进行比较,因为可能会添加新的中间值 - 如果值大于或等于您感兴趣的级别,通常需要比较。
要在任何点检索处理当前修剪水平,可以使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo)
。
Parameters | |
---|---|
level |
int : The context of the trim, giving a hint of the amount of trimming the application may like to perform. May be TRIM_MEMORY_COMPLETE , TRIM_MEMORY_MODERATE , TRIM_MEMORY_BACKGROUND , TRIM_MEMORY_UI_HIDDEN , TRIM_MEMORY_RUNNING_CRITICAL , TRIM_MEMORY_RUNNING_LOW , or TRIM_MEMORY_RUNNING_MODERATE . |
void setDisabledShowContext (int flags)
相当于 VoiceInteractionService.setDisabledShowContext(int)
。
Parameters | |
---|---|
flags |
int
|
void setKeepAwake (boolean keepAwake)
设置此会话是否会在设备运行语音活动时保持设备清醒状态。 默认情况下,系统在此状态下为其保留一个唤醒锁,以便即使屏幕关闭也可以工作。 将此设置为false会删除该唤醒锁,从而允许CPU进入休眠状态。 如果会话决定等待用户的响应时间过长,并且不想让这继续耗尽电池,通常会使用此功能。
在此处传递错误将释放唤醒锁定,并且您可以稍后以true调用以重新获取它。 每次开始新的语音活动任务时,它也会自动重新获取 - 即拨打startVoiceActivity(Intent)
。
Parameters | |
---|---|
keepAwake |
boolean
|
void setTheme (int theme)
你可以调用它来自定义IME窗口使用的主题。 这必须在onCreate()
之前onCreate()
,因此您通常会在您的构造函数中使用您的自定义主题的资源ID来调用它。
Parameters | |
---|---|
theme |
int
|
void show (Bundle args, int flags)
显示此会话的用户界面。 这要求系统完成显示您的UI的过程,最终将以onShow(Bundle, int)
达到高潮。 这与调用VoiceInteractionService.showSession
类似。
Parameters | |
---|---|
args |
Bundle : Arbitrary arguments that will be propagated onShow(Bundle, int) . |
flags |
int : Indicates additional optional behavior that should be performed. May be any combination of VoiceInteractionSession.SHOW_WITH_ASSIST and VoiceInteractionSession.SHOW_WITH_SCREENSHOT to request that the system generate and deliver assist data on the current foreground app as part of showing the session UI. |
void startVoiceActivity (Intent intent)
要求开始语音交互的新活动。 这将在活动管理器中为该语音交互会话创建新的专用任务; 这意味着将为您设置Intent.FLAG_ACTIVITY_NEW_TASK
以使其成为一项新任务。
新开始的活动将以特殊方式显示给用户,作为语音交互UI下的图层。
随着语音活动的运行,它可以检索VoiceInteractor
通过它可以通过会话执行语音交互。 这些请求的语音交互,将会出现在回调onGetSupportedCommands(String[])
, onRequestConfirmation(VoiceInteractionSession.ConfirmationRequest)
, onRequestPickOption(VoiceInteractionSession.PickOptionRequest)
, onRequestCompleteVoice(VoiceInteractionSession.CompleteVoiceRequest)
, onRequestAbortVoice(VoiceInteractionSession.AbortVoiceRequest)
,或onRequestCommand(VoiceInteractionSession.CommandRequest)
您将收到一个电话 onTaskStarted(Intent, int)
当任务启动并 onTaskFinished(Intent, int)
当最后一个活动都已完成。
Parameters | |
---|---|
intent |
Intent : The Intent to start this voice interaction. The given Intent will always have Intent.CATEGORY_VOICE added to it, since this is part of a voice interaction. |