2016-02-08 21 views
5

Tôi đang sử dụng Bố cục/Chi tiết bố cục trong máy tính bảng, trên vài nút bên trái để mở nhiều đoạn, một trong các đoạn chứa trình phát youtube.đóng toàn màn hình của Trình phát Youtube trên nút quay lại bên trong đoạn

Vấn đề,

Khi người chơi youtube là toàn màn hình, và tôi nhấn lại nút, The hoạt độngonBackPressed được gọi, và toàn bộ hoạt động được đóng lại.

gì tôi đã cố gắng,

1- Thêm vào KeyListener cho mảnh mẹ (trong đó có Youtube Fragment) và xử lý khi nhấp chuột vào nút quay lại, nhưng nghe này được gọi là chỉ khi các cầu thủ không phải là toàn màn hình , nếu không nó không được gọi,

rootView.setFocusableInTouchMode(true); 
     rootView.requestFocus(); 
     rootView.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
        try { 
         // Close full screen 
         return true; 
        } catch (Exception e) { 
         AHHExceptionHandler.handleException(e); 
        } 
       } 
       return false; 
      } 
     }); 

2- Added onKeyListener để youtubeFragment Xem để kiểm tra xem nó là toàn màn hình sau đó đóng chế độ toàn màn hình

youTubeFragment.getView().setFocusableInTouchMode(true); 
youTubeFragment.getView().requestFocus(); 
    youTubeFragment.getView().setOnKeyListener(new View.OnKeyListener() { 
               @Override 
               public boolean onKey(View v, int keyCode, KeyEvent event) { 
                if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
                 try { 
                  youTubePlayer.setFullscreen(false); 
                  return true; 
                 } catch (Exception e) { 
                  AHHExceptionHandler.handleException(e); 
                 } 
                } 
                return false; 
               } 
              }); 

Và điều này cũng không được gọi trong mọi trường hợp.

Tôi cần xử lý nút quay lại phần cứng trong khi trình phát youtube ở chế độ toàn màn hình, chế độ toàn màn hình bị đóng và ứng dụng ở trạng thái trước đó.

Cảm ơn.

Sửa 1: - Tôi muốn để xử lý này bên trong mảnh vỡ, thay vì xử lý nó trong Hoạt động phụ huynh, tôi đã xử lý nó bên trong hoạt động phụ huynh, nhưng tôi không thích giải pháp này.

+0

Bạn đã tìm thấy một giải pháp cho khác này hơn những gì bạn mô tả ở đây hoặc thêm mã youtube cụ thể trong Hoạt động onBackPressed? – ashishduh

+1

Không, tôi không thể tìm thấy giải pháp khác –

Trả lời

2

Bạn có thể ghi đè lênBackPressed() trong hoạt động của mình và trong trường hợp trình phát của bạn ở chế độ toàn màn hình, bạn có thể xử lý ở đây và gọi NOT super.onBackPressed().

Nếu nó không phải là toàn màn hình, hãy gọi super.onBackPressed().

+0

Hoạt động này không liên quan đến trình phát youtube, trình phát youtube nằm trong phân đoạn và tôi không muốn xử lý điều này trong hoạt động. Tôi cần phải làm cho mã độc lập như tôi có thể. –

+0

Trình phát youtube có liên quan đến bối cảnh hoạt động. Chúc may mắn nhất để tìm thấy những gì bạn đang tìm kiếm. –

0

Chỉ cần thêm vào câu trả lời của Andre.

Trong Hoạt động cha mẹ của bạn thêm:

public YouTubePlayer youTubePlayer; 
public boolean isYouTubePlayerFullScreen; 

Trong đoạn của bạn thêm:

GVMainActivity mainActivity = (GVMainActivity) getActivity(); 

Sau đó, trên YouTubePlayerFragment khởi:

@Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean b) { 
     mainActivity.youTubePlayer = player; 
     player.loadVideo(videoId); 

     player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() { 
      @Override 
      public void onFullscreen(boolean b) { 
       mainActivity.isYouTubePlayerFullScreen = b; 
      } 
     }); 

    } 

Bây giờ Activity của bạn có quyền truy cập vào YouTubePlayer và thông tin nếu người chơi có toàn màn hình hay không.

Tiếp theo, bên trong Activity của bạn, ghi đè onBackPressed như thế này:

@Override 
public void onBackPressed() { 
    if (youTubePlayer != null && isYouTubePlayerFullScreen){ 
      youTubePlayer.setFullscreen(false); 
    } else { 
     super.onBackPressed(); 
    } 
} 
Các vấn đề liên quan