Как использовать API YouTube Player Player с AppCompatActivity - PullRequest
0 голосов
/ 24 июня 2018

Чтобы воспроизвести видео в своем приложении, я решил использовать API YouTube Player Player. Но проблема в том, что мое меню исчезло, потому что я не расширяю AppCompatActivity. Вопрос в том, как использовать API YouTube Player Player и иметь меню в приложении?

public class TutorialsActivity extends YouTubeBaseActivity {

private YouTubePlayerView youTubePlayerView;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.youtube);

    youTubePlayerView = (YouTubePlayerView) findViewById(R.id.video1);
    youTubePlayerView.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
            youTubePlayer.loadVideo("c9q88492aas");
            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
        }

        @Override
        public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

        }
    });
}

XML

    <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/video1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

Когда я расширяюсь от AppCompatActivity, он просто выдает мне ошибку.

Журнал ошибок:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hyber.app/com.hyber.app.TutorialsActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class com.google.android.youtube.player.YouTubePlayerView

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Используйте YouTubePlayerFragment вместо использования YouTubePlayerView.Как сказано в документе: - YouTubePlayerFragment - это фрагмент, который содержит YouTubePlayerView.Использование этого фрагмента является предпочтительным способом воспроизведения видео на YouTube, поскольку вашей активности не нужно расширять активность, предоставляемую библиотекой, как в случае использования YouTubePlayerView напрямую.

Найти больше информации здесь

Код активности: -

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerFragment;

public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener {

    private static final int RECOVERY_DIALOG_REQUEST = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        YouTubePlayerFragment youTubePlayerFragment =
                (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);
        youTubePlayerFragment.initialize("api key",
                this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
        if (!wasRestored) {
            youTubePlayer.cueVideo("nCgQDjiotG0");
        }
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
        if (youTubeInitializationResult.isUserRecoverableError()) {
            youTubeInitializationResult.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
        } else {
            String errorMessage = String.format("There was an error initializing the YouTubePlayer (%1$s)", youTubeInitializationResult.toString());
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
        }
    }


}

Расположение: -

<fragment
        android:id="@+id/youtube_fragment"
        android:name="com.google.android.youtube.player.YouTubePlayerFragment"
        android:layout_width="0dp"
        android:layout_height="300dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
0 голосов
/ 27 июня 2018

Используйте App AppCompatDelegate ,

, например:

1) Добавьте AppCompatDelegate в свою деятельность

public class MainActivity extends Activity implements AppCompatCallback {

    @Override
    public void onSupportActionModeStarted(ActionMode mode) {
      //let's leave this empty, for now
    }

    @Override
    public void onSupportActionModeFinished(ActionMode mode) {   
      // let's leave this empty, for now
    }

Затем вonCreate () нашей Деятельности:

i) Создайте AppCompatDelegate с AppCompatDelegate.create ()

ii) Вызовите AppCompatDelegate.onCreate () (Существуют некоторые методы жизненного цикла Activity, которые следует проксировать вделегат)

iii) надуть макет с помощью AppCompatDelegate.setContentView ()

iv) добавить панель инструментов в делегат с помощью AppCompatDelegate.setSupportActionbar ()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //let's create the delegate, passing the activity at both arguments (Activity, AppCompatCallback)
    delegate = AppCompatDelegate.create(this, this);

    //we need to call the onCreate() of the AppCompatDelegate
    delegate.onCreate(savedInstanceState);

    //we use the delegate to inflate the layout
    delegate.setContentView(R.layout.activity_main);

    //Finally, let's add the Toolbar
    Toolbar toolbar= (Toolbar) findViewById(R.id.my_awesome_toolbar);
    delegate.setSupportActionBar(toolbar);
}

дляподробнее,

https://medium.com/google-developer-experts/how-to-add-toolbar-to-an-activity-which-doesn-t-extend-appcompatactivity-a07c026717b3

Надеюсь, что это может помочь вам.

...