/* * Copyright 2015 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.samples.apps.iosched.util; import com.google.android.youtube.player.YouTubeApiServiceUtil; import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubeIntents; import com.google.android.youtube.player.YouTubeStandalonePlayer; import com.google.samples.apps.iosched.R; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.widget.Toast; import static com.google.samples.apps.iosched.util.LogUtils.LOGW; import static com.google.samples.apps.iosched.util.LogUtils.makeLogTag; /** * Utility class to deal with YouTube urls and videos. */ public class YouTubeUtils { private static final String TAG = makeLogTag(YouTubeUtils.class); public static String getYouTubeIdFromIdOrUrl(String idOrUrl) { Uri uri = Uri.parse(idOrUrl); if (uri.getScheme() != null) { return uri.getLastPathSegment(); } else { return idOrUrl; } } /** * * Builds and returns the youTube video ID for a session. For livestreamed sessions, uses the * livestream ID only if a youTube ID isn't yet available. * * @param youTubeUrl The ID for the youTube link to the session video. * @param liveStreamId The ID for the liveStream link. * @return The ID used for the video link for the session. */ public static String getVideoIdFromSessionData(String youTubeUrl, String liveStreamId) { String videoId = null; if (!TextUtils.isEmpty(youTubeUrl)) { String url = youTubeUrl; videoId = YouTubeUtils.getYouTubeIdFromIdOrUrl(url); } else if (!TextUtils.isEmpty(liveStreamId)) { String url = liveStreamId; videoId = YouTubeUtils.getYouTubeIdFromIdOrUrl(url); } return videoId; } public static void showYouTubeVideo(String videoId, Activity activity) { if (!TextUtils.isEmpty(videoId)) { Intent liveIntent; if (YouTubeIntents.isYouTubeInstalled(activity) && YouTubeApiServiceUtil .isYouTubeApiServiceAvailable(activity) == YouTubeInitializationResult.SUCCESS) { // YouTube service is available. LOGW(TAG, "YouTube service available."); // start the YouTube player liveIntent = YouTubeStandalonePlayer.createVideoIntent(activity, com.google.samples.apps.iosched.BuildConfig.YOUTUBE_API_KEY, videoId); } else if (YouTubeIntents.canResolvePlayVideoIntent(activity)) { // The YouTube app may not be fully up-to-date but it is installed and can resolve // intents. LOGW(TAG, "YouTube can resolve the intent."); // Start an intent to the YouTube app liveIntent = YouTubeIntents.createPlayVideoIntent(activity, videoId); } else { // YouTube may not be installed or it may be disabled. LOGW(TAG, "Redirecting to a browser."); liveIntent = new Intent(Intent.ACTION_VIEW); liveIntent.setData(Uri.parse("https://www.youtube.com/watch?v=" + videoId)); } activity.startActivity(liveIntent); } else { Toast.makeText(activity, R.string.explore_io_video_id_not_valid, Toast.LENGTH_LONG).show(); } } }