요번에 웹뷰를 사용하여 비디오를 돌리는 프로그램을 개발중입니다.


웹뷰 수정해서 비디오 돌리는것까지는 완료했는데 


비디오가 한번만 돌아가고 두번째 돌리면 재생이 안되네요.



영상을 끝까지 다 보면 비디오창이 꺼지고 그 이후에 다시 재생버튼을 누르면 다시 재생이 됩니다.


그런데 영상 중간에 끊고나서 다시 재생을 하려고 하면 재생이 안되네요. 버튼은 눌리는데 재생이 안됩니다. 


이게 jsp 문제인가 싶어서 건드려봤는데, 재생 될 때랑 재생되지 않을때의 비디오의 readystate나 networkstate가 똑같더군요.



비디오 자체의 문제는 아닌거같고 웹뷰쪽에서 건드려야하나.. 하는데 잘 모르겠네요. 


구글링을 해도 비슷한 질문은 있는데 답변이 없네요.

 public class HTML5WebView extends WebView {
private Context        mContext;
private MyWebChromeClient     mWebChromeClient;
private View        mCustomView;
private FrameLayout       mCustomViewContainer;
private WebChromeClient.CustomViewCallback  mCustomViewCallback;
private FrameLayout       mContentView;
private FrameLayout       mBrowserFrameLayout;
private FrameLayout       mLayout;
static final String LOGTAG = "HTML5WebView";
private void init(Context context) {
    mContext = context;  
    Activity a = (Activity) mContext;
    mLayout = new FrameLayout(context);
    
    mBrowserFrameLayout = (FrameLayout) LayoutInflater.from(a).inflate(R.layout.custom_screen, null);
    mContentView = (FrameLayout) mBrowserFrameLayout.findViewById(R.id.main_content);
    mCustomViewContainer = (FrameLayout) mBrowserFrameLayout.findViewById(R.id.fullscreen_custom_content);

    mLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS);

    mWebChromeClient = new MyWebChromeClient();
    setWebChromeClient(mWebChromeClient);

    setWebViewClient(new MyWebViewClient());
    // Configure the webview
    WebSettings s = getSettings();
 //   s.setBuiltInZoomControls(true);
    s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
 //   s.setUseWideViewPort(true);
    s.setLoadWithOverviewMode(true);
    s.setSavePassword(true);
    s.setSaveFormData(true);
    s.setJavaScriptEnabled(true);
    s.setAllowFileAccess(true);
    s.setPluginsEnabled(true);
    mContentView.addView(this);
}

public HTML5WebView(Context context) {
    super(context);
    init(context);
}
public HTML5WebView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}
public HTML5WebView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}
public FrameLayout getLayout() {
    return mLayout;
}
public boolean inCustomView() {
    return (mCustomView != null);
}
public void hideCustomView() {
    mWebChromeClient.onHideCustomView();
}

private class MyWebChromeClient extends WebChromeClient {
    private Bitmap   mDefaultVideoPoster;
    private View   mVideoProgressView;
    @Override
    public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)
    {
        //Log.i(LOGTAG, "here in on ShowCustomView");
        HTML5WebView.this.setVisibility(View.GONE);

       // if a view already exists then immediately terminate the new one
        if (mCustomView != null) {
            callback.onCustomViewHidden();
            return;
        }
        mCustomViewContainer.addView(view);
        mCustomView = view;
        mCustomViewCallback = callback;
        mCustomViewContainer.setVisibility(View.VISIBLE);
    }
    @Override
    public void onHideCustomView() {
       if (mCustomView == null)
            return;        
       // Hide the custom view.
        mCustomView.setVisibility(View.GONE);
       // Remove the custom view from its container.
        mCustomViewContainer.removeView(mCustomView);
        mCustomView = null;
        mCustomViewContainer.setVisibility(View.GONE);
        mCustomViewCallback.onCustomViewHidden();
        HTML5WebView.this.setVisibility(View.VISIBLE);
        //Log.i(LOGTAG, "set it to webVew");
    }
    @Override
    public Bitmap getDefaultVideoPoster() {
        //Log.i(LOGTAG, "here in on getDefaultVideoPoster"); 
        if (mDefaultVideoPoster == null) {
            mDefaultVideoPoster = BitmapFactory.decodeResource
                                         (
                                                 getResources(), R.drawable.icon);
                        }
        return mDefaultVideoPoster;
    }
    @Override
    public View getVideoLoadingProgressView() {
        //Log.i(LOGTAG, "here in on getVideoLoadingPregressView");
        if (mVideoProgressView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            mVideoProgressView = inflater.inflate(R.layout.video_loading_progress, null);
        }
        return mVideoProgressView; 
    }
    @Override
    public void onReceivedTitle(WebView view, String title) {
        ((Activity) mContext).setTitle(title);
    }
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        ((Activity) mContext).getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);
    }
}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i(LOGTAG, "shouldOverrideUrlLoading: "+url);
        view.loadUrl("url);
        return true;
    }
    }

    static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS =
        new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 
                ViewGroup.LayoutParams.MATCH_PARENT);
}