BuWanVideo/AndroidManifest.xml
@@ -203,6 +203,7 @@ <activity android:name="com.weikou.beibeivideo.ui.video.VideoPlayerActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:label="@string/app_name"></activity> @@ -216,7 +217,8 @@ android:windowSoftInputMode="adjustResize" /> <!--百度内容联盟 --> <activity android:name="com.baidu.mobads.AppActivity" <activity android:name="com.baidu.mobads.AppActivity" android:configChanges="keyboard|keyboardHidden|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> @@ -252,7 +254,7 @@ android:value="570f28a578d6e12cba6f7f200b8d1c83"></meta-data> <meta-data android:name="UMENG_CHANNEL" android:value="vivo"></meta-data> android:value="qq"></meta-data> <provider @@ -379,7 +381,6 @@ android:value="e113a131d49e1f837402e2807f2daf58" /> <!--广点通广告--> <!-- targetSDKVersion >= 24时才需要添加这个provider。provider的authorities属性的值为${applicationId}.fileprovider,请开发者根据自己的${applicationId}来设置这个值,例如本例中applicationId为"com.qq.e.union.demo"。 --> <provider @@ -459,15 +460,15 @@ <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/> android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!--风行广告 --> <provider android:name="com.funshion.video.util.FSFileProvider" android:authorities="com.yeshi.ddysvideo.funadsdk.provider" android:exported="false" android:grantUriPermissions="true" > android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/funshion_file_path" /> BuWanVideo/build.gradle
@@ -14,7 +14,7 @@ //聚能赚 api files('libs/YmSdk20200820.aar') api files('libs/tbs_sdk_thirdapp_v4.3.0.39_43939_sharewithdownloadwithfile_withoutGame_obfs_20200713_223411.jar') api project(':social_sdk_library_project') @@ -45,7 +45,6 @@ implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.15@aar' implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.15@aar' implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.15@aar' implementation files('libs/tbs_sdk_thirdapp_v4.3.0.1020_43633_sharewithdownload_withoutGame_obfs_20190111_105200.jar') implementation 'com.android.support:cardview-v7:27.1.1' //权限请求 BuWanVideo/libs/tbs_sdk_thirdapp_v4.3.0.1020_43633_sharewithdownload_withoutGame_obfs_20190111_105200.jarBinary files differ
BuWanVideo/libs/tbs_sdk_thirdapp_v4.3.0.39_43939_sharewithdownloadwithfile_withoutGame_obfs_20200713_223411.jarBinary files differ
BuWanVideo/res/drawable/yw_1222.jpgBuWanVideo/res/drawable/yw_1222_baichuan.jpg
BuWanVideo/res/layout/activity_video_player.xml
@@ -1,82 +1,89 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/theme" 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" /> android:background="@color/theme"> <LinearLayout android:id="@+id/ll_container" android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center_vertical"> android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv_top_bar_left" style="@style/TextBuleNormal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:drawableLeft="@drawable/ic_back_two" android:drawablePadding="3dp" android:gravity="center" android:padding="8dp" /> <View android:id="@+id/v_status_bar" android:layout_width="match_parent" android:layout_height="15dp" android:background="@color/top_bar_color" /> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:orientation="vertical"> android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:id="@+id/tv_top_bar_left" style="@style/TextBuleNormal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1" android:text="" android:textColor="#DDDDDD" android:textSize="15sp"></TextView> android:layout_centerVertical="true" android:drawableLeft="@drawable/ic_back_two" android:drawablePadding="3dp" android:gravity="center" android:padding="8dp" /> <TextView android:id="@+id/tv_url" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="3dp" android:ellipsize="end" android:maxLines="1" android:textColor="#DDDDDD" android:textSize="8sp"></TextView> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:orientation="vertical"> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1" android:text="" android:textColor="#DDDDDD" android:textSize="15sp"></TextView> <TextView android:id="@+id/tv_url" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="3dp" android:ellipsize="end" android:maxLines="1" android:textColor="#DDDDDD" android:textSize="8sp"></TextView> </LinearLayout> <ImageView android:id="@+id/iv_refresh" android:layout_width="48dp" android:layout_height="48dp" android:padding="13dp" android:src="@drawable/ic_refresh"></ImageView> </LinearLayout> <ImageView android:id="@+id/iv_refresh" android:layout_width="48dp" android:layout_height="48dp" android:padding="13dp" android:src="@drawable/ic_refresh"> </ImageView> <ProgressBar android:id="@+id/myProgressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="3dp" android:background="@color/yellow" /> <FrameLayout android:id="@+id/webview_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <ProgressBar android:id="@+id/myProgressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="3dp" android:background="@color/yellow" /> <com.weikou.beibeivideo.util.x5.X5WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> </FrameLayout> BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java
@@ -8,8 +8,11 @@ import android.graphics.Color; import android.support.multidex.MultiDex; import android.util.Log; import android.widget.Toast; import com.alibaba.baichuan.android.trade.AlibcTradeSDK; import com.alibaba.baichuan.android.trade.callback.AlibcTradeInitCallback; import com.baidu.mobads.AppActivity; import com.fun.xm.FSPlayer; import com.iBookStar.views.YmConfig; @@ -37,6 +40,9 @@ import com.weikou.beibeivideo.util.novel.NovelJNZUtil; public class BeibeiVideoApplication extends Application { private final String TAG = BeibeiVideoApplication.class.getName(); public static BeibeiVideoApplication application = null; public static String deviceName = null; public static String deviceNumber = null; @@ -79,6 +85,7 @@ initCSJAd(); GDTADManager.getInstance().initWith(this, BeibeiConstant.GDT_ID); initWX(); initTaoKe(); try { //初始化播放插件 FSPlayer.init(this, FunshionConstant.APICODE); @@ -117,6 +124,19 @@ } private void initTaoKe() { AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() { @Override public void onSuccess() { } @Override public void onFailure(int code, String msg) { } }); } private ImageLoaderConfiguration buildDefaultILC(Context context) { // This configuration tuning is custom. You can tune every option, you may tune some of them, // or you can create default configuration by @@ -139,7 +159,7 @@ public void onViewInitFinished(boolean arg0) { // TODO Auto-generated method stub //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 Log.d("app", " onViewInitFinished is " + arg0); Log.d(TAG, " onViewInitFinished is " + arg0); } @Override BuWanVideo/src/com/weikou/beibeivideo/ui/mine/BrowserActivity.java
@@ -162,7 +162,6 @@ .getDrawable(R.drawable.color_progressbar)); initX5WebView(); webview.loadUrl(getIntent().getStringExtra("url")); // webview.loadUrl("http://192.168.3.122:8848/BuWanWeb/unregister/index.html"); } // 文件下载监听 @@ -272,7 +271,7 @@ public void onResume() { super.onResume(); MobclickAgent.onPageStart("网页"); webview.reload(); // webview.reload(); } @Override BuWanVideo/src/com/weikou/beibeivideo/ui/video/VideoPlayerActivity.java
@@ -4,6 +4,8 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PixelFormat; @@ -18,13 +20,17 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.lcjian.library.util.ManifestDataUtil; import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient; import com.tencent.smtt.export.external.interfaces.SslError; import com.tencent.smtt.export.external.interfaces.SslErrorHandler; import com.tencent.smtt.export.external.interfaces.WebResourceRequest; @@ -34,27 +40,36 @@ import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient; import com.umeng.analytics.MobclickAgent; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.ui.BaseActivity; import com.weikou.beibeivideo.ui.media.VideoDetailActivity; import com.weikou.beibeivideo.util.browser.BWJavaInterface; import com.weikou.beibeivideo.util.downutil.DownFiles; import com.weikou.beibeivideo.util.downutil.DownFiles.IProgress; import com.weikou.beibeivideo.util.x5.X5WebView; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.util.x5.X5PlayerWebView; import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallback; /** * 视频播放网页 */ public class VideoPlayerActivity extends BaseActivity implements OnClickListener { private TextView tv_top_bar_left; private TextView tv_title; private TextView tv_url; private ImageView iv_refresh; private X5WebView webview; private X5PlayerWebView webview; ProgressBar progressBar; private void initX5WebView() { webview = findViewById(R.id.webview); FrameLayout webViewContainer = findViewById(R.id.webview_container); webview = new X5PlayerWebView(this, null); webViewContainer.addView(webview, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); webview.setDownloadListener(new MyWebViewDownLoadListener()); webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -100,6 +115,10 @@ webview.setWebChromeClient(new WebChromeClient() { View myVideoView; View myNormalView; IX5WebChromeClient.CustomViewCallback callback; @Override public void onReceivedTitle(WebView view, String title) { tv_title.setText(title); @@ -117,6 +136,43 @@ } super.onProgressChanged(webView, i); } /** * 全屏播放配置 */ @Override public void onShowCustomView(View view, CustomViewCallback customViewCallback) { LinearLayout normalView = (LinearLayout) findViewById(R.id.ll_container); ViewGroup viewGroup = (ViewGroup) normalView.getParent(); viewGroup.removeView(normalView); viewGroup.addView(view); myVideoView = view; myNormalView = normalView; callback = customViewCallback; setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); } @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); } setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); } }); WebSettings webSetting = webview.getSettings(); webSetting.setJavaScriptEnabled(true); @@ -146,6 +202,8 @@ } else { findViewById(R.id.v_status_bar).setVisibility(View.GONE); } initX5WebView(); tv_title = findViewById(R.id.tv_title); tv_url = findViewById(R.id.tv_url); iv_refresh = findViewById(R.id.iv_refresh); @@ -158,8 +216,9 @@ progressBar.setMax(100); progressBar.setProgressDrawable(this.getResources() .getDrawable(R.drawable.color_progressbar)); initX5WebView(); webview.loadUrl(getIntent().getStringExtra("url")); String url = getIntent().getStringExtra("url"); webview.loadUrl(url); tv_url.setText(webview.getUrl()); } // 文件下载监听 @@ -270,7 +329,6 @@ public void onResume() { super.onResume(); MobclickAgent.onPageStart("网页"); webview.reload(); } @Override @@ -321,4 +379,9 @@ } return super.onKeyDown(keyCode, event); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } } BuWanVideo/src/com/weikou/beibeivideo/util/AlibcTradeUtil.java
@@ -19,6 +19,8 @@ import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.downutil.ApkUtil; import java.util.HashMap; /** * 百川交易工具 */ @@ -58,7 +60,7 @@ else AlibcTrade.openByUrl(activity, "", url, webView, webViewClient, webChromeClient, showParams, taokeParams, null, new AlibcTradeCallback() { taokeParams, new HashMap<>(), new AlibcTradeCallback() { @Override public void onTradeSuccess(AlibcTradeResult alibcTradeResult) { Log.i("AlibcTradeUtil", alibcTradeResult.toString()); BuWanVideo/src/com/weikou/beibeivideo/util/JumpActivityUtil.java
@@ -4,14 +4,17 @@ import android.content.Context; import android.content.Intent; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import com.alibaba.baichuan.android.trade.AlibcTrade; import com.alibaba.baichuan.android.trade.AlibcTradeSDK; import com.alibaba.baichuan.android.trade.callback.AlibcTradeCallback; import com.alibaba.baichuan.android.trade.model.AlibcShowParams; import com.alibaba.baichuan.android.trade.model.OpenType; import com.alibaba.baichuan.android.trade.page.AlibcDetailPage; import com.alibaba.baichuan.trade.biz.AlibcConstants; import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType; import com.alibaba.baichuan.trade.biz.context.AlibcTradeResult; import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams; import com.alibaba.fastjson.JSONObject; @@ -93,7 +96,7 @@ AlibcDetailPage basePage = new AlibcDetailPage(auctionId); AlibcTrade.openByBizCode(mActivity, basePage, null, new WebViewClient(), new WebChromeClient(), "nativeDetail", alibcShowParams, alibcTaokeParams, null, new AlibcTradeCallback(){ alibcTaokeParams, null, new AlibcTradeCallback() { @Override public void onTradeSuccess(AlibcTradeResult alibcTradeResult) { @@ -131,8 +134,24 @@ return; //跳转百川 AlibcShowParams alibcShowParams = new AlibcShowParams(); alibcShowParams.setOpenType(OpenType.Auto); JumpActivityUtil.jumpBaiChuan(context, null, url, "", alibcShowParams); alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpBROWER); // AlibcTrade.openByUrl(GoodsDetailActivityTB.this, "", // url, null, new WebViewClient(), new WebChromeClient(), // alibcShowParams, alibcTaokeParams, exParams, new MiDuoTradeCallback("")); AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("", "", ""); alibcTaokeParams.setPid(BeibeiConstant.BAICHUAN_PID); alibcTaokeParams.setAdzoneid(BeibeiConstant.BAICHUAN_ADZONE_ID); alibcTaokeParams.pid = BeibeiConstant.BAICHUAN_PID; alibcTaokeParams.adzoneid = BeibeiConstant.BAICHUAN_ADZONE_ID; alibcTaokeParams.extraParams = new HashMap<>(); alibcTaokeParams.extraParams.put("taokeAppkey", BeibeiConstant.BAICHUAN_APPKEY); AlibcTradeSDK.setTaokeParams(alibcTaokeParams); AlibcTradeUtil.openByUrl(context, url, null, new WebViewClient(), new WebChromeClient(), null, alibcTaokeParams, null); break; default: { BuWanVideo/src/com/weikou/beibeivideo/util/browser/BWJavaInterface.java
@@ -5,14 +5,13 @@ import android.content.pm.PackageManager; import android.support.v4.content.ContextCompat; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.widget.ImageView; import android.widget.TextView; import com.lcjian.library.util.common.StringUtils; import com.tencent.smtt.sdk.WebView; import com.weikou.beibeivideo.util.AlibcTradeUtil; import com.weikou.beibeivideo.util.JumpActivityUtil; import com.weikou.beibeivideo.util.x5.X5WebView; import org.json.JSONException; import org.json.JSONObject; @@ -24,10 +23,10 @@ Activity mContext; TextView tv_top_bar_middle, tv_top_bar_left2, tv_top_bar_right; ImageView iv_right; X5WebView webview; WebView webview; private boolean boo = false; public BWJavaInterface(Activity activity, X5WebView webview) { public BWJavaInterface(Activity activity, WebView webview) { super(activity); mContext = activity; this.webview = webview; @@ -36,7 +35,7 @@ public BWJavaInterface(Activity activity, TextView tv_top_bar_middle , TextView tv_top_bar_left2, TextView tv_top_bar_right , ImageView iv_right, X5WebView webview) { , ImageView iv_right, WebView webview) { super(activity); mContext = activity; this.tv_top_bar_middle = tv_top_bar_middle; BuWanVideo/src/com/weikou/beibeivideo/util/x5/X5PlayerWebView.java
New file @@ -0,0 +1,95 @@ package com.weikou.beibeivideo.util.x5; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; import android.os.Bundle; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; import com.tencent.smtt.sdk.CookieSyncManager; import com.tencent.smtt.sdk.QbSdk; import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm; import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient; public class X5PlayerWebView extends WebView { TextView title; private WebViewClient client = new WebViewClient() { /** * 防止加载网页时调起系统浏览器 */ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }; @SuppressLint("SetJavaScriptEnabled") public X5PlayerWebView(Context arg0, AttributeSet arg1) { super(arg0, arg1); this.setWebViewClient(client); initWebViewSettings(); this.getView().setClickable(true); } private void initWebViewSettings() { WebSettings webSetting = this.getSettings(); webSetting.setJavaScriptEnabled(true); webSetting.setJavaScriptCanOpenWindowsAutomatically(true); webSetting.setAllowFileAccess(true); webSetting.setLayoutAlgorithm(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.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY); webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND); // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH); webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE); // this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension // settings 的设计 webSetting.setUserAgent(webSetting.getUserAgentString().replace("TBS", "BUWAN").replace("MQQBrowser", "BUWANBrowser")); webSetting.setTextZoom(100); try { Bundle data = new Bundle(); //true表示标准全屏,false表示X5全屏;不设置默认false, data.putBoolean("standardFullScreen", true); //false:关闭小窗;true:开启小窗;不设置默认true, data.putBoolean("supportLiteWnd", false); //1:以页面内开始播放,2:以全屏开始播放;不设置默认:1 data.putInt("DefaultVideoScreen", 1); this.getX5WebViewExtension().invokeMiscMethod("setVideoParams", data); } catch (Exception e) { } CookieSyncManager.createInstance(getContext()); CookieSyncManager.getInstance().sync(); } @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { boolean ret = super.drawChild(canvas, child, drawingTime); canvas.save(); return ret; } public X5PlayerWebView(Context arg0) { super(arg0); setBackgroundColor(85621); } } BuWanVideo/src/com/weikou/beibeivideo/util/x5/X5WebView.java
@@ -38,7 +38,7 @@ private void initWebViewSettings() { WebSettings webSetting = this.getSettings(); webSetting.setJavaScriptEnabled(true); // webSetting.setJavaScriptCanOpenWindowsAutomatically(true); webSetting.setJavaScriptCanOpenWindowsAutomatically(true); webSetting.setAllowFileAccess(true); webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); webSetting.setSupportZoom(false);