gpt4 book ai didi

android - SurfaceView 上的 YouTubePlayerView(CameraPreview)

转载 作者:行者123 更新时间:2023-11-29 15:44:15 26 4
gpt4 key购买 nike

我的 Activity 有一个 YouTubePlayerView,它必须显示在 SurfaceView(相机预览)上。

但是,由于 YouTubePlayerView 的视频 View 也使用了 SurfaceView,因此不会显示 Youtube 视频。控件和播放按钮是可见的,您可以在播放视频时听到音频,当它停止时,它的缩略图是可见的。

据我所知,处理这种情况的正确方法是使用 setZOrderMediaOverlay。我能够通过相机预览使用常规 VideoView 使其正常工作。但是,如何在 YouTubePlayerView 中使用 setZOrderMediaOverlay?

这个问题有解决办法吗?

下面是代码的精简版:

package com.moahh.yc;

import android.os.Bundle;
import android.widget.RelativeLayout;

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 CameraActivity extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener {

private CameraPreview cameraPreview;
private YouTubePlayerView youTubePlayerView;
private final String videoId = "jNQXAC9IVRw";

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

final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relative_layout);
cameraPreview = new CameraPreview(this);
relativeLayout.addView(cameraPreview);

youTubePlayerView = new YouTubePlayerView(this);
relativeLayout.addView(youTubePlayerView);

youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this);
}

@Override
protected void onResume() {
super.onResume();
cameraPreview.onResume();
}

@Override
protected void onPause() {
super.onPause();
cameraPreview.onPause();
}

@Override
protected void onDestroy() {
super.onDestroy();
cameraPreview.onDestroy();
}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer youTubePlayer, boolean restored) {
if (restored) {
youTubePlayer.play();
} else {
youTubePlayer.loadVideo(videoId);
youTubePlayer.setShowFullscreenButton(false);
}
}

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

而 Activity 的布局只是一个RelativeLayout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>

最佳答案

我遇到了同样的问题,我解决了在 PlayerStateChangeListener 调用 onVideoStarted 时添加 View 的问题。

youTubePlayerView.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {

@Override
public void onVideoStarted() {
cameraPreview = new CameraPreview(this);
relativeLayout.addView(cameraPreview);
}
[...]
});

关于android - SurfaceView 上的 YouTubePlayerView(CameraPreview),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35281625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com