Most visited

Recently visited

Added in API level 21

TvInputService.Session

public static abstract class TvInputService.Session
extends Object implements KeyEvent.Callback

java.lang.Object
   ↳ android.media.tv.TvInputService.Session
Known Direct Subclasses


派生类实现的基类,用于提供电视输入会话。

Summary

Public constructors

TvInputService.Session(Context context)

创建一个新的会话。

Public methods

void layoutSurface(int left, int top, int right, int bottom)

将大小和位置指定给在 onSetSurface(Surface)传递的 onSetSurface(Surface)

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)

KeyEvent.Callback.onKeyDown()默认实现:始终返回false(不处理事件)。

boolean onKeyLongPress(int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyLongPress()默认实现:始终返回false(不处理事件)。

boolean onKeyMultiple(int keyCode, int count, KeyEvent event)

KeyEvent.Callback.onKeyMultiple()默认实现:始终返回false(不处理事件)。

boolean onKeyUp(int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyUp()默认实现:始终返回false(不处理事件)。

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)

在对 onSetSurface(Surface)传递的表面进行了任何结构更改(格式或大小)后 onSetSurface(Surface)

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

Public constructors

TvInputService.Session

Added in API level 21
TvInputService.Session (Context context)

创建一个新的会话。

Parameters
context Context: The context of the application

Public methods

layoutSurface

Added in API level 23
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.

也可以看看:

notifyChannelRetuned

Added in API level 21
void notifyChannelRetuned (Uri channelUri)

通知应用程序由于某种原因当前频道已重新调谐,并且会话现在显示来自新频道的内容。 这用于处理特殊情况,例如当前频道变得不可用时,需要将用户发送到某个频道或用户以其他方式(例如通过使用专用遥控器)更改频道。

Parameters
channelUri Uri: The URI of the new channel.

notifyContentAllowed

Added in API level 21
void notifyContentAllowed ()

通知应用程序允许用户观看当前的节目内容。

每个电视输入服务都需要询问系统,如果家长控制被启用(即, TvInputManager.isParentalControlsEnabled()返回true ),则在向用户显示用户之前是否允许用户观看当前节目。 电视输入服务是否应该阻止内容是通过调用TvInputManager.isRatingBlocked(TvContentRating)确定当前节目的内容评级来确定的。 然后, TvInputManager根据用户在安全设置中存储的评分进行判断并返回结果。 如果有问题的评级被用户允许,则电视输入服务必须调用此方法来通知允许显示内容的应用程序。

每个电视输入服务还需要连续收听对家长控制设置所做的任何更改,方法是注册一个广播接收器以接收 ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED并立即使用新的家长控制设置重新评估当前节目。

也可以看看:

notifyContentBlocked

Added in API level 21
void notifyContentBlocked (TvContentRating rating)

通知应用程序当前程序内容被父级控件阻止。

每个TV输入服务都需要询问系统,如果家长控制被启用(即, TvInputManager.isParentalControlsEnabled()返回true ),则在用户向用户显示之前是否允许用户观看当前节目。 电视输入服务是否应该阻止内容是通过调用TvInputManager.isRatingBlocked(TvContentRating)来确定的,当前节目的内容评级为UNRATED ,如果评级信息丢失,则调用TvInputManager.isRatingBlocked(TvContentRating) 然后, TvInputManager根据用户在安全设置中存储的评分进行判断并返回结果。 如果有问题的评级被封锁,电视输入服务必须立即封锁内容并使用当前节目的内容评级调用此方法以提示PIN验证屏幕。

每个电视输入服务还需要连续收听对家长控制设置所做的任何更改,方法是注册广播接收器以接收 ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED并立即使用新的家长控制设置重新评估当前节目。

Parameters
rating TvContentRating: The content rating for the current TV program. Can be UNRATED.

也可以看看:

notifyTimeShiftStatusChanged

Added in API level 23
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.

notifyTrackSelected

Added in API level 21
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.

也可以看看:

notifyTracksChanged

Added in API level 21
void notifyTracksChanged (List<TvTrackInfo> tracks)

发送所有音频/视频/字幕轨道的列表。 框架使用该框架来维护给定会话的轨道信息,该轨道信息又由getTracks(int)用于应用程序检索给定轨道类型的元数据。 只要轨道信息可用或更新,电视输入服务必须立即调用此方法。 请注意,在更新某个曲目的部分信息的情况下,不需要使用不同曲目ID创建新的TvTrackInfo对象。

Parameters
tracks List: A list which includes track information.

notifyVideoAvailable

Added in API level 21
void notifyVideoAvailable ()

通知应用程序该视频现在可供观看。 视频被阻止,直到调用此方法。

电视输入服务必须立即调用此方法,只要内容呈现在其表面上即可查看。 每次调用onTune(Uri)都必须调用此方法。

也可以看看:

notifyVideoUnavailable

Added in API level 21
void notifyVideoUnavailable (int reason)

通知应用程序由于某种原因视频不可用。 这主要用于指示应用程序阻止屏幕不显示任何间歇性视频伪像。

Parameters
reason int: The reason why the video became unavailable:

也可以看看:

onAppPrivateCommand

Added in API level 24
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.

onCreateOverlayView

Added in API level 21
View onCreateOverlayView ()

当应用程序请求创建叠加视图时调用。 每个会话实现都可以重写此方法并返回其自己的视图。

Returns
View a view attached to the overlay window

onGenericMotionEvent

Added in API level 21
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.

也可以看看:

onKeyDown

Added in API level 21
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.

onKeyLongPress

Added in API level 21
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.

onKeyMultiple

Added in API level 21
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.

onKeyUp

Added in API level 21
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.

onOverlayViewSizeChanged

Added in API level 23
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.

onRelease

Added in API level 21
void onRelease ()

会话发布时调用。

onSelectTrack

Added in API level 21
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.

也可以看看:

onSetCaptionEnabled

Added in API level 21
void onSetCaptionEnabled (boolean enabled)

启用或禁用标题。

用户首选字幕语言的语言环境可通过调用 CaptioningManager.getLocale()获得。

Parameters
enabled boolean: true to enable, false to disable.

也可以看看:

onSetStreamVolume

Added in API level 21
void onSetStreamVolume (float volume)

设置当前电视输入会话的相对流音量。

实施应遵循此请求,以便在多个会话(可能来自不同输入)处于活动状态时处理音频焦点更改或将当前会话静音。 如果尚未调用该方法,则实现应采用默认值1.0f

Parameters
volume float: A volume value between 0.0f to 1.0f.

onSetSurface

Added in API level 21
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.

onSurfaceChanged

Added in API level 21
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.

onTimeShiftGetCurrentPosition

Added in API level 23
long onTimeShiftGetCurrentPosition ()

从历元开始以毫秒为单位返回时间平移的当前位置。 如果此时位置未知,则返回TIME_SHIFT_INVALID_TIME

时间移位的当前位置与当前回放位置相同。 它应该等于或大于onTimeShiftGetStartPosition()报告的开始位置。

Returns
long

也可以看看:

onTimeShiftGetStartPosition

Added in API level 23
long onTimeShiftGetStartPosition ()

从纪元开始以毫秒为单位返回时间平移的开始位置。 如果此时位置未知,则返回TIME_SHIFT_INVALID_TIME

时间移位的开始位置表示用户可以寻求的最早时间。 最初这相当于实现开始记录的时间。 之后它可能会被调整,因为没有足够的空间或记录的持续时间受到实施的限制。 应用程序不允许用户寻找到比起始位置更早的位置。

播放由onTimeShiftPlay(Uri)启动的录制节目时,开始位置是播放开始的时间。 它不会改变。

Returns
long

也可以看看:

onTimeShiftPause

Added in API level 23
void onTimeShiftPause ()

当应用程序请求暂停播放时调用。

也可以看看:

onTimeShiftPlay

Added in API level 24
void onTimeShiftPlay (Uri recordedProgramUri)

当应用程序请求播放给定的录制电视节目时调用。

Parameters
recordedProgramUri Uri: The URI of a recorded TV program.

也可以看看:

onTimeShiftResume

Added in API level 23
void onTimeShiftResume ()

当应用程序请求恢复播放时调用。

也可以看看:

onTimeShiftSeekTo

Added in API level 23
void onTimeShiftSeekTo (long timeMs)

当应用程序请求查找指定的时间位置时调用。 通常情况下,位置在开始和当前时间之间的范围内,包括在内。 如果给定的位置不在该范围内,则实施预计将寻求最近的时间位置。

Parameters
timeMs long: The time position to seek to, in milliseconds since the epoch.

也可以看看:

onTimeShiftSetPlaybackParams

Added in API level 23
void onTimeShiftSetPlaybackParams (PlaybackParams params)

当应用程序设置包含速度和音频模式的播放参数时调用。

一旦设置了回放参数,实施应遵循当前设置,直到下一个调谐请求。 暂停/恢复/查找请求不会重置以前设置的参数。

Parameters
params PlaybackParams: The playback params.

也可以看看:

onTouchEvent

Added in API level 21
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.

也可以看看:

onTrackballEvent

Added in API level 21
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.

也可以看看:

onTune

Added in API level 24
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.

onTune

Added in API level 21
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.

onUnblockContent

Added in API level 21
void onUnblockContent (TvContentRating unblockedRating)

根据给定的评分请求解锁内容。

实施应该解除对内容的阻止。 电视输入服务有责任决定何时/如何取消阻止到期,同时可以保持先前未阻止的评级,以便在内容评级发生变化时不要求用户解除阻止。 因此,取决于实施情况,未阻止评分对于频道,节目或一定时间量可能有效。

Parameters
unblockedRating TvContentRating: An unblocked content rating

setOverlayViewEnabled

Added in API level 21
void setOverlayViewEnabled (boolean enable)

启用或禁用叠加视图。

默认情况下,覆盖视图被禁用。 创建会话后必须显式调用以启用覆盖视图。

当覆盖视图的大小不足以显示整个信息时,例如在画中画中使用时,电视输入服务可以禁用其覆盖视图。 覆盖onOverlayViewSizeChanged(int, int)以获取覆盖视图的大小,然后可以使用它确定是否启用/禁用覆盖视图。

Parameters
enable boolean: true if you want to enable the overlay view. false otherwise.

Hooray!