2011-10-12 12 views
0

私はこの問題を1週間は働いていましたが、何も見つかりませんでした。私を助けてください。誰でも。すべてが歓迎です。 アプリケーションが実行され、1番目の動画を再生した後、クラッシュします。それはエミュレータ(アンドロイド3.2)、アンドロイド2.3とHTC携帯電話で正常に動作しますが、アンドロイド2.2とDreambook w7でクラッシュします。ビデオが終了した後、メディアプレーヤーがクラッシュする

これは、アンドロイド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); 
           } 
          } 
        } 

       } 
       }); 

    } 

"nullポインタ例外が" colling OnCompletionた後があります:あなたのOnComplitionで

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

だけ

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

単に通過し、この行を削除しますonCreate()を作成した古いvideoViewへの絶対パス