В доступе к API плеера YouTube отказано в поиске свойства

#java #android #android-studio #youtube-api #youtube-data-api

#java #Android #android-studio #youtube-api #youtube-data-api

Вопрос:

Я пытаюсь создать простое приложение youtubeplayer для Android, после запуска моего кода на моем физическом устройстве приложение запускается успешно, но видео остается в режиме загрузки, Когда я проверил свой 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.YouTubeInitializationResu<
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();
        }

    }
}
  

Комментарии:

1. Предоставили ли вы разрешения на доступ в Интернет в манифесте Android?

2. Конечно, я это сделал

3. Я добавил ответ. Проверьте, это поможет вам.

Ответ №1:

Измените свой 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) {

        }
    };
  

Должно сработать.