2012-02-06 43 views
5

Tôi đang phát triển trò chơi bằng cocos2d-x và tôi muốn phát video trong đó. Hoạt động này có một chế độ xem OpenGL và tôi cũng đặt thêm VideoView trên đầu trang và đặt khả năng hiển thị thành SỰ KIỆN.phát video ở đầu chế độ xem OpenGL trong android

Khi tôi cần phát video, tôi chỉ ẩn chế độ xem OpenGL và bật VideoView của mình. Sau đó, tôi tạo MediaPlayer, gọi setDisplay với chủ sở hữu của VideoView đó, v.v. và cuối cùng là video phát tốt. Khi video kết thúc, tôi chuyển lại độ nhớt một lần nữa - opengl thành VISIBLE và videoview thành INVISIBLE.

Tuy nhiên, vấn đề là khi tôi cố gắng phát video lần thứ hai, nó chỉ không hiển thị, tuy nhiên, âm thanh từ video đang được phát.

Có bất kỳ sự bắt giữ nào với sự có mặt không?

Trả lời

1

Bạn sẽ cần một bản xem lướt sóng để phát video khi sử dụng lớp MediaPlayer android.

Để phát video ở trên GLSurfaceView, hãy tạo Hộp thoại tùy chỉnh Android chứa SurfaceView và phát video trên đó.

1

Bạn có thể thực hiện việc này bằng cách thêm chế độ xem video động trên bề mặt của chế độ xem. Đầu tiên tạo ra một cái nhìn cha mẹ (bất kỳ bố trí) thêm xem video trong cùng một cái nhìn cha mẹ sau đó thêm xem cha mẹ này trên xem bề mặt gl. Tôi đã làm điều này trước đây và nó đã làm việc cho tôi. để bạn tham khảo:

 // first set the content view as your glview with your params. 
    setContentView(mGLView, gl_params); 
    mGLView.setZOrderMediaOverlay(false); 

    // add a parent view for video view. rl is relative layout 
    addContentView(rl, rl_params); 

    // now add the video view inside this parent view. 
    rl.addview(video_view, video_view_params) 
3

Tôi vừa sửa đổi ApiDemo để xem liệu nó có hoạt động hay không. Tôi có viết blog mã đầy đủ ở đây: post mà không sử dụng media player riêng cho xem video chúng ta có thể thiết lập các video và chơi

mVideoView.setVideoURI(data.getData()); 
    mVideoView.setVisibility(View.VISIBLE); 
    mVideoView.start(); 

    //I could add touch listener in onCreate 
    mGLSurfaceView.setOnTouchListener(...); 

//touch event will go all the way down to GLSurfaceView 
//Here i could chnage the video view position 
@Override 
public boolean onTouch(View view, MotionEvent motionEvent) { 
    mVideoView.setTranslationX(motionEvent.getX()); 
    mVideoView.setTranslationY(motionEvent.getY()); 
    return true; 
} 
+0

Vì đây đang tạo ra một cái nhìn trên đỉnh của OpenGL View, trong khi nó là vô hình tôi sẽ có thể chạm vào 'qua' nó? Nói cách khác, lớp này sẽ cho phép các chạm chạm vào lớp OpenGL? –

+0

Tôi có thể nghe sự kiện chuyển động bằng cách đặt trình xử lý cảm ứng, tôi cũng đã cập nhật bài đăng với những thay đổi đó –

Các vấn đề liên quan