我一直在尝试在webview中播放html5视频。我实际上有这个工作,但后来我有方向问题。我决定让媒体播放器处理文件,以便它可以处理方向等。这似乎很有效。但是,我是否修改了代码,以便如果播放器不可用,它会提供一个Toast并且不会导致我的应用程序崩溃?有什么建议吗?
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;
}
}
答案 0 :(得分:0)
如果要检查当前硬件是否能够处理意图:
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;
}
}
不同方法:隐藏网页视图,在VideoView中播放视频
您应该在布局xml中创建一个带android:visiblity="gone"
的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有一个答案,说明如何在方向更改后在同一位置恢复播放。