2016-07-28 103 views
0

有沒有什麼辦法可以在Android中使用自動播放播放facebook視頻?在Android中播放Facebook視頻?

我厭倦了使用WebView,但它似乎html5手機不允許自動播放視頻。

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"); 

回答

0

在android中有一個不錯的Video Player庫可用。

它可以在這裏找到:

https://github.com/brianwernick/ExoMedia

請參閱在同一演示代碼,看看如何整合它。

請不要使用HTML5

定義佈局說activity_video_player這樣的:

<?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> 

而且ActivityVideoPlayerActivity這樣的:

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(); 
    } 

} 

就是這樣。讓魔法發生。

請投票如果它有用。

+0

感謝您的回覆。它支持YouTube視頻和Facebook視頻嗎? – Weijia

+0

是的,它太好了。 –

+0

謝謝!我很高興嘗試這個!但我有錯誤emVideoView.setOnPreparedListener(this); OnPreparedListener canot可以應用於mainactivity,我在使用com.devbrackets.android.exomedia.listener.OnPreparedListener之後使用了實現MediaPlayer.OnPreparedListener – Weijia

0

首先使用Webview獲取VideoID和VideoData(src),然後將VideoData傳遞給VideoPlayer並播放它。

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); 

}