Je souhaite lire l'url de la vidéo dans l'application Webview, mais lorsque l'application est affichée, elle affiche uniquement un écran blanc. J'avais lu quelques articles à ce sujet et j'avais utilisé ce code, mais la vidéo ne se lisait pas dans WebView. lecteur de périphérique, mais mon exigence pas cela.
aidez-moi s'il vous plaît si quelqu'un a déjà fait ceci. mon code est ici: -
WebView webView = (WebView) findViewById(R.id.myweb);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setAllowFileAccess(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
setProgressBarIndeterminateVisibility(false);
super.onPageFinished(view, url);
}
});
webView.loadUrl("http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4");
webView.setVisibility(View.VISIBLE);
L'URL de test fonctionne dans le navigateur.
WebView webview = (WebView) findViewById(R.id.webView1);
webview.setWebViewClient(new WebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setPluginState(WebSettings.PluginState.ON);
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
webview.setWebChromeClient(new WebChromeClient());
webview.loadUrl("https://www.youtube.com");
<application Android:allowBackup="true" Android:hardwareAccelerated="true" Android:icon="@drawable/ic_launcher" Android:label="@string/app_name" Android:theme="@style/AppTheme" > <activity Android:name=".MainActivity" Android:label="@string/app_name" > <intent-filter> <action Android:name="Android.intent.action.MAIN" /> <category Android:name="Android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Ajoutez webview.setWebChromeClient(new WebChromeClient());
et pour activer les plugins pour votre vidéo, ajoutez:
if (Build.VERSION.SDK_INT < 8) {
webview.getSettings().setPluginsEnabled(true);
}
else {
webview.getSettings().setPluginState(PluginState.ON);
}
J'espère que cela t'aides.
Vous devez charger un document HTML incorporant la vidéo à la place de la vidéo directement. Pour lire une vidéo en ligne dans WebView à l'aide de la balise <video>
, vous devez également vous assurer que l'accélération matérielle est activée dans votre application (voir http://developer.Android.com/guide/topics/graphics/hardware-accel.html ). .
Je sais que c’est un vieux problème, j’ai eu le même problème il ya quelques jours et en surfant sur Internet, j’ai trouvé cette source complète qui m’a beaucoup aidé, et maintenant je veux partager avec d’autres, peut-être que je pourrais en aider d’autres comme moi ..
Si vous essayez d'autres ne répondent pas au travail, vous pouvez peut-être essayer ceci:
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.Lollipop){
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
Je me suis aussi retrouvé coincé avec ce problème. J'ai eu une réponse correcte du serveur, mais je n'ai pas pu lire la vidéo. Après longtemps, j'ai trouvé une solution ici . Peut-être qu'à l'avenir ce lien sera invalide. Alors, voici mon code correct
Uri video = Uri.parse("Your link should be in this place ");
mVideoView.setVideoURI(video);
mVideoView.setZOrderOnTop(true); //Very important line, add it to Your code
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// here write another part of code, which provides starting the video
}}
Essaye ça.
{
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setMinimumFontSize(10);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setBuiltInZoomControls(true);
settings.setDisplayZoomControls(false);
webView.setVerticalScrollBarEnabled(false);
webView.loadDataWithBaseURL(null, vUrl, "text/html", "UTF-8", null);
}
C'est peut-être une vieille question, mais cela fonctionne:
//Here Im loading the html file from disk
String html_file = LoadData(file.getAbsolutePath());
WebView myWebView = (WebView) view.findViewById(R.id.webView);
myWebView.reload();
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadData(html_file, "text/html; charset="utf-8", "UTF-8");
Utilisez des données vidéo codées en base64 comme source video
:
//html_file
<video controls>
<source type="video/mp4" src="data:video/webm;base64,MY_BASE64_ENCODED VIDEO_HERE">
</video>
Non, vous ne pouvez pas lire la vidéo par lien dans ce cas. Pour ce faire, vous devez créer une connexionRTSPafin que vous puissiez lire la vidéo via une URL RTSP dans Webview
. Vous pouvez récupérer une connexion RTSP à partir d'un serveur tel que Youtube.