我为youtube播放器创建了一个自定义布局..
public class CustomYouTubeView extends LinearLayout implements YouTubePlayer.OnInitializedListener {
private String mYouTubeVideoId;
private String TAG=CustomYouTubeView.class.getSimpleName();
private YouTubePlayerView mYouTubePlayerView;
private YouTubeIntializerListener youTubeIntializerListener;
public CustomYouTubeView(Context context){
super(context);
}
public CustomYouTubeView(Activity context, String youTubeVideoId , YouTubeIntializerListener youTubeIntializerListener) {
super(context);
Log.d(TAG,"CustomYouTubeView :: ");
this.youTubeIntializerListener=youTubeIntializerListener;
mYouTubeVideoId = youTubeVideoId;
//String apiKey = "AIzaSyCLLeT5eV5jCHZIjNME4MG6q_GEftd8crQ";
String apiKey=context.getString(R.string.google_api_key);
mYouTubePlayerView = new YouTubePlayerView(context);
mYouTubePlayerView.setTag(mYouTubeVideoId);
mYouTubePlayerView.initialize(apiKey, this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
//int margin = (int) ScreenUtils.dip2pixel(10, context);
params.leftMargin = 10;
params.rightMargin = 10;
params.topMargin = 10;
params.bottomMargin = 10;
addView(mYouTubePlayerView, params);
}
private void releasePlayer(){
mYouTubePlayerView=null;
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
Log.d(TAG,"onInitializationFailure()");
System.out.println("CustomYouTubeView onInitializationFailure");
youTubeIntializerListener.youTubeFalied();
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer player, final boolean wasRestored) {
Log.d(TAG,"onInitializationSuccess()");
System.out.println("CustomYouTubeView onInitializationSuccess");
if (!wasRestored) {
player.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(YouTubePlayer.ErrorReason errorReason) {
}
@Override
public void onLoading() {
}
@Override
public void onLoaded(String videoId) {
Log.d(TAG, "onInitializationSuccess()");
player.loadVideo(mYouTubeVideoId);
youTubeIntializerListener.youTubeInitialized();
}
@Override
public void onAdStarted() {
}
});
}
}
谁能帮我解决这个问题。
我播放Youtube视频的代码是
YouTubePlayerView video = new YouTubePlayerView(this);
video.initialize(SERVER_API_KEY, this);
addView(video, params);
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
if(!wasRestored) {
try {
youTubePlayer.cueVideo(data.getString("videoId", "").toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
并且可能是由于您的私有void releasePlayer(){myouTubePlayerView=null;}
您没有第二次播放视频,请删除此函数并尝试。
我正在使用React-useState钩子更新状态。单击表单提交按钮时,状态直到第二次单击才更新。我相信我需要使用useffect,但不确定如何使用onClick实现。
我的应用程序有一个片段,播放一秒钟长的视频。播放完视频后,用户必须按下一个按钮,然后应该播放一个新的视频。在播放第二个视频之前,my main activity加载、创建一个新片段并创建新的Exoplayer实例。 我第一次播放视频时,一切都按预期进行。然而,如果我想播放第二个视频,它将显示第一个视频最后一帧的冻结图像,并播放第二个视频的声音。这个bug不出现在Android8(API Level
任何人都知道当用户第二次单击按钮时如何显示间隙广告。我的意思是,当用户单击一次按钮时,广告不应出现,但每当用户再次单击同一按钮时,广告必须显示。。 这里显示了我在不同活动中调用的中间代码。
从一段时间以来,我开始有以下问题。我播放它通过加载文件并显示图像的级别。我完成了关卡,它就会卸载文件。当我再次玩关卡时,它只显示堡垒,玩家,敌人,子弹,但它不再显示其他的图像,如地面,背景,树木等,而是显示给我白色的素色。 然而,就在此时,我没有从AssetManager获取纹理,而是将所有内容改为创建新对象,如,它不会产生此错误。我猜是有什么地方不对或遗漏了。 它实际上只是白色的,但当我创建地面
问题内容: 是否可以将html5-视频显示为画布的一部分? 基本上与您在画布上绘制图像的方式相同。 谢谢! 问题答案: var canvas = document.getElementById(‘canvas’); var ctx = canvas.getContext(‘2d’); var video = document.getElementById(‘video’); 我猜上面的代码是自我解