Youtube 播放器 API 访问被拒绝发现 属性
Youtube player API Access denied finding property
我正在尝试构建简单的 youtubeplayer android 应用程序,在 运行 在我的物理设备上使用我的代码后应用程序 运行s 成功但视频仍处于加载模式,当我检查了我的 logcat 我发现了一些可能相关或导致此问题的问题:
这是我的代码 运行:
package Thrax.com;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
public class YoutubeActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener
{
static final String GOOGLE_API_KEY = "Implement my google API_KEY HERE";
static final String YOUTUBE_VIDEO_ID = "ZnZsVLiVPLs";
static final String YOUTUBE_PLAYLIST = "PLzcK7AwShFBmc0Pigajs_u5nhQIwARAmE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_youtube);
// ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.activity_youtube);
ConstraintLayout layout = (ConstraintLayout) getLayoutInflater().inflate(R.layout.activity_youtube, null);
setContentView(layout);
// Button button1 = new Button(this);
// button1.setLayoutParams(new ConstraintLayout.LayoutParams(360,100));
// button1.setText("Button_Dynamic");
// layout.addView(button1);
YouTubePlayerView playerView = new YouTubePlayerView(this);
playerView.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT ));
layout.addView(playerView);
playerView.initialize(GOOGLE_API_KEY , this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
final int REQUEST_CODE = 1;
if(youTubeInitializationResult.isUserRecoverableError()){
youTubeInitializationResult.getErrorDialog(this , REQUEST_CODE).show();
}
else{
String errorMessage = String.format("There was a error initializing Youtube player (%1$s)" , youTubeInitializationResult.toString());
Toast.makeText(this , errorMessage , Toast.LENGTH_LONG).show();
}
}
}
改变你的onInitializationSuccess()
拥有;
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.setPlayerStateChangeListener(playerStateChangeListener);
youTubePlayer.setPlaybackEventListener(playbackEventListener);
if (!b) {
youTubePlayer.cueVideo(VIDEO_ID);
}
}
然后创建具有 playerStateChangeListener()
和 playbackEventListener()
的方法,如下所示。
private YouTubePlayer.PlayerStateChangeListener playerStateChangeListener = new YouTubePlayer.PlayerStateChangeListener() {
@Override
public void onLoading() {
}
@Override
public void onLoaded(String s) {
}
@Override
public void onAdStarted() {
}
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(YouTubePlayer.ErrorReason errorReason) {
}
};
private YouTubePlayer.PlaybackEventListener playbackEventListener = new YouTubePlayer.PlaybackEventListener() {
@Override
public void onPlaying() {
}
@Override
public void onPaused() {
}
@Override
public void onStopped() {
}
@Override
public void onBuffering(boolean b) {
}
@Override
public void onSeekTo(int i) {
}
};
应该可以。
我正在尝试构建简单的 youtubeplayer android 应用程序,在 运行 在我的物理设备上使用我的代码后应用程序 运行s 成功但视频仍处于加载模式,当我检查了我的 logcat 我发现了一些可能相关或导致此问题的问题:
这是我的代码 运行:
package Thrax.com;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
public class YoutubeActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener
{
static final String GOOGLE_API_KEY = "Implement my google API_KEY HERE";
static final String YOUTUBE_VIDEO_ID = "ZnZsVLiVPLs";
static final String YOUTUBE_PLAYLIST = "PLzcK7AwShFBmc0Pigajs_u5nhQIwARAmE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_youtube);
// ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.activity_youtube);
ConstraintLayout layout = (ConstraintLayout) getLayoutInflater().inflate(R.layout.activity_youtube, null);
setContentView(layout);
// Button button1 = new Button(this);
// button1.setLayoutParams(new ConstraintLayout.LayoutParams(360,100));
// button1.setText("Button_Dynamic");
// layout.addView(button1);
YouTubePlayerView playerView = new YouTubePlayerView(this);
playerView.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT ));
layout.addView(playerView);
playerView.initialize(GOOGLE_API_KEY , this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
final int REQUEST_CODE = 1;
if(youTubeInitializationResult.isUserRecoverableError()){
youTubeInitializationResult.getErrorDialog(this , REQUEST_CODE).show();
}
else{
String errorMessage = String.format("There was a error initializing Youtube player (%1$s)" , youTubeInitializationResult.toString());
Toast.makeText(this , errorMessage , Toast.LENGTH_LONG).show();
}
}
}
改变你的onInitializationSuccess()
拥有;
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.setPlayerStateChangeListener(playerStateChangeListener);
youTubePlayer.setPlaybackEventListener(playbackEventListener);
if (!b) {
youTubePlayer.cueVideo(VIDEO_ID);
}
}
然后创建具有 playerStateChangeListener()
和 playbackEventListener()
的方法,如下所示。
private YouTubePlayer.PlayerStateChangeListener playerStateChangeListener = new YouTubePlayer.PlayerStateChangeListener() {
@Override
public void onLoading() {
}
@Override
public void onLoaded(String s) {
}
@Override
public void onAdStarted() {
}
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(YouTubePlayer.ErrorReason errorReason) {
}
};
private YouTubePlayer.PlaybackEventListener playbackEventListener = new YouTubePlayer.PlaybackEventListener() {
@Override
public void onPlaying() {
}
@Override
public void onPaused() {
}
@Override
public void onStopped() {
}
@Override
public void onBuffering(boolean b) {
}
@Override
public void onSeekTo(int i) {
}
};
应该可以。