1

My application's using YouTube Data API v3 to play YouTube video. I have an Activity VideoPlayerActivity that playing Youtube video using YouTubeSupportFragment. While playing the first video, I also allow user to select another video to play, It'll start VideoPlayerActivity itself to play the second video. Everything goes well. But when I press Back to watch the first video again, and press Play button in YoutubePlayer controll, It crashes.
For simplicity, I use FragmentDemoActivity from YouTubeAndroidPlayerApi sample. In this activity, I have a button, when user clicks on it, this 'll start FragmentDemoActivity itself to play the second video. Everything works fine. But when pressing Back and click Play Button on YoutubePlayer controll. It crashes. Here is the code.

public class FragmentDemoActivity extends YouTubeFailureRecoveryActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("FragmentDemoActivity", "onCreate");
        setContentView(R.layout.fragments_demo);

        YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager()
                .findFragmentById(R.id.youtube_fragment);
        youTubePlayerFragment.initialize(DeveloperKey.DEVELOPER_KEY, this);

        (findViewById(R.id.btn_click))
                .setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(FragmentDemoActivity.this,
                                FragmentDemoActivity.class);
                        startActivity(intent);
                    }
                });
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
            YouTubePlayer player, boolean wasRestored) {
        Log.e("FragmentDemoActivity", "onInitializationSuccess " + wasRestored);
        if (!wasRestored) {
            player.cueVideo("VvseoF9eASw");
        }
    }

    @Override
    protected YouTubePlayer.Provider getYouTubePlayerProvider() {
        return (YouTubePlayerFragment) getFragmentManager().findFragmentById(
                R.id.youtube_fragment);
    }

}

And here is the logcat

09-29 22:18:31.181: E/AndroidRuntime(26398): FATAL EXCEPTION: main
09-29 22:18:31.181: E/AndroidRuntime(26398): java.lang.RuntimeException: PlaybackMonitor queried outside playback sequence
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckj.j(PG:114)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckj.i(PG:101)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at cjt.N(PG:746)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at cjt.e(PG:673)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckl.i(PG:252)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at cps.a(PG:295)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at abq.run(PG:356)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at android.os.Handler.handleCallback(Handler.java:730)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at android.os.Looper.loop(Looper.java:150)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at android.app.ActivityThread.main(ActivityThread.java:5390)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at java.lang.reflect.Method.invokeNative(Native Method)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at java.lang.reflect.Method.invoke(Method.java:525)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at dalvik.system.NativeStart.main(Native Method)
09-29 22:18:31.181: E/AndroidRuntime(26398): Caused by: java.lang.Throwable: currentPlaybackSequenceMonitor became null here
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckj.b(PG:61)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at cvc.j(PG:171)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckl.x(PG:178)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckl.a(PG:191)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at ckl.b(PG:733)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at pq.d(PG:510)
09-29 22:18:31.181: E/AndroidRuntime(26398):    at zj.run(PG:408)
09-29 22:18:31.181: E/AndroidRuntime(26398):    ... 9 more
09-29 22:18:31.251: E/IMGSRV(167): :0: PVRDRMOpen: TP3, ret = 42
09-29 22:18:31.311: E/IMGSRV(167): :0: PVRDRMOpen: TP3, ret = 43
09-29 22:18:32.221: E/IMGSRV(167): :0: PVRDRMOpen: TP3, ret = 34
09-29 22:18:32.441: E/IMGSRV(167): :0: PVRDRMOpen: TP3, ret = 43
09-29 22:18:33.141: E/IMGSRV(167): :0: PVRDRMOpen: TP3, ret = 76
09-29 22:18:33.211: E/AndroidRuntime(26229): FATAL EXCEPTION: main
09-29 22:18:33.211: E/AndroidRuntime(26229): java.lang.RuntimeException: Unable to pause activity {com.examples.youtubeapidemo/com.examples.youtubeapidemo.FragmentDemoActivity}: java.lang.IllegalStateException: android.os.DeadObjectException
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3220)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3175)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3153)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.access$800(ActivityThread.java:148)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.os.Looper.loop(Looper.java:150)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.main(ActivityThread.java:5390)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at java.lang.reflect.Method.invokeNative(Native Method)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at java.lang.reflect.Method.invoke(Method.java:525)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at dalvik.system.NativeStart.main(Native Method)
09-29 22:18:33.211: E/AndroidRuntime(26229): Caused by: java.lang.IllegalStateException: android.os.DeadObjectException
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.i(PG:522)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at sc.g(PG:174)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at fkz.onTransact(PG:360)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.os.Binder.transact(Binder.java:347)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.player.internal.d$a$a.o(Unknown Source)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.player.internal.s.d(Unknown Source)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.player.YouTubePlayerView.c(Unknown Source)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.player.YouTubePlayerFragment.onPause(Unknown Source)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.Fragment.performPause(Fragment.java:1854)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:930)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:1861)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.Activity.performPause(Activity.java:5403)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1233)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3206)
09-29 22:18:33.211: E/AndroidRuntime(26229):    ... 12 more
09-29 22:18:33.211: E/AndroidRuntime(26229): Caused by: android.os.DeadObjectException
09-29 22:18:33.211: E/AndroidRuntime(26229):    at android.os.BinderProxy.transact(Native Method)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at aai.e(PG:629)
09-29 22:18:33.211: E/AndroidRuntime(26229):    at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.i(PG:519)

09-29 22:21:02.441: E/ActivityThread(26565): Activity com.examples.youtubeapidemo.FragmentDemoActivity has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@21d28598 that was originally bound here
09-29 22:21:02.441: E/ActivityThread(26565): android.app.ServiceConnectionLeaked: Activity com.examples.youtubeapidemo.FragmentDemoActivity has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@21d28598 that was originally bound here
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:974)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:868)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1525)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ContextImpl.bindService(ContextImpl.java:1513)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.content.ContextWrapper.bindService(ContextWrapper.java:497)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.google.android.youtube.player.internal.r.e(Unknown Source)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.google.android.youtube.player.YouTubePlayerFragment.a(Unknown Source)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.google.android.youtube.player.YouTubePlayerFragment.initialize(Unknown Source)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.examples.youtubeapidemo.FragmentDemoActivity.onCreate(FragmentDemoActivity.java:49)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.Activity.performCreate(Activity.java:5303)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2296)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ActivityThread.access$600(ActivityThread.java:148)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.os.Looper.loop(Looper.java:150)
09-29 22:21:02.441: E/ActivityThread(26565):    at android.app.ActivityThread.main(ActivityThread.java:5390)
09-29 22:21:02.441: E/ActivityThread(26565):    at java.lang.reflect.Method.invokeNative(Native Method)
09-29 22:21:02.441: E/ActivityThread(26565):    at java.lang.reflect.Method.invoke(Method.java:525)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-29 22:21:02.441: E/ActivityThread(26565):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-29 22:21:02.441: E/ActivityThread(26565):    at dalvik.system.NativeStart.main(Native Method)
09-29 22:21:04.541: E/FragmentDemoActivity(26565): onCreate
09-29 22:21:04.821: E/FragmentDemoActivity(26565): onInitializationSuccess false

Any helps would be appreciated. Thanks in advance.

2
  • I'm getting the same issue. I hope someone could point into right direction. Commented Oct 5, 2014 at 5:30
  • 1
    I posted this issue onto google code YouTube API a week ago, but they have not replied yet. :( Commented Oct 8, 2014 at 2:44

1 Answer 1

1

Just do that

Create

private YouTubePlayer youTubePlayer;

Then initialize youTubePlayer = player;

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
    Log.e("FragmentDemoActivity", "onInitializationSuccess " + wasRestored);
    if (!wasRestored) {
        player.cueVideo("VvseoF9eASw");
    }
    youTubePlayer = player;
}

And override onResume()

@Override
protected void onResume() {
    super.onResume();
    if (youTubePlayer !=null) {
        youTubePlayer.cueVideo("VvseoF9eASw");
}

P.S.

If you want to start video from last moment(pause), then get pause time in VideoPlayerActivity mPlayer.getCurrentTimeMillis() and sent to FragmentDemoActivity

After that change onResume() in FragmentDemoActivity to

@Override
protected void onResume() {
    super.onResume();
    if (youTubePlayer !=null) {
        youTubePlayer.cueVideo("VvseoF9eASw", time_from_video_player_activity);
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.