public static abstract class TvInputService.Session
extends Object
implements KeyEvent.Callback
java.lang.Object | |
↳ | android.media.tv.TvInputService.Session |
Known Direct Subclasses |
派生类实现的基类,用于提供电视输入会话。
Public constructors |
|
---|---|
TvInputService.Session(Context context) 创建一个新的会话。 |
Public methods |
|
---|---|
void |
layoutSurface(int left, int top, int right, int bottom) 将大小和位置指定给在 |
void |
notifyChannelRetuned(Uri channelUri) 通知应用程序由于某种原因当前频道已重新调谐,并且会话现在显示来自新频道的内容。 |
void |
notifyContentAllowed() 通知应用程序允许用户观看当前的节目内容。 |
void |
notifyContentBlocked(TvContentRating rating) 通知应用程序当前程序内容被父级控件阻止。 |
void |
notifyTimeShiftStatusChanged(int status) 通知应用程序时间转换状态已更改。 |
void |
notifyTrackSelected(int type, String trackId) 发送选定曲目的类型和ID。 |
void |
notifyTracksChanged(List<TvTrackInfo> tracks) 发送所有音频/视频/字幕轨道的列表。 |
void |
notifyVideoAvailable() 通知应用程序该视频现在可供观看。 |
void |
notifyVideoUnavailable(int reason) 通知应用程序由于某种原因视频不可用。 |
void |
onAppPrivateCommand(String action, Bundle data) 处理从应用程序发送到电视输入的私人命令。 |
View |
onCreateOverlayView() 当应用程序请求创建叠加视图时调用。 |
boolean |
onGenericMotionEvent(MotionEvent event) 实现此方法来处理当前输入会话上的通用运动事件。 |
boolean |
onKeyDown(int keyCode, KeyEvent event)
|
boolean |
onKeyLongPress(int keyCode, KeyEvent event)
|
boolean |
onKeyMultiple(int keyCode, int count, KeyEvent event)
|
boolean |
onKeyUp(int keyCode, KeyEvent event)
|
void |
onOverlayViewSizeChanged(int width, int height) 当应用程序更改叠加视图的大小时调用。 |
abstract void |
onRelease() 会话发布时调用。 |
boolean |
onSelectTrack(int type, String trackId) 选择一个给定的曲目。 |
abstract void |
onSetCaptionEnabled(boolean enabled) 启用或禁用标题。 |
abstract void |
onSetStreamVolume(float volume) 设置当前电视输入会话的相对流音量。 |
abstract boolean |
onSetSurface(Surface surface) 当应用程序设置表面时调用。 |
void |
onSurfaceChanged(int format, int width, int height) 在对 |
long |
onTimeShiftGetCurrentPosition() 从历元开始以毫秒为单位返回时间平移的当前位置。 |
long |
onTimeShiftGetStartPosition() 从纪元开始以毫秒为单位返回时间平移的开始位置。 |
void |
onTimeShiftPause() 当应用程序请求暂停播放时调用。 |
void |
onTimeShiftPlay(Uri recordedProgramUri) 当应用程序请求播放给定的录制电视节目时调用。 |
void |
onTimeShiftResume() 当应用程序请求恢复播放时调用。 |
void |
onTimeShiftSeekTo(long timeMs) 当应用程序请求查找指定的时间位置时调用。 |
void |
onTimeShiftSetPlaybackParams(PlaybackParams params) 当应用程序设置包含速度和音频模式的播放参数时调用。 |
boolean |
onTouchEvent(MotionEvent event) 实现此方法来处理当前输入会话中的触摸屏移动事件。 |
boolean |
onTrackballEvent(MotionEvent event) 实现此方法来处理当前输入会话上的轨迹球事件。 |
boolean |
onTune(Uri channelUri, Bundle params) 调谐到指定的频道。 |
abstract boolean |
onTune(Uri channelUri) 调谐到指定的频道。 |
void |
onUnblockContent(TvContentRating unblockedRating) 根据给定的评分请求解锁内容。 |
void |
setOverlayViewEnabled(boolean enable) 启用或禁用叠加视图。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.view.KeyEvent.Callback
|
TvInputService.Session (Context context)
创建一个新的会话。
Parameters | |
---|---|
context |
Context : The context of the application |
void layoutSurface (int left, int top, int right, int bottom)
将大小和位置指定给在onSetSurface(Surface)
传递的onSetSurface(Surface)
。 该位置相对于位于该表面顶部的叠加视图。
Parameters | |
---|---|
left |
int : Left position in pixels, relative to the overlay view. |
top |
int : Top position in pixels, relative to the overlay view. |
right |
int : Right position in pixels, relative to the overlay view. |
bottom |
int : Bottom position in pixels, relative to the overlay view. |
void notifyChannelRetuned (Uri channelUri)
通知应用程序由于某种原因当前频道已重新调谐,并且会话现在显示来自新频道的内容。 这用于处理特殊情况,例如当前频道变得不可用时,需要将用户发送到某个频道或用户以其他方式(例如通过使用专用遥控器)更改频道。
Parameters | |
---|---|
channelUri |
Uri : The URI of the new channel. |
void notifyContentAllowed ()
通知应用程序允许用户观看当前的节目内容。
每个电视输入服务都需要询问系统,如果家长控制被启用(即, TvInputManager.isParentalControlsEnabled()
返回true
),则在向用户显示用户之前是否允许用户观看当前节目。 电视输入服务是否应该阻止内容是通过调用TvInputManager.isRatingBlocked(TvContentRating)
确定当前节目的内容评级来确定的。 然后, TvInputManager
根据用户在安全设置中存储的评分进行判断并返回结果。 如果有问题的评级被用户允许,则电视输入服务必须调用此方法来通知允许显示内容的应用程序。
每个电视输入服务还需要连续收听对家长控制设置所做的任何更改,方法是注册一个广播接收器以接收 ACTION_BLOCKED_RATINGS_CHANGED
和 ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
并立即使用新的家长控制设置重新评估当前节目。
void notifyContentBlocked (TvContentRating rating)
通知应用程序当前程序内容被父级控件阻止。
每个TV输入服务都需要询问系统,如果家长控制被启用(即, TvInputManager.isParentalControlsEnabled()
返回true
),则在用户向用户显示之前是否允许用户观看当前节目。 电视输入服务是否应该阻止内容是通过调用TvInputManager.isRatingBlocked(TvContentRating)
来确定的,当前节目的内容评级为UNRATED
,如果评级信息丢失,则调用TvInputManager.isRatingBlocked(TvContentRating)
。 然后, TvInputManager
根据用户在安全设置中存储的评分进行判断并返回结果。 如果有问题的评级被封锁,电视输入服务必须立即封锁内容并使用当前节目的内容评级调用此方法以提示PIN验证屏幕。
每个电视输入服务还需要连续收听对家长控制设置所做的任何更改,方法是注册广播接收器以接收 ACTION_BLOCKED_RATINGS_CHANGED
和 ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
并立即使用新的家长控制设置重新评估当前节目。
Parameters | |
---|---|
rating |
TvContentRating : The content rating for the current TV program. Can be UNRATED . |
void notifyTimeShiftStatusChanged (int status)
通知应用程序时间转换状态已更改。
在调用此方法之前,应用程序将采用状态TIME_SHIFT_STATUS_UNKNOWN
。 创建会话之后,如果实现确实支持时间转换,则调用状态为TIME_SHIFT_STATUS_AVAILABLE
的方法很重要,否则调用TIME_SHIFT_STATUS_UNSUPPORTED
。 如果不立即通知当前状态变化,可能会导致应用程序中出现不良行为,例如隐藏播放控件。
如果报告了状态TIME_SHIFT_STATUS_AVAILABLE
,则应用程序假定它可以暂停/恢复播放,寻找到指定的时间位置并设置播放速率和音频模式。 实施应覆盖onTimeShiftPause()
, onTimeShiftResume()
, onTimeShiftSeekTo(long)
, onTimeShiftGetStartPosition()
, onTimeShiftGetCurrentPosition()
和onTimeShiftSetPlaybackParams(PlaybackParams)
。
Parameters | |
---|---|
status |
int : The current time shift status. Should be one of the followings.
|
void notifyTrackSelected (int type, String trackId)
发送选定曲目的类型和ID。 这用于通知应用程序选择了特定的曲目。 电视输入服务必须在默认情况下选择音轨或响应onSelectTrack(int, String)
的呼叫时立即调用此方法。 即使在整个曲目列表更新后(但会话调谐到新频道时重置),直到下一次调用此方法时,给定类型的选定曲目ID仍保留在框架中,因此必须注意不要导致过时的跟踪ID。
Parameters | |
---|---|
type |
int : The type of the selected track. The type can be TYPE_AUDIO , TYPE_VIDEO or TYPE_SUBTITLE . |
trackId |
String : The ID of the selected track. |
也可以看看:
void notifyTracksChanged (List<TvTrackInfo> tracks)
发送所有音频/视频/字幕轨道的列表。 框架使用该框架来维护给定会话的轨道信息,该轨道信息又由getTracks(int)
用于应用程序检索给定轨道类型的元数据。 只要轨道信息可用或更新,电视输入服务必须立即调用此方法。 请注意,在更新某个曲目的部分信息的情况下,不需要使用不同曲目ID创建新的TvTrackInfo
对象。
Parameters | |
---|---|
tracks |
List : A list which includes track information. |
void notifyVideoAvailable ()
通知应用程序该视频现在可供观看。 视频被阻止,直到调用此方法。
电视输入服务必须立即调用此方法,只要内容呈现在其表面上即可查看。 每次调用onTune(Uri)
都必须调用此方法。
也可以看看:
void notifyVideoUnavailable (int reason)
通知应用程序由于某种原因视频不可用。 这主要用于指示应用程序阻止屏幕不显示任何间歇性视频伪像。
Parameters | |
---|---|
reason |
int : The reason why the video became unavailable:
|
也可以看看:
void onAppPrivateCommand (String action, Bundle data)
处理从应用程序发送到电视输入的私人命令。 这可以用于提供特定于域的功能,这些功能仅在某些电视输入和它们的客户端之间是已知的。
Parameters | |
---|---|
action |
String : Name of the command to be performed. This must be a scoped name, i.e. prefixed with a package name you own, so that different developers will not create conflicting commands. |
data |
Bundle : Any data to include with the command. |
View onCreateOverlayView ()
当应用程序请求创建叠加视图时调用。 每个会话实现都可以重写此方法并返回其自己的视图。
Returns | |
---|---|
View |
a view attached to the overlay window |
boolean onGenericMotionEvent (MotionEvent event)
实现此方法来处理当前输入会话上的通用运动事件。
Parameters | |
---|---|
event |
MotionEvent : The motion event being received. |
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 onKeyDown (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyDown()
默认实现:始终返回false(不处理事件)。
重写此操作可在应用程序处理关键事件之前拦截关键事件。 如果您返回true,则应用程序不会处理事件本身。 如果您返回false,则会发生正常的应用程序处理,就好像电视输入根本没有看到该事件。
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)
KeyEvent.Callback.onKeyLongPress()
默认实现:始终返回false(不处理事件)。
覆盖此项以在应用程序处理关键长按事件之前拦截它。 如果您返回true,则应用程序不会处理事件本身。 如果您返回false,则会发生正常的应用程序处理,就好像电视输入根本没有看到该事件。
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)
KeyEvent.Callback.onKeyMultiple()
默认实现:始终返回false(不处理事件)。
重写此操作可在应用程序处理它们之前拦截特殊键多个事件。 如果您返回true,则应用程序不会自行处理该事件。 如果您返回false,则会发生正常的应用程序处理,就好像电视输入根本没有看到该事件。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
count |
int : The number of times the action was made. |
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)
KeyEvent.Callback.onKeyUp()
默认实现:始终返回false(不处理事件)。
重写此操作以在应用程序处理键击事件之前拦截键事件。 如果您返回true,则应用程序不会自行处理该事件。 如果您返回false,则会发生正常的应用程序处理,就好像电视输入根本没有看到该事件。
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 onOverlayViewSizeChanged (int width, int height)
当应用程序更改叠加视图的大小时调用。
无论叠加视图是否启用,在创建会话时始终至少调用一次。 覆盖视图大小与包含TvView
大小相同。 请注意,如果通过调用layoutSurface(int, int, int, int)
更改曲面,则下表面的大小可能会有所不同。
Parameters | |
---|---|
width |
int : The width of the overlay view. |
height |
int : The height of the overlay view. |
boolean onSelectTrack (int type, String trackId)
选择一个给定的曲目。
如果成功完成,实现应调用 notifyTrackSelected(int, String)
来帮助应用程序维护所选轨道的最新列表。
Parameters | |
---|---|
type |
int : The type of the track to select. The type can be TYPE_AUDIO , TYPE_VIDEO or TYPE_SUBTITLE . |
trackId |
String : The ID of the track to select. null means to unselect the current track for a given type. |
Returns | |
---|---|
boolean |
true if the track selection was successful, false otherwise. |
void onSetCaptionEnabled (boolean enabled)
启用或禁用标题。
用户首选字幕语言的语言环境可通过调用 CaptioningManager.getLocale()
获得。
Parameters | |
---|---|
enabled |
boolean : true to enable, false to disable. |
也可以看看:
void onSetStreamVolume (float volume)
设置当前电视输入会话的相对流音量。
实施应遵循此请求,以便在多个会话(可能来自不同输入)处于活动状态时处理音频焦点更改或将当前会话静音。 如果尚未调用该方法,则实现应采用默认值1.0f
。
Parameters | |
---|---|
volume |
float : A volume value between 0.0f to 1.0f . |
boolean onSetSurface (Surface surface)
当应用程序设置表面时调用。
电视输入服务应该将视频渲染到给定的表面上。 当用null
调用时,输入服务应立即释放对当前设置曲面的引用并停止使用它。
Parameters | |
---|---|
surface |
Surface : The surface to be used for video rendering. Can be null . |
Returns | |
---|---|
boolean |
true if the surface was set successfully, false otherwise. |
void onSurfaceChanged (int format, int width, int height)
在对onSetSurface(Surface)
传递的曲面进行了任何结构更改(格式或大小)后onSetSurface(Surface)
。 在使用非空曲面调用onSetSurface(Surface)
后,此方法总是至少调用一次。
Parameters | |
---|---|
format |
int : The new PixelFormat of the surface. |
width |
int : The new width of the surface. |
height |
int : The new height of the surface. |
long onTimeShiftGetCurrentPosition ()
从历元开始以毫秒为单位返回时间平移的当前位置。 如果此时位置未知,则返回TIME_SHIFT_INVALID_TIME
。
时间移位的当前位置与当前回放位置相同。 它应该等于或大于onTimeShiftGetStartPosition()
报告的开始位置。
Returns | |
---|---|
long |
long onTimeShiftGetStartPosition ()
从纪元开始以毫秒为单位返回时间平移的开始位置。 如果此时位置未知,则返回TIME_SHIFT_INVALID_TIME
。
时间移位的开始位置表示用户可以寻求的最早时间。 最初这相当于实现开始记录的时间。 之后它可能会被调整,因为没有足够的空间或记录的持续时间受到实施的限制。 应用程序不允许用户寻找到比起始位置更早的位置。
播放由onTimeShiftPlay(Uri)
启动的录制节目时,开始位置是播放开始的时间。 它不会改变。
Returns | |
---|---|
long |
void onTimeShiftPlay (Uri recordedProgramUri)
当应用程序请求播放给定的录制电视节目时调用。
Parameters | |
---|---|
recordedProgramUri |
Uri : The URI of a recorded TV program. |
void onTimeShiftSeekTo (long timeMs)
当应用程序请求查找指定的时间位置时调用。 通常情况下,位置在开始和当前时间之间的范围内,包括在内。 如果给定的位置不在该范围内,则实施预计将寻求最近的时间位置。
Parameters | |
---|---|
timeMs |
long : The time position to seek to, in milliseconds since the epoch. |
void onTimeShiftSetPlaybackParams (PlaybackParams params)
当应用程序设置包含速度和音频模式的播放参数时调用。
一旦设置了回放参数,实施应遵循当前设置,直到下一个调谐请求。 暂停/恢复/查找请求不会重置以前设置的参数。
Parameters | |
---|---|
params |
PlaybackParams : The playback params. |
boolean onTouchEvent (MotionEvent event)
实现此方法来处理当前输入会话中的触摸屏移动事件。
Parameters | |
---|---|
event |
MotionEvent : The motion event being received. |
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 onTrackballEvent (MotionEvent event)
实现此方法来处理当前输入会话上的轨迹球事件。
Parameters | |
---|---|
event |
MotionEvent : The motion event being received. |
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 onTune (Uri channelUri, Bundle params)
调谐到指定的频道。 覆盖此方法是为了处理特定于特定电视输入和其客户端之间的特定于域的功能。
默认实现调用 onTune(Uri)
。
Parameters | |
---|---|
channelUri |
Uri : The URI of the channel. |
params |
Bundle : Domain-specific data for this tune request. Keys must be a scoped name, i.e. prefixed with a package name you own, so that different developers will not create conflicting keys. |
Returns | |
---|---|
boolean |
true if the tuning was successful, false otherwise. |
boolean onTune (Uri channelUri)
调谐到指定的频道。
在调用notifyVideoAvailable()
之前不会显示任何视频。 此外,当电视输入无法继续播放给定频道时,应调用notifyVideoUnavailable(int)
。
Parameters | |
---|---|
channelUri |
Uri : The URI of the channel. |
Returns | |
---|---|
boolean |
true if the tuning was successful, false otherwise. |
void onUnblockContent (TvContentRating unblockedRating)
根据给定的评分请求解锁内容。
实施应该解除对内容的阻止。 电视输入服务有责任决定何时/如何取消阻止到期,同时可以保持先前未阻止的评级,以便在内容评级发生变化时不要求用户解除阻止。 因此,取决于实施情况,未阻止评分对于频道,节目或一定时间量可能有效。
Parameters | |
---|---|
unblockedRating |
TvContentRating : An unblocked content rating |
void setOverlayViewEnabled (boolean enable)
启用或禁用叠加视图。
默认情况下,覆盖视图被禁用。 创建会话后必须显式调用以启用覆盖视图。
当覆盖视图的大小不足以显示整个信息时,例如在画中画中使用时,电视输入服务可以禁用其覆盖视图。 覆盖onOverlayViewSizeChanged(int, int)
以获取覆盖视图的大小,然后可以使用它确定是否启用/禁用覆盖视图。
Parameters | |
---|---|
enable |
boolean : true if you want to enable the overlay view. false otherwise. |