2013-11-19 3 views
1

Я хочу, чтобы это произошло, как youtube, где сначала отображается видеореклама, а затем воспроизводится второе видео [реальное видео]. Эти видеоролики из Интернета, и мне нужно их воспроизвести в моем VideoView. Благодаря Lazy Ninja для его кодов, потому что я достиг того, чего хочу, но возможно ли использовать VideoView, а не SurfaceView? Если да, какие плюсы и минусы? Любая помощь приветствуется. Благодаря!Video Segmented Streaming Android

ответ

0

setNextMediaPlayer() был добавлен в уровень API 16 для этой цели.
Если ваша цель выше API 16, это должно выполнить эту задачу.
Если ваша цель ниже API 16, может работать следующее.
В одном из моих проектов я просто использовал MediaPlayer().
В этом случае я установил setDataSource() в onCompletion(){}; без повторного инициализации MediaPlayer.

public class Player extends Activity implements 
     OnCompletionListener, MediaPlayer.OnPreparedListener, SurfaceHolder.Callback { 
     private MediaPlayer player; 
    private SurfaceView surface; 
    private SurfaceHolder holder; 

    public void onCreate(Bundle b) { 
     super.onCreate(b); 
     setContentView(R.layout.main); 
     surface = (SurfaceView)findViewById(R.id.surface); 
     holder = surface.getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     playVideo(firstUrl); 
    } 

    public void onCompletion(MediaPlayer arg0) { 
     playVideo(nextClipUrl); 
    } 
    public void onPrepared(MediaPlayer mediaplayer) { 
     holder.setFixedSize(player.getVideoWidth(), player.getVideoHeight()); 
     player.start(); 
    } 

    private void playVideo(String url) { 
     try { 

      if (player == null) { 
       player = new MediaPlayer(); 
       player.setScreenOnWhilePlaying(true); 
      } 
      else { 
       player.stop(); 
       player.reset(); 
      } 
      player.setDataSource(url); 
      player.setDisplay(holder); 
      player.setOnPreparedListener(this); 
      player.prepare(); 
      player.setOnCompletionListener(this); 
     } 
     catch (Throwable t) { 
      Log.e("ERROR", "Exception Error", t); 
     } 
    } 
+0

спасибо, но я поддерживаю уровень API 8 как minSdkVersion. Можно ли достичь моей цели? – kads

+0

Да! Как я уже объяснил, я сделал это в одном из своих проектов, просто используя MediaPlayer(). Добавьте OnCompletionListener() и измените источник в onCompletion(). –

+0

Привет @ Lazy Ninja, я просто хочу использовать VideoView, потому что у него есть автоматические кнопки play/pause. Использует VideoView, чем SurfaceView, плохую практику, поэтому вы используете SurfaceView? Спасибо. – kads