0

I have VideoView streaming video from uri. I want to show ProgressDialog while data is loading. But it's not showing. Only black screen is visible, than after some time starting video.

Why my dialog isn't shown?

private static ProgressDialog pDialog;
VideoView vid;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    setContentView(R.layout.activity_player);

    vid = (VideoView) findViewById(R.id.videoView1);
    pDialog = ProgressDialog.show(PlayerActivity.this, "", getString(R.string.please_wait_while_loading), true);

    Intent intent = getIntent();
    String url = intent.getStringExtra(MainActivity.STREAM_URL);
    StartPlay(url);
}

private void StartPlay(String url)
{
    MediaController mc = new MediaController(this, false);
    mc.setAnchorView(vid);
    mc.setMediaPlayer(vid);
    vid.setMediaController(mc);
    Uri video = Uri.parse(url);
    vid.setVideoURI(video);     
    vid.requestFocus();
    vid.setKeepScreenOn(true);
    vid.setOnPreparedListener(new OnPreparedListener()
    {

        @Override
        public void onPrepared(MediaPlayer mp)
        {
            if (pDialog.isShowing()) 
                pDialog.dismiss();
            vid.start();    
        }
    });
    vid.setOnErrorListener(new OnErrorListener()
    {

        @Override
        public boolean onError(MediaPlayer mp, int what, int extra)
        {
            if (pDialog.isShowing()) 
                pDialog.dismiss();

            Intent data = PlayerActivity.this.getIntent();
            data.putExtra(EXTRA_MESSAGE_TITLE, getString(R.string.title_MediaPlayerError));
            data.putExtra(EXTRA_MESSAGE, getString(R.string.message_MediaPlayerError));
            setResult(RESULT_CODE_ERROR, data);
            PlayerActivity.this.finish();

            return false;
        }
    }); 
}

Now I know that an error happens, and dialog dismissed. What does this error means? Can I fix it?

     12-09 15:27:18.160: E/WindowManager(2277): Activity myapp.PlayerActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4189cc40 that was originally added here
12-09 15:27:18.160: E/WindowManager(2277): android.view.WindowLeaked: Activity myapp.PlayerActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4189cc40 that was originally added here
12-09 15:27:18.160: E/WindowManager(2277):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:438)
12-09 15:27:18.160: E/WindowManager(2277):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292)
12-09 15:27:18.160: E/WindowManager(2277):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
12-09 15:27:18.160: E/WindowManager(2277):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
12-09 15:27:18.160: E/WindowManager(2277):  at android.view.Window$LocalWindowManager.addView(Window.java:558)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.Dialog.show(Dialog.java:316)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ProgressDialog.show(ProgressDialog.java:130)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ProgressDialog.show(ProgressDialog.java:113)
12-09 15:27:18.160: E/WindowManager(2277):  at myapp.PlayerActivity.onCreate(PlayerActivity.java:44)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.Activity.performCreate(Activity.java:5084)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2044)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ActivityThread.access$600(ActivityThread.java:136)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
12-09 15:27:18.160: E/WindowManager(2277):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 15:27:18.160: E/WindowManager(2277):  at android.os.Looper.loop(Looper.java:137)
12-09 15:27:18.160: E/WindowManager(2277):  at android.app.ActivityThread.main(ActivityThread.java:4803)
12-09 15:27:18.160: E/WindowManager(2277):  at java.lang.reflect.Method.invokeNative(Native Method)
12-09 15:27:18.160: E/WindowManager(2277):  at java.lang.reflect.Method.invoke(Method.java:511)
12-09 15:27:18.160: E/WindowManager(2277):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
12-09 15:27:18.160: E/WindowManager(2277):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
12-09 15:27:18.160: E/WindowManager(2277):  at dalvik.system.NativeStart.main(Native Method)
12-09 15:27:18.330: E/MediaPlayer(2277): Uri is  http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:18.330: D/MediaPlayer(2277): Couldn't open file on client side, trying server side
12-09 15:27:18.440: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:18.460: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.230: E/MediaPlayer(2277): Uri is  http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.230: D/MediaPlayer(2277): Couldn't open file on client side, trying server side
12-09 15:27:49.420: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.430: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.680: E/MediaPlayer(2277): Uri is  http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.680: D/MediaPlayer(2277): Couldn't open file on client side, trying server side
12-09 15:27:49.780: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:49.790: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8
12-09 15:27:52.410: D/MediaPlayer(2277): start() mUri is http://192.168.105.34/hls/ilook.m3u8

error if using getApplicationContext on dialogue creation:

12-09 16:43:08.330: E/AndroidRuntime(6352): FATAL EXCEPTION: main
12-09 16:43:08.330: E/AndroidRuntime(6352): java.lang.RuntimeException: Unable to start activity ComponentInfo{myapp/myapp.PlayerActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2080)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread.access$600(ActivityThread.java:136)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.os.Looper.loop(Looper.java:137)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread.main(ActivityThread.java:4803)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at java.lang.reflect.Method.invokeNative(Native Method)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at java.lang.reflect.Method.invoke(Method.java:511)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at dalvik.system.NativeStart.main(Native Method)
12-09 16:43:08.330: E/AndroidRuntime(6352): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.view.ViewRootImpl.setView(ViewRootImpl.java:657)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.Dialog.show(Dialog.java:316)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ProgressDialog.show(ProgressDialog.java:130)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ProgressDialog.show(ProgressDialog.java:113)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at myapp.PlayerActivity.onCreate(PlayerActivity.java:44)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.Activity.performCreate(Activity.java:5084)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
12-09 16:43:08.330: E/AndroidRuntime(6352):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2044)
12-09 16:43:08.330: E/AndroidRuntime(6352):     ... 11 more
Ksice
  • 3,277
  • 9
  • 43
  • 67

1 Answers1

1

Try this :

        public static void getVideoFromServer(String urlPath) {

    mProgressDialog.show();
    // Check whether internet/wifi connection available or not
    // if false show alert dialog
    if (!ConnectionChecker.selfLearnig(mContext)) {
        mProgressDialog.dismiss();
        showNoInternetAlert();

        return;
    } else {

        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(mContext);
            mediacontroller.setAnchorView(mVideoview);
            // Get the URL from String VideoURL
            mVideo = Uri.parse(urlPath);
            mVideoview.setMediaController(mediacontroller);
            mVideoview.setVideoURI(mVideo);

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();

        }

        mVideoview.requestFocus();
        mVideoview.setOnPreparedListener(new OnPreparedListener() {
            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {
                mProgressDialog.dismiss();
                mVideoview.start();

            }
        });

        mVideoview.setOnCompletionListener(new OnCompletionListener() {
            // Called when video is completed
            public void onCompletion(MediaPlayer mp) {

            }
        });
    }
}

Hope this helps.

Siddharth_Vyas
  • 9,972
  • 10
  • 39
  • 69