Я новичок в разработке для Android, так что не судите строго
Я создаю приложение для Android, содержащее веб-просмотр. Веб-просмотр имеет много ссылок на прямую трансляцию.
После прочтения различных сообщений я понимаю, что действительно сложно и сложно (как я пытался) воспроизвести видео в самом веб-просмотре, поскольку в веб-просмотре нет/поддерживается множество функций для потоковой передачи видео.
Мой вопрос: КАК ОТКРЫТЬ MXPLAYER И ВОСПРОИЗВЕДИТЬ ПОТОК, КОГДА ПОЛЬЗОВАТЕЛЬ ВЫБИРАЕТ КОНКРЕТНУЮ ССЫЛКУ В ВЕБ-ПРОСМОТР?
Я просто тестирую это на своем собственном устройстве, поэтому хочу, чтобы оно было специфичным для mx player, поскольку оно у меня уже установлено.
Я пробовал следующее:
public class WebPageLoader extends Activity {
final Activity activity = this;
WebView webView;
private String pknamepro;
String homePage = "";
String specificWebURL = "";
public WebPageLoader(){
pknamepro = "com.mxtech.videoplayer.pro";
}
private void startMx(String url)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("com.mxtech.videoplayer.pro", "com.mxtech.videoplayer.pro.ActivityScreen"));
intent.setData(Uri.parse(url));
intent.putExtra("secure_uri", true);
startActivity(intent);
return;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webpageloader);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setSupportZoom(false);
webView.getSettings().setBuiltInZoomControls(false);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
Toast.makeText(getApplicationContext(), "Internet connection down" + description, Toast.LENGTH_SHORT).show();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.contains("rtmp")|| url.contains(specificWebURL) || url.startsWith("rtmpe")|| url.startsWith("udp")) {
startMx(url);
return true;
}
view.loadUrl(url);
return true;
}
});
webView.loadUrl(homePage);
}
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
// Save the state of the WebView
webView.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
// Restore the state of the WebView
webView.restoreState(savedInstanceState);
}
public void onBackPressed() {
if(webView.canGoBack() == true){
webView.goBack();
}else{
webView.goBack();
}
}
Как вы можете видеть, я пробовал это, проверяя URL-адрес, а также пытался жестко закодировать URL-адрес, но ни один из них не работает.
Кажется, что он не выполняет ни одну из вышеперечисленных проверок и пытается воспроизвести видео в веб-просмотре самостоятельно, потому что всякий раз, когда я нажимаю на любую из ссылок, открывается новая страница с сообщением «Ошибка загрузки проигрывателя: не найдены воспроизводимые источники» открытия mxplayer на моем устройстве.