harukazepc’s blog

インターネッツとAndroidなどが大好きです。あとは日々のことなど。

webviewなAndroidアプリでFlashを使っている時に、backgroundに回った時にFlashを中断(音や動画の停止)する方法

Android2.2以上であれば、WebView内でもFlashなコンテンツが利用できます。
以下のように、WebViewの設定を実施する必要があります。

public class WebViewApl extends Activity {
...
  WebView wv = new WebView(this);
  // Flash等のプラグインを有効にする
  wv.getSettings().setPluginState(WebSettings.PluginState.ON);
...
}

ここで、たとえば HOMEボタンの押下等でアプリを中断するときに、Flash等WebViewの動作自体も止めたくなります。
たとえば、Flash内でBGM等の音声が流れているとして、backgroundに回った時には止めたい、とか。

ActivityのonPauseで、再度 setPluginState(WebSettings.PluginState.OFF)しても反映されず、、、。
かなり困っていたのですが、こんな感じで制御できました。

@Override
protected void onPause() {
  try {
    WebView.class.getMethod("onPause").invoke(wv);
  }
  catch (...) {
  }
}
@Override
protected void onResume() {
  try {
    WebView.class.getMethod("onResume").invoke(wv);
  }
  catch (...) {
  }
}

当たり前ではありますが、WebViewのonPauseを呼ぶことで制御できました。
Activity内のWebViewであることをキチンと意識しないとなぁ。。。

© harukazepc️