YouTube embedded player library for Android TV
- to embed Youtube videos in your own Android TV application with Youtube Player API for iframe Embeds
- to provide an alternative to the lack of Youtube Android Player API on Android TV platform
Download YoutubeTv library Showcase from Google Play :
- a custom view
YoutubeTvView
that embeds a Webview with Youtube iframe - a custom fragment
YoutubeTvFragment
that holds aYoutubeTvView
with a media control bar (PlaybackOverlayFragment
) - all Javascript API for iframe Embeds are available from
YoutubeTvView
- video autoplay
- a video thumbnail is shown at the beginning waiting for the player to be ready
- a loading progress bar is shown waiting for the
PLAY
status
with Gradle, from jcenter :
compile 'fr.bmartel:youtubetv:1.2'
Minimum SDK : 21
YoutubeTvView
is the custom view that holds Youtube iframe inside a Webview
.
<fr.bmartel.youtubetv.YoutubeTvView
android:id="@+id/youtube_video"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:yt_videoId="4a5m4qF1e6Q" />
attribute name | format | default value | description |
---|---|---|---|
yt_videoId | string | Youtube video Id | |
yt_playlistId | string | playlist Id (if video is part of a playlist) | |
yt_videoQuality | enum | hd1080 | suggested quality |
yt_showNowPlayingCard | boolean | true | define if now playing card must be shown or not |
yt_showRelatedVideos | boolean | false | display related video when video ends |
yt_showVideoInfo | boolean | false | show video info before playing video |
yt_showControls | enum | none | define if iframe control bar is shown (auto/always/none) |
yt_autoHide | enum | alwaysVisible | control iframe control bar visibility (auto/always/none) |
yt_closedCaptions | boolean | false | display closed captions |
yt_closedCaptionLangPref | string | closed captions preference language | |
yt_playerLanguage | string | youtube player language | |
yt_videoAnnotation | boolean | false | display video annotations |
yt_debug | boolean | false | active/disactive debug mode |
yt_loadingBackgroundColor | integer | #00000000 | set loading background color |
yt_autoplay | boolean | true | autoplay the video or initiate on click |
yt_userAgentString | string | iphone(*) | user agent string used for the Webview |
yt_showBorder | boolean | false | define if a thin border is shown when the View is selected |
yt_borderWidth | integer | 2 | selection border width in dp (no effect if showBorder not set) |
yt_borderColor | color | Color.BLUE | selection border color (no effect if showBorder not set) |
yt_thumbnailQuality | enum | maxresdefault | suggested quality for the thumbnail displayed before the video plays |
yt_javascriptTimeout | integer | 1500 | timeout value in ms for Javascript API that return values from JS side |
(*) There is currently a bug on regular android
user agent string that restricts video quality to large
and below. The bug doesn't affect desktop
, iphone
or ipad
user agent string. So, in order to have quality hd720
or hd1080
we must change user agent string.
-
suggested
videoQuality
- auto
- tiny
- small
- medium
- large
- hd720
- hd1080
- highres
- hd1440
- hd2160
-
suggested
thumbnailQuality
- auto
- hqdefault
- mqdefault
- sddefault
- maxresdefault
YoutubeTvFragment
holds a YoutubeTvView
with a PlaybackOverlayFragment
that is used to display a media control bar.
- in your
Activity
'sonCreate
:
FragmentTransaction fTransaction = getFragmentManager().beginTransaction();
Bundle args = new Bundle();
args.putString("videoId", "gdgHZi347hU");
args.putString("videoQuality", "hd1080");
YoutubeTvFragment mYtFragment = YoutubeTvFragment.newInstance(args);
fTransaction.replace(R.id.youtube_fragment, mYtFragment);
fTransaction.commit();
The following is required to keep Javascript interface from obfuscation :
-keep class fr.bmartel.youtubetv.JavascriptInterface { *; }
-keepclassmembers,allowobfuscation class fr.bmartel.youtubetv.JavascriptInterface.** {
<methods>;
}
-
YoutubeTv library
-
Showcase application
The MIT License (MIT) Copyright (c) 2016 Bertrand Martel