A user watching content on a TV device may decide to switch to the TV launcher at any time. If a user switches to the launcher while using a TV playback app, by default the app is paused. Since the user did not explicitly request to pause playback, the default behavior might seem abrupt and unexpected. This lesson describes how to enable background playback in your app, which provides a better user experience.
The method
requestVisibleBehind()
was deprecated in API level 26.
It will be removed
in a future release. The functionality described on this page is not supported in Android version
8.0 and later.
Request background playback
Normally, when the user clicks on Home to display the TV launcher, the activity pauses. However, your app can request background playback, in which the activity continues playing behind the TV launcher.
To request background playback, call
requestVisibleBehind().
Be sure to clean up media resources if the activity stops being
visible. For example, you should free media resources if
requestVisibleBehind()
returns false to indicate that the request failed, or if the system calls
your override of onVisibleBehindCanceled().
Kotlin
override fun onPause() {
super.onPause()
if (videoView?.isPlaying == true) {
// Argument equals true to notify the system that the activity
// wishes to be visible behind other translucent activities
if (!requestVisibleBehind(true)) {
// App-specific method to stop playback and release resources
// because call to requestVisibleBehind(true) failed
stopPlayback()
}
} else {
// Argument equals false because the activity is not playing
requestVisibleBehind(false)
}
}
override fun onVisibleBehindCanceled() {
// App-specific method to stop playback and release resources
stopPlayback()
super.onVisibleBehindCanceled()
}
Java
@Override
public void onPause() {
super.onPause();
if (videoView.isPlaying()) {
// Argument equals true to notify the system that the activity
// wishes to be visible behind other translucent activities
if (! requestVisibleBehind(true)) {
// App-specific method to stop playback and release resources
// because call to requestVisibleBehind(true) failed
stopPlayback();
}
} else {
// Argument equals false because the activity is not playing
requestVisibleBehind(false);
}
}
@Override
public void onVisibleBehindCanceled() {
// App-specific method to stop playback and release resources
stopPlayback();
super.onVisibleBehindCanceled();
}

