/*
* Copyright 2012 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.examples.youtubeapidemo;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubeStandalonePlayer;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.util.List;
/**
* A simple YouTube Android API demo application which shows how to use a
* {@link YouTubeStandalonePlayer} intent to start a YouTube video playback.
*/
public class StandalonePlayerDemoActivity extends Activity implements View.OnClickListener {
private static final int REQ_START_STANDALONE_PLAYER = 1;
private static final int REQ_RESOLVE_SERVICE_MISSING = 2;
private static final String VIDEO_ID = "cdgQpa1pUUE";
private static final String PLAYLIST_ID = "7E952A67F31C58A3";
private Button playVideoButton;
private Button playPlaylistButton;
private EditText startIndexEditText;
private EditText startTimeEditText;
private CheckBox autoplayCheckBox;
private CheckBox lightboxModeCheckBox;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.standalone_player_demo);
playVideoButton = (Button) findViewById(R.id.start_video_button);
playPlaylistButton = (Button) findViewById(R.id.start_playlist_button);
startIndexEditText = (EditText) findViewById(R.id.start_index_text);
startTimeEditText = (EditText) findViewById(R.id.start_time_text);
autoplayCheckBox = (CheckBox) findViewById(R.id.autoplay_checkbox);
lightboxModeCheckBox = (CheckBox) findViewById(R.id.lightbox_checkbox);
playVideoButton.setOnClickListener(this);
playPlaylistButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int startIndex = parseInt(startIndexEditText.getText().toString(), 0);
int startTimeMillis = parseInt(startTimeEditText.getText().toString(), 0) * 1000;
boolean autoplay = autoplayCheckBox.isChecked();
boolean lightboxMode = lightboxModeCheckBox.isChecked();
Intent intent = null;
if (v == playVideoButton) {
intent = YouTubeStandalonePlayer.createVideoIntent(
this, DeveloperKey.DEVELOPER_KEY, VIDEO_ID, startTimeMillis, autoplay, lightboxMode);
} else if (v == playPlaylistButton) {
intent = YouTubeStandalonePlayer.createPlaylistIntent(this, DeveloperKey.DEVELOPER_KEY,
PLAYLIST_ID, startIndex, startTimeMillis, autoplay, lightboxMode);
}
if (intent != null) {
if (canResolveIntent(intent)) {
startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);
} else {
// Could not resolve the intent - must need to install or update the YouTube API service.
YouTubeInitializationResult.SERVICE_MISSING
.getErrorDialog(this, REQ_RESOLVE_SERVICE_MISSING).show();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_START_STANDALONE_PLAYER && resultCode != RESULT_OK) {
YouTubeInitializationResult errorReason =
YouTubeStandalonePlayer.getReturnedInitializationResult(data);
if (errorReason.isUserRecoverableError()) {
errorReason.getErrorDialog(this, 0).show();
} else {
String errorMessage =
String.format(getString(R.string.error_player), errorReason.toString());
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
}
}
}
private boolean canResolveIntent(Intent intent) {
List<ResolveInfo> resolveInfo = getPackageManager().queryIntentActivities(intent, 0);
return resolveInfo != null && !resolveInfo.isEmpty();
}
private int parseInt(String text, int defaultValue) {
if (!TextUtils.isEmpty(text)) {
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
// fall through
}
}
return defaultValue;
}
}