package com.weishitech.chathistorybackup.fragment.home;
import static android.view.View.VISIBLE;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.anythink.banner.api.ATBannerExListener;
import com.anythink.banner.api.ATBannerView;
import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.ATNetworkConfirmInfo;
import com.anythink.core.api.ATShowConfig;
import com.anythink.core.api.AdError;
import com.anythink.dlopt.api.ATAppDownloadListener;
import com.anythink.interstitial.api.ATInterstitial;
import com.anythink.interstitial.api.ATInterstitialAutoAd;
import com.anythink.interstitial.api.ATInterstitialAutoEventListener;
import com.anythink.interstitial.api.ATInterstitialAutoLoadListener;
import com.anythink.interstitial.api.ATInterstitialExListener;
import com.anythink.nativead.api.ATNative;
import com.anythink.nativead.api.ATNativeAdView;
import com.anythink.nativead.api.ATNativeDislikeListener;
import com.anythink.nativead.api.ATNativeEventExListener;
import com.anythink.nativead.api.ATNativeNetworkListener;
import com.anythink.nativead.api.ATNativePrepareExInfo;
import com.anythink.nativead.api.ATNativePrepareInfo;
import com.anythink.nativead.api.ATNativeView;
import com.anythink.nativead.api.NativeAd;
import com.anythink.nativead.api.NativeAdInteractionType;
import com.hfd.common.base.BaseFragment;
import com.hfd.common.model.PublicData;
import com.hfd.common.net.GenericsCallback;
import com.hfd.common.net.HttpBuiler;
import com.hfd.common.net.JsonGenericsSerializator;
import com.hfd.common.net.Url;
import com.hfd.common.util.ToastUtil;
import com.weishitech.chathistorybackup.LCAppcation;
import com.weishitech.chathistorybackup.MainActivity;
import com.weishitech.chathistorybackup.R;
import com.weishitech.chathistorybackup.ad.AdConst;
import com.weishitech.chathistorybackup.ad.base.GgBaseActivity;
import com.weishitech.chathistorybackup.ad.util.SDKUtil;
import com.weishitech.chathistorybackup.ad.util.SelfRenderViewUtil;
import com.weishitech.chathistorybackup.bean.BackBean;
import com.weishitech.chathistorybackup.fragment.Adapter.BackupAdapter;
import com.weishitech.chathistorybackup.fragment.Adapter.BackupFileAdapter;
import com.weishitech.chathistorybackup.utils.BackupDownloadManager;
import com.weishitech.chathistorybackup.utils.BackupFile;
import com.weishitech.chathistorybackup.utils.EnhancedFileScanner;
import com.weishitech.chathistorybackup.utils.LoadingDialogUtil;
import com.youth.banner.util.LogUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import okhttp3.Call;
public class BackupFragment extends BaseFragment {
private static final String ARG_SOURCE = "source";
private static final String ARG_TYPE = "type";
private static final String ARG_MINE = "mine";
private String mine; // no 或 yes
private String source; // wechat 或 qq
private String type; // video, image, audio, document
private RecyclerView rvBackup;
private BackupFileAdapter adapter;
private BackupAdapter backupAdapter;
private TextView tvDelete,tvBackup;
private List<BackupFile> fileList = new ArrayList<>();
private List<BackBean.DataBean> backupBeanList = new ArrayList<>();
private BackupDownloadManager backupDownloadManager;
private static final String TAG = BackupFragment.class.getSimpleName();
/** 横幅广告*/
private ATBannerView mBannerView;
private FrameLayout mBannerViewContainer;
/** 原生视频广告*/
private ATNative mATNative;
private NativeAd mNativeAd;
private ATNativeView mATNativeView;
private View mSelfRenderView;
/** 插屏广告*/
private ATInterstitial mInterstitialAd;
public static BackupFragment newInstance(String source, String type, String mine) {
BackupFragment fragment = new BackupFragment();
Bundle args = new Bundle();
args.putString(ARG_SOURCE, source);
args.putString(ARG_TYPE, type);
args.putString(ARG_MINE,mine);
fragment.setArguments(args);
return fragment;
}
@Override
protected int setLayout() {
return R.layout.fragment_backup;
}
@Override
protected void initView() {
if (getArguments() != null) {
source = getArguments().getString(ARG_SOURCE);
type = getArguments().getString(ARG_TYPE);
mine = getArguments().getString(ARG_MINE);
}
rvBackup = fvbi(R.id.rv_backup);
tvDelete = fvbi(R.id.tv_delete);
tvBackup =fvbi(R.id.tv_backup);
/** 横幅广告*/
mBannerViewContainer = fvbi(R.id.adview_container);
/** 原生视频广告*/
mATNativeView = fvbi(R.id.native_ad_view);
mSelfRenderView = fvbi(R.id.native_selfrender_view);
backupDownloadManager = new BackupDownloadManager(mContext);
setupRecyclerView();
}
@Override
protected void initClick() {
tvBackup.setOnClickListener(v -> {
/** 插屏广告*/
if(LCAppcation.getInstance().isShowAd(2)){
initCpInterstitialAd();
initCpAutoLoad();
isCpAdReady();
new Handler().postDelayed(() -> {
ATInterstitial.entryAdScenario(LCAppcation.interstitialAdId, AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO);
if (mInterstitialAd.isAdReady()) {
showCpAd();
}
}, 2000); // 延时2000毫秒(2秒)后跳转
}
if (Objects.equals(mine, "no")){
uploadFile(adapter.getSelectedFiles());
}else {
downloadFile(backupAdapter.getSelectedFiles());
}
});
tvDelete.setOnClickListener(v -> {
/** 插屏广告*/
if(LCAppcation.getInstance().isShowAd(2)){
initCpInterstitialAd();
initCpAutoLoad();
isCpAdReady();
new Handler().postDelayed(() -> {
ATInterstitial.entryAdScenario(LCAppcation.interstitialAdId, AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO);
if (mInterstitialAd.isAdReady()) {
showCpAd();
}
}, 2000); // 延时2000毫秒(2秒)后跳转
}
if (Objects.equals(mine, "no")) {
showDeleteConfirmDialog(adapter.getSelectedFiles());
}else {
showDeleteDialog(backupAdapter.getSelectedFiles());
}
});
}
private void downloadFile(List<BackBean.DataBean> selectedFiles) {
backupDownloadManager.downloadBackupFiles(selectedFiles, new BackupDownloadManager.DownloadCallback() {
@Override
public void onSuccess(File downloadDir, int successCount) {
LoadingDialogUtil.hideLoading();
ToastUtil.showShortToast(downloadDir.getAbsolutePath());
}
@Override
public void onError(String error) {
ToastUtil.showShortToast(error);
}
});
}
@Override
protected void initData() {
tvBackup.setText(Objects.equals(mine, "no") ?"备份":"导出");
/** 原生视频广告*/
if (LCAppcation.getInstance().isShowAd(4)) {
//准备加载广告
initYsATNativeAd(LCAppcation.naviteAdId);
final int adViewWidth = mATNativeView.getWidth() != 0 ? mATNativeView.getWidth() : getResources().getDisplayMetrics().widthPixels;
final int adViewHeight = adViewWidth * 3 / 4;
loadYsAd(adViewWidth, adViewHeight);
isYsAdReady();
new Handler().postDelayed(() -> {
ATNative.entryAdScenario(LCAppcation.naviteAdId, AdConst.SCENARIO_ID.NATIVE_AD_SCENARIO);
if (isYsAdReady()) {
showYsAd();
}
}, 2000);
}
/** 横幅广告*/
if(LCAppcation.getInstance().isShowAd(1)) {
initHfBannerView();
addHfBannerViewToContainer();
mBannerView.setPlacementId(LCAppcation.bannerAdId);
ATBannerView.entryAdScenario(LCAppcation.bannerAdId, AdConst.SCENARIO_ID.BANNER_AD_SCENARIO);
mBannerView.setShowConfig(getHfBannerATShowConfig());
new Handler().postDelayed(() -> {
loadHfBannerAd();
}, 1000); // 延时2000毫秒(2秒)后跳转
}
}
private void setupRecyclerView() {
if (mine.equals("no")) {
adapter = new BackupFileAdapter(fileList);
if (type.equals("image") || type.equals("video")) {
rvBackup.setLayoutManager(new GridLayoutManager(getContext(), 3));
rvBackup.setNestedScrollingEnabled(false); // 禁止滑动
} else {
rvBackup.setLayoutManager(new LinearLayoutManager(getContext()));
}
rvBackup.setAdapter(adapter);
adapter.setOnItemClickListener(new BackupFileAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
BackupFile file = fileList.get(position);
// 处理文件点击,可以在这里实现文件预览等功能
// previewFile(file);
}
@Override
public void onItemLongClick(int position) {
// 长按操作
// showFileOptions(position);
}
});
}else {
backupAdapter = new BackupAdapter(mContext,backupBeanList);
if (type.equals("image") || type.equals("video")) {
rvBackup.setLayoutManager(new GridLayoutManager(getContext(), 3));
rvBackup.setNestedScrollingEnabled(false); // 禁止滑动
} else {
rvBackup.setLayoutManager(new LinearLayoutManager(getContext()));
}
rvBackup.setAdapter(backupAdapter);
backupAdapter.setOnItemClickListener(new BackupAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
BackBean.DataBean file = backupBeanList.get(position);
// 处理文件点击,可以在这里实现文件预览等功能
// previewFile(file);
}
@Override
public void onItemLongClick(int position) {
// 长按操作
// showFileOptions(position);
}
});
}
}
// 设置全选状态
public void setSelectAll(boolean selectAll) {
if (adapter != null) {
Log.i("11111","点击了全选状态为:"+selectAll);
adapter.selectAll(selectAll);
}else {
Log.i("11111","adapter为空:");
}
}
// 显示删除确认对话框
private void showDeleteConfirmDialog(List<BackupFile> list) {
if (getContext() == null|| list.isEmpty()) return;
int count = list.size();
new AlertDialog.Builder(getContext())
.setTitle("确认删除")
.setMessage("确定要删除选中的 " + count + " 个文件吗?")
.setPositiveButton("删除", (dialog, which) -> {
performDelete(list);
})
.setNegativeButton("取消", null)
.show();
}
// 显示删除确认对话框
private void showDeleteDialog(List<BackBean.DataBean> list) {
if (getContext() == null|| list.isEmpty()) return;
int count = list.size();
new AlertDialog.Builder(getContext())
.setTitle("确认删除")
.setMessage("确定要删除选中的 " + count + " 个文件吗?")
.setPositiveButton("删除", (dialog, which) -> {
Delete(list);
})
.setNegativeButton("取消", null)
.show();
}
private void Delete(List<BackBean.DataBean> list){
StringBuilder s= new StringBuilder();
for (BackBean.DataBean data :list){
s.append(data.getId()).append(",");
}
HttpBuiler.deleteItem(Url.remove+s).build().execute(new GenericsCallback<PublicData>(new JsonGenericsSerializator()) {
@Override
public void onError(Call call, Exception e, int id) {
}
@Override
public void onResponse(PublicData response, int id) {
if (response.getCode()==Url.SuccessCode){
getList(LCAppcation.oaid);
}
}
});
}
// 执行删除操作
private void performDelete(List<BackupFile> list) {
if (adapter == null) return;
for (BackupFile position : list) {
// 从数据源中删除
fileList.remove(position);
// 实际删除文件(如果需要)
deletePhysicalFile(position);
// 从适配器中删除
adapter.updateData(fileList);
}
}
// 删除物理文件(根据你的实际需求实现)
private void deletePhysicalFile(BackupFile backupFile) {
try {
File file = new File(backupFile.getPath());
if (file.exists()) {
boolean deleted = file.delete();
if (!deleted) {
Log.e("BackupFragment", "文件删除失败: " + backupFile.getPath());
}
}
} catch (Exception e) {
Log.e("BackupFragment", "删除文件时出错", e);
}
}
public void uploadFile(List<BackupFile> selectedFiles){
LoadingDialogUtil.showLoading(mContext);
if (selectedFiles.isEmpty())return;
HashMap<String, String> map = getStringStringHashMap(selectedFiles);
map.put("useType", Objects.equals(source, "wechat") ?"1":"2");
HashMap<String,List<File>> fileMap = new HashMap<>();
HashMap<String,List<String>> nameMap = new HashMap<>();
List<File> list = new ArrayList<>();
List<String> nameList = new ArrayList<>();
for (BackupFile backupFile : selectedFiles){
list.add(backupFile.getCurrentFile());
nameList.add(backupFile.getName());
}
fileMap.put("file",list);
nameMap.put("name",nameList);
HttpBuiler.postFileBuilder(Url.upload,map,fileMap,nameMap).build().execute(new GenericsCallback<PublicData>(new JsonGenericsSerializator()) {
@Override
public void onError(Call call, Exception e, int id) {
}
@Override
public void onResponse(PublicData response, int id) {
if (response.getCode()==Url.SuccessCode) {
ToastUtil.showShortToast(response.getMessage());
LoadingDialogUtil.hideLoading();
}else {
ToastUtil.showShortToast(response.getMessage());
}
}
});
}
@NonNull
private static HashMap<String, String> getStringStringHashMap(List<BackupFile> selectedFiles) {
HashMap<String,String> map = new HashMap<>();
map.put("oaid", LCAppcation.oaid);
switch (selectedFiles.get(0).getType()){
case "video":
map.put("type","2");
break;
case "image":
map.put("type","1");
break;
case "audio":
map.put("type","3");
break;
case "document":
map.put("type","4");
break;
}
return map;
}
public void getList(String id){
HashMap<String,String> answerMap = new HashMap<>();
HttpBuiler.getInfo(Url.oaid+id,answerMap).build().execute(new GenericsCallback<BackBean>(new JsonGenericsSerializator()) {
@Override
public void onError(Call call, Exception e, int id) {
LogUtils.e("getList"+"错误"+e.getMessage());
}
@Override
public void onResponse(BackBean response, int id) {
if(response.getCode() == Url.SuccessCode) {
if (!response.getData().isEmpty()){
backupBeanList.clear();
for (BackBean.DataBean data : response.getData()){
data.setUrl(backupDownloadManager.buildFullUrl(data.getFixedUrl()));
if (source.equals("wechat") && (data.getUseType() == 1)){
if (type.equals("image") && (data.getType()==1)){
backupBeanList.add(data);
}else if (type.equals("video") && (data.getType()==2)){
backupBeanList.add(data);
}else if (type.equals("audio") && (data.getType()==3)){
backupBeanList.add(data);
}else if (type.equals("document") && (data.getType()==4)){
backupBeanList.add(data);
}
}else if (source.equals("qq") && (data.getUseType() == 2)){
if (type.equals("image") && (data.getType()==1)){
backupBeanList.add(data);
}else if (type.equals("video") && (data.getType()==2)){
backupBeanList.add(data);
}else if (type.equals("audio") && (data.getType()==3)){
backupBeanList.add(data);
}else if (type.equals("document") && (data.getType()==4)){
backupBeanList.add(data);
}
}
}
backupAdapter.updateData(backupBeanList);
}
}
}
});
}
@Override
public void onResume() {
/** 原生视频广告*/
if (mNativeAd != null) {
mNativeAd.onResume();
}
super.onResume();
if (Objects.equals(mine,"no")) {
// 设置进度监听器
EnhancedFileScanner.setProgressListener(new EnhancedFileScanner.ScanProgressListener() {
@Override
public void onScanStart(String source, String fileType) {
getActivity().runOnUiThread(() -> {
// showLoading("正在扫描" + getTypeDisplayName(fileType) + "文件...");
});
}
@Override
public void onDirectoryScanned(String directoryPath, int fileCount, int totalFiles) {
Log.d("ScanProgress", "扫描目录: " + new File(directoryPath).getName() +
", 本目录找到: " + fileCount + "个, 总计: " + totalFiles + "个");
}
@Override
public void onScanProgress(int currentDirectories, int totalDirectories) {
getActivity().runOnUiThread(() -> {
// updateProgress(currentDirectories, totalDirectories);
});
}
@Override
public void onScanComplete(List<BackupFile> files, EnhancedFileScanner.ScanStats stats) {
getActivity().runOnUiThread(() -> {
// hideLoading();
fileList = files;
adapter.updateData(fileList);
// updateEmptyView();
// showScanResult(stats);
});
}
@Override
public void onScanError(String errorMessage) {
getActivity().runOnUiThread(() -> {
// hideLoading();
// showError(errorMessage);
});
}
});
// 开始扫描
if ("wechat".equals(source)) {
EnhancedFileScanner.scanWeChatFilesEnhanced(getContext(), type);
} else {
EnhancedFileScanner.scanQQFilesEnhanced(getContext(), type);
}
}else {
getList(LCAppcation.oaid);
}
}
@Override
public void onPause() {
/** 原生视频广告*/
if (mNativeAd != null) {
mNativeAd.onPause();
}
super.onPause();
}
@Override
public void onDestroyView() {
super.onDestroyView();
/** 原生视频广告*/
destroyYsAd();
if (mATNative != null) {
mATNative.setAdListener(null);
mATNative.setAdSourceStatusListener(null);
mATNative.setAdMultipleLoadedListener(null);
}
/** 插屏广告*/
for (Map.Entry<String, Boolean> entry : mCpAutoLoadPlacementIdMap.entrySet()) {
ATInterstitialAutoAd.removePlacementId(entry.getKey());
}
if (mInterstitialAd != null) {
mInterstitialAd.setAdSourceStatusListener(null);
mInterstitialAd.setAdDownloadListener(null);
mInterstitialAd.setAdListener(null);
mInterstitialAd.setAdMultipleLoadedListener(null);
}
/** 横幅广告*/
if (mBannerViewContainer != null) {
mBannerViewContainer.removeAllViews();
}
if (mBannerView != null) {
mBannerView.destroy();
}
}
@Override
public void onDestroy() {
super.onDestroy();
// 释放资源
EnhancedFileScanner.release();
if (adapter != null) {
adapter.release();
}
}
/** 原生视频广告*/
private ATShowConfig getYsATShowConfig() {
ATShowConfig.Builder builder = new ATShowConfig.Builder();
builder.scenarioId(AdConst.SCENARIO_ID.NATIVE_AD_SCENARIO);
builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.NATIVE_AD_SHOW_CUSTOM_EXT);
return builder.build();
}
private void exitYsNativePanel() {
destroyYsAd();
}
public void destroyYsAd() {
if (mNativeAd != null) {
mATNativeView.removeAllViews();
mATNativeView.setVisibility(View.GONE);
mNativeAd.destory();
}
}
private void initYsATNativeAd(String placementId) {
mATNative = new ATNative(getActivity(), placementId, new ATNativeNetworkListener() {
@Override
public void onNativeAdLoaded() {
printLogOnUI("onNativeAdLoaded load success...");
}
@Override
public void onNativeAdLoadFail(AdError adError) {
printLogOnUI("onNativeAdLoadFail load fail...:" + adError.getFullErrorInfo());
}
});
mATNative.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl());
}
private void loadYsAd(int adViewWidth, int adViewHeight) {
SDKUtil.initSDK(getActivity());
printLogOnUI(getString(R.string.anythink_ad_status_loading));
Map<String, Object> localExtra = new HashMap<>();
localExtra.put(ATAdConst.KEY.AD_WIDTH, adViewWidth);
localExtra.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight);
mATNative.setLocalExtra(localExtra);
mATNative.makeAdRequest();
}
private boolean isYsAdReady() {
boolean isReady = mATNative.checkAdStatus().isReady();
printLogOnUI("isAdReady:" + isReady);
List<ATAdInfo> atAdInfoList = mATNative.checkValidAdCaches();
Log.i(TAG, "Valid Cahce size:" + (atAdInfoList != null ? atAdInfoList.size() : 0));
if (atAdInfoList != null) {
for (ATAdInfo adInfo : atAdInfoList) {
Log.i(TAG, "\nCahce detail:" + adInfo.toString());
}
}
return isReady;
}
private void showYsAd() {
// NativeAd nativeAd = mATNative.getNativeAd();
NativeAd nativeAd = mATNative.getNativeAd(getYsATShowConfig());
if (nativeAd != null) {
if (mNativeAd != null) {
mNativeAd.destory();
}
mNativeAd = nativeAd;
mNativeAd.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl());
mNativeAd.setNativeEventListener(new ATNativeEventExListener() {
@Override
public void onDeeplinkCallback(ATNativeAdView view, ATAdInfo adInfo, boolean isSuccess) {
printLogOnUI("onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess);
}
@Override
public void onAdImpressed(ATNativeAdView view, ATAdInfo entity) {
printLogOnUI("native ad onAdImpressed:\n" + entity.toString());
MainActivity.reportInfo(entity);
}
@Override
public void onAdClicked(ATNativeAdView view, ATAdInfo entity) {
printLogOnUI("native ad onAdClicked:\n" + entity.toString());
}
@Override
public void onAdVideoStart(ATNativeAdView view) {
printLogOnUI("onAdVideoStart");
}
@Override
public void onAdVideoEnd(ATNativeAdView view) {
printLogOnUI("onAdVideoEnd");
}
@Override
public void onAdVideoProgress(ATNativeAdView view, int progress) {
printLogOnUI("onAdVideoProgress");
}
});
mNativeAd.setDislikeCallbackListener(new ATNativeDislikeListener() {
@Override
public void onAdCloseButtonClick(ATNativeAdView view, ATAdInfo entity) {
printLogOnUI("native ad onAdCloseButtonClick");
exitYsNativePanel();
}
});
mATNativeView.removeAllViews();
ATNativePrepareInfo mNativePrepareInfo = null;
try {
mNativePrepareInfo = new ATNativePrepareExInfo();
//bindTTDislikeDialog(mATNativeView, mNativeAd);
if (mNativeAd.isNativeExpress()) {
mNativeAd.renderAdContainer(mATNativeView, null);
} else {
SelfRenderViewUtil.bindSelfRenderView(getActivity(), mNativeAd.getAdMaterial(), mSelfRenderView, mNativePrepareInfo);
mNativeAd.renderAdContainer(mATNativeView, mSelfRenderView);
}
} catch (Exception e) {
e.printStackTrace();
}
//下载类原生自渲染广告设置下载状态监听,更新CTA按钮文案
if (!mNativeAd.isNativeExpress() && mNativeAd.getAdMaterial()
.getNativeAdInteractionType() == NativeAdInteractionType.APP_DOWNLOAD_TYPE && mNativePrepareInfo.getCtaView() != null && mNativePrepareInfo.getCtaView() instanceof TextView) {
TextView ctaTextView = (TextView) mNativePrepareInfo.getCtaView();
mNativeAd.setAdDownloadListener(new ATAppDownloadListener() {
@Override
public void onDownloadStart(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("暂停下载");
printLogOnUI("onDownloadStart totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName);
}
});
}
@Override
public void onDownloadUpdate(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("暂停下载");
printLogOnUI("onDownloadUpdate totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName);
}
});
}
@Override
public void onDownloadPause(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("恢复下载");
printLogOnUI("onDownloadPause totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName);
}
});
}
@Override
public void onDownloadFinish(ATAdInfo adInfo, long totalBytes, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("立即安装");
printLogOnUI("onDownloadFinish totalBytes:" + totalBytes + ",appName:" + appName);
}
});
}
@Override
public void onDownloadFail(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("开始下载");
printLogOnUI("onDownloadFail totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName);
}
});
}
@Override
public void onInstalled(ATAdInfo adInfo, String fileName, String appName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ctaTextView.setText("打开应用");
printLogOnUI("onInstalled appName:" + appName);
}
});
}
});
}
mNativeAd.prepare(mATNativeView, mNativePrepareInfo);
mATNativeView.setVisibility(View.VISIBLE);
} else {
printLogOnUI("this placement no cache!");
}
}
protected void printLogOnUI(String msg) {
// Log.i(TAG,msg);
}
/** 插屏广告*/
private final Map<String, Boolean> mCpAutoLoadPlacementIdMap = new HashMap<>();
private final ATInterstitialAutoLoadListener autoLoadListener = new ATInterstitialAutoLoadListener() {
@Override
public void onInterstitialAutoLoaded(String placementId) {
Log.i(TAG, "PlacementId:" + placementId + ": onInterstitialAutoLoaded");
}
@Override
public void onInterstitialAutoLoadFail(String placementId, AdError adError) {
Log.i(TAG, "PlacementId:" + placementId + ": onInterstitialAutoLoadFail:\n" + adError.getFullErrorInfo());
}
};
private final ATInterstitialAutoEventListener autoCpEventListener = new ATInterstitialAutoEventListener() {
@Override
public void onInterstitialAdClicked(ATAdInfo adInfo) {
Log.i(TAG, "onInterstitialAdClicked:" + adInfo.toString());
}
@Override
public void onInterstitialAdShow(ATAdInfo adInfo) {
Log.i(TAG, "onInterstitialAdShow1111111111:" + adInfo.toString());
MainActivity.reportInfo(adInfo);
}
@Override
public void onInterstitialAdClose(ATAdInfo adInfo) {
Log.i(TAG, "onInterstitialAdClose:" + adInfo.toString());
}
@Override
public void onInterstitialAdVideoStart(ATAdInfo adInfo) {
Log.i(TAG, "onInterstitialAdVideoStart:" + adInfo.toString());
}
@Override
public void onInterstitialAdVideoEnd(ATAdInfo adInfo) {
Log.i(TAG, "onInterstitialAdVideoEnd:" + adInfo.toString());
}
@Override
public void onInterstitialAdVideoError(AdError adError) {
Log.i(TAG, "onInterstitialAdVideoError:" + adError.getFullErrorInfo());
}
public void onDeeplinkCallback(ATAdInfo adInfo, boolean isSuccess) {
Log.i(TAG, "onDeeplinkCallback:\n" + adInfo.toString() + "| isSuccess:" + isSuccess);
}
public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) {
Log.i(TAG, "onDownloadConfirm:\n" + adInfo.toString());
}
};
private void initCpInterstitialAd() {
mInterstitialAd = new ATInterstitial(mContext, LCAppcation.interstitialAdId);
mInterstitialAd.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl());
mInterstitialAd.setAdListener(new ATInterstitialExListener() {
@Override
public void onDeeplinkCallback(ATAdInfo adInfo, boolean isSuccess) {
Log.i(TAG, "onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess);
}
@Override
public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) {
Log.i(TAG, "onDownloadConfirm: adInfo=" + adInfo.toString());
}
@Override
public void onInterstitialAdLoaded() {
Log.i(TAG, "onInterstitialAdLoaded");
}
@Override
public void onInterstitialAdLoadFail(AdError adError) {
Log.i(TAG, "onInterstitialAdLoadFail:\n" + adError.getFullErrorInfo());
}
@Override
public void onInterstitialAdClicked(ATAdInfo entity) {
Log.i(TAG, "onInterstitialAdClicked:\n" + entity.toString());
}
@Override
public void onInterstitialAdShow(ATAdInfo entity) {
Log.i(TAG, "onInterstitialAdShow:\n" + entity.toString());
}
@Override
public void onInterstitialAdClose(ATAdInfo entity) {
Log.i(TAG, "onInterstitialAdClose:\n" + entity.toString());
}
@Override
public void onInterstitialAdVideoStart(ATAdInfo entity) {
Log.i(TAG, "onInterstitialAdVideoStart:\n" + entity.toString());
}
@Override
public void onInterstitialAdVideoEnd(ATAdInfo entity) {
Log.i(TAG, "onInterstitialAdVideoEnd:\n" + entity.toString());
}
@Override
public void onInterstitialAdVideoError(AdError adError) {
Log.i(TAG, "onInterstitialAdVideoError:\n" + adError.getFullErrorInfo());
}
});
mInterstitialAd.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl());
}
private void initCpAutoLoad() {
ATInterstitialAutoAd.init(mContext, null, autoLoadListener);
String curPlacementId = LCAppcation.interstitialAdId;
mCpAutoLoadPlacementIdMap.put(curPlacementId, true);
ATInterstitialAutoAd.addPlacementId(curPlacementId);
}
private ATShowConfig getCpATShowConfig() {
ATShowConfig.Builder builder = new ATShowConfig.Builder();
builder.scenarioId(AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO);
builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.INTERSTITIAL_AD_SHOW_CUSTOM_EXT);
return builder.build();
}
private void loadCpAd() {
SDKUtil.initSDK(mContext);
if (mInterstitialAd == null) {
return;
}
Map<String, Object> localMap = new HashMap<>();
// localMap.put(ATAdConst.KEY.AD_WIDTH, getResources().getDisplayMetrics().widthPixels);
// localMap.put(ATAdConst.KEY.AD_HEIGHT, getResources().getDisplayMetrics().heightPixels);
//插屏广告使用原生自渲染广告时,设置自定义渲染方式:只需要在发起请求时额外设置setNativeAdCustomRender即可,请求、展示广告流程同插屏广告接入流程相同。
mInterstitialAd.setNativeAdCustomRender(new GgBaseActivity.NativeAdCustomRender(mContext));
mInterstitialAd.setLocalExtra(localMap);
mInterstitialAd.load();
}
private void isCpAdReady() {
ATInterstitialAutoAd.isAdReady(LCAppcation.interstitialAdId);
}
private void showCpAd() {
ATInterstitialAutoAd.show(getActivity(), LCAppcation.interstitialAdId, getCpATShowConfig(), autoCpEventListener, new GgBaseActivity.AdRevenueListenerImpl());
}
/** 横幅广告*/
private void initHfBannerView() {
mBannerView = new ATBannerView(getActivity());
//Loading and displaying ads should keep the container and BannerView visible all the time
mBannerView.setVisibility(VISIBLE);
mBannerView.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl());
mBannerView.setBannerAdListener(new ATBannerExListener() {
@Override
public void onDeeplinkCallback(boolean isRefresh, ATAdInfo adInfo, boolean isSuccess) {
Log.i(TAG, "onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess);
}
@Override
public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) {
Log.i(TAG, "onDownloadConfirm:" + adInfo.toString() + " networkConfirmInfo:" + networkConfirmInfo);
}
@Override
public void onBannerLoaded() {
Log.i(TAG, "onBannerLoaded");
}
@Override
public void onBannerFailed(AdError adError) {
Log.i(TAG, "onBannerFailed: " + adError.getFullErrorInfo());
}
@Override
public void onBannerClicked(ATAdInfo entity) {
Log.i(TAG, "onBannerClicked:" + entity.toString());
}
@Override
public void onBannerShow(ATAdInfo entity) {
Log.i(TAG, "onBannerShow:" + entity.toString());
mBannerViewContainer.setVisibility(VISIBLE);
MainActivity.reportInfo(entity);
}
@Override
public void onBannerClose(ATAdInfo entity) {
mBannerView.setVisibility(View.GONE);
mBannerViewContainer.setVisibility(View.GONE);
Log.i(TAG, "onBannerClose:" + entity.toString());
}
@Override
public void onBannerAutoRefreshed(ATAdInfo entity) {
Log.i(TAG, "onBannerAutoRefreshed:" + entity.toString());
}
@Override
public void onBannerAutoRefreshFail(AdError adError) {
Log.i(TAG, "onBannerAutoRefreshFail: " + adError.getFullErrorInfo());
}
});
mBannerView.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl());
}
private void loadHfBannerAd() {
SDKUtil.initSDK(getActivity());
//Loading and displaying ads should keep the container and BannerView visible all the time
mBannerView.setVisibility(VISIBLE);
mBannerViewContainer.setVisibility(VISIBLE);
//int padding = dip2px(12);
Map<String, Object> localMap = new HashMap<>();
localMap.put(ATAdConst.KEY.AD_WIDTH, getResources().getDisplayMetrics().widthPixels);
localMap.put(ATAdConst.KEY.AD_HEIGHT, dip2px(90));
mBannerView.setLocalExtra(localMap);
//横幅广告使用原生自渲染广告时,设置自定义渲染方式:只需要在发起请求时额外设置setNativeAdCustomRender即可,请求、展示广告流程同横幅广告接入流程相同。
mBannerView.setNativeAdCustomRender(new GgBaseActivity.NativeAdCustomRender(getActivity()));
mBannerView.loadAd();
}
private void addHfBannerViewToContainer() {
if (mBannerViewContainer != null && mBannerView != null) {
mBannerViewContainer.addView(mBannerView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, mBannerViewContainer.getLayoutParams().height));
}
}
private ATShowConfig getHfBannerATShowConfig() {
ATShowConfig.Builder builder = new ATShowConfig.Builder();
builder.scenarioId(AdConst.SCENARIO_ID.BANNER_AD_SCENARIO);
builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.BANNER_AD_SHOW_CUSTOM_EXT);
return builder.build();
}
public int dip2px(float dipValue) {
float scale = this.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
}这个frament页面是两个fragment页面复用,其中这段代码中setSelectAll方法中adapter在另一页面复用该页面是为空
最新发布