2016-02-22 10 views
-2

Кто-нибудь знает, почему это видео Посмотреть код, не загружая видео при нажатии? У меня есть макет с videoview (EMVideoView), которые имеют listview (Просмотреть список от VideoSelectionListAdapter).Как отладить EMVideoView, который не загружает видео на Android?

Перечень загрузок, где я хотел, но нажимаю или нажимаю, не воспроизводит видео или даже пытается загрузить. Может кто-нибудь сказать мне, что я делаю неправильно?

Вот мой новый код после редактирования с ответом Elefas.

public class VideoPlayerActivity extends Activity implements AdapterView.OnItemClickListener, MediaPlayer.OnPreparedListener { 
public static final String EXTRA_INDEX = "EXTRA_INDEX"; 
public static final int PLAYLIST_ID = 6; //Arbitrary, for the example (different from audio) 

protected EMVideoView emVideoView; 
protected PlaylistManager playlistManager; 

protected int selectedIndex; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mylayout); 
    emVideoView = (EMVideoView)findViewById(R.id.video_play_activity_video_view); 
    setContentView(R.layout.list_selection_activity); 
    ListView exampleList = (ListView) findViewById(R.id.selection_activity_list); 
    exampleList.setAdapter(new VideoSelectionListAdapter(this)); 
    exampleList.setOnItemClickListener(this); 
    emVideoView.setOnPreparedListener(this); 
    setupPlaylistManager(); 
    playlistManager.setVideoView(emVideoView); 
    playlistManager.play(0, false); 

} 

private void setupPlaylistManager() { 
    playlistManager = new PlaylistManager(); 

    List<MediaItem> mediaItems = new LinkedList<>(); 
    for (VideoItems.VideoItem item : VideoItems.getItems()) { 
     MediaItem mediaItem = new MediaItem(item); 
     mediaItems.add(mediaItem); 
    } 

    playlistManager.setAllowedMediaType(EMPlaylistManager.MediaType.AUDIO_AND_VIDEO); 
    playlistManager.setParameters(mediaItems, selectedIndex); 
    playlistManager.setPlaylistId(PLAYLIST_ID); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    emVideoView.start(); 
} 

@Override 
public void onPrepared(MediaPlayer mp) { 
    //Starts the video playback as soon as it is ready 
    emVideoView.setOnPreparedListener(this); //it's the actual code inside init() 
    emVideoView.start(); 
} 

} 
+0

Что должно было произойти и что на самом деле произошло? – Shark

+0

woow shark очень быстрый ответ спасибо, но, как я уже сказал, мне понравилось бы видео, чтобы играть. –

+1

Вы даже видели, как это работает? Вы должны увидеть официальный демонстрационный проект. слишком много вещей в коде отсутствует. У вас нет 'PlayListManager'. Как бы он знал, какое видео играть, если вы не скажете это. https://github.com/brianwernick/ExoMedia/blob/master/demo/src/main/java/com/devbrackets/android/exomediademo/ui/activity/VideoPlayerActivity.java – Rohit5k2

ответ

1

Ну, что я полагаю, что вы не следовать точно рекомендуемый способ кода ExoMedia (https://github.com/brianwernick/ExoMedia) вы используете.

Было бы лучше, если вы настроите ваш взгляд изнутри OnCreate так удалить

emVideoView = (EMVideoView)findViewById(R.id.video_play_activity_video_view); 

из onItemClick и поместить его в onCreate

Тогда вы определили init() метод, но он не вызывается в любом месте. Лучше назовите его после инициализации вашего emVideoView. например

emVideoView = (EMVideoView)findViewById(R.id.video_play_activity_video_view); 
emVideoView = (EMVideoView)findViewById(R.id.video_play_activity_video_view); 
emVideoView.setOnPreparedListener(this); 
setupPlaylistManager(); 
playlistManager.setVideoView(emVideoView); 
playlistManager.play(0, false); 

и определить метод setupPlaylistManager где-то в классе

private void setupPlaylistManager() { 
    playlistManager = new PlaylistManager(); 

    List<MediaItem> mediaItems = new LinkedList<>(); 
    for (VideoItems.VideoItem item : VideoItems.getItems()) { 
     MediaItem mediaItem = new MediaItem(item); 
     mediaItems.add(mediaItem); 
    } 

    playlistManager.setAllowedMediaType(EMPlaylistManager.MediaType.AUDIO_AND_VIDEO); 
    playlistManager.setParameters(mediaItems, selectedIndex); 
    playlistManager.setPlaylistId(PLAYLIST_ID); 
} 

Это в конечном счете вызвать onPrepared обратного вызова и воспроизведение видео, которое вы хотите.

+0

Hi ElefasGR Спасибо за ваш ответ, но все еще не играю. может забыть упомянуть, что я являюсь абсолютным NOOB при создании приложений для Android (особенно VideoView), и у меня есть нулевое знание кодирования с Java, поэтому, ребята, пожалуйста, вы можете увидеть мой код и сказать мне, где я делаю неправильно, пожалуйста. Большое спасибо –

+0

Примечание. Я удалил init, так как он никогда не работал. (серым цветом). это почему? –

+0

Кто-нибудь знает пожалуйста –

 Смежные вопросы

  • Нет связанных вопросов^_^