Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Fire TV中播放youtube视频的问题_Android_Video_Youtube_Amazon Fire Tv - Fatal编程技术网

Android 在Fire TV中播放youtube视频的问题

Android 在Fire TV中播放youtube视频的问题,android,video,youtube,amazon-fire-tv,Android,Video,Youtube,Amazon Fire Tv,我正在开发一个从后端获取youtube视频id的应用程序,它应该在没有用户干预的情况下自动播放队列中的视频。但这些都是我在不同方法中面临的挑战 使用Youtube API:-FireTV不支持此操作,并且我的应用程序未在亚马逊商店获得批准 使用Webview:- 当我使用视频URL作为“https://www.youtube.com/watch?v=ajMpIN6BvQE“youtube视频将自动开始播放。但我看到了视频中的推荐,无法自动删除这些推荐 当我使用视频URL作为“https:

我正在开发一个从后端获取youtube视频id的应用程序,它应该在没有用户干预的情况下自动播放队列中的视频。但这些都是我在不同方法中面临的挑战

  • 使用Youtube API:-FireTV不支持此操作,并且我的应用程序未在亚马逊商店获得批准

  • 使用Webview:-

    • 当我使用视频URL作为“https://www.youtube.com/watch?v=ajMpIN6BvQE“youtube视频将自动开始播放。但我看到了视频中的推荐,无法自动删除这些推荐

    • 当我使用视频URL作为“https://www.youtube-nocookie.com/embed/ajMpIN6BvQE“它停止显示推荐,但这里的挑战是我无法自动播放视频。它强制用户显式单击播放按钮。下面是我使用的代码

      import android.app.Activity;
      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;
      import android.os.Bundle;
      import android.view.View;
      import android.webkit.WebChromeClient;
      import android.webkit.WebSettings;
      import android.webkit.WebView;
      import android.webkit.WebViewClient;
      import android.widget.FrameLayout;
      
      public class WebViewActivity extends Activity {
        WebView webView;
        WebChromeClient.CustomViewCallback customViewCallback;
      @SuppressLint("SetJavaScriptEnabled")
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
        webView = findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient());
        ChromeClient chromeClient = new ChromeClient();
        webView.setWebChromeClient(chromeClient);
      
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAppCacheEnabled(true);
      
      
        // webView.loadUrl("https://www.youtube-nocookie.com/embed/ajMpIN6BvQE");
        webView.loadUrl("https://www.youtube.com/watch?v=ajMpIN6BvQE");
        webSettings.setMediaPlaybackRequiresUserGesture(false);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
      
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
      
            }
        });
      }
      
      @Override
      public void onPause() {
        webView.onPause();
        super.onPause();
      }
      
      @Override
      public void onDestroy() {
        webView.destroy();
        super.onDestroy();
      }
      
      @Override
      public void onStop() {
        super.onStop();
      }
      
      @Override
      protected void onRestart() {
        super.onRestart();
      }
      
      public void onBackPressed() {
        webView.stopLoading();
        finish();
      }
      
      @Override
      protected void onStart() {
        super.onStart();
      }
      
      public class ChromeClient extends WebChromeClient {
        protected FrameLayout mFullscreenContainer;
        private View mCustomView;
        private WebChromeClient.CustomViewCallback mCustomViewCallback;
        private int mOriginalOrientation;
        private int mOriginalSystemUiVisibility;
      
        ChromeClient() {
        }
      
        public Bitmap getDefaultVideoPoster() {
            if (mCustomView == null) {
                return null;
            }
            return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
        }
      
        @Override
        public void onHideCustomView() {
            ((FrameLayout) getWindow().getDecorView()).removeView(this.mCustomView);
            this.mCustomView = null;
            getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
            setRequestedOrientation(this.mOriginalOrientation);
            this.mCustomViewCallback.onCustomViewHidden();
            this.mCustomViewCallback = null;
        }
      
        @Override
        public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
            if (this.mCustomView != null) {
                onHideCustomView();
                return;
            }
            this.mCustomView = paramView;
            this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
            this.mOriginalOrientation = getRequestedOrientation();
            this.mCustomViewCallback = paramCustomViewCallback;
            ((FrameLayout) getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
            getWindow().getDecorView().setSystemUiVisibility(3846 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }
      
      }}
      

    我能够通过以下方式实现解决方案:。添加了Javascript代码并启用了Java脚本与本机android之间的交互