:私はちょうどここに似た、未回答、ポストを見つけましたボタンを押して画面をオフにします。
何らかの理由で、電源ボタンを押してもWebviewのonPause()がトリガーされないため、オーディオが再生され続けているようです。これは、画面がオフになっている間に音楽を再生するのに便利ですが、GoogleではYouTubeの動画のこの動作が気に入らないのです。
は、あなたがこのようなあなたの活動/フラグメントのonPause()をオーバーライドすることができ、グーグルを幸せにするために:
@Override
public void onPause() {
super.onPause();
myCustomWebView.onPause();
}
今ものWebViewのonPauseをトリガーする電源ボタンを押す()を。しかし、これは別の問題を引き起こします。スクリーンがオフの間に実際に再生し続けるオーディオはどうですか?
WebViewClientのonLoadResource()をオーバーライドして、リソースがyoutubeかどうかをチェックすることができます。これは、時間が来たときにwebviewのonPause()を呼び出す必要があるかどうかを判断します。このような何か:もちろん
myCustomWebView.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView webview, String url) {
super.onLoadResource(webview, url);
if (url.contains("youtube.com")) mShouldPause = true;
}
//...... plus any other method you want to override
});
、これはそれのURLに「youtube.com」を持っているすべてのリソースがフラグをトリガしますが、私の必要性のために、これは十分であろうことを意味しません。だから、onPause()メソッドは、今、このようになります。
@Override
public void onPause() {
super.onPause();
// mShouldPause is just a private boolean
if (mShouldPause) {
myCustomWebView.onPause();
}
mShouldPause = false;
}
だからこれは私がリフレクションを使用してのWebViewの内部の仕組みをいじりせずに思い付いたソリューションです。オーディオを止めるボタンがある通知を作成したり、ユーザーがアプリに戻ってくるようにして、どのアプリがサウンドを作っているのを忘れたり、電話が幽霊になっていると思ったりすることはできません。
どのファイルを追加する必要がありますか? – me9867