java - Android向けYouTubeプレーヤーAPIがビデオ広告を表示しない

原文 java android video android-youtube-api

私たちはyoutubeplayerを使用してアプリケーションを開発しました...コードは非常にシンプルで、youtubeplayer APIによって提供されるサンプルに基づいています...

以下はコードです...

public class YouTubeVideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { private static int RECOVERY_DIALOG_REQUEST = 1; String strVideo_Id=""; YouTubePlayer youTubePlayer; YouTubePlayerView youTubeView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_video); this.setFinishOnTouchOutside(false); /*this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); WindowManager.LayoutParams layoutParams = this.getWindow().getAttributes(); layoutParams.y = 80; // top margin this.getWindow().setAttributes(layoutParams); Window window = this.getWindow(); WindowManager.LayoutParams wlp = window.getAttributes(); wlp.gravity = Gravity.TOP; window.setAttributes(wlp);*/ strVideo_Id = getIntent().getStringExtra("VIDEO_ID"); youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); int ACTIONBAR_HEIGHT = Integer.parseInt(getIntent().getStringExtra("ACTIONBAR_HEIGHT"))-5; YouTubePlayerView.LayoutParams params = (YouTubePlayerView.LayoutParams)youTubeView.getLayoutParams(); ((MarginLayoutParams) params).setMargins(0, ACTIONBAR_HEIGHT, 0, 0); WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Point p = new Point(); int iPicHeight ; int iWindowWidth ; int iWindowHeight; if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN) { display.getRealSize(p); iWindowWidth = p.x; iWindowHeight = p.y; } else { iWindowWidth = display.getWidth(); iWindowHeight =display.getHeight(); } params.height = (int) (iWindowHeight * 0.30); youTubeView.setLayoutParams(params); youTubeView.initialize(Constants.YT_KEY, this); if(GenericOnTouchListner.mediaPlayer!=null && GenericOnTouchListner.mediaPlayer.isPlaying()) RECOVERY_DIALOG_REQUEST = 2; else RECOVERY_DIALOG_REQUEST = 1; } public static void setMargins (View v, int l, int t, int r, int b) { if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); p.setMargins(l, t, r, b); v.requestLayout(); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider,YouTubeInitializationResult errorReason) { if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); } else { String errorMessage = String.format("There was an error initializing the YouTubePlayer (%1$s)", errorReason.toString()); Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOVERY_DIALOG_REQUEST) { // Retry initialization if user performed a recovery action getYouTubePlayerProvider().initialize(Constants.YT_KEY, this); } } @Override protected void onResume() { super.onResume(); // youTubeView.setVisibility(View.VISIBLE); if(youTubePlayer != null) youTubePlayer.play(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); youTubeView.setVisibility(View.VISIBLE); if(youTubePlayer!=null) { try { Thread.sleep(100); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //youTubePlayer.play(); } } @Override protected void onPause() { super.onPause(); youTubeView.setVisibility(View.GONE); /*if(youTubePlayer!=null) youTubePlayer.pause();*/ } protected YouTubePlayer.Provider getYouTubePlayerProvider() { return (YouTubePlayerView) findViewById(R.id.youtube_view); } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,boolean wasRestored) { youTubePlayer = player; youTubePlayer.setManageAudioFocus(true); youTubePlayer.setFullscreen(true); player.setFullscreen(true); youTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI | YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE); PlayerStyle style = PlayerStyle.DEFAULT; player.setPlayerStyle(style); if (!wasRestored) { if(strVideo_Id != null) { Constants.bFromYouTube = true; //player.cueVideo(strVideo_Id); player.loadVideo(strVideo_Id); player.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE); } } youTubePlayer.play(); } @Override public void onBackPressed() { if(youTubePlayer != null) { youTubePlayer.setFullscreen(false); Intent i = new Intent(); } super.onBackPressed(); } }

動画広告を停止するために特別なことはしていません...しかし、特定の動画をロードすると、動画広告が表示されません...

任意の入力を歓迎します...
答え
これは、ビデオ広告がビデオごとに提供され、頻度と広告タイプの両方がYouTubeによって決定されるためです。

広告には2つのタイプがあることに気づきました。1つはプレロール動画、もう1つはスライドインバナーです。

通常、2番目のタイプの広告は、向きやYouTubeプレーヤーのスタイルに関係なく、かなり頻繁に表示されます。

一方、プレロール動画は入手が困難です。彼らは通常、有名なビデオを見ているときに提供され、オリエンテーション/ YouTubeプレーヤーのスタイルは違いを生みます。たとえば、PlayerStyle.CHROMELESSスタイルを選択した場合、プレロール動画は通常配信されません。

プレロール動画をテストする場合は、その瞬間のトップミュージックビデオを再生してみてください。
関連記事

java - ListView要素を表示時のみロードする

java - ボタン領域外のリリースボタン

java - 別のリストビューに基づいて、1つのリストビューにデータを動的に追加する

java - resultSet jspから結果を表示することは可能ですか

java - shortまたはint内で連続していくつかのビットを設定する簡単な方法はありますか?

java - JTableはAbstractTableModelで複数の行を削除します

java - Spring MVC WebアプリケーションのTomcatカスタムディレクトリからファイルを読み取る方法

java - ソケットチャネルから文字列を読み取る

java - Javaクラスでコンストラクターのスキーマ型を定義する[重複]

java - PrestoとHiveの接続の問題:読み取りタイムアウト例外