Soru & Cevap

WebView embed videoları çalıştırma ...

20.11.2014 - 10:08

Merhabalar elimde bir kod var . Bu kod vk.comdan aldığım url leri çalıştırken youtube,mail.ru,odnoklassniki.ru gibi siteleri çalıştırmıyor. Bu sorunu nasıl çözebilirim. (youtube api sayesinde çözdüm.)

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;

public class MyActivity extends Activity {
    private WebView webView;
   // private FrameLayout customViewContainer;
    private WebChromeClient.CustomViewCallback customViewCallback;
    private View mCustomView;
    private myWebChromeClient mWebChromeClient;
    private myWebViewClient mWebViewClient;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       // customViewContainer = (FrameLayout) findViewById(R.id.customViewContainer);
        webView = (WebView) findViewById(R.id.webView);

        mWebViewClient = new myWebViewClient();
        webView.setWebViewClient(mWebViewClient);

        mWebChromeClient = new myWebChromeClient();
        webView.setWebChromeClient(mWebChromeClient);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setAppCacheEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setSaveFormData(true);
        webView.loadUrl("http://my.mail.ru/mail/dizist2/video/_myvideo/433.html");
    }

    public boolean inCustomView() {
        return (mCustomView != null);
    }

    public void hideCustomView() {
        mWebChromeClient.onHideCustomView();
    }

    @Override
    protected void onPause() {
        super.onPause();    //To change body of overridden methods use File | Settings | File Templates.
        webView.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();    //To change body of overridden methods use File | Settings | File Templates.
        webView.onResume();
    }

    @Override
    protected void onStop() {
        super.onStop();    //To change body of overridden methods use File | Settings | File Templates.
        if (inCustomView()) {
            hideCustomView();
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

            if (inCustomView()) {
                hideCustomView();
                return true;
            }

            if ((mCustomView == null) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }

    class myWebChromeClient extends WebChromeClient {
        private Bitmap mDefaultVideoPoster;
        private View mVideoProgressView;

        @Override
        public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
           onShowCustomView(view, callback);    //To change body of overridden methods use File | Settings | File Templates.
        }

        @Override
        public void onShowCustomView(View view,CustomViewCallback callback) {

            // if a view already exists then immediately terminate the new one
            if (mCustomView != null) {
                callback.onCustomViewHidden();
                return;
            }
            mCustomView = view;
            webView.setVisibility(View.GONE);
            //customViewContainer.setVisibility(View.VISIBLE);
            //customViewContainer.addView(view);
            customViewCallback = callback;
        }

       

        @Override
        public void onHideCustomView() {
            super.onHideCustomView();    //To change body of overridden methods use File | Settings | File Templates.
            if (mCustomView == null)
                return;

            webView.setVisibility(View.VISIBLE);
          //  customViewContainer.setVisibility(View.GONE);

            // Hide the custom view.
            mCustomView.setVisibility(View.GONE);

            // Remove the custom view from its container.
            //customViewContainer.removeView(mCustomView);
            customViewCallback.onCustomViewHidden();

            mCustomView = null;
        }
    }

    class myWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return super.shouldOverrideUrlLoading(view, url);    //To change body of overridden methods use File | Settings | File Templates.
        }
    }

}

 

 

26 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-9626-1398797004.jpg
bakiabaci
20.11.2014 - 10:43

Merhaba Oğuzhan,

Videoları çekmek istediğin sitelerin apilerini araştırmanı tavsiye ederim. Uygulamanı apilerin bulunduğu siteye göre sınırlandırman senin avantajına olacaktır. Eğer böyle bir api imkanı yoksa oturup class ve metotları kendin koşturman gerekecek.

İyi çalışmalar..

 

Oğuzhan
20.11.2014 - 11:12
youtube apileri var ama diğer sitelerin destekleri yok bu yuzden o sitelerde bu kodu çalıştırıyorum.Bazılarında çalıssada bazılarında hata veriyor nedense...Peki class ve metodların örnekleri var mı acaba ..bildiğiniz link filan... :) iyi çalışmalar...
Baki Mustafa
21.11.2014 - 05:05
Merhaba Oğuzhan, JS kütüphaneleri araştırmanızı öneririm. Yüzlerce örnek bulabilirsiniz bu konuda. Emek vermeden yazılımda yol almak maalesef yarım proje olarak bize geri dönüyor. İyi çalışmalar.
Oğuzhan
21.11.2014 - 06:49
Emek verip vermediğimi nerden biliyorsunuz ki ! Günlerce uğraşıp sonuç alamadığım için buraya yazdım. Yardımcı olmak istiyrsanız akıl vermeyin oyuzlerce örnekten birkaçının linkini verebilirdiniz...Sizden iyi siyasetçi olur....