0

我一直在尝试让 html5 视频在 webview 中播放。我实际上得到了它的工作,但后来我遇到了方向问题。我决定让媒体播放器处理文件,以便它可以处理方向等。这似乎很好用。但是,我是否修改了代码,以便如果播放器不可用,它会祝酒而不导致我的应用程序崩溃?有什么建议么?

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("my.site.com")) {
                return false;
            }else if(url.endsWith(".mp4")) {
                Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
                intent.setDataAndType(Uri.parse(url), "video/*");
                view.getContext().startActivity(intent);
                return true;
            }

            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }


    }
4

1 回答 1

0

如果要检查当前硬件是否能够处理 Intent:

   if(intent.resolveActivity(getPackageManager()) != null){
// start mediaplayer
}else{
//toast no mediaplayer available
}

如果您想检查特定的 MediaPlayer(在此示例中为 Google Play 电影):

if(isMediaPlayerAvailable()){
    // start mediaplayer
    }else{
    //toast no mediaplayer available
    }


public static boolean isMediaPlayerAvailable(Context context) {
        String mVersion;
        try {
            mVersion = context.getPackageManager().getPackageInfo(
                    "com.google.android.videos", 0).versionName;
              Log.d("MediaPlayer", "Installed: " + mVersion);
              return true;
        } catch (NameNotFoundException e) {
              Log.d("MediaPlayer", "Not installed");
              return false;
        }
       }

不同的方法:隐藏 Webview,在 VideoView 中播放视频

android:visiblity="gone"您应该在布局 xml 中创建一个 VideoView 。

else if(url.endsWith(".mp4")) {

view.setVisibility(View.GONE);

   VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);
   myVideoView.setVisibility(View.VISIBILE);
   myVideoView.setVideoURI(Uri.parse(url));
   myVideoView.setMediaController(new MediaController(this));
   myVideoView.requestFocus();
   myVideoView.start();
            }

您还应该查看可以添加到 VideoView 的不同侦听器,以在视频播放完毕或无法加载时恢复可见性更改。

VideoView & Fullscreen & Orientation changes - Android提供了如何在方向更改后在同一位置恢复播放的答案。

于 2013-04-18T23:10:07.320 回答