Загрузка видео из ресурсов в веб-просмотр HTML5 - Android - PullRequest
2 голосов
/ 01 марта 2012

Как видно из заголовка, мне нужно загрузить видео (.mp4) из папки ресурсов в WebView. Я попробовал пару вещей:

// First

String webpage = "<!doctype html><head><meta charset='utf-8'></head><body><video id='video' controls='controls' autoplay='autoplay' height=" + m.getHeight() + " width=" + m.getWidth() + "><source src='file:///android_asset/1003/landscape_1003_1_m864.mp4' /></video></body></html>";

wv.loadData(webpage, "text/html", "utf-8");

// Второй

Загрузка той же веб-страницы, но с использованием метода loadUrl ()

wv.loadUrl(webpage);

// Третий

Загрузка точно такой же веб-страницы, но другим способом

wv.loadDataWithBaseURL("file:///android_asset/", webpage,"text/html", "utf-8", null);

Я пытался изменить первый параметр на ноль, также веб-страницу, ...

Все должно быть добавлено динамически (само веб-представление, URL-адрес видео, ширина, высота и т. Д.), Поэтому создание файла XML не вариант.

Многие решения, которые я нашел в Интернете, заключались в перемещении видео в папку Raw или на SD-карту, но это не вариант (деловое решение).

Было бы неплохо, если бы кто-нибудь мог мне помочь.

P.S. Если бы вы могли помочь мне с той же вещью, но показывать видео в видеовиде со всеми элементами управления, такими как элемент видео html5 (воспроизведение, пауза, панель поиска, полноэкранный режим), не стесняйтесь!

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

У меня была такая же проблема. К сожалению, я не нашел решения. Для этого я просто делаю что-то вроде этого:

  • Открыть сайт в веб-просмотре
  • Когда пользователь открывает ссылку, которая заканчивается .mp4 Я открываю новое действие с помощью видеопроигрывателя.
  • Проходной URL
  • Открыть видео

    public void onCreate(Bundle savedInstanceState) 
    {
    super.onCreate(savedInstanceState);
    
    parent = (TabLayout)this.getParent();
            setContentView(R.layout.XXXXXXXXXX);
            l = (ProgressBar)findViewById(R.id.webL);
            Resources res = getResources();
            mWebView = (WebView) findViewById(R.id.webview);
            mWebView.getSettings().setJavaScriptEnabled(true);                
            mWebView.getSettings().setPluginsEnabled(true);
            mWebView.getSettings().setSupportZoom(true);
            mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            mWebView.loadUrl(res.getString(R.string.XXXXXX));   
            mWebView.getSettings().setAllowFileAccess(true);
            mWebView.setWebViewClient(new WebViewClient() 
            {
                @Override
                public void onPageFinished(WebView view, String url)  
                {
                    super.onPageFinished(view, url);
                    l.setVisibility(View.INVISIBLE);                        
                }
    
                @Override
                public void onPageStarted (WebView view, String url, Bitmap favicon)
                {
                    super.onPageStarted(view, url, favicon);
                    l.setVisibility(View.VISIBLE);
                }
    
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) 
                {
                    if (url.endsWith(".mp4") )
                    {                           
                        data.url = url;
                        Intent intent = new Intent(getApplicationContext(), VideoPlayer.class);
                        startActivity(intent);
                        return true;
                    } 
                    else 
                    {
                        return super.shouldOverrideUrlLoading(view, url);
                    }
                }
    
            });
    
    }
    

.. и мой видеоплеер:

public class VideoPlayer extends Activity
{
private VideoView mVideoView;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.video);
    mVideoView = (VideoView) findViewById(R.id.surface_video); 

    mVideoView.setVideoURI(Uri.parse(data.url));
    mVideoView.setMediaController(new MediaController(this));
    mVideoView.requestFocus();
    mVideoView.start();
}
0 голосов
/ 01 марта 2012

Не могли бы вы использовать приведенный ниже код и сообщить, помните ли эта работа, что Android 2.2 будет поддерживать HTML5.

webview.loadDataWithBaseURL("file:///android_asset", 

                        "<video src=\"diagram1.mp4\" />",  mimetype, encoding, null);


 final String mimetype = "text/html";
    final String encoding = "UTF-8";
...