package com.citycloud.androidweb.activy;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.ValueCallback;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.citycloud.androidweb.common.Constants;
import com.citycloud.androidweb.web.CoolIndicatorLayout;
import com.citycloud.androidweb.R;
import com.citycloud.androidweb.common.AndroidInterface;
import com.just.agentweb.AgentWeb;
import com.just.agentweb.DefaultWebClient;
import com.just.agentweb.WebChromeClient;
import com.just.agentweb.WebViewClient;

import org.json.JSONObject;

import cn.bingoogolapple.bgabanner.BGABanner;

/**
 * AgentWeb框架实现 安卓壳子
 * BGA Banner实现的启动页 支持自动轮播等功能
 * 实现了回退、退出功能
 * @author Yc
 */
public class MainActivity extends AppCompatActivity {

    private ImageView ivback;
    private TextView receiveTitle;
    /**
     * 用来承载AgentWebView
     */
    private LinearLayout mLinearLayout;

    private AgentWeb mAgentWeb;
    private long exitTime;
    BGABanner guide_banner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent in=new Intent(getApplicationContext(), GuideActivity.class);//启动页start
        startActivity(in);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
        setContentView(R.layout.activity_main);

        //initView();
        //mLinearLayout = (LinearLayout) this.findViewById(R.id.container);

        initAgentWeb();



}


    private void initAgentWeb() {
        CoolIndicatorLayout mCoolIndicatorLayout = new CoolIndicatorLayout(this);//彩色进度条
        mAgentWeb = AgentWeb.with(this)
                .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))
                .setCustomIndicator(mCoolIndicatorLayout)
                //.useDefaultIndicator(0,0)
                //.useDefaultIndicator()
                .setWebChromeClient(webChromeClient)
                .setWebViewClient(webViewClient)
                .setMainFrameErrorView(R.layout.agentweb_error_page, -1)
                .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
                //.setWebLayout(new WebLayout(this))
                .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.DISALLOW)//打开其他应用时，弹窗咨询用户是否前往其他应用
                .interceptUnkownUrl() //拦截找不到相关页面的Scheme
                .createAgentWeb()
                .ready()
                .go(Constants.TARGET_URL);

        //getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
        mAgentWeb.getWebCreator().getWebView().setOverScrollMode(WebView.OVER_SCROLL_NEVER);
        mAgentWeb.getWebCreator().getWebView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存，只从网络获取数据.
        //支持屏幕缩放
        //mAgentWeb.getWebCreator().getWebView().getSettings().setSupportZoom(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setMediaPlaybackRequiresUserGesture(false);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setBuiltInZoomControls(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setJavaScriptEnabled(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setUseWideViewPort(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setLoadWithOverviewMode(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setAppCacheEnabled(true);
        //mAgentWeb.getWebCreator().getWebView().getSettings().setDomStorageEnabled(true);//开启本地DOM存储
        //mAgentWeb.getWebCreator().getWebView().getSettings().setLoadsImagesAutomatically(true); // 加载图片
        //mAgentWeb.getWebCreator().getWebView().getSettings().setMediaPlaybackRequiresUserGesture(false);//播放音频，多媒体需要用户手动？设置为false为可自动播放
        //mAgentWeb.getWebCreator().getWebView().getSettings().setAllowFileAccess(true);


        /*实现android与js通信 */
        if(mAgentWeb!=null){
            //注入对象
            mAgentWeb.getJsInterfaceHolder().addJavaObject("android",new AndroidInterface(mAgentWeb,this));
        }

        /*安卓调用js*/
        //一个参数
        mAgentWeb.getJsAccessEntrace().quickCallJs("callByAndroidParam","Hello ! Agentweb");

        //多个参数
        mAgentWeb.getJsAccessEntrace().quickCallJs("callByAndroidMoreParams", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.i("Info","value:"+value);
            }
        },getJson(),"say:", " Hello! Agentweb");

        /*js调用安卓*/
    }


    private String getJson(){
        String result="";
        try {
            JSONObject mJSONObject=new JSONObject();
            mJSONObject.put("id",1);
            mJSONObject.put("name","Agentweb");
            mJSONObject.put("age",18);
            result= mJSONObject.toString();
        }catch (Exception e){

        }
        return result;
    }

    // 看导包 这些是第三方的 不是自带的
    private WebChromeClient webChromeClient = new WebChromeClient() {
        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);

            // 设置接收到的 title
            if (receiveTitle != null) {
                receiveTitle.setText(title);
            }

        }
    };

    //看导包 这些是第三方的 不是自带的
    private WebViewClient webViewClient = new WebViewClient() {
        // 可以去看上一级已经写了
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return super.shouldOverrideUrlLoading(view, request);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }
    };


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {//通用返回功能
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (mAgentWeb.getWebCreator().getWebView().canGoBack()) {
                // 返回键退回
                mAgentWeb.getWebCreator().getWebView().goBack();
                return true;
            } else {
                if ((System.currentTimeMillis() - exitTime) > 2000) {
                    Toast.makeText(getApplicationContext(), "再按一次退出应用", Toast.LENGTH_SHORT).show();
                    exitTime = System.currentTimeMillis();
                } else {
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }

}
