2016-04-28 38 views
0

我已經實現了這段代碼。 http://www.androidbegin.com/tutorial/android-video-streaming-videoview-tutorial/如何在緩衝視頻時在videoview中實現progressDialog [如youtube]

但它顯示progressdialog整個活動,但我的要求是隻在videoview中顯示progressDialog,就像在youtube緩衝視頻時明智地顯示。

+0

的可能的複製[檢測一個VideoVIew是緩衝(HTTP://計算器。 COM /問題/ 7867233 /檢測-IF-A-videoview-是緩衝) – waki

回答

1

有了下面的代碼,你可以檢測在視頻緩衝:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      mp.setOnInfoListener(new MediaPlayer.OnInfoListener() { 
       @Override 
       public boolean onInfo(MediaPlayer mp, int what, int extra) { 
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) 
         bufferingDialog.show(); 
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) 
         bufferingDialog.dismiss(); 
        return false; 
       } 
      }); 
     } 
    }); 
    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) { 
      bufferingDialog.dismiss(); 
      return false; 
     } 
    }); 

還建議看this庫。

0

這可能會幫助你嘗試這種方式

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <VideoView 
     android:id="@+id/videoview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" /> 

    <ProgressBar 
     android:id="@+id/progressbar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:visibility="gone" /> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends Activity { 

    ProgressBar progressBar = null; 

    VideoView videoView = null; 

    String videoUrl = "video path here"; 

    Context context = null; 

    @Override 
    public void onCreate(Bundle iclic) { 
     super.onCreate(iclic); 

     context = null; 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     setContentView(R.layout.activity_main); 

     videoView = (VideoView) findViewById(R.id.videoview); 
     progressBar = (ProgressBar) findViewById(R.id.progressbar); 

     Uri videoUri = Uri.parse(videoUrl); 

     videoView.setVideoURI(videoUri); 
     videoView.start(); 

     progressBar.setVisibility(View.VISIBLE); 

     videoView.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       // TODO Auto-generated method stub 
       mp.start(); 
       mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() { 
        @Override 
        public void onVideoSizeChanged(MediaPlayer mp, int arg1, 
          int arg2) { 
         // TODO Auto-generated method stub 
         progressBar.setVisibility(View.GONE); 
         mp.start(); 
        } 
       }); 

      } 
     }); 

    } 

}