こんばんは。XBGです。
>発生するonShowCustomView内でurlを取得し、youtubeのvideoidなどを利用してhttp getをして
そのonShowCustomView内でビデオ表示を直接実装してしまえば手っ取り早いと思いますが。
まず、親Activityでこんな感じにメソッドを実装しておきます。
public void showVideo(View view) {
/*
あらかじめWebViewを配置するFrame(browserFrame)と
ビデオ再生を行うvideoFrameをレイアウトに設置しておき
これらの表示状態を切り替えることでビデオ再生に移行しています。
あとはこれをWebChromeClient#onShowCustomView()から
呼び出せば、ビデオ再生を実現できます。
*/
ViewGroup mainFrame = (ViewGroup)findViewById(R.id.videoFrame);
mainFrame.addView(view);
mainFrame.setVisibility(View.VISIBLE);
findViewById(R.id.browserFrame).setVisibility(View.GONE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
fullFlag = true;//ビデオ再生中であることを記憶しておく
videoView = view;//ビデオ再生のためのVideoViewをフィールドに代入しておく
}
public void hideVideo() {
/*
こちらはshowVideo()と逆の処理
つまりビデオを非表示にするときの処理です。
*/
try{
ViewGroup mainFrame = (ViewGroup)findViewById(R.id.videoFrame);
mainFrame.removeView(videoView);
mainFrame.setVisibility(View.GONE);
findViewById(R.id.browserFrame).setVisibility(View.VISIBLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
/*
次の1行を忘れると2回目以降onShowCustomViewが呼ばれなくなります。
customViewCallbackにはWebChromeClient#onShowCustomViewで
何らかのコールバックオブジェクトが代入されます
必ずこのコールバックを破棄する処理を入れてください
*/
customViewCallback.onCustomViewHidden();
}catch(Exception e){
e.printStackTrace();
}
fullFlag = false;//ビデオ再生終了
customViewCallback = null;//本当はここは無くても良い?のですが念のためnullで初期化します
}
同時にWebChromeClientにこんな感じに実装します
@Override
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
/*
簡潔にするため、イベントの呼び出し時に起こすのはViewおよびCallbackの保管だけにします。
customViewとcustomViewCallbackは親Activityのフィールドとして定義しておいてください
なお、Android3.x以降は全画面に移行するまでこのイベントは呼ばれなくなります
*/
customView = view;
customViewCallback = callback;
showVideo(customView);
super.onShowCustomView(view, callback);
}
@Override
public void onHideCustomView() {
// TODO Auto-generated method stub
super.onHideCustomView();
hideVideo();
}
これを適宜改造するだけです
2012年11月10日土曜日 17時49分22秒 UTC+9 初心者: