2017-06-17 51 views
1

我想在我的應用上實現YouTube播放器視圖,但由於我的應用是鬧鐘,我不希望用戶能夠暫停/停止視頻或更改音量。我試圖在YouTube播放器視圖上放置一個視圖來阻止點擊,但我想這是違反谷歌政策的,因爲當我這樣做時視頻不播放。我也試過:如何禁用YouTubePlayerView上的點擊?

<com.google.android.youtube.player.YouTubePlayerView 
     android:id="@+id/ypvAlert" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="@dimen/half_activity_vertical_margin" 
     android:layout_marginBottom="@dimen/standard_button_size" 
     android:clickable="false" /> 

但它不工作。有什麼我可以做的嗎?

回答

1

使用this solution,您可以通過爲每個孩子設置enablefalseview.setEnabled(false)來禁用視圖及其所有孩子上的點擊事件。說它在onInitializationSuccess回調:

@Override 
public void onInitializationSuccess(YouTubePlayer.Provider provider, 
            YouTubePlayer youTubePlayer, boolean b) { 
    enableDisableView(mYoutubeplayerView, false); 
    mPlayer = youTubePlayer; 
    mPlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL); 
    mPlayer.loadVideo("63kmMcHBQlA"); 
} 

這是一個完整的工作示例:

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { 

    String mApiKey = "YOUR_API_KEY"; 

    YouTubePlayerView mYoutubeplayerView; 

    YouTubePlayer mPlayer; 

    /** 
    * disable all click event : https://stackoverflow.com/a/19464718/2614364 by Parag Chauhan 
    * 
    * @param view 
    * @param enabled 
    */ 
    public static void enableDisableView(View view, boolean enabled) { 
     view.setEnabled(enabled); 
     if (view instanceof ViewGroup) { 
      ViewGroup group = (ViewGroup) view; 
      for (int idx = 0; idx < group.getChildCount(); idx++) { 
       enableDisableView(group.getChildAt(idx), enabled); 
      } 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mYoutubeplayerView = (YouTubePlayerView) findViewById(R.id.ypvAlert); 
     mYoutubeplayerView.initialize(mApiKey, this); 
    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, 
             YouTubePlayer youTubePlayer, boolean b) { 
     enableDisableView(mYoutubeplayerView, false); 
     mPlayer = youTubePlayer; 
     mPlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL); 
     mPlayer.loadVideo("63kmMcHBQlA"); 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, 
             YouTubeInitializationResult youTubeInitializationResult) { 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, final Intent data) { 
     if (resultCode == RESULT_OK) { 
      mPlayer.release(); 
     } 
    } 
} 
+0

不工作。我仍然可以暫停視頻。 – SUXA

+1

我在Android 4.4和Android 6上測試了上述示例代碼,無法暫停視頻。它也在模擬器上工作 –

+1

你說得對。我想我改變了onInitializationSuccess中代碼行的順序,這就是爲什麼它沒有工作。現在它正在工作。謝謝。 – SUXA