CleanActivity.java 12.7 KB
package com.lotus.town.clean;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.ad.lib.AdInfo;
import com.ad.lib.AdManager;
import com.ad.lib.AdPlacement;
import com.ad.lib.IAdCallback;
import com.ad.lib.RequestInfo;
import com.bumptech.glide.Glide;
import com.bytedance.sdk.openadsdk.AdSlot;
import com.controller.IADController;
import com.lotus.town.R;
import com.lotus.town.clean.cache.CacheListener;
import com.lotus.town.clean.cache.CacheManager;
import com.lotus.town.clean.cache.CleanListener;
import com.lotus.town.config.SupportAction;
import com.umeng.analytics.MobclickAgent;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue;

public class CleanActivity extends Activity implements View.OnClickListener {

    TextView mMainWord;
//    LinearLayout mHomeStatusTitle;
    LinearLayout mSecondStatusTitle;
    TextView mCleanItem;
    TextView mCleanPrefix;
    ImageView CloseAd;
    long size = 0;
    long totalSize= 0;
    private RelativeLayout mAdPlace;
    private LinearLayout mNoAdLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clean);
        initView();
        initListener();

        initCleanManager();
        if(IADController.getInstance().isShowInner()) {
            initBigAd();
        } else {
            mAdPlace.setVisibility(View.GONE);
            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mNoAdLayout.getLayoutParams();
            params.topMargin = 255;//在此处设置weight
            mNoAdLayout.setLayoutParams(params);
        }
    }

    private Queue cacheData = new LinkedBlockingQueue();

    class PackageInfoInner{
        String pn;
        int ss;

        PackageInfoInner(String p, int s){
            pn = p;
            ss = s;
        }
    }

    private boolean isExit = false;
    Handler workHandler = new Handler(){
        @Override
        public void dispatchMessage(Message msg) {
            if(cacheData.size() == 0){
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if(isExit){
                            return;
                        }
                        CleanActivity.this.finish();
                        Intent i = new Intent();
                        i.putExtra(SupportAction.FROM,SupportAction.CLEAN_PHONE_FLAG);
                        i.putExtra(SupportAction.PASS_INFO,totalSize);
                        i.setClass(CleanActivity.this, ResultActivity.class);
                        startActivity(i);
                    }
                },1000);
                return;
            }
            PackageInfoInner info = (PackageInfoInner) cacheData.poll();
            mCleanItem.setText(info.pn);
            size = size - info.ss;
            if(size/1024/1024 >1024){
                DecimalFormat df = new DecimalFormat("#.00");
                mMainWord.setText(df.format(size/1024.0/1024.0/1024.0)+"");
                mCleanPrefix.setText("G");
            }else if(size/1024 >1024){
                DecimalFormat df = new DecimalFormat("#.00");
                mMainWord.setText(df.format(size/1024.0/1024.0)+"");
                mCleanPrefix.setText("MB");
            } else {
                mMainWord.setText(size/1024+"");
                mCleanPrefix.setText("KB");
            }

            workHandler.sendEmptyMessageDelayed(0,10);
        }
    };

    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }

    private boolean isLessOneDay(long lastTime){
        float s = (System.currentTimeMillis() - lastTime) / (1000 * 60)/60/24;
        if(s >1){
            return false;
        }
        return true;
    }

    private boolean isLessOneHour(long lastTime){
        float s = (System.currentTimeMillis() - lastTime) / (1000 * 60)/60;
        if(s >1){
            return false;
        }
        return true;
    }

    private void initCleanManager() {
        CacheManager cm = new CacheManager();
        int multiple  = 100;
        long lastTime = getSharedPreferences("usage",0).getLong("clean_time",0);
        if(lastTime == 0){
            multiple = 100 + new Random().nextInt(200);
        }else if(isLessOneHour(lastTime)){
            multiple = 1+ + new Random().nextInt(9);
        } else if(isLessOneDay(lastTime)){
            multiple = 10 + new Random().nextInt(2);
        } else {
            multiple = 100 + new Random().nextInt(100);
        }
        getSharedPreferences("usage",0).edit().putLong("clean_time",System.currentTimeMillis()).commit();
        try {
            for (PackageInfo pi : getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES)) {
                cm.getPackageSize(pi.packageName, new CacheListener() {

                    @Override
                    public void CleanItem(final String pm, final int s) {
                        CleanActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                size = size + s;
                                cacheData.add(new PackageInfoInner(pm, s));
                            }
                        });

                    }
                }, multiple);

            }
            ;
        }catch (Exception e){

        }
        totalSize = size;

        workHandler.sendEmptyMessage(0);

        cm.clearAllCache(new CleanListener() {
            @Override
            public void finish(String pn) {
            }
        });
    }

    private void initView(){
//        mHomeStatusTitle = findViewById(R.id.home_status_title);
        mSecondStatusTitle = findViewById(R.id.second_status_title);
        mAdPlace = findViewById(R.id.ad_placement);
        mNoAdLayout = findViewById(R.id.clean_layout_id);
        mMainWord = findViewById(R.id.clean_size);
        mCleanItem = findViewById(R.id.clean_item);
        mCleanPrefix = findViewById(R.id.clean_size_prefix);
        CloseAd = findViewById(R.id.close_ad);
        initBigView();
    }

    private void initListener(){
        mSecondStatusTitle.setOnClickListener(this);
    }


    ImageView bigAdFromLogo;
    ImageView bigAdImage;
    ImageView bigAdIcon;
    TextView bigTitle;
    TextView bigSubtTitle;
    Button bigButton;
    LinearLayout bigLayout;

    private void initBigView(){
        bigLayout = (LinearLayout) findViewById(R.id.big_layout);
        bigAdFromLogo = (ImageView) findViewById(R.id.big_ad_from_logo);
        bigAdImage = (ImageView) findViewById(R.id.big_ad_image);
        bigAdIcon = (ImageView) findViewById(R.id.big_ad_icon);
        bigTitle = (TextView) findViewById(R.id.big_ad_title);
        bigSubtTitle = (TextView) findViewById(R.id.big_ad_subtitle);
        bigButton = (Button)findViewById(R.id.big_btn);

    }

    private void initBigAd() {
        RequestInfo info = new RequestInfo();
        info.setId(AdPlacement.getWorkId2());
        info.setWidth(1280);
        info.setHeight(720);
        info.setType(AdSlot.TYPE_BANNER);
        final int adType = 0;

        AdManager.getInstance().getAdController(this,adType).loadFeedAd(info, new IAdCallback() {
            @Override
            public void onADLoaded(final AdInfo info) {
                try {
                    if (info == null) {
                        return;
                    }
                    if (CleanActivity.this.isFinishing()) {
                        return;
                    }
                    mAdPlace.setVisibility(View.VISIBLE);
                    CloseAd.setVisibility(View.VISIBLE);

                    info.getReporter().bindDislikeView(CleanActivity.this, CloseAd);
                    if (info.getAdIcon() != null) {
                        bigAdFromLogo.setImageBitmap(info.getAdIcon());
                    }
                    if (info.getImageList() != null && info.getImageList().size() > 0) {
                        Glide.with(CleanActivity.this).load(info.getImageList().get(0)).into(bigAdImage);
                    } else {
                        Glide.with(CleanActivity.this).load(info.getIconUrl()).into(bigAdImage);
                    }
                    Glide.with(CleanActivity.this).load(info.getIconUrl()).into(bigAdIcon);
                    bigTitle.setText(info.getTitle());
                    bigSubtTitle.setText(info.getSubtitle());
                    bigButton.setText(info.getButtonLabel());
                    if (adType == 0) {
                        List<View> clickViewList = new ArrayList<>();
                        clickViewList.add(bigLayout);
                        clickViewList.add(bigButton);
                        info.getReporter().impress(bigLayout, clickViewList, "j_s_a_d", "j_s_c");

                    } else if (adType == 1) {
                        if (info.getView() == null) {
                            return;
                        }
                        bigLayout.removeAllViews();

                        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) info.getView().getLayoutParams();
                        if (params == null) {
                            params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
                        }
                        info.getView().setLayoutParams(params);
                        bigLayout.addView(info.getView());
                        info.getReporter().render();
                        info.getReporter().impress(bigLayout, "gdt_j_s_a_d");
                        info.getReporter().impress(bigButton, "gdt_j_s_a_d");
                        bigLayout.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                info.getReporter().click(view, "gdt_j_s_c"); // 点击接口
                            }
                        });
                        bigButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                info.getReporter().click(view, "gdt_j_s_c"); // 点击接口
                            }
                        });
                    } else if (adType == 2) {
                        info.getReporter().impress(bigLayout, "j_s_a_d");
                        info.getReporter().impress(bigButton, "j_s_a_d");
                        bigLayout.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                info.getReporter().click(view, "j_s_c"); // 点击接口
                            }
                        });
                        bigButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                info.getReporter().click(view, "j_s_c"); // 点击接口
                            }
                        });
                    }
                } catch (Exception e){
                    return;
                }
            }

            @Override
            public void onADError() {

            }

            @Override
            public void onClicked() {

            }
        });
    }


    @Override
    public void onBackPressed() {
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        isExit = true;
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.clean_phone) {
        } else if (v.getId() == R.id.virus_check) {

        } else if (v.getId() == R.id.phone_faster) {

        } else if(v.getId() == R.id.second_status_title){
            isExit = true;
            CleanActivity.this.finish();
            Intent i = new Intent();
            i.putExtra(SupportAction.FROM,SupportAction.CLEAN_PHONE_FLAG);
            i.putExtra(SupportAction.PASS_INFO,totalSize);
            i.setClass(CleanActivity.this, ResultActivity.class);
            startActivity(i);
        }
    }
}