package com.tikal.share; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import com.google.android.youtube.player.YouTubeBaseActivity; import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubePlayer; import com.google.android.youtube.player.YouTubePlayer.ErrorReason; import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener; import com.google.android.youtube.player.YouTubePlayer.PlaybackEventListener; import com.google.android.youtube.player.YouTubePlayer.PlayerStateChangeListener; import com.google.android.youtube.player.YouTubePlayer.Provider; import com.google.android.youtube.player.YouTubePlayerView; public class PlayerActivity extends YouTubeBaseActivity implements OnInitializedListener { public static final String DEVELOPER_KEY = "YOUR_DEVELOPER_KEY_GOES_HERE"; private MHPlaybackEventListener playerEventListener; private MHPlayerStateChangeListener playerStateChangeListener; private YouTubePlayer playa; //hollla private boolean playerLoaded; private int previousReqSeek; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_player); playerLoaded = false; previousReqSeek = 0; Button seekButton = (Button)findViewById(R.id.seek); seekButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startVideoAt(50000); } }); YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); youTubeView.initialize(DEVELOPER_KEY, this); playerEventListener = new MHPlaybackEventListener(); playerStateChangeListener = new MHPlayerStateChangeListener(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.player, menu); return true; } @Override public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { } @Override protected void onPause() { super.onPause(); //might need to do some cleanup here } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { if (!wasRestored) { playa = player; playa.cueVideo("b7pjiYr-Bpo"); playa.setPlaybackEventListener(playerEventListener); playa.setPlayerStateChangeListener(playerStateChangeListener); } } private void startVideoAt(int milis){ if(playerLoaded){ previousReqSeek = 0; playa.seekToMillis(milis); playa.play(); } else{ previousReqSeek = milis; } } private class MHPlaybackEventListener implements PlaybackEventListener { @Override public void onBuffering(boolean arg0) { Log.d("PlayerStateChanged", "onBuffering"); } @Override public void onPaused() { //call save here or in onStopped, seems that when one is called the other is Log.d("PlayerStateChanged", "onPaused"); } @Override public void onPlaying() { Log.d("PlayerStateChanged", "onPlaying"); } @Override public void onSeekTo(int arg0) { Log.d("PlayerStateChanged", "onSeekTo"); } @Override public void onStopped() { Log.d("PlayerStateChanged", "onStopped"); } } private class MHPlayerStateChangeListener implements PlayerStateChangeListener { @Override public void onAdStarted() { // TODO Auto-generated method stub } @Override public void onError(ErrorReason arg0) { // TODO Auto-generated method stub } @Override public void onLoaded(String arg0) { playerLoaded = true; //in case previously requested seek seek to that point if(previousReqSeek > 0){ startVideoAt(previousReqSeek); } } @Override public void onLoading() { // TODO Auto-generated method stub } @Override public void onVideoEnded() { // TODO Auto-generated method stub } @Override public void onVideoStarted() { // TODO Auto-generated method stub } } }