package com.ijoomer.customviews;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.AttributeSet;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import com.ijoomer.media.player.IjoomerMediaPlayer;
/**
* This Class Contains All Method Related To IjoomerButton.
*
* @author tasol
*
*/
public class IjoomerWebView extends WebView {
private OnMimeResourceClickListener onMimeResourceClickListener;
public OnMimeResourceClickListener getOnMimeResourceClickListener() {
return onMimeResourceClickListener;
}
public void setOnMimeResourceClickListener(OnMimeResourceClickListener onMimeResourceClickListener) {
this.onMimeResourceClickListener = onMimeResourceClickListener;
}
public IjoomerWebView(Context context) {
super(context);
init();
}
public IjoomerWebView(Context context,AttributeSet attr) {
super(context,attr);
init();
}
public IjoomerWebView(Context context,AttributeSet attr,int style) {
super(context,attr,style);
init();
}
public IjoomerWebView(Context context,AttributeSet attr,int style,boolean privateBrowsing) {
super(context,attr,style,privateBrowsing);
init();
}
private void init() {
try {
getSettings().setJavaScriptEnabled(true);
getSettings().setPluginState(PluginState.ON);
JavaScriptInterface jsInterface = new JavaScriptInterface(getContext());
addJavascriptInterface(jsInterface, "JSInterface");
} catch (Throwable e) {
}
}
@Override
public void loadData(String data, String mimeType, String encoding) {
super.loadData(arrangeContent(data), mimeType, encoding);
}
@Override
public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
super.loadDataWithBaseURL("file:///android_asset/css/", arrangeContent(data), "text/html", "utf-8", null);
}
private String arrangeContent(String data) {
StringBuilder sb = new StringBuilder(); // StringBuilder();
sb.append("<HTML><HEAD><link rel=\"stylesheet\" type=\"text/css\" href=\"weblayout.css\" /></HEAD><body>");
String str = data.trim();
str = str.replaceAll("<iframe width=\"[0-9]*", "<iframe width=\"100\\%\" onload=\"window.JSInterface.onMimeResourceClickd(src);\"");
str = str.replaceAll("<video width=\"[0-9]*", "<video width=\"100\\%\" onclick=\"window.JSInterface.onMimeResourceClickd(src);\"");
str = str.replaceAll("<img[\\w]*", "<img height=\"auto\" style=\"max-width:100\\%\"; onclick=\"window.JSInterface.onMimeResourceClickd(src);\"");
sb.append(str);
sb.append("</body></HTML>");
return sb.toString();
}
public class JavaScriptInterface {
private Context context;
public JavaScriptInterface(Context activiy) {
this.context = activiy;
}
public void onMimeResourceClickd(String sourceAddress) {
int type = 0;
if (sourceAddress.toLowerCase().contains("youtube") || sourceAddress.toLowerCase().contains("youtu.be")) {
type = 1;
} else if (sourceAddress.toLowerCase().contains("mp4") || sourceAddress.toLowerCase().contains("3gp") || sourceAddress.contains("3gpp")) {
type = 2;
} else if (sourceAddress.toLowerCase().contains("png") || sourceAddress.toLowerCase().contains("jpeg") || sourceAddress.toLowerCase().toLowerCase().contains("jpg")) {
type = 3;
}
if (getOnMimeResourceClickListener() != null) {
if (type == 1) {
getOnMimeResourceClickListener().onYoutubeVideoClick(sourceAddress);
} else if (type == 2) {
getOnMimeResourceClickListener().onVideoClick(sourceAddress);
} else if (type == 3) {
getOnMimeResourceClickListener().onImageClick(sourceAddress);
}
} else {
if (type != 3) {
Intent lVideoIntent = new Intent(null, getVideoPlayURI(sourceAddress), context, IjoomerMediaPlayer.class);
context.startActivity(lVideoIntent);
}
// if (type == 1) {
// // call youtube player
// } else if (type == 2) {
// // call default player
//
// // Intent intent = new Intent(Intent.ACTION_VIEW);
// // intent.setDataAndType(Uri.parse(videoAddress),
// // "video/3gpp");
// // context.startActivity(intent);
// }
}
}
}
public Uri getVideoPlayURI(String videoUrl) {
String video_id = "";
if (videoUrl != null && videoUrl.trim().length() > 0) {
String expression = "^.*((youtu.be" + "\\/)" + "|(v\\/)|(\\/u\\/w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*";
CharSequence input = videoUrl;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
String groupIndex1 = matcher.group(7);
if (groupIndex1 != null && groupIndex1.length() == 11)
video_id = groupIndex1;
}
}
if (video_id.trim().length() > 0) {
return Uri.parse("ytv://" + video_id);
} else {
return Uri.parse("mp4://" + videoUrl);
}
}
public interface OnMimeResourceClickListener {
void onImageClick(String imageSrc);
void onVideoClick(String videoSrc);
void onYoutubeVideoClick(String youTubeVideoSrc);
}
}