package com.weikou.beibeivideo.ui.mine;
|
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.ActivityInfo;
|
import android.net.Uri;
|
import android.net.http.SslError;
|
import android.os.Build;
|
import android.os.Bundle;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.view.WindowManager;
|
import android.webkit.ConsoleMessage;
|
import android.webkit.SslErrorHandler;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.androidquery.AQuery;
|
import com.bytedance.sdk.openadsdk.AdSlot;
|
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
import com.bytedance.sdk.openadsdk.TTAdNative;
|
import com.bytedance.sdk.openadsdk.TTAdSdk;
|
import com.bytedance.sdk.openadsdk.TTFullScreenVideoAd;
|
import com.google.gson.Gson;
|
import com.lcjian.library.RetainViewFragment;
|
import com.lcjian.library.dialog.DialogUtil;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.util.common.ClipboardUtil;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.umeng.analytics.MobclickAgent;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.ad.AdPositionEnum;
|
import com.weikou.beibeivideo.entity.ad.PlayVideoPreADSetting;
|
import com.weikou.beibeivideo.entity.ad.RewardVideoAdContainer;
|
import com.weikou.beibeivideo.entity.vo.PPTVVideoActivityInfoVO;
|
import com.weikou.beibeivideo.entity.vo.PPTVWatchVIPVideoActivityWay;
|
import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment;
|
import com.weikou.beibeivideo.ui.dialog.LoadingDialogUtil;
|
import com.weikou.beibeivideo.ui.dialog.VIPDialog;
|
import com.weikou.beibeivideo.ui.dialog.VIPNewDialog;
|
import com.weikou.beibeivideo.ui.login.LoginActivity;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.ConfigUtil;
|
import com.weikou.beibeivideo.util.DimenUtils;
|
import com.weikou.beibeivideo.util.JumpActivityUtil;
|
import com.weikou.beibeivideo.util.UmengEventUtil;
|
import com.weikou.beibeivideo.util.UserUtil;
|
import com.weikou.beibeivideo.util.ad.AdUtil;
|
import com.weikou.beibeivideo.util.ad.CSJConstant;
|
import com.weikou.beibeivideo.util.ad.GDTConstant;
|
import com.weikou.beibeivideo.util.ad.RewardVideoAdManager;
|
import com.weikou.beibeivideo.util.browser.PPJavaInterface;
|
import com.weikou.beibeivideo.util.ui.IPageEventListener;
|
import com.weikou.beibeivideo.util.ui.ToastUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.security.KeyStore;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
public class PPTVPlayFragment extends RetainViewFragment implements OnClickListener {
|
private final static int REQUEST_CODE_LOGIN = 1001;
|
|
private final static int REQUEST_CODE_VIP = 1002;
|
|
private int code = -1;
|
|
|
private final static String TAG = PPTVPlayFragment.class.getSimpleName();
|
|
private TextView tv_top_bar_left;
|
private TextView tv_no_ad_reward_notify;
|
private android.webkit.WebView webview;
|
FrameLayout fl_ad;
|
FrameLayout fl_container;
|
private ImageView iv_favourite, iv_watch_history;
|
private LinearLayout ll_bottom, ll_vip_open, ll_top;
|
private TextView tv_vip_open, tv_title, tv_url;
|
|
private boolean showAd = true;
|
|
private Dialog loadingDialog;
|
private TextView tv_right;
|
|
private AQuery query;
|
|
|
private String[] getPPVideoInfo(String url) {
|
if (url.contains("cid=") && url.contains("vid=")) {
|
String[] sts = url.split("\\?");
|
if (sts.length > 1) {
|
String params = sts[1];
|
String[] ps = params.split("&");
|
Map<String, String> map = new HashMap<>();
|
for (String p : ps) {
|
map.put(p.split("=")[0], p.split("=").length > 1 ? p.split("=")[1] : "");
|
}
|
String cid = map.get("cid");
|
String vid = map.get("vid");
|
return new String[]{cid, vid};
|
}
|
}
|
return null;
|
}
|
|
private void initWebView(View view) {
|
fl_ad = view.findViewById(R.id.fl_ad);
|
webview = view.findViewById(R.id.webview);
|
webview.setWebViewClient(new WebViewClient() {
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
Log.i(TAG, "shouldOverrideUrlLoading:" + url);
|
if (url != null && (!url.startsWith("http"))) {
|
return true;
|
}
|
|
try {
|
String[] cvid = getPPVideoInfo(url);
|
if (cvid != null && cvid.length > 1) {
|
//PPTV播放上传
|
BeibeiVideoAPI.uploadPPTVPlayRecord(getContext(), cvid[0], cvid[1], new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
}
|
});
|
}
|
} catch (Exception e) {
|
|
}
|
return super.shouldOverrideUrlLoading(view, url);
|
}
|
|
|
@Override
|
public void onPageFinished(WebView webView, String s) {
|
super.onPageFinished(webView, s);
|
if (showAd)
|
playAd();
|
else {
|
showAd = true;
|
adPlayFinish();
|
}
|
setLeftTime();
|
String js = "";
|
js += "function getQueryString(name) {\n" +
|
"\t\tvar reg = new RegExp(\"(^|&)\" + name + \"=([^&]*)(&|$)\", \"i\");\n" +
|
"\t\tvar r = window.location.search.substr(1).match(reg);\n" +
|
"\t\tif (r != null) return unescape(r[2]);\n" +
|
"\t\treturn null;\n" +
|
"\t}";
|
|
|
js += "var getPlayInfo = function() {var video = document.querySelector(\"video\"); ppyestv.stopPlay(getQueryString('cid'),getQueryString('vid'),parseInt( video.currentTime)); };";
|
js += "window.onbeforeunload =getPlayInfo;";
|
webView.loadUrl("javascript:" + js);
|
}
|
|
@Override
|
public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
|
sslErrorHandler.proceed();
|
}
|
});
|
|
webview.setWebChromeClient(new WebChromeClient() {
|
|
View myVideoView;
|
View myNormalView;
|
CustomViewCallback callback;
|
|
@Override
|
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
|
Log.i(TAG, consoleMessage.message());
|
return super.onConsoleMessage(consoleMessage);
|
}
|
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
super.onReceivedTitle(view, title);
|
tv_url.setText(view.getUrl());
|
// tv_title.setText(title);
|
}
|
|
/**
|
* 全屏播放配置
|
*/
|
@Override
|
public void onShowCustomView(View view,
|
CustomViewCallback customViewCallback) {
|
View normalView = fl_container;
|
ViewGroup viewGroup = (ViewGroup) normalView.getParent();
|
viewGroup.removeView(normalView);
|
viewGroup.addView(view);
|
myVideoView = view;
|
myNormalView = normalView;
|
callback = customViewCallback;
|
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
|
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
getActivity().getWindow().setAttributes(attrs);
|
ll_bottom.setVisibility(View.GONE);
|
ll_top.setVisibility(View.GONE);
|
query.id(R.id.tv_top_bar_left1).visibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onHideCustomView() {
|
if (callback != null) {
|
callback.onCustomViewHidden();
|
callback = null;
|
}
|
if (myVideoView != null) {
|
ViewGroup viewGroup = (ViewGroup) myVideoView.getParent();
|
viewGroup.removeView(myVideoView);
|
viewGroup.addView(myNormalView);
|
}
|
// ll_bottom.setVisibility(View.VISIBLE);
|
ll_top.setVisibility(View.VISIBLE);
|
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
|
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
getActivity().getWindow().setAttributes(attrs);
|
setLeftTime();
|
query.id(R.id.tv_top_bar_left1).visibility(View.GONE);
|
}
|
});
|
initWebSetting();
|
//开启硬件加速
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
|
}
|
|
|
webview.addJavascriptInterface(new PPJavaInterface(BeibeiVideoApplication.application, new PPJavaInterface.IEventListener() {
|
@Override
|
public void onLogin() {
|
if (getActivity() != null)
|
getActivity().runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
code = REQUEST_CODE_LOGIN;
|
Intent intent = new Intent(getContext(), LoginActivity.class);
|
intent.putExtra("result", true);
|
startActivityForResult(intent, REQUEST_CODE_LOGIN);
|
}
|
});
|
}
|
|
@Override
|
public void onTryPlayFinish() {
|
Log.i(TAG, "onTryPlayFinish");
|
if (getActivity() != null)
|
getActivity().runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
// if (vipDialog != null && !vipDialog.isShowing())
|
// vipDialog.show();
|
getActivityInfo(tv_url.getText() + "");
|
}
|
});
|
|
}
|
|
@Override
|
public void onPlayFinish() {
|
if (getActivity() != null)
|
getActivity().runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
|
}
|
});
|
|
}
|
}), "ppyestv");
|
}
|
|
private void initWebSetting() {
|
WebSettings webSetting = webview.getSettings();
|
webSetting.setJavaScriptEnabled(true);
|
webSetting.setTextZoom(100);
|
webSetting.setBlockNetworkImage(false);
|
webSetting.setJavaScriptEnabled(true);
|
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
|
webSetting.setAllowFileAccess(true);
|
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
|
webSetting.setSupportZoom(false);
|
webSetting.setBuiltInZoomControls(true);
|
webSetting.setUseWideViewPort(true);
|
webSetting.setSupportMultipleWindows(true);
|
webSetting.setLoadWithOverviewMode(true);
|
webSetting.setAppCacheEnabled(true);
|
webSetting.setDatabaseEnabled(true);
|
webSetting.setDomStorageEnabled(true);
|
webSetting.setGeolocationEnabled(true);
|
webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
|
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
|
webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
webSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
}
|
}
|
|
@Nullable
|
@Override
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
return super.onCreateView(inflater, container, savedInstanceState);
|
}
|
|
@Override
|
public int getContentResource() {
|
return R.layout.browser_pptv_activity;
|
}
|
|
private String videoId;
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
query = new AQuery(contentView);
|
initView(contentView);
|
Bundle bundle = getArguments();
|
if (bundle != null) {
|
String url = bundle.getString("playUrl", "");
|
String title = bundle.getString("name", "");
|
tv_url.setText(url);
|
tv_title.setText(title);
|
|
videoId = bundle.getString("videoId");
|
webview.loadUrl(url);
|
View view = LayoutInflater.from(getContext()).inflate(R.layout.item_jump_video_loading, null);
|
Toast toast = ToastUtil.showMiddleToast(getContext(), view, Toast.LENGTH_SHORT);
|
webview.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
toast.cancel();
|
} catch (Exception e) {
|
|
}
|
}
|
}, 1000);
|
}
|
}
|
|
//获取视频状态
|
private void getPPTVVideoPlayState(String cid, String vid, final IPPTVVideoState stateListener) {
|
BeibeiVideoAPI.getPPTVVideoPlayState(BeibeiVideoApplication.application, cid, vid, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
if (jsonObject.optBoolean("IsPost")) {
|
JSONObject data = jsonObject.optJSONObject("Data");
|
PPTVVideoState pptvVideoState = new Gson().fromJson(data.toString(), PPTVVideoState.class);
|
stateListener.onSuccess(pptvVideoState);
|
} else {
|
stateListener.onFail(jsonObject.optString("Error"));
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
stateListener.onFail("网络请求出错");
|
}
|
});
|
}
|
|
private VIPNewDialog vipNewDialog;
|
|
private synchronized void getActivityInfo(String url) {
|
String cid = "";
|
String vid = "";
|
try {
|
String[] cvids = getPPVideoInfo(url);
|
if (cvids != null && cvids.length > 1) {
|
cid = cvids[0];
|
vid = cvids[1];
|
}
|
} catch (Exception e) {
|
|
}
|
|
//放弃请求
|
if (vipNewDialog != null && vipNewDialog.isShowing()) {
|
return;
|
}
|
|
BeibeiVideoAPI.getPPTVVIPVideoActivity(getContext(), url, cid, vid, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
if (jsonObject.optBoolean("IsPost")) {
|
JSONObject data = jsonObject.optJSONObject("Data");
|
PPTVVideoActivityInfoVO vo = new Gson().fromJson(data.toString(), PPTVVideoActivityInfoVO.class);
|
|
vipNewDialog = new VIPNewDialog.Builder(getActivity()).setActivityData(vo.getWayList(), vo.getVideoName()).setCloseListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
DialogUtil.dismiss(vipNewDialog);
|
}
|
}).setItemClickListener(new VIPNewDialog.ItemClickListener() {
|
@Override
|
public void onClick(PPTVWatchVIPVideoActivityWay way) {
|
DialogUtil.dismiss(vipNewDialog);
|
|
if ("vip".equalsIgnoreCase(way.getType())) {
|
jumpToVIP();
|
} else {
|
if (way.getJumpDetail() != null) {
|
code = REQUEST_CODE_VIP;
|
JumpActivityUtil.jumpPage(getActivity(), way.getJumpDetail(), JumpActivityUtil.getParamsJSON(way.getParams()));
|
}
|
}
|
}
|
}).create();
|
DialogUtil.show(vipNewDialog);
|
}
|
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
Toast.makeText(getContext(), "网络请求出错", Toast.LENGTH_SHORT).show();
|
}
|
});
|
|
|
}
|
|
|
private void initView(View view) {
|
loadingDialog = LoadingDialogUtil.getLoadingDialog(getContext(), "");
|
initWebView(view);
|
tv_top_bar_left = view.findViewById(R.id.tv_top_bar_left);
|
tv_top_bar_left.setOnClickListener(this);
|
fl_container = view.findViewById(R.id.fl_container);
|
|
tv_no_ad_reward_notify = view.findViewById(R.id.tv_no_ad_reward_notify);
|
|
|
iv_favourite = view.findViewById(R.id.iv_add_to_favourite);
|
iv_watch_history = view.findViewById(R.id.iv_watch_history);
|
ll_bottom = view.findViewById(R.id.ll_bottom);
|
ll_bottom.setVisibility(View.GONE);
|
ll_vip_open = view.findViewById(R.id.ll_vip_open);
|
tv_vip_open = view.findViewById(R.id.tv_vip_open);
|
ll_top = view.findViewById(R.id.ll_top);
|
tv_title = view.findViewById(R.id.tv_title);
|
tv_url = view.findViewById(R.id.tv_url);
|
tv_right = view.findViewById(R.id.tv_right);
|
query.id(R.id.tv_top_bar_left1).clicked(this);
|
|
|
iv_favourite.setOnClickListener(this);
|
iv_watch_history.setOnClickListener(this);
|
ll_vip_open.setOnClickListener(this);
|
tv_right.setOnClickListener(this);
|
tv_url.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (tv_url.getText() != null) {
|
ClipboardUtil.copy(getContext(), tv_url.getText().toString());
|
Toast.makeText(getContext(), "链接复制成功", Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
tv_url.setOnLongClickListener(new View.OnLongClickListener() {
|
@Override
|
public boolean onLongClick(View v) {
|
if (tv_url.getText() != null) {
|
ClipboardUtil.copy(getContext(), tv_url.getText().toString());
|
Toast.makeText(getContext(), "链接复制成功", Toast.LENGTH_SHORT).show();
|
}
|
return true;
|
}
|
});
|
|
|
vipDialog = new VIPDialog.Builder(getActivity()).setCloseListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
vipDialog.dismiss();
|
}
|
}).setUpgradeListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
vipDialog.dismiss();
|
jumpToVIP();
|
}
|
}).create();
|
|
query.id(R.id.fl_menu).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
hiddenMenu();
|
}
|
});
|
|
query.id(R.id.tv_refresh).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
hiddenMenu();
|
webview.reload();
|
}
|
});
|
|
query.id(R.id.tv_copy).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
hiddenMenu();
|
ClipboardUtil.copy(getContext(), tv_url.getText().toString());
|
Toast.makeText(getContext(), "复制成功", Toast.LENGTH_SHORT).show();
|
}
|
});
|
|
query.id(R.id.tv_open).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
hiddenMenu();
|
String url = tv_url.getText().toString();
|
Uri uri = Uri.parse(url);
|
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
startActivity(intent);
|
}
|
});
|
|
}
|
|
private void jumpToVIP() {
|
//判断是否登录
|
if (!UserUtil.isLogin(getContext())) {
|
Intent intent = new Intent(getContext(), LoginActivity.class);
|
startActivity(intent);
|
return;
|
}
|
|
startActivityForResult(new Intent(BeibeiVideoApplication.application, BrowserActivity.class).putExtra("result", true).putExtra("url", ConfigUtil.getVipLink(BeibeiVideoApplication.application)), REQUEST_CODE_VIP);
|
code = REQUEST_CODE_VIP;
|
}
|
|
|
private void setLeftTime() {
|
if (tv_no_ad_reward_notify == null)
|
return;
|
int leftTime = AdUtil.getPPTVNoAdRewardLeftTimeWithMinute(getContext());
|
//设置免广告权益倒计时
|
if (leftTime > 0) {
|
tv_no_ad_reward_notify.setVisibility(View.VISIBLE);
|
tv_no_ad_reward_notify.setText(String.format("恭喜你!免广告权益%s分钟后可重新获得", leftTime));
|
} else {
|
tv_no_ad_reward_notify.setVisibility(View.GONE);
|
}
|
}
|
|
Dialog vipDialog;
|
|
PlayVideoPreADFragment mVideoDetailVideoAdFragment;
|
|
int j = -1;
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
switch (code) {
|
case REQUEST_CODE_LOGIN:
|
UserUtil.updateUserInfo(BeibeiVideoApplication.application, null);
|
case REQUEST_CODE_VIP:
|
String[] cvid = getPPVideoInfo(tv_url.getText() + "");
|
if (cvid != null && cvid.length > 1)
|
getPPTVVideoPlayState(cvid[0], cvid[1], new IPPTVVideoState() {
|
@Override
|
public void onSuccess(PPTVVideoState state) {
|
|
if (state.bought || state.vipUser) {
|
if (mVideoDetailVideoAdFragment != null && mVideoDetailVideoAdFragment.isAdded())
|
getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss();
|
if (fl_ad != null)
|
fl_ad.setVisibility(View.GONE);
|
if (webview != null)
|
webview.reload();
|
}
|
}
|
|
@Override
|
public void onFail(String msg) {
|
|
}
|
});
|
break;
|
}
|
code = -1;
|
setLeftTime();
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
public void onDestroy() {
|
if (webview != null) {
|
webview.loadUrl("javascript:getPlayInfo();");
|
webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
|
webview.clearHistory();
|
|
((ViewGroup) webview.getParent()).removeView(webview);
|
webview.destroy();
|
webview = null;
|
}
|
if (mttFullVideoAd != null) {
|
mttFullVideoAd = null;
|
}
|
super.onDestroy();
|
}
|
|
private void hiddenMenu() {
|
query.id(R.id.fl_menu).visibility(View.GONE);
|
}
|
|
private void showMenu() {
|
query.id(R.id.fl_menu).visibility(View.VISIBLE);
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left:
|
case R.id.tv_top_bar_left1: {
|
if (getActivity().getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
|
if (webview != null)
|
webview.loadUrl("javascript:exitFullScreenPlay();");
|
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
|
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
getActivity().getWindow().setAttributes(attrs);
|
} else {
|
getActivity().finish();
|
}
|
}
|
break;
|
case R.id.iv_add_to_favourite:
|
collect(collected);
|
break;
|
case R.id.iv_watch_history:
|
startActivity(new Intent(iv_watch_history.getContext(), WatchHistoryActivity.class));
|
break;
|
case R.id.ll_vip_open:
|
jumpToVIP();
|
break;
|
case R.id.tv_right:
|
if (query.id(R.id.fl_menu).getView().getVisibility() == View.VISIBLE)
|
hiddenMenu();
|
else
|
showMenu();
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void showRewardSuccessToast(boolean success) {
|
|
fl_ad.post(new Runnable() {
|
@Override
|
public void run() {
|
// TextView textView = new TextView(getContext());
|
// textView.setText(String.format("高清视频免广告权益发放成功(%s小时内有效)", AdUtil.getPPTVNoAdRewardHour(BeibeiVideoApplication.application)));
|
// textView.setTextColor(Color.WHITE);
|
// textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
// textView.setBackgroundResource(R.drawable.shape_video_no_ad_reward_success_notify_bg);
|
View view = null;
|
if (success)
|
view = LayoutInflater.from(getContext()).inflate(R.layout.item_no_ad_reward_notify_success, null);
|
else {
|
view = LayoutInflater.from(getContext()).inflate(R.layout.item_no_ad_reward_notify_fail, null);
|
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
|
}
|
ToastUtil.showMiddleToast(getContext(), view, Toast.LENGTH_LONG);
|
}
|
});
|
|
}
|
|
private PPTVVideoState videoState;
|
|
private synchronized void playAd() {
|
videoState = null;
|
//VIP永久免广告
|
String[] cvid = getPPVideoInfo(tv_url.getText() + "");
|
if (cvid != null && cvid.length > 1)
|
getPPTVVideoPlayState(cvid[0], cvid[1], new IPPTVVideoState() {
|
@Override
|
public void onSuccess(PPTVVideoState state) {
|
videoState = state;
|
if (state != null) {
|
if (state.getTitle() != null)
|
tv_title.setText(state.getTitle());
|
if (state.bought || state.vipUser) {
|
adPlayFinish();
|
return;
|
} else {
|
if (AdUtil.isGetPPTVNoAdReward(BeibeiVideoApplication.application)) {
|
adPlayFinish();
|
return;
|
}
|
if (state.isShowInterstitialAd())
|
showInterstitialAd();
|
if (state.isShowPreVideoAd())
|
startPlayAd();
|
else
|
adPlayFinish();
|
}
|
} else {
|
if (AdUtil.isGetPPTVNoAdReward(BeibeiVideoApplication.application)) {
|
adPlayFinish();
|
return;
|
} else {
|
startPlayAd();
|
}
|
}
|
|
|
}
|
|
@Override
|
public void onFail(String msg) {
|
if (AdUtil.isGetPPTVNoAdReward(BeibeiVideoApplication.application)) {
|
adPlayFinish();
|
return;
|
}
|
}
|
});
|
|
|
}
|
|
private void startPlayAd() {
|
fl_ad.setVisibility(View.VISIBLE);
|
PlayVideoPreADSetting setting = new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_ID, GDTConstant.PID_2_VIDEO_DETAIL_PLAYER_PRE_PPTV, null);
|
if (videoState != null && videoState.isVipVideo()) {
|
if (videoState.canBuy)
|
setting.setOtherAction("0元看本片");
|
else {
|
setting.setOtherAction("开通VIP");
|
}
|
} else {
|
setting.setOtherAction("获取免广告权益");
|
}
|
|
mVideoDetailVideoAdFragment = PlayVideoPreADFragment.newInstance();
|
Bundle bundle = new Bundle();
|
bundle.putInt("skipDuration", 1);
|
mVideoDetailVideoAdFragment.setArguments(bundle);
|
|
mVideoDetailVideoAdFragment.setPageEventListener(new IPageEventListener() {
|
@Override
|
public void onCreateView() {
|
mVideoDetailVideoAdFragment.loadVideoAD(new PlayVideoPreADFragment.IVideoAdListener() {
|
@Override
|
public void finishPlay() {
|
if (mVideoDetailVideoAdFragment.isAdded())
|
getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss();
|
fl_ad.setVisibility(View.GONE);
|
adPlayFinish();
|
}
|
|
@Override
|
public void startPlay() {
|
|
}
|
|
@Override
|
public void onOtherClick(String name) {
|
if (name != null && name.contains("广告")) {
|
loadRewardAd();
|
} else {
|
getActivityInfo(tv_url.getText() + "");
|
}
|
}
|
|
@Override
|
public void noAd() {
|
fl_ad.setVisibility(View.GONE);
|
if (mVideoDetailVideoAdFragment.isAdded())
|
getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss();
|
adPlayFinish();
|
}
|
}, setting);
|
|
}
|
});
|
getChildFragmentManager().beginTransaction().replace(R.id.fl_ad, mVideoDetailVideoAdFragment).commitAllowingStateLoss();
|
|
}
|
|
private void loadRewardAd() {
|
|
int width = DimenUtils.getScreenWidth(getContext());
|
int height = DimenUtils.getScreenHeight(getContext());
|
|
|
DialogUtil.show(loadingDialog);
|
//激励视频
|
|
RewardVideoAdManager.IAdShowListener showListener = new RewardVideoAdManager.IAdShowListener() {
|
|
private boolean reward = false;
|
|
@Override
|
public void onShow() {
|
reward = false;
|
}
|
|
@Override
|
public void onReward() {
|
|
reward = true;
|
//免广告3小时
|
AdUtil.setPPTVNoAdRewardSuccess(BeibeiVideoApplication.application);
|
}
|
|
@Override
|
public void onError(String msg) {
|
|
}
|
|
@Override
|
public void onClose() {
|
if (reward) {
|
showRewardSuccessToast(true);
|
if (mVideoDetailVideoAdFragment != null)
|
mVideoDetailVideoAdFragment.finishPlay();
|
} else {
|
showRewardSuccessToast(false);
|
}
|
}
|
};
|
|
Context context = BeibeiVideoApplication.application;
|
AdUtil.AD_TYPE pptvNoAdReward = AdUtil.getAdType(context, AdPositionEnum.pptvNoAdReward);
|
String pid = AdUtil.getAdPid(context, AdPositionEnum.pptvNoAdReward);
|
if (pptvNoAdReward == null) {
|
Toast.makeText(context, "暂不可用", Toast.LENGTH_SHORT).show();
|
return;
|
}
|
|
if (StringUtils.isBlank(pid)) {
|
if (pptvNoAdReward != null) {
|
if (pptvNoAdReward == AdUtil.AD_TYPE.csj) {
|
pid = CSJConstant.VIDEO_REWARD_PPTV;
|
} else if (pptvNoAdReward == AdUtil.AD_TYPE.gdt2) {
|
pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAYER_REWARD_PPTV;
|
}
|
}
|
}
|
|
|
new RewardVideoAdManager(pptvNoAdReward, BeibeiVideoApplication.application).loadAd(width, height, pid, false, new RewardVideoAdManager.IAdLoadListener() {
|
@Override
|
public void onSuccess(RewardVideoAdContainer ad) {
|
fl_ad.post(new Runnable() {
|
@Override
|
public void run() {
|
UmengEventUtil.pptvNoAdRewardClick(getContext(), pptvNoAdReward.name());
|
DialogUtil.dismiss(loadingDialog);
|
RewardVideoAdManager.showAd(getActivity(), ad, showListener);
|
}
|
});
|
}
|
|
@Override
|
public void onError(String msg) {
|
UmengEventUtil.pptvNoAdRewardClick(getContext(), "fail");
|
DialogUtil.dismiss(loadingDialog);
|
Toast.makeText(context, "广告拉取失败,请稍后再试", Toast.LENGTH_SHORT).show();
|
}
|
}, showListener);
|
|
}
|
|
|
private void adPlayFinish() {
|
if (webview != null) {
|
webview.loadUrl("javascript:adPlayFinish();");
|
//TODO 设置上次视频播放进度
|
String js = "var video = document.querySelector('video');\n" +
|
"video.play = function() {\n" +
|
"\tsetTimeout(function() {\n" +
|
"\t\tvideo.currentTime = {播放位置}; video.play=null; \n" +
|
"\t}, 2000);\n" +
|
"\tconsole.log('获取到资源长度');\n" +
|
"\treturn false;\n" +
|
"};";
|
if (videoState != null && videoState.getPlayPosition() != null && videoState.getPlayPosition() > 0)
|
webview.loadUrl("javascript:" + js.replace("{播放位置}", videoState.getPlayPosition() + ""));
|
|
// webview.loadUrl("javascript: setTimeout(function(){H5Player.seekVideo(300);},2000);");
|
}
|
}
|
|
private boolean collected = false;
|
|
private void isCollect() {
|
BeibeiVideoAPI.isCollect(iv_favourite.getContext(), UserUtil.getUid(BeibeiVideoApplication.application), videoId,
|
0 + "", new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
collected = true;
|
iv_favourite.setImageResource(R.drawable.ic_video_detail_favourite2);
|
} else {
|
collected = false;
|
iv_favourite.setImageResource(R.drawable.ic_video_detail_favourite1);
|
}
|
}
|
});
|
}
|
|
private void collect(boolean cancel) {
|
SharedPreferences preferences = getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getScoreCollect(getContext(), uid, UserUtil.getLoginUid(BeibeiVideoApplication.application), videoId,
|
0 + "", cancel ? "0" : "1", new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
if (!cancel) {
|
collected = true;
|
SingleToast.showToast(getContext(), "收藏成功");
|
} else {
|
collected = false;
|
SingleToast.showToast(getContext(), "取消收藏成功");
|
}
|
} else {
|
if (!cancel) {
|
SingleToast.showToast(getContext(), "收藏失败");
|
} else {
|
SingleToast.showToast(getContext(), "取消收藏失败");
|
}
|
}
|
isCollect();
|
}
|
});
|
|
}
|
|
TTFullScreenVideoAd mttFullVideoAd = null;
|
|
private boolean isInterstitialAdShown = false;
|
|
private void showInterstitialAd() {
|
if (isInterstitialAdShown)
|
return;
|
|
TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(getContext());
|
AdSlot adSlot = new AdSlot.Builder()
|
.setCodeId(CSJConstant.VIDEO_DETAIL_INTERSTITIALAD)
|
//模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可
|
.setExpressViewAcceptedSize(300, 500)
|
.setSupportDeepLink(true)
|
.setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
|
.build();
|
mTTAdNative.loadFullScreenVideoAd(adSlot, new TTAdNative.FullScreenVideoAdListener() {
|
//请求广告失败
|
@Override
|
public void onError(int code, String message) {
|
|
}
|
|
//广告物料加载完成的回调
|
@Override
|
public void onFullScreenVideoAdLoad(TTFullScreenVideoAd ad) {
|
mttFullVideoAd = ad;
|
mttFullVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() {
|
//广告的展示回调
|
@Override
|
public void onAdShow() {
|
isInterstitialAdShown = true;
|
}
|
|
//广告的下载bar点击回调
|
@Override
|
public void onAdVideoBarClick() {
|
|
}
|
|
//广告关闭的回调
|
@Override
|
public void onAdClose() {
|
|
}
|
|
//视频播放完毕的回调
|
@Override
|
public void onVideoComplete() {
|
|
}
|
|
//跳过视频播放
|
@Override
|
public void onSkippedVideo() {
|
|
}
|
});
|
}
|
|
//广告视频/图片加载完成的回调,接入方可以在这个回调后展示广告
|
@Override
|
public void onFullScreenVideoCached() {
|
if (mttFullVideoAd != null) {
|
//展示广告,并传入广告展示的场景
|
if (getActivity() != null)
|
mttFullVideoAd.showFullScreenVideoAd(getActivity(), TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
|
mttFullVideoAd = null;
|
}
|
}
|
|
@Override
|
public void onFullScreenVideoCached(TTFullScreenVideoAd ttFullScreenVideoAd) {
|
if (ttFullScreenVideoAd != null) {
|
//展示广告,并传入广告展示的场景
|
if (getActivity() != null)
|
ttFullScreenVideoAd.showFullScreenVideoAd(getActivity(), TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
|
}
|
}
|
});
|
|
}
|
|
|
interface IPPTVVideoState {
|
public void onSuccess(PPTVVideoState state);
|
|
public void onFail(String msg);
|
|
}
|
|
public class PPTVVideoState {
|
private boolean vipUser;
|
private boolean vipVideo;
|
private boolean bought;
|
private boolean canBuy;
|
private String title;
|
private Integer playPosition;
|
//是否显示插屏广告
|
private boolean showInterstitialAd;
|
private boolean showPreVideoAd;
|
|
public boolean isShowPreVideoAd() {
|
return showPreVideoAd;
|
}
|
|
public void setShowPreVideoAd(boolean showPreVideoAd) {
|
this.showPreVideoAd = showPreVideoAd;
|
}
|
|
public boolean isShowInterstitialAd() {
|
return showInterstitialAd;
|
}
|
|
public void setShowInterstitialAd(boolean showInterstitialAd) {
|
this.showInterstitialAd = showInterstitialAd;
|
}
|
|
public Integer getPlayPosition() {
|
return playPosition;
|
}
|
|
public void setPlayPosition(Integer playPosition) {
|
this.playPosition = playPosition;
|
}
|
|
public String getTitle() {
|
return title;
|
}
|
|
public void setTitle(String title) {
|
this.title = title;
|
}
|
|
public boolean isVipUser() {
|
return vipUser;
|
}
|
|
public void setVipUser(boolean vipUser) {
|
this.vipUser = vipUser;
|
}
|
|
public boolean isVipVideo() {
|
return vipVideo;
|
}
|
|
public void setVipVideo(boolean vipVideo) {
|
this.vipVideo = vipVideo;
|
}
|
|
public boolean isBought() {
|
return bought;
|
}
|
|
public void setBought(boolean bought) {
|
this.bought = bought;
|
}
|
|
public boolean isCanBuy() {
|
return canBuy;
|
}
|
|
public void setCanBuy(boolean canBuy) {
|
this.canBuy = canBuy;
|
}
|
}
|
}
|