开发者

Media player crashes after video finished

I worked on this problem for a week, but didn't find any. Please, help me. Anyone. Everything is welcome. App runs, plays 1st video, then crashes. It works fine in the emulator (andoid 3.2), HTC phone with android 2.3, but crashes on Dreambook w7 with android 2.2.

I suggest this is becouse of some difference in VideoView class between android version 2.2 and later. May by someone knows where I can find VideoView source code? I'll include it into my project. Or may be there is some open source video players, based NOT on VideoView?

Here is my code:

@Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        requestWindowFeature(Window.FEATURE_NO_TITLE); 
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        setContentView(R.layout.main);
        video=(VideoView)findViewById(R.id.video);

        /*some code for downloading playlist and missed videos here*/

        /*Then, launches some background theards for updating tham*/

        /*Then, downloading some picture from URL and setting it to image view*/

        /*Then, setting up another background theard for setting current time to text view*/

        //So, here is player: 
      File clip=new File(Environment.getExternalStorageDirectory(),
                playList[FLcurrentVideo].substring(2, playList[FLcurrentVideo].length()-1)+".mp4");     
                if (FLReady[FLcurrentVideo]==1) {

                    video.setVideoPath(clip.getAbsolutePath());
                    video.requestFocus();
                    video.start();
   开发者_开发百科                 sendLog();     //send some info to web server
                }
                else {   //if video didn't exists
                    if (FLReady[FLcurrentVideo] == 0) {
                        new CheckOutVideos(false).execute(FLcurrentVideo);
                    }
                }


              /*Setting completion, for starting play next video after previous done...*/


              video.setOnCompletionListener(new OnCompletionListener(){
                @Override
                public void onCompletion(MediaPlayer mp) {
                    Log.d ("111", "on Completion"); //... but, this NEVER colled
                    int FL = 1;
                    while (FL == 1) {
                    if (FLcurrentVideo<count-1) FLcurrentVideo++;
                    else FLcurrentVideo = 0;
                    File clip=new File(Environment.getExternalStorageDirectory(),
                            playList[FLcurrentVideo].substring(2, playList[FLcurrentVideo].length()-1)+".mp4");

                            if (FLReady[FLcurrentVideo]==1) {

                                FL=0;
                                video=(VideoView)findViewById(R.id.video);
                                video.setVideoPath(clip.getAbsolutePath());
                                video.requestFocus();
                                video.start();

                            }
                            else {
                                FL = 1;
                                if (FLReady[FLcurrentVideo] == 0) {
                                new CheckOutVideos(false).execute(FLcurrentVideo);
                                }
                            }
                    }

                }
              });

    }

there is "null pointer exception" after colling OnCompletion:

09-22 11:50:54.553: ERROR/AndroidRuntime(4529): FATAL EXCEPTION: main
09-22 11:50:54.553: ERROR/AndroidRuntime(4529): java.lang.NullPointerException
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at android.widget.VideoView$3.onCompletion(VideoView.java:347)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1304)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at android.os.Looper.loop(Looper.java:123)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at java.lang.reflect.Method.invokeNative(Native Method)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at java.lang.reflect.Method.invoke(Method.java:521)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-22 11:50:54.553: ERROR/AndroidRuntime(4529):     at dalvik.system.NativeStart.main(Native Method)


In your OnComplition just remove this line

video=(VideoView)findViewById(R.id.video);

simply pass the absolute path to the old videoView which you have created onCreate()

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜