Воспроизвести видео с YouTube во всплывающем окне - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать всплывающее окно, которое, как только оно откроется, будет воспроизводить видео Youtube с выбранным идентификатором видео. Вначале всплывающее окно было успешным, но сразу после того, как я вставил YoutubePlayerView в popwindow. xml и попытался запустить, экран затемняется. Два дня подряд я пробовал все возможные пути в Google, Stack Overflown, но теперь у меня не осталось идей, как это исправить.

Ниже приведен мой макет всплывающего окна xml файл - файл здесь может быть ошибка

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:padding="5dp"
    android:visibility="visible"
    tools:context="com.example.maalarm.finalalarm.MainActivity">
    <view
        android:id="@+id/youtube_player_view"
        class="com.google.android.youtube.player.YouTubePlayerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff" />
</RelativeLayout>

Это мой поп-класс, который генерирует всплывающее окно

package com.example.maalarm.finalalarm;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;

public class Pop extends Activity {

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

        setContentView(R.layout.popwindow);
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        int width = dm.widthPixels;
        int height = dm.heightPixels;

        getWindow().setLayout((int) (width*.8), (int) (height*.6));
    }
}

И ниже строка, которая имеет намерение к поп-классу, который у меня есть в другой класс

else if (choice == 5) {
     startActivity(new Intent(RingtonePlayingService.this, Pop.class));
} 

Наконец, класс, предназначенный для воспроизведения видео на YouTube - очень велика вероятность, что здесь что-то не так

package com.example.maalarm.finalalarm;

import android.os.Bundle;
import android.view.Window;

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.YouTubePlayerFragment;

import static android.provider.MediaStore.Video.Thumbnails.VIDEO_ID;

public class YoutubeDialogActivity extends YouTubeBaseActivity implements
        YouTubePlayer.OnInitializedListener {

    public static final String API_KEY = "AIzaSyAmSLPyRyzoHsHHXsqQYtUqFbdwjyXFuM0";
    public static String VIDEO_ID ;
    private YouTubePlayer youTubePlayer;
    private YouTubePlayerFragment youTubePlayerFragment;
    private static final int RQS_ErrorDialog = 1;
    private MyPlayerStateChangeListener myPlayerStateChangeListener;
    private MyPlaybackEventListener myPlaybackEventListener;
    String log = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.popwindow);
        Bundle bundle = getIntent().getExtras();
        VIDEO_ID = bundle.getString("AcCfvmtIUAQ");
        youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager()
                .findFragmentById(R.id.open_video);
        youTubePlayerFragment.initialize(API_KEY, this);
        myPlayerStateChangeListener = new MyPlayerStateChangeListener();
        myPlaybackEventListener = new MyPlaybackEventListener();
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
        YouTubePlayer.PlayerStyle style = YouTubePlayer.PlayerStyle.MINIMAL;
        player.setPlayerStyle(style);
        youTubePlayer = player;
        youTubePlayer.setPlayerStateChangeListener(myPlayerStateChangeListener);
        youTubePlayer.setPlaybackEventListener((YouTubePlayer.PlaybackEventListener) myPlaybackEventListener);
        if (!wasRestored) {
            player.cueVideo(VIDEO_ID);
        }
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult result) {
        if (result.isUserRecoverableError()) {
            result.getErrorDialog(this, RQS_ErrorDialog).show();
        }
    }

    private final class MyPlayerStateChangeListener implements
            YouTubePlayer.PlayerStateChangeListener {
        @Override
        public void onAdStarted() {
        }
        @Override
        public void onError(
                com.google.android.youtube.player.YouTubePlayer.ErrorReason arg0) {
        }
        @Override
        public void onLoaded(String arg0) {
        }
        @Override
        public void onLoading() {
        }
        @Override
        public void onVideoEnded() {
            finish();
        }
        @Override
        public void onVideoStarted() {
        }
    }

    private class MyPlaybackEventListener {
    }
}

Возможно, ошибка в xml файл, так как я пытался удалить вышеупомянутый класс (YoutubeDialogActivity) и запустить, но cra sh по-прежнему происходит. Не могли бы вы показать мне, как это исправить?

Кроме того, я не думаю, что здесь что-то не так, но ниже мой AndroidManifest. xml

 <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.maalarm.finalalarm">

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

            <receiver android:name=".Alarm_Receiver" />

            <service android:name=".RingtonePlayingService"
                android:enabled="true">
            </service>

            <activity
                android:name=".Pop"
                android:theme="@style/AppTheme.CustomTheme"
                />

        </application>

    </manifest>
...