2016-07-28 28 views
0

Gibt es eine Möglichkeit, Facebook-Video mit Autoplay in Android zu spielen?Facebook-Video in Android spielen?

Ich bin müde, um WebView zu verwenden, aber es scheint, html5 mobile erlaubt keine automatische Wiedergabe von Video.

WebSettings webSettings = mainWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setMediaPlaybackRequiresUserGesture(false); 
    mainWebView.setWebChromeClient(new WebChromeClient()); 
    mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    mainWebView.loadUrl("https://www.facebook.com/video/embed?video_id=10154623311598812"); 

Antwort

0

Es gibt eine nette Video Player Bibliothek in Android verfügbar.

Es finden Sie hier könnte:

https://github.com/brianwernick/ExoMedia

finden Sie Demo-Code auf dem gleichen zu sehen, wie es zu integrieren.

bitte nicht verwendet es nicht HTML5.

ein Layout definieren sagen activity_video_player wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:EMVideoView="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<com.devbrackets.android.exomedia.EMVideoView 
    android:id="@+id/video_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    EMVideoView:defaultControlsEnabled="true"/> 
</FrameLayout> 

Und ActivityVideoPlayerActivity wie dies sagen:

public class VideoPlayerActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video_player); 
    . 
    . 
    String videoUrl = "url"; 
    mVideoView.setOnPreparedListener(this); 
    mVideoView.setVideoURI(Uri.parse(videoUrl)); 
    } 

@Override 
    public void onPrepared(MediaPlayer mp) { 
     mVideoView.start(); 
    } 

} 

Das ist es. Lass die Magie passieren.

Bitte Up Vote Wenn es nützlich ist.

+0

Danke für die Antwort. Unterstützt es YouTube-Videos und Facebook-Videos? – Weijia

+0

Ja, es ist und es ist zu gut dafür. –

+0

Danke! Ich bin begeistert, das zu versuchen! Aber ich habe einen Fehler auf emVideoView.setOnPreparedListener (this); OnpreparedListener kann nicht auf mainactivity angewendet werden, ich habe implementiert MediaPlayer.OnPreparedListener – Weijia

0

Zuerst Webview verwenden, um VideoID und VideoData (src) zu erhalten, dann VideoData an VideoPlayer zu übergeben und abzuspielen.

webView.setWebViewClient(new WebViewClient() 
    { 

     @Override 
     public void onPageFinished(WebView view, String url) 
     { 

      //query_string = "" + url; 
      //showtoast("URL loaded :"+url); 
      // view.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); 
     } 

     @Override 
     public void onLoadResource(WebView view, String url) 
     { 
      // query_string=""+url; 

      webView.loadUrl("javascript:function PlayVideo(src,id)" + 
        "{" 
        +"FBDownloader.processVideo(src,id);" 
        +"var video=document.getElementById(id);" 
        +"video.play();" 
        +"}" + 
        "(function prepareVideo() " + 
        "{ " 
        + "var el = document.querySelectorAll('div[data-sigil]');" 
        +"var ID;" 
        +"var SRC;" 
        + "for(var i=0;i<el.length; i++)" 
        + "{" 
        + "var sigil = el[i].dataset.sigil;" 
        + "if(sigil.indexOf('inlineVideo') > -1)" + 
        "{" 
        + "delete el[i].dataset.sigil;" 
        + "console.log(i);" 
        + "var jsonData = JSON.parse(el[i].dataset.store);" 
        +"ID=jsonData['videoID'];" 
        +"SRC=jsonData['src'];" 

        // +"document.getElementById(\"'+jsonData['videoID']+'\")[0].play();" 
       // +"var video = document.getElementById(\"'+jsonData['videoID']+'\");" 
        // +"video.play();" 
        // +"FBDownloader.processVideo(ID,SRC);" 
       + "el[i].setAttribute('onClick','PlayVideo(\\\"'+jsonData['src']+'\\\",\\\"'+jsonData['videoID']+'\\\");');"//'document.getElementsByTagName('video')[0].play(); ');" 
       // +"'FBDownloader.processVideo(\"'+jsonData['src']+'\",\"'+jsonData['videoID']+'\");');" 
        // + "el[i].setAttribute('onClick', 'FBDownloader.processVideo(\"'+jsonData['src']+'\",\"'+jsonData['videoID']+'\");');" 
        + "}" 
        + "}" 

        + "})()"); 
      //*/ 

     } 
    }); 


    @JavascriptInterface 
    public void processVideo(final String vidData, final String vidID) 
    { 

    this.vidData=vidData; 
    this.vidID=vidID; 

    //PLAY VIDEO HERE 
    videoView.play(vidId); 

}