【问题标题】:Media player crashes after video finished视频播放完毕后媒体播放器崩溃
【发布时间】:2012-07-19 18:53:33
【问题描述】:

我在这个问题上工作了一个星期,但没有找到任何问题。请帮我。任何人。一切都是受欢迎的。 应用程序运行,播放第一个视频,然后崩溃。它在模拟器(andoid 3.2)、带有 android 2.3 的 HTC 手机中运行良好,但在带有 android 2.2 的 Dreambook w7 上崩溃。

我认为这是因为 Android 2.2 和更高版本之间的 VideoView 类存在一些差异。可能有人知道我在哪里可以找到 VideoView 源代码?我会将它包含在我的项目中。或者可能有一些不是基于 VideoView 的开源视频播放器?

这是我的代码:

@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);
                                }
                            }
                    }

                }
              });

    }

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)

【问题讨论】:

    标签: android video


    【解决方案1】:

    在你的 OnComplition 中删除这一行

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

    只需将绝对路径传递给您在 onCreate() 上创建的旧 videoView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多