使用地图 API,我可以在清单中声明我的密钥:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AlOtOfNumBersAndLetters123" />
Run Code Online (Sandbox Code Playgroud)
但在 Youtube API 中,我必须以编程方式(AFAIK):
String API_KEY = "AlOtOfNumBersAndLetters123";
youTubePlayerFragment.initialize(API_KEY, myOnInitializedListener);
Run Code Online (Sandbox Code Playgroud)
我该如何使用 Youtube API 清单中声明的密钥?
我AppCompatActivity使用主题扩展来扩展活动Theme.AppCompat.Light.DarkActionBar.此活动的视图是包含以下视图LinearLayout的VERTICAL方向:
一个FrameLayout包含一个YouTubePlayerSupportFragment.请注意,我YouTubePlayer在初始化成功时调用了以下方法:
setPlayerStyle(PlayerStyle.CHROMELESS)
addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT)
Run Code Online (Sandbox Code Playgroud)
我还设置了一个onClickListener玩家视图,应该隐藏并显示ActionBar按需.
另一个包含视频细节和内容的视图
请注意,活动调用supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY)并且LinearLayout具有顶部填充android.support.v7.appcompat.R.attr.actionBarSize.
在AndroidManifest.xml,活动已经android:configChanges="orientation|screenSize"设定.
在activity的onConfigurationChanged方法中,我正在检查屏幕方向.如果它是风景,我"全屏",如果它是肖像,我将回到正常的布局.
通过"全屏",我的意思是:
visibility到View.GONEsupportActionBar背景颜色设置为某种透明色0x55000000getWindow().getDecorView().systemUiVisibility为View.SYSTEM_UI_FLAG_FULLSCREENLayoutParams,同时设置width和height到MATCH_PARENTsetFullscreen(true)给YouTubePlayer现在,当我在我的应用程序中时,一切都在纵向模式下运行:视频播放,播放器正确放置在正下方ActionBar.当进入横向模式时,它会按预期继续工作:除了玩家(甚至是玩家ActionBar)之外,一切都会消失.然后我点击现在的全屏YouTube播放器.
预期的结果是ActionBar显示,而不会中断播放.
实际结果是系统状态栏和ActionBar都显示,并且播放因以下错误而中断:
由于未经授权覆盖播放器,YouTube视频播放停止.YouTubePlayer视图被android.support.v7.widget.ActionBarContainer {43744840 V.ED .... ........ 0,50-1280,162#7f0d005b …
YouTube Android 播放器 API SDK 已完全弃用。YouTube 不再支持或维护它。因此需要在Android中实现YouTube IFrame Player API。
播放 YouTube 视频时,显示“初始化 YouTube 播放器时出错”消息。
kotlin android-youtube-api youtube-iframe-api youtubeplayer android-jetpack-compose
我正在使用Android YouTube API以纵向模式显示视频.在播放视频并将设备转换为横向模式时,视频将从现场停止但重新缓冲.我正在寻找一个解决方案,以避免重新缓冲.
我知道它可能是事实,因为谷歌在这里提供了一个例子,它完美无瑕地工作,除了我似乎无法使它与我的应用程序一起工作.我不确定要覆盖哪些函数以及哪些函数实际上删除了重新缓冲.
编辑:这是ListView中单元格的完整xml; 在最后一个TextView之后以编程方式添加YouTubePlayerView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/youtube_ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_shape"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/header_background"
android:weightSum="2" >
<TextView
android:id="@+id/youtube_username_tv"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="top|left"
android:paddingLeft="15dp"
android:paddingTop="8dp"
android:paddingBottom="5dp"
android:textColor="@android:color/darker_gray"
android:textSize="13sp" />
<TextView
android:id="@+id/youtube_when_tv"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="top|right"
android:paddingRight="15dp"
android:paddingTop="8dp"
android:paddingBottom="5dp"
android:textColor="@android:color/darker_gray"
android:textSize="13sp" />
</LinearLayout>
<TextView
android:id="@+id/youtube_content_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:paddingRight="17dp"
android:paddingTop="8dp"
android:paddingBottom="15dp"
android:textSize="15sp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我知道在java中你需要覆盖"onConfigurationChanged(Configuration newConfig)",也许还有"onFullscreen(boolean isFullscreen)",但你究竟是如何在没有重新缓冲的情况下"增长"youtube视图?我尝试使用全屏示例中的代码,但它似乎不适合我.这是玩家本身:
public class YouTubeParser extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener, YouTubePlayer.PlayerStateChangeListener, YouTubePlayer.OnFullscreenListener {
private static final int …Run Code Online (Sandbox Code Playgroud) 因此,在我的片段中,我将以下代码用于处理listview的onclickitem
ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ChannelItem c = (ChannelItem) parent.getAdapter().getItem(position);
Intent myIntent = new Intent(getActivity().getBaseContext(), PlayerViewActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getActivity().getBaseContext().startActivity(myIntent);
}
});
Run Code Online (Sandbox Code Playgroud)
我知道这不是最干净的代码,我打算重新格式化它.但它暂时有效(我在使用YoutubeBaseActivity之前使用测试活动对其进行了测试).只是为了澄清这段代码没有问题,但它是为了说明我正在遵循的流程.
因此,当youtube活动开始时,它将执行以下类
public class PlayerViewActivity extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener {
static private final String VIDEO = "4SK0cUNMnMM";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.youtube_player);
YouTubePlayerView youTubeView = (YouTubePlayerView)
findViewById(R.id.youtube_view);
youTubeView.initialize(Api.DEV_KEY, this);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult error) {
Toast.makeText(this, "Oh no! "+error.toString(),
Toast.LENGTH_LONG).show();
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我正在创造YouTubePlayerSupportFragment.在肖像模式下播放工作正常.一旦我单击播放器的全屏按钮,它就会强制更改方向并重新创建我所处的活动(视频停止播放并重新创建片段).
这就是我创建片段的方式:
fragment = (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
fragment.initialize(Config.YOUTUBE_API_KEY, this);
Run Code Online (Sandbox Code Playgroud)
我发现StackOverflow上唯一类似的问题是这个问题:YouTubePlayerSupportFragment启动重复的Activity
这家伙有同样的问题但到目前为止还没有答案.
我正在做一个项目.我正在使用YouTubeAndroidPlayerAPI并Webview参与我的活动.当我尝试运行带有id的视频时,它会运行.问题是但是如果视频id为null,那么我没有像代码中所解释的那样运行或初始化视频,那么它给了我以下logcat输出,并且我的应用程序因为给出消息而崩溃"Unfortunately You tube has stopped".任何人都可以帮助我,因为我做了很多搜索但找不到任何解决方案.我的活动延伸SherlockYouTubeActivity.该SherlockYouTubeActivity包含SherlockActivity代码,但inspite的Activty它扩展了YouTubeBaseActivity.因此,通过这样做,我已经扩展了SherlockActivity和YouTubeBaseActivity我的活动Multilevel Inheritance.
我LogCat Output是如下: -
09-09 18:41:18.201: E/AndroidRuntime(25534): FATAL EXCEPTION: main
09-09 18:41:18.201: E/AndroidRuntime(25534): java.lang.IllegalStateException: android.os.DeadObjectException
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.K(SourceFile:229)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.apps.youtube.api.jar.a.a.a(SourceFile:62)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.apps.youtube.api.jar.a.s.b(SourceFile:945)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.apps.youtube.api.jar.y.a(SourceFile:180)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.apps.youtube.api.jar.a.a.k(SourceFile:576)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.e(SourceFile:51)
09-09 18:41:18.201: E/AndroidRuntime(25534): at com.google.android.youtube.api.jar.client.c.run(SourceFile:715)
09-09 18:41:18.201: E/AndroidRuntime(25534): …Run Code Online (Sandbox Code Playgroud) 我已实现youtubeThumnailView,没有任何问题。
目前,我的缩略图视图在Android手机上如下所示:

但是我如何在像这样的缩略图视图上添加播放按钮https://lh4.googleusercontent.com/-c06CilFxXA8/TW3qUN4WTBI/AAAAAAAAAIU/6UaNpVuAt5w/s1600/webView+with+play+button.png
我试图在我的应用程序中集成Youtube播放器api.但是,当我切换到全屏时,会出现一些问题:
公共类YouTubeVideoElement extends Element实现了YouTubePlayer.OnInitializedListener {
private final String DEVELOPER_KEY = "MY_KEY";
private static final int RECOVERY_DIALOG_REQUEST = 1;
private RelativeLayout.LayoutParams layoutParams;
private YouTubePlayerFragment playerFragment;
private View playerView;
private ViewGroup viewFrame;
public State state;
private Dialog errorDialog;
private Context context;
public YouTubeVideoElement(Context context) {
this.context = context;
}
@Override
public String getType() {
return null;
}
@Override
public ViewGroup getView() {
return viewFrame;
}
@Override
public ViewGroup populateView(Context context, JsonObject data, Map<String, String> style) {
viewFrame = new FrameLayout(context); …Run Code Online (Sandbox Code Playgroud) 应用提交后,我收到消息“我的应用提交因违反设备和网络滥用政策而被拒绝。在提交您的应用以供再次审核之前,请通读该政策并修改您的应用,以确保它不会下载、获利或以违反 YouTube 服务条款的方式访问 YouTube 视频。”
在那个应用程序中,我只是用 youtube 视频播放器播放 youtube 视频。建议我如何成功发布此应用程序。