2016-10-09 3 views
0

나는 꽤 간단한 앱이어야한다고 생각하는 웹 개발자라고 생각합니다. 나는 안드로이드 개발에 대한 많은 경험이 없었으므로 어리석은 실수를 용서할 수있다.자동 재생 동영상 재생 목록 만들기

기본적으로 비디오 경로 배열 (외부 SD에 동기화 됨)을 하나씩 가져 와서 하나씩 재생할 수 있어야합니다. 나는 어떤 컨트롤이나 아무것도 필요하지 않고 단지 전체 화면 비디오입니다.

안드로이드 나 자바에 대한 많은 경험이 없으므로 Easy Video Player을 시도해 볼 것이라고 생각했습니다. MediaPlayer 클래스의 래퍼 일뿐입니다. 하나의 비디오를 아무 문제없이 재생할 수는 있지만 다음 비디오를 자동으로 재생하는 데 문제가 있습니다. 여기까지 내 코드가 있습니다 (SD 카드가 아닌 현재 온라인 데모 비디오를 사용하고 있습니다. 또한 레이아웃 파일은 위의 링크의 예와 거의 같으며 몇 가지 속성 값이 있습니다) :

난 그냥 아무 생각이 없다, 나는 거의있을 수 또는 I 해제 방법이 될 수

D/EasyVideoPlayer: onCompletion() 
D/EasyVideoPlayer: Loading web URI: http://www.html5videoplayer.net/videos/toystory.mp4 
E/MediaPlayer: start called in state 4 
E/MediaPlayer: error (-38, 0) 
E/MediaPlayer: Error (-38,0) 

:

public class VideoActivity extends AppCompatActivity implements EasyVideoCallback { 

    private static final String[] TEST_VIDEOS = {"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", "http://www.html5videoplayer.net/videos/toystory.mp4"}; 

    private EasyVideoPlayer player; 
    private int currentVideo; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 
     View decorView = getWindow().getDecorView(); 
     int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 
     decorView.setSystemUiVisibility(uiOptions); 

     player = (EasyVideoPlayer) findViewById(R.id.video_player); 

     player.setCallback(this); 

     currentVideo = 0; 

     player.setSource(Uri.parse(TEST_VIDEOS[currentVideo])); 
    } 

    @Override 
    public void onPaused(EasyVideoPlayer player) { 
     super.onPause(); 

     player.pause(); 
    } 

    @Override 
    public void onCompletion(EasyVideoPlayer player) { 
     if (currentVideo != TEST_VIDEOS.length - 1) { 
      currentVideo++; 
      player.reset(); 
      player.setSource(Uri.parse(TEST_VIDEOS[currentVideo])); 
      player.start(); 
     } 
    } 
} 

이 은 onCompletion()가 호출 될 때 나타나는 모니터 출력됩니다. 나는 에 단지 player.reset()을 부르려고했지만 아무 것도하지 않는 것처럼 보였다. 플레이어가 비디오가로드되지 않은 초기 상태로 이동한다고 가정합니다.

어떤 도움에 감사드립니다 내가 무지에 대해 사과,

감사합니다.

는 업데이트 :

가 나는 onPrepared() 리스너에 player.start();를 이동하고 더 이상 위에 붙여없는 오류가 나타납니다. 또한 몇 초 후에 다음 비디오의 사운드가 재생되지만 플레이어는 재생 버튼으로 첫 번째 비디오의 마지막 프레임을 계속 표시합니다.

답변

0

이에 onCompletion 방법을 변경하십시오 답장을

@Override 
    public void onCompletion(EasyVideoPlayer player) { 
     if (currentVideo != TEST_VIDEOS.length - 1) { 
      currentVideo++; 
      this.player = player; 
      this.player.reset(); 
      this.player.setSource(Uri.parse(TEST_VIDEOS[currentVideo])); 
      this.player.start(); 
      this.player.setCallback(this); 
     } 
    } 
+0

감사합니다. '메소드를 해석 할 수 없음 'setOnCompletionListener (...)''. 이 줄이 없으면 불행히도 이전과 똑같습니다. – Perceptic

+0

그래, 제 3 자 라이브러리를 사용하고 있다는 것을 알지 못했습니다. –

+0

여전히 같은 오류가 발생하고 있습니다 :/ – Perceptic

관련 문제