2011-10-12 53 views
0

我在這個問題上工作了一個星期,但沒有找到任何。請幫幫我。任何人。一切都很受歡迎。 應用程序運行,播放第一個視頻,然後崩潰。它可以在模擬器(andoid 3.2)中正常工作,HTC手機與android 2.3,但在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); 
           } 
          } 
        } 

       } 
       }); 

    } 

有 「空指針異常」 高林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) 

回答

0

在你OnComplition只是刪除此行

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

即速您創建的舊videoView的絕對路徑onCreate()