YouTube embedded player library for Android TV
Download YoutubeTv library Showcase from Google Play :
YoutubeTvView that embeds a Webview with Youtube iframeYoutubeTvFragment that holds a YoutubeTvView with a media control bar (PlaybackOverlayFragment)YoutubeTvViewPLAY statuswith 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
hd2160
suggested thumbnailQuality
auto
YoutubeTvFragment holds a YoutubeTvView with a PlaybackOverlayFragment that is used to display a media control bar.
Activity's onCreate : 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>;
}
Showcase application
The MIT License (MIT) Copyright (c) 2016 Bertrand Martel
$ claude mcp add youtubetv \
-- python -m otcore.mcp_server <graph>