videoview oncompletionlistener未在android中调用?

问题描述:

我在imageview的并且videoview显示图像和视频,但问题是当视频是 打onpreparedlistener调用,但是当视频完成oncompletion听者不叫 时videoview完全i递增为下一个视频或图像videoview oncompletionlistener未在android中调用?

也是它的我给我的错误在这样但视频logcat的播放

10-29 20:12:47.770:E/MediaPlayer的(3975):错误(1,-2147483648)

private void nextVideo(String path){ 

     mImageview.setVisibility(View.GONE); 


    if(mVideoview.getVisibility()==View.GONE){ 
     mVideoview.setVisibility(View.VISIBLE); 

    } 

    controller = new MediaController(HomeActivityNewViewPager.this); 
    mVideoview.setVideoURI(Uri.parse(path)); 
    mVideoview.setMediaController(null); 
    controller.setMediaPlayer(mVideoview); 

    mVideoview.setOnPreparedListener(new OnPreparedListener() { 

     public void onPrepared(MediaPlayer mp) { 

        mVideoview.start(); 
        long duration = mVideoview.getDuration(); 
        second=duration; 
        //handler.removeCallbacks(runnable); 
        //handler.postDelayed(runnable,second); 

     } 
    }); 


    mVideoview.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer mp) { 

       Log.v("video view completed","---"+i); 

       mp.reset(); 

       if(automode){ 

        if(i==myplaylistlocal.size() || i>myplaylistlocal.size()) 
        { 

         String checkcount=spreferences.getString("roundcount", ""); 
         Log.v("roundcount==Before Integer.parseInt","---->"+roundcount); 
         if(roundcount>=Integer.parseInt(checkcount)) 
         { 
          roundcount=0; 
          Log.v("roundcount==After Integer.parseInt","---->"+roundcount); 
          updateplaylist(); 
         } 

         i=0;             
         indexplus(); 
         imagesautomode(); 
         i++; 

        } 
        else if(i==myplaylistlocal.size()-1) 
        { 
         imagesautomode(); 
         i++; 
        } 
        else{ 
         imagesautomode(); 
        } 

       } 
       else{ 
        i++; 
        images(); 
       } 



     } 
    }); 

    mVideoview.setOnErrorListener(new OnErrorListener() { 

     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) { 

      Log.v("Error in video playing","----->"+i); 

      return true; 
     } 

    }); 

} 
+0

你得到任何错误,从视频播放器了?有些代码可能是不正确的格式等。我注意到一些视频编码不正确,并在视频播放器认为他们完成之前结束。 – 2014-10-29 14:48:39

+0

10-29 20:12:47.770:E/MediaPlayer(3975):错误(1,-2147483648)这是显示在logcat中,但仍然onerrorlistner不叫 – Mahesh 2014-10-29 14:56:01

无论哪种方式,上面引用的错误是MEDIA_ERROR_UNKNOWN。如果这个视频是为这个应用程序,我会确保它是适当的Android编码。还要确保清楚地定义了它的端点。

http://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_UNKNOWN

这是一个解决办法,但可能会在您的情况possbly工作:

@Override 
public boolean onError(MediaPlayer mp, int what, int extra) { 
    if(what == MediaPlayer.MEDIA_ERROR_UNKNOWN) 
     //ERROR UNKNOWN - COULD BE IMPROPERLY FORMATTED VIDEO { 
     //MOVE ON TO NEXT VIDEO 
     //DO LOGGING 
    } 
} 
+0

没有得到你,所以它取决于视频? – Mahesh 2014-10-29 14:58:44

+0

对,我遇到了一种情况,那就是自定义视频的结尾标签不正确,而媒体播放器不知道如何完成它们。您正在尝试使用的视频是否使用了自定义视频? – 2014-10-29 15:02:16