0

Android 프로그래밍이 생생합니다! YouTube 동영상을 재생할 수있는 팝업보기 (예 : 알림 대화 상자와 유사)를 만들 수 있는지 궁금합니다. 시도했지만 실패했습니다!Android : AlertDialog의 YouTube 동영상

도와 주시겠습니까? 다른 활동에서 YouTube 동영상을 재생하는 방법을 알고 있지만 같은 작업을 수행하는 방법을 알지 못하지만 일종의 경고 대화 상자에서 알 수 있습니다!

모두에게 감사드립니다. 대화 상자의

b1.setOnClickListener(new OnClickListener(){ 

       @Override 
       public void onClick(View v) { 
        //Intent i = new Intent(PaginaRisultati.this, YTActivity.class); 
        final Dialog dialog = new Dialog(PaginaRisultati.this); 

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        dialog.setContentView(R.layout.playerview_demo); 
        YouTubePlayerView youTubeView = (YouTubePlayerView) dialog.findViewById(R.id.youtube_view); 
        OnInitializedListener oil = new YouTubePlayer.OnInitializedListener() { 

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

         } 

         @Override 
         public void onInitializationFailure(Provider provider, 
           YouTubeInitializationResult errorReason) { 
          if (errorReason.isUserRecoverableError()) { 
            errorReason.getErrorDialog(PaginaRisultati.this, RECOVERY_DIALOG_REQUEST).show(); 
           } else { 
            String errorMessage = String.format("ERROR!!", errorReason.toString()); 
            Toast.makeText(PaginaRisultati.this, errorMessage, Toast.LENGTH_LONG).show(); 
           } 

         } 
        }; 
        youTubeView.initialize("MY_APY_KEY", oil); 

        dialog.show(); 

       } 

      }); 

XML 파일 :

M

이 내 코드입니다

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

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

</LinearLayout> 

그리고 이것은 로그 캣에서 오류가 :

06-11 16:57:10.225: E/AndroidRuntime(1872): FATAL EXCEPTION: main 
06-11 16:57:10.225: E/AndroidRuntime(1872): Process: it.sii.android.jobaroundu, PID: 1872 
06-11 16:57:10.225: E/AndroidRuntime(1872): android.view.InflateException: Binary XML file line #28: Error inflating class com.google.android.youtube.player.YouTubePlayerView 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.createView(LayoutInflater.java:620) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.app.Dialog.setContentView(Dialog.java:477) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at it.sii.android.jobaroundu.PaginaRisultati$MyExpandableListAdapter$3.onClick(PaginaRisultati.java:287) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.View.performClick(View.java:4438) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.View$PerformClick.run(View.java:18422) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.os.Handler.handleCallback(Handler.java:733) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.os.Handler.dispatchMessage(Handler.java:95) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.os.Looper.loop(Looper.java:136) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at java.lang.reflect.Method.invoke(Method.java:515) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at dalvik.system.NativeStart.main(Native Method) 
06-11 16:57:10.225: E/AndroidRuntime(1872): Caused by: java.lang.reflect.InvocationTargetException 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at java.lang.reflect.Constructor.constructNative(Native Method) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  ... 19 more 
06-11 16:57:10.225: E/AndroidRuntime(1872): Caused by: java.lang.IllegalStateException: A YouTubePlayerView can only be created with an Activity which extends YouTubeBaseActivity as its context. 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at com.google.android.youtube.player.YouTubePlayerView.<init>(Unknown Source) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  at com.google.android.youtube.player.YouTubePlayerView.<init>(Unknown Source) 
06-11 16:57:10.225: E/AndroidRuntime(1872):  ... 22 more 

답변

1

I 내 활동으로 그 일을 했어. 대화처럼 보입니다. Fragment를 확장하는 클래스의 조각 및 중첩 태그에 youtubeplayer를 표시해야하므로이 솔루션을 사용해야했습니다. Heres는

public class YoutubeDialogActivity extends YouTubeBaseActivity implements 
    YouTubePlayer.OnInitializedListener { 
public static final String API_KEY = "your api kery from google"; 
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.youtube_player_dialog_activity); 
    Bundle bundle = getIntent().getExtras(); 
    VIDEO_ID = bundle.getString("video_id"); 
    youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager() 
      .findFragmentById(R.id.youtubeplayerfragment); 
    youTubePlayerFragment.initialize(API_KEY, this); 
    myPlayerStateChangeListener = new MyPlayerStateChangeListener(); 
    myPlaybackEventListener = new MyPlaybackEventListener(); 
} 

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

@Override 
public void onInitializationSuccess(Provider provider, 
     YouTubePlayer player, boolean wasRestored) { 
    PlayerStyle style = PlayerStyle.MINIMAL; 
    player.setPlayerStyle(style); 
    youTubePlayer = player; 
    youTubePlayer.setPlayerStateChangeListener(myPlayerStateChangeListener); 
    youTubePlayer.setPlaybackEventListener(myPlaybackEventListener); 
    if (!wasRestored) { 
     player.cueVideo(VIDEO_ID); 
    } 
} 
private final class MyPlayerStateChangeListener implements 
     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() { 
    } 
} 
} 

매니페스트 파일의 테마 : :

YouTubePlayerView를이 만 만들 수 있습니다 다음 예외를 충돌하는 것은 preety 자명 당으로

<activity 
     android:name="com.proshore.rwd.activity.YoutubeDialogActivity" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Dialog" > 
    </activity> 

여기 코드는 YouTubeBaseActivity를 컨텍스트로 확장하는 활동입니다.

이것은 내 활동을 대화 상자로 만드는 이유 중 하나이기도합니다.

+0

이 작품! 감사!!!!!! – user3649608

+0

@ user3649608 환영합니다. 내 라이브 앱에 사용 된 것을 알고 있습니다. –

+0

코드를 사용했는데 완벽하게 작동했지만 YouTube 동영상이 매우 어둡습니다 ... 밝게하려면 어떻게해야합니까? 어떤 모바일 또는 플랫폼 버전에 – user3649608