2

ポップアップ フレームが表示されるよりも、ユーザーが Web ビューのビデオ リンクをクリックしたときにポップアップ フレームを表示し、そのフレーム レイアウト ビデオ サーフェスに SD カードからビデオを再生し、ビデオ終了後にフレーム レイアウトが自動的に閉じられ、Web ビューが再び表示されます。私はグーグルで検索し、スタックオーバーフローにはいくつかの助けがありますが、コードを書くためのテクニックがわかりません。どうすればポップアップフレームレイアウトを表示でき、どうすればウェブビューを表示できるかという混乱があります。

現在、私は拡張機能をチェックしており、ビデオ拡張機能が見つかった場合は、メディア プレーヤーの意図を起動します。しかし、私はそれを望んでいません。Web ビュー内で再生する必要がありますが、ポップアップのようなビデオ サーフェスで再生する必要があります。

これが私のコードで、私のレイアウトファイルにはwebviewのみが含まれており、アセットフォルダーからhtmlをロードしており、sdカードからビデオを再生しています..

どんな助けでも大歓迎です

    setContentView(R.layout.activity_main);        
    WebView webView = (WebView) findViewById(R.id.webview);
    String html = "<embed src=\"file:///android_asset/" + "test.html" + " \"play=\"true\" loop=\"true\" width=\"100%\" height=\"100%\"> <embed>";
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", null);

    WebViewClient webViewClient = new WebViewClient();
    webView.setWebViewClient(webViewClient);
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
        }
        @Override
        public void onLoadResource(WebView view, String url) {
              if (url.endsWith(".m4v")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri
                        .parse(url));
                intent.setDataAndType(Uri.parse(url), "video/*");
                view.getContext().startActivity(intent);
            }
            else
            {
                super.onLoadResource(view, url);
            }
        }
    });}
    }

ここにHTMlファイルがあります

<html lang="en">
<head>
<meta charset=utf-8>
<title>Sample HTML5 Structure</title> 
<SCRIPT LANGUAGE="JavaScript">
function playvideo(url){
window.location=url;
 }
 </SCRIPT>
</head>
 <body>
<video src="file:///sdcard/kummar.m4v" width="300"      onclick="playvideo('file:///sdcard/ku<p>testing of video element.</p>
  </video>
  </body>
  </html>
4

1 に答える 1

0

このためのカスタムダイアログを試してください

    Dialog mVideoDialog ;
VideoView mVideoFullScreen;
 MediaController controller;

increate メソッドにこれを追加します

     mVideoDialog = new Dialog(this);
    mVideoDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    mVideoDialog.setContentView(R.layout.dialog);
    mVideoDialog.setOnKeyListener(this);
    mVideoFullScreen = (VideoView) mVideoDialog.findViewById(R.id.videoview1);
    controller = new MediaController(this);
    HelloWebViewClient webViewClient = new HelloWebViewClient();
    webView.setWebViewClient(webViewClient);
     }

 private class HelloWebViewClient extends WebViewClient
{ 
 @Override public boolean shouldOverrideUrlLoading(WebView view, String url)
 {

     if (url.contentEquals("file:///android_asset/01")) {
         showVideo(01); //check user click url from webview and pass int
     }
     else if (url.contentEquals("file:///android_asset/02"))
     {
        showVideo(02);//pass int to determine which video to play
     }
     else
     {
     System.out.println("DDD URL: "+url.toString()); view.loadUrl(url);  
     }
     return true;       
     }

これは showVideo メソッドです

public void showVideo(int i) {
    // TODO Auto-generated method stub
    if(i==01)
    {
     mVideoDialog.show();
     mVideoFullScreen.setVideoPath("file:///sdcard/video file name.m4v");
     controller.setMediaPlayer(mVideoFullScreen);
     mVideoFullScreen.setMediaController(controller);
     mVideoFullScreen.requestFocus();
     mVideoFullScreen.start();
    }else
    {  } }
于 2013-02-25T12:43:50.247 に答える