Java 用于Android的YouTubeplyer api未显示视频广告
我们已经使用youtubeplayer开发了一个应用程序。。。代码非常简单,并且基于YouTubeplyer api提供的示例 下面是代码Java 用于Android的YouTubeplyer api未显示视频广告,java,android,video,android-youtube-api,Java,Android,Video,Android Youtube Api,我们已经使用youtubeplayer开发了一个应用程序。。。代码非常简单,并且基于YouTubeplyer api提供的示例 下面是代码 public class YouTubeVideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { private static int RECOVERY_DIALOG_REQUEST = 1; String str
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决定 我注意到有两种类型的广告:一种是滚动前视频,另一种是滑入横幅 通常,第二种类型的广告经常出现,无论方向和/或YouTube播放器风格如何 另一方面,预滚动视频更难获得。他们通常在观看著名视频时提供服务,而定位/YouTube播放器风格确实会有所不同。例如,如果您选择
PlayerStyle.CHROMELESS
样式,则通常不提供卷前视频
如果您想测试预演视频,请尝试播放当前最热门的音乐视频。您说得对,但预演视频也不会在Android中播放。。。如果在浏览器上使用相同的url,它们确实会出现。。。播放器样式设置为默认值…同样,这由YouTube决定。预滚频率不同于浏览器频率,预滚类型也不同。你没有办法“控制”这种行为。我从Youtube的一个联系人那里得到了澄清,只有当应用程序托管在playstore上时,advt才会出现……我的经验不是这样。我甚至可以在我简单的测试应用程序中看到广告。我不怀疑这一点,但我看到的那些视频肯定是广告:)我可以发布演示代码和/或录制视频。广告非常频繁,所以它们很快就会出现。