BuWanVideo/AndroidManifest.xml
@@ -140,7 +140,7 @@ android:label="@string/app_name"></activity> <activity android:name="com.weikou.beibeivideo.ui.mine.PPTVPlayActivity" android:name="com.weikou.beibeivideo.ui.mine.PPTVPlayFragment" android:configChanges="screenSize|keyboardHidden|orientation" android:label="@string/app_name"></activity> BuWanVideo/res/drawable-xhdpi/icon_person_info_phone.png
BuWanVideo/res/drawable-xhdpi/icon_person_info_qq.png
BuWanVideo/res/drawable-xhdpi/icon_person_info_wx.png
BuWanVideo/res/drawable-xhdpi/icon_vip_dialog_bg.png
BuWanVideo/res/drawable-xhdpi/icon_vip_dialog_close.png
BuWanVideo/res/drawable/shape_vip_dialog_btn.xml
New file @@ -0,0 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#fff3dac2" /> <corners android:radius="30dp" /> <padding android:bottom="12dp" android:left="38dp" android:right="38dp" android:top="12dp"> </padding> </shape> BuWanVideo/res/layout/browser_pptv_activity.xml
@@ -5,20 +5,7 @@ android:background="@color/white" android:orientation="vertical"> <View android:id="@+id/v_status_bar" android:layout_width="match_parent" android:layout_height="15dp" android:background="@color/top_bar_color" /> <include layout="@layout/navigation_top_bar" /> <ProgressBar android:id="@+id/myProgressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="3dp" android:background="@color/yellow" /> <FrameLayout @@ -40,6 +27,19 @@ </FrameLayout> <TextView android:id="@+id/tv_top_bar_left" style="@style/TextBuleNormal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:drawableLeft="@drawable/ic_back_two" android:drawablePadding="3dp" android:gravity="center" android:layout_gravity="left|top" android:padding="8dp" /> </FrameLayout> BuWanVideo/res/layout/dialog_vip.xml
New file @@ -0,0 +1,42 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/icon_vip_dialog_bg"> </ImageView> <TextView android:id="@+id/tv_upgrade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:layout_marginBottom="57dp" android:background="@drawable/shape_vip_dialog_btn" android:text="去升级会员" android:textColor="#ff78482f" android:textSize="15sp" /> </FrameLayout> <ImageView android:id="@+id/iv_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:src="@drawable/icon_vip_dialog_close"></ImageView> </LinearLayout> BuWanVideo/res/layout/video_detail_activity.xml
@@ -12,10 +12,12 @@ android:background="@color/top_bar_color" /> <LinearLayout android:id="@+id/ll_other" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"> android:orientation="vertical" android:visibility="gone"> <!-- android:background="@color/bg_download_so" --> <FrameLayout @@ -160,4 +162,11 @@ </LinearLayout> <FrameLayout android:id="@+id/fl_pptv" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible"></FrameLayout> </LinearLayout> BuWanVideo/src/com/weikou/beibeivideo/ui/dialog/VIPDialog.java
New file @@ -0,0 +1,105 @@ package com.weikou.beibeivideo.ui.dialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import com.alibaba.fastjson.JSONObject; import com.bumptech.glide.GenericTransitionOptions; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.lcjian.library.util.common.TimeUtil; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.entity.JumpDetail; import com.weikou.beibeivideo.util.JumpActivityUtil; /** * 用户协议弹框 */ public class VIPDialog extends Dialog { private static String TAG = VIPDialog.class.getName(); public VIPDialog(Context context) { super(context); this.setCancelable(false); } public VIPDialog(Context context, int theme) { super(context, theme); this.setCancelable(false); } public static class Builder { private Activity context; public Builder(Activity context) { this.context = context; } private View.OnClickListener closeListener; private View.OnClickListener upgradeListener; public Builder setCloseListener(View.OnClickListener listener) { this.closeListener = listener; return this; } public Builder setUpgradeListener(View.OnClickListener listener) { this.upgradeListener = listener; return this; } public VIPDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final VIPDialog dialog = new VIPDialog(context, R.style.Dialog); dialog.setCanceledOnTouchOutside(true); final View layout = inflater.inflate(R.layout.dialog_vip, null); ImageView iv_code = layout.findViewById(R.id.iv_close); TextView tv_upgrade = layout.findViewById(R.id.tv_upgrade); iv_code.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (closeListener != null) closeListener.onClick(v); } }); tv_upgrade.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (upgradeListener != null) upgradeListener.onClick(v); } }); dialog.setContentView(layout); WindowManager.LayoutParams params = dialog.getWindow() .getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.height = WindowManager.LayoutParams.MATCH_PARENT; dialog.getWindow().setAttributes(params); return dialog; } } public interface MeasureCallBack { public void onMeasure(int height); } } BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java
@@ -21,7 +21,6 @@ import com.androidquery.AQuery; import com.bumptech.glide.Glide; import com.google.gson.Gson; import com.lcjian.library.content.ConnectivityChangeHelper; import com.lcjian.library.content.ConnectivityChangeHelper.OnConnectivityChangeListener; import com.lcjian.library.util.common.DimenUtils; @@ -32,8 +31,6 @@ import com.umeng.socialize.UMShareListener; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.media.UMWeb; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; import com.weikou.beibeivideo.db.MessageTable; import com.weikou.beibeivideo.entity.NewComment; import com.weikou.beibeivideo.entity.UserInfo; @@ -43,8 +40,7 @@ import com.weikou.beibeivideo.ui.login.LoginActivity; import com.weikou.beibeivideo.ui.login.PersonInfoActivity; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.ui.mine.PPTVPlayActivity; import com.weikou.beibeivideo.ui.video.VideoPlayerBrowserActivity; import com.weikou.beibeivideo.ui.mine.PPTVPlayFragment; import com.weikou.beibeivideo.ui.mine.HelpAndTicklingActivity; import com.weikou.beibeivideo.ui.mine.MyFavouriteActivity; import com.weikou.beibeivideo.ui.mine.SettingsActivity; @@ -57,9 +53,6 @@ import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.widget.BadgeView; import com.weikou.beibeivideo.R; import org.apache.http.Header; import org.json.JSONObject; import de.greenrobot.event.EventBus; BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java
@@ -64,6 +64,7 @@ import com.weikou.beibeivideo.ui.BaseActivity; import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment; import com.weikou.beibeivideo.ui.common.ShareActivity; import com.weikou.beibeivideo.ui.mine.PPTVPlayFragment; import com.weikou.beibeivideo.ui.video.VideoPlayerBrowserActivity; import com.weikou.beibeivideo.ui.video.FunshionPlayerFragment; import com.weikou.beibeivideo.ui.video.VideoPlayerActivity; @@ -92,6 +93,11 @@ OnClickListener { private final String TAG = VideoDetailActivity2.class.getName(); //外层容器 LinearLayout ll_other; FrameLayout fl_pptv; // private boolean mLandscape; private VideoInfo videoInfo; @@ -129,6 +135,10 @@ } private void initView() { ll_other = findViewById(R.id.ll_other); fl_pptv = findViewById(R.id.fl_pptv); fl_pptv.setVisibility(View.GONE); iv_select_play = findViewById(R.id.iv_select_play); tv_back = findViewById(R.id.iv_back); iv_download_failure = findViewById(R.id.iv_download_failure); @@ -758,6 +768,21 @@ public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { boolean pptv = true; if (pptv) { fl_pptv.setVisibility(View.VISIBLE); ll_other.setVerticalGravity(View.GONE); getSupportFragmentManager().beginTransaction().replace(R.id.fl_pptv, new PPTVPlayFragment()).commit(); if (progressDialog.isShowing()) { progressDialog.dismiss(); } return; } else { fl_pptv.setVisibility(View.GONE); ll_other.setVisibility(View.VISIBLE); } // if (BeibeiConstant.DEBUG) // Toast.makeText(VideoDetailActivity2.this, // "onSuccessPerfect", BuWanVideo/src/com/weikou/beibeivideo/ui/mine/PPTVPlayActivity.java
File was deleted BuWanVideo/src/com/weikou/beibeivideo/ui/mine/PPTVPlayFragment.java
New file @@ -0,0 +1,290 @@ package com.weikou.beibeivideo.ui.mine; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.Notification; import android.app.NotificationManager; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ProgressBar; import android.widget.TextView; import com.lcjian.library.RetainViewFragment; import com.tencent.smtt.export.external.interfaces.ConsoleMessage; import com.tencent.smtt.export.external.interfaces.SslError; import com.tencent.smtt.export.external.interfaces.SslErrorHandler; import com.tencent.smtt.export.external.interfaces.WebResourceRequest; import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient; import com.umeng.analytics.MobclickAgent; import com.weikou.beibeivideo.BeibeiVideoApplication; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.entity.ad.PlayVideoPreADSetting; import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment; import com.weikou.beibeivideo.ui.dialog.VIPDialog; import com.weikou.beibeivideo.ui.login.LoginActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.ConfigUtil; import com.weikou.beibeivideo.util.ad.AdUtil; import com.weikou.beibeivideo.util.browser.PPJavaInterface; import com.weikou.beibeivideo.util.ui.IPageEventListener; import com.weikou.beibeivideo.util.x5.X5WebView; public class PPTVPlayFragment extends RetainViewFragment implements OnClickListener { private static int REQUEST_CODE_LOGIN = 1001; private final static String TAG = PPTVPlayFragment.class.getSimpleName(); private TextView tv_top_bar_left; private X5WebView webview; FrameLayout fl_ad; private void initX5WebView(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) { if (url != null && (!url.startsWith("http"))) { return true; } return super.shouldOverrideUrlLoading(view, url); } @Override public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) { return super.shouldOverrideUrlLoading(webView, webResourceRequest); } @Override public void onPageFinished(WebView webView, String s) { super.onPageFinished(webView, s); playAd(); } @Override public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) { } }); webview.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { } @Override public void onProgressChanged(WebView webView, int i) { super.onProgressChanged(webView, i); } @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { Log.i(TAG, consoleMessage.message()); return super.onConsoleMessage(consoleMessage); } }); WebSettings webSetting = webview.getSettings(); webSetting.setJavaScriptEnabled(true); webSetting.setTextZoom(100); webview.addJavascriptInterface(new PPJavaInterface(BeibeiVideoApplication.application, new PPJavaInterface.IEventListener() { @Override public void onLogin() { webview.post(new Runnable() { @Override public void run() { Intent intent = new Intent(getContext(), LoginActivity.class); intent.putExtra("result", true); startActivityForResult(intent, REQUEST_CODE_LOGIN); } }); } @Override public void onTryPlayFinish() { Log.i(TAG, "onTryPlayFinish"); webview.post(new Runnable() { @Override public void run() { if (vipDialog != null && !vipDialog.isShowing()) vipDialog.show(); } }); } @Override public void onPlayFinish() { webview.post(new Runnable() { @Override public void run() { new AlertDialog.Builder(getContext()).setMessage("playFinish方法被调用").create().show(); } }); } }), "ppyestv"); } @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; } @Override public void onCreateView(View contentView, Bundle savedInstanceState) { initView(contentView); String url = "http://vip.pptv.com/activity/2021/pg_bwysdqmovie?cid=32159127&vid=32159127&programtype=3"; url = "https://acmd.api.pptv.com/2021/bwysdqmovie_thrid_h5.html?cid=32159127&vid=32159127&programtype=3"; webview.loadUrl(url); } private void initView(View view) { initX5WebView(view); tv_top_bar_left = view.findViewById(R.id.tv_top_bar_left); tv_top_bar_left.setOnClickListener(this); 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(); startActivity(new Intent(BeibeiVideoApplication.application, BrowserActivity.class).putExtra("url", ConfigUtil.getVipLink(BeibeiVideoApplication.application))); } }).create(); } Dialog vipDialog; Dialog loadingDialog; PlayVideoPreADFragment mVideoDetailVideoAdFragment; private NotificationManager manager; private Notification notif; private Notification.Builder oBuilder; private NotificationCompat.Builder builder; int j = -1; @Override public void onResume() { super.onResume(); MobclickAgent.onPageStart("网页"); // webview.reload(); } @Override public void onPause() { super.onPause(); MobclickAgent.onPageEnd("网页"); } @Override public void onDestroy() { if (webview != null) { webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null); webview.clearHistory(); ((ViewGroup) webview.getParent()).removeView(webview); webview.destroy(); webview = null; } super.onDestroy(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_top_bar_left: { getActivity().finish(); } break; default: break; } } // 设置回退 // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 // @Override // public boolean onKeyDown(int keyCode, KeyEvent event) { // if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { // webview.goBack(); // goBack()表示返回WebView的上一页面 // return true; // } // return super.onKeyDown(keyCode, event); // } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityResdult:" + requestCode); //从登录返回来的 if (requestCode == REQUEST_CODE_LOGIN && resultCode == Activity.RESULT_OK) { Log.d(TAG, "登录成功"); webview.reload(); } super.onActivityResult(requestCode, resultCode, data); } private synchronized void playAd() { fl_ad.setVisibility(View.VISIBLE); mVideoDetailVideoAdFragment = new PlayVideoPreADFragment(); mVideoDetailVideoAdFragment.setPageEventListener(new IPageEventListener() { @Override public void onCreateView() { mVideoDetailVideoAdFragment.loadVideoAD(new PlayVideoPreADFragment.IVideoAdListener() { @Override public void finishPlay() { getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss(); fl_ad.setVisibility(View.GONE); adPlayFinish(); } @Override public void startPlay() { } @Override public void noAd() { fl_ad.setVisibility(View.GONE); getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss(); adPlayFinish(); } }, new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_ID, "5061928359494942", null)); } }); getChildFragmentManager().beginTransaction().replace(R.id.fl_ad, mVideoDetailVideoAdFragment).commit(); } private void adPlayFinish() { webview.loadUrl("javascript:adPlayFinish()"); } }