私は Android でアプリケーションを開発しています。そこでは、webview で youtube の URL を渡し、それを再生してサーフィンできるはずです。これまでの進捗状況は、初期画面は表示されていますが、再生ボタンでビデオが再生されていません。エミュレーターではまだサウンドを再生していますが、デバイスではサウンドも再生されていませんが、YouTube ビデオをサーフィンして他のすべての機能を実行できます。以下のコードを投稿しています。
public class YoutubePlayActivity extends Activity {
String myUrl = "http://www.youtube.com/watch?v=wvwnjWcG250&feature=related";
wv1 = (WebView) findViewById(R.id.web);
wv1.setWebViewClient(new myClient());
wv1.loadUrl("http://www.youtube.com/watch?v=wvwnjWcG250&feature=related");
wv1.getSettings().setJavaScriptEnabled(true);
wv1.getSettings().setSupportZoom(true);
wv1.getSettings().setBuiltInZoomControls(true);
wv1.getSettings().setPluginState(WebSettings.PluginState.ON);
wv1.setWebChromeClient(new MyWebChromeClient());
// TODO Auto-generated method stub
}
class myClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
@Override
public void onPause() {
super.onPause();
try {
Class.forName("android.webkit.WebView")
.getMethod("onPause", (Class[]) null)
.invoke(wv1, (Object[]) null);
} catch(ClassNotFoundException cnfe) {
} catch(NoSuchMethodException nsme) {
} catch(InvocationTargetException ite) {
} catch (IllegalAccessException iae) {
}
}
public class MyWebChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
// TODO Auto-generated method stub
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout) {
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView) {
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
video.start();
}
}
}
}
}