如何调试没有在Android中加载视频的EMVideoView?

如何调试没有在Android中加载视频的EMVideoView?,android,video,android-videoview,playback,Android,Video,Android Videoview,Playback,有人知道为什么这个视频查看代码没有在点击时加载视频吗?我有一个带有videoview(EMVideoView)的布局,它有一个列表视图(来自VideoSelectionListAdapter的视图列表) 列表加载到我想要的位置,但单击或按下它不会播放视频,甚至不会尝试加载。有人能告诉我我做错了什么吗 这是我用Elefas答案编辑后的新代码 public class VideoPlayerActivity extends Activity implements AdapterView.OnItem

有人知道为什么这个视频查看代码没有在点击时加载视频吗?我有一个带有videoview(
EMVideoView
)的布局,它有一个列表视图(来自
VideoSelectionListAdapter
的视图列表)

列表加载到我想要的位置,但单击或按下它不会播放视频,甚至不会尝试加载。有人能告诉我我做错了什么吗

这是我用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();
}

}
公共类VideoPlayerActivity扩展活动实现AdapterView.OnItemClickListener、MediaPlayer.OnPreparedListener{
公共静态最终字符串EXTRA\u INDEX=“EXTRA\u INDEX”;
public static final int PLAYLIST_ID=6;//任意,例如(与音频不同)
受保护的EMVideoView EMVideoView;
受保护的播放管理器播放管理器;
受保护的int-selectedIndex;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
emVideoView=(emVideoView)findViewById(R.id.video\u play\u activity\u video\u view);
setContentView(R.layout.list\u selection\u活动);
ListView exampleList=(ListView)findViewById(R.id.selection\u activity\u list);
setAdapter(新的VideoSelectionListAdapter(this));
setOnItemClickListener(这个);
emVideoView.setOnPreparedListener(此);
设置播放管理器();
playlymanager.setVideoView(emVideoView);
playlimager.play(0,false);
}
专用无效设置管理器(){
playlimager=新的playlimager();
List mediaItems=新建LinkedList();
对于(VideoItems.VideoItem:VideoItems.getItems()){
MediaItem MediaItem=新的MediaItem(项目);
添加(mediaItem);
}
playlimager.setAllowedMediaType(EMPlaylistManager.MediaType.AUDIO和VIDEO);
PlayManager.setParameters(mediaItems,selectedIndex);
playlistanager.setPlaylistId(PLAYLIST\u ID);
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
emVideoView.start();
}
@凌驾
已准备好公开作废(MediaPlayer mp){
//准备好后立即开始视频播放
emVideoView.setOnPreparedListener(this);//这是init()中的实际代码
emVideoView.start();
}
}

我认为您没有完全按照您正在使用的
ExoMedia
()代码的推荐方式进行操作

如果您在onCreate中设置视图会更好 所以移除

emVideoView = (EMVideoView)findViewById(R.id.video_play_activity_video_view);
onItemClick
并将其放入
onCreate

然后您定义了一个
init()
方法,但它没有在任何地方调用。最好在初始化
emVideoView
后调用它。e、 g

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);
并在类中的某个位置定义
setupplaylimager
方法

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);
}
private void设置播放列表管理器(){
playlimager=新的playlimager();
List mediaItems=新建LinkedList();
对于(VideoItems.VideoItem:VideoItems.getItems()){
MediaItem MediaItem=新的MediaItem(项目);
添加(mediaItem);
}
playlimager.setAllowedMediaType(EMPlaylistManager.MediaType.AUDIO和VIDEO);
PlayManager.setParameters(mediaItems,selectedIndex);
playlistanager.setPlaylistId(PLAYLIST\u ID);
}

这将最终调用
onPrepared
回调并播放所需的视频

本应发生什么以及实际发生了什么?woow shark非常快速的回答谢谢,但正如我已经说过的,我很想播放这个视频。你看过它是如何工作的吗?你应该看到官方的演示项目。代码中缺少太多内容。您没有任何
播放管理器
。除非你告诉它,否则它怎么知道播放哪个视频。是的,我去了Githab,甚至从那里下载。是的,我去了Githab,甚至从那里下载。但是我测试了一个没有播放列表的简单代码,它是有效的,但是当我尝试使用我的代码,尝试在同一个活动上播放视频时,它是无效的,所以只有当你点击源代码附带的原始播放列表时,它才有效,这将打开新的活动(VideoPlayerActivity)FullscreenActivity,(但我想将视频加载到与我制作的布局相同的videoview上。嗨,ElefasGR,谢谢你的回复,但仍然没有播放。因为我可能忘了提到,我完全不喜欢制作android应用程序(尤其是videoview)我对Java编码一无所知,所以请大家简单一点,你能看看我的代码并告诉我哪里做错了吗?非常感谢,我没有删除init,因为它从来没有工作过。(灰显)。这是为什么?