私が次の基本的なアプリケーションを持っていると仮定しましょう:
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
return true;
}
});
webView.loadUrl("https://www.w3schools.com/html/html5_video.asp");
}
}
さて、ウェブサイトの場合、e。g。https://www.w3schools.com/html/html5_video.aspには、ビデオまたはオーディオが含まれ(ユーザーは任意のサイトを開くことができるため、URLは不明です)、ユーザーは別のアプリを開くか、画面をオフにします。またはオーディオが停止しています。
でも、これからも続けていきたいです。これは、GoogleChromeが行うことと似ているはずです。
バックグラウンドサウンドサービスを開始して解決策を見てきましたが、ビデオ/サウンドファイルのURLがわからない場合は、どうすればわかりますか?JavaScriptを挿入する必要がありますか、それともよりクリーンなソリューションがありますか?
更新:でビデオURLを取得できますがJavascriptInterface
、多くの場合、ブロブです(YouTubeなど)。どうすればそれを進めることができますか?
更新2:ご覧のとおり、私は解決策を見つけました。ただし、これがクリーンなソリューションであるかどうかはわかりません。Chromeのように通知バーにコントロールがあるなど、より良い解決策はありますか?
たくさん検索したところ、このスレッドを見つけました。私は似たようなことをしました:WebViewを拡張してオーバーライドするだけonWindowVisibilityChanged
です。
public class MediaWebView extends WebView {
public MediaWebView(Context context) {
super(context);
}
public MediaWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MediaWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onWindowVisibilityChanged(int visibility) {
if (visibility != View.GONE) super.onWindowVisibilityChanged(View.VISIBLE);
}
}
このように、画面がロックされているか、別のアプリが開かれている場合でも、オーディオは再生され続けます。ただし、通知バーやロック画面にはコントロールがありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加