2

我为我的应用程序开发了一个 webview HTML 视频播放器。通过使用单个视频标签,我附加了多个视频。所有视频标签字段都设置为默认视频海报但是如果我单击视频标签它不起作用,只需在视频标签中获取加载器。我没有得到任何错误。我在 mainfest 文件中提到了硬件加速和互联网访问。我显然错过了一些明显的东西..但我不知道是什么。谢谢你。

    package com.example.androidtablayout;

import android.app.Activity;
import android.content.Intent;
import android.drm.DrmErrorEvent;
import android.drm.DrmManagerClient;
import android.drm.DrmManagerClient.OnErrorListener;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.Toast;
import android.widget.VideoView;

public class Feed extends index {


    private static final String TAG = null;
    private WebView mWebView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photos_layout);

        WebView webView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setPluginState(WebSettings.PluginState.ON);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setLoadWithOverviewMode(true);
        webView.setWebChromeClient(new chromeClient());
        webView.setWebViewClient(new WebViewClient(){

        });
        webView.loadUrl("file:///android_asset/www/homescreen.html");
    }


        public class chromeClient extends WebChromeClient implements OnCompletionListener,  
        OnErrorListener{
            private WebView wv;
            private VideoView mVideoView;
            private LinearLayout mContentView;
            private FrameLayout mCustomViewContainer;
            private WebChromeClient.CustomViewCallback mCustomViewCallback;
            FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new   
        FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);

            @Override
            public void onShowCustomView(View view, CustomViewCallback callback) {
                if (view instanceof FrameLayout) {
                    wv = (WebView)findViewById(R.id.webview);
                    mCustomViewContainer = (FrameLayout) view;
                    mCustomViewCallback = callback;
                    mContentView = (LinearLayout)findViewById(R.id.linearlayout);
                    if (mCustomViewContainer.getFocusedChild() instanceof VideoView) {
                        mVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
                       // frame.removeView(video);
                        mContentView.setVisibility(View.GONE);
                        mCustomViewContainer.setVisibility(View.VISIBLE);
                        setContentView(mCustomViewContainer);
                        mVideoView.setOnCompletionListener(this);
                        mVideoView.setOnErrorListener((android.media.MediaPlayer.OnErrorListener) this);
                        mVideoView.start();

                    }
                }
            }

            public void onHideCustomView() {
                if (mVideoView == null){
                    return;
                }else{
                // Hide the custom view.
                mVideoView.setVisibility(View.GONE);
                // Remove the custom view from its container.
                mCustomViewContainer.removeView(mVideoView);
                mVideoView = null;
                mCustomViewContainer.setVisibility(View.GONE);
                mCustomViewCallback.onCustomViewHidden();
                // Show the content view.
                mContentView.setVisibility(View.VISIBLE);
                }
            }


            public void onCompletion(MediaPlayer mp) {
                mp.stop();
                mCustomViewContainer.setVisibility(View.GONE);
                onHideCustomView();
                setContentView(mContentView);
            }

            public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
                setContentView(mContentView);
                return true;
            }



            @Override
            public void onError(DrmManagerClient client, DrmErrorEvent event) {
                // TODO Auto-generated method stub

            }


               public void onPrepared(MediaPlayer mp) {

                    mCustomViewCallback.onCustomViewHidden();
                }


        }




    }

我的布局 xml 文件是

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

      <!-- Screen Design for Photos -->



      <WebView  
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
    android:orientation="vertical"/>
          <VideoView
        android:id="@+id/videoView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"  />

    <LinearLayout
          android:id="@+id/linearlayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    </LinearLayout>

Html 视频标签

<video id="example_video_1"  loop="true" width="340" height="264" ><source src="'+item.video_name'+"  /></video></div>
4

0 回答 0