|
package com.electric.chargingpile.application;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.Log;
import androidx.multidex.MultiDexApplication;
import com.alibaba.fastjson.JSONException;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.maps.model.LatLng;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.Utils;
import com.electric.chargingpile.BuildConfig;
import com.electric.chargingpile.activity.MainMapActivity;
import com.electric.chargingpile.data.AdDetail;
import com.electric.chargingpile.data.Adin;
import com.electric.chargingpile.data.CarOwnerCertificateBean;
import com.electric.chargingpile.data.Zhan;
import com.electric.chargingpile.entity.CarSeriesEntity;
import com.electric.chargingpile.gen.DaoMaster;
import com.electric.chargingpile.gen.DaoSession;
import com.electric.chargingpile.manager.ProfileManager;
import com.electric.chargingpile.util.DES3;
import com.electric.chargingpile.util.JsonUtils;
import com.electric.chargingpile.util.PhotoUtils;
import com.electric.chargingpile.util.SharedPreferencesHelper;
import com.google.gson.Gson;
import com.mob.MobSDK;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.model.VideoOptionModel;
import com.tencent.bugly.crashreport.CrashReport;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.jpush.android.api.JPushInterface;
import okhttp3.Call;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
public class MainApplication extends MultiDexApplication {
public static MainApplication instances;
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static int mScreenWidth;
public static int mScreenHeight;
public static SharedPreferencesHelper sph;
public static List<Zhan> collectList;
public static String userPhone = "";
public static String userTpye = ""; // 1:国标 2:特斯拉
public static String userId = "";
public static String userCar = "";
public static String userIcon = "";
public static String userCertifiedModel=""; //用户认证车型 此处仅为一个作为一个标识,如果有,则表示已认证过
public static String userCarIntentMode=""; //用户意向车型
public static LatLng center = null; // 用户位置
public static String userNickname = "";
public static String mapStatus = "";
public static String costWay = "";
public static String sudu = ""; // 1: 快充 2:慢充
public static String shuxing = ""; // 公共、私人
public static String messageToken = "";
public static String map = "";
public static String atCity = "";
public static String sql = "";
public static String uptime = "";
public static String details_flag = "0";
public static String firstPoint = "";
public static Boolean firstSsyd;
public static String password = "";
public static String url = "http://59.110.68.162";// 充电桩测试环境
public static String pic_url = "http://59.110.68.162/zhannew/uploadfile/";
// public static String url = "http://cdz.evcharge.cc";// 充电桩正式环境
// public static String pic_url = "http://cdz.evcharge.cc/zhannew/uploadfile/";
public static String urlNew = "http://123.56.67.7:83/api/0300";// 一电测试环境
public static String d1evUrl = "https://d1ev-new.yiduyongche.com";// 评论上传视频
public static String CDN = "https://cdn-fs.d1ev.com";
// public static String urlNew = "https://api.touchev.com:83/api/0300";// 一电正式环境
// public static String url = "https://cdz.d1ev.com";
public static String build_flag = "0";
public static String support = "0"; // true:本APP支付 false:其他方式支付
public static String freestop = ""; // true:免费停车
public static String selecthotel = ""; // true:酒店
public static String selectexpressway = ""; // true:高速
public static String selectjingdian = ""; // true:景点
public static String logid = "";
public static String suitcar = "";
public static Boolean gestureguide;
public static String h5_url = "";
private String pushID = "";
public static String imei = "";
public static String current_url = "";
public static String goods_type = "";
public static String ad_link = "";
public static String ok = "";
public static String type = "";
public static String userPassword = "";
public static String mainSkip = "";
public static String level_one = "";
public static String level_two = "";
public static String level_three = "";
public static String level_four = "";
public static String level_five = "";
public static String huodonglabel = "";
public static String mianStop = "";
public static String search_address = "";
public static boolean isMap = true;
public static int count;
public static int carCount;
public static int round;
public static int msgOne;
public static String msgTime;
public static String firstOpenTime;
public static int msgTwo;
public static List<AdDetail> list_addetail;
public static String festival_time = "";
public static boolean isIgnore = true;
public static Double search_jing = 0.0, search_wei = 0.0;
public static Context context;
public static String current_code = "3.5";
public static String storePath = "";
public static String q_content = "";
public static Map<String, String> q_map = new HashMap<>();
public static boolean isAppStart;
public static boolean haveActivity = false;
public static String ad_major = "";
public static Adin mAdComment = null;
private String mCurrentCity = "";
@SuppressLint("MissingPermission")
@Override
public void onCreate() {
super.onCreate();
this.context = getApplicationContext();
storePath = PhotoUtils.CACHE_DIR;
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
builder.detectFileUriExposure();
}
// PermissionMonitor.start(false);
instances = this;
setDatabase();
Utils.init(this);
LogUtils.getConfig().setLogSwitch(true);
initImageLoader(getApplicationContext());
try {
OkHttpUtils.getInstance().setCertificates(getAssets().open("ca.crt"));
OkHttpUtils.getInstance().setCertificates();
} catch (IOException e) {
e.printStackTrace();
}
mScreenWidth = getResources().getDisplayMetrics().widthPixels;
mScreenHeight = getResources().getDisplayMetrics().heightPixels;
Log.e("mScreenWidth", mScreenWidth + "");
Log.e("mScreenHeight", mScreenHeight + "");
sph = new SharedPreferencesHelper(this);
collectList = new ArrayList<>();
isAppStart = ProfileManager.getInstance().getAppStart(getApplicationContext());
userPhone = ProfileManager.getInstance().getUsername(getApplicationContext());
userId = ProfileManager.getInstance().getUserid(getApplicationContext());
userPassword = ProfileManager.getInstance().getKeyUserpassword(getApplicationContext());
userCar = ProfileManager.getInstance().getUsercar(getApplicationContext());
userIcon = ProfileManager.getInstance().getUsericon(getApplicationContext());
Log.e("111", "onCreate: " + userIcon);
msgOne = ProfileManager.getInstance().getMsgOne(getApplicationContext());
msgTime = ProfileManager.getInstance().getSystemMsgTime(getApplicationContext());
firstOpenTime = ProfileManager.getInstance().getFirstOpenTime(getApplicationContext());
userCarIntentMode = ProfileManager.getInstance().getCarIntentModel(getApplicationContext());
loginRemind();
setFestival();
if (ProfileManager.getInstance().getPrivacyAgreement(this)) {
MainApplication.initSDK();
}
//防止进度跳转不准确
VideoOptionModel videoOptionModel =
new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1);
ArrayList<VideoOptionModel> list =new ArrayList<VideoOptionModel>();
list.add(videoOptionModel);
GSYVideoManager.instance().setOptionModelList(list);
}
public void initJPush() {
//极光
JPushInterface.setSmartPushEnable(this,true);
JPushInterface.setDebugMode(BuildConfig.DEBUG);
JPushInterface.init(this);
Log.e("TAG", "initJPush: "+ JPushInterface.getRegistrationID(this) );
}
public static MainApplication getInstance() {
if (null == instances) {
instances = new MainApplication();
}
return instances;
}
public void setmCurrentCity(String mCurrentCity) {
this.mCurrentCity = mCurrentCity;
}
public String getmCurrentCity() {
return mCurrentCity;
}
public static void initImageLoader(Context context) {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPoolSize(5).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator()).discCacheSize(50 * 1024 * 1024).memoryCacheSize(5 * 1024 * 1024).build();
ImageLoader.getInstance().init(config);
}
public static DisplayImageOptions getCacheOptions(int image) {
return new DisplayImageOptions.Builder().showImageForEmptyUri(image).showImageOnFail(image).cacheInMemory(true).cacheOnDisc(true).considerExifParams(true)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT).resetViewBeforeLoading(false).bitmapConfig(Bitmap.Config.RGB_565).build();
}
public static boolean isLogin() {
if ("".equals(userPhone)) {
return false;
}
return true;
}
private void loginRemind() {
round = ProfileManager.getInstance().getRound(getApplicationContext());
count = ProfileManager.getInstance().getCount(getApplicationContext());
int maxCount = ProfileManager.getInstance().getMaxCount(getApplicationContext());
if (!MainApplication.isLogin()) {
int i = count + 1;
Log.e("i***-", i + "");
count = i;
i = i >= maxCount ? 0: i;
ProfileManager.getInstance().setCount(getApplicationContext(), i);
}else{
ProfileManager.getInstance().setCount(getApplicationContext(), 0);
ProfileManager.getInstance().setMaxCount(getApplicationContext(), 4);
new Thread(()->{
try {
String host = "";
if (MainApplication.url.contains("cdz.evcharge.cc")) {
host = "cdz.evcharge.cc";
} else {
host = "59.110.68.162";
}
Socket socket = new Socket(host, 9503); // IP:10.14.114.127,端口54321
// 向服务器发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println("{\"fun\":\"timer\"}");
// out.println("{\"fun\":\"getcity\"}");
// 接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String msg = br.readLine();
int time = (int) (System.currentTimeMillis() / 1000);
MainMapActivity.cha = time - Integer.parseInt(msg);
long tokenTime = System.currentTimeMillis() / 1000 - MainMapActivity.cha - 1;
String token = null;
try {
token = DES3.encode(String.valueOf(tokenTime));
token = URLEncoder.encode(token, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
String url = MainApplication.url + "/zhannew/basic/web/index.php/car/my?userid=" + MainApplication.userId + "&order=1" + "&token=" + token;
Log.e("TAG -- hyc", "getCarOwnerCertificateList: "+url);
OkHttpUtils.get().url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
}
@Override
public void onResponse(String response) {
String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
Log.e("TAG_hyc", "onResponse: "+response );
if ("01".equals(rtnCode)) {
String chexing = "";
String data = JsonUtils.getKeyResult(response, "data");
List<CarOwnerCertificateBean> list=new ArrayList<>();
try {
list = JsonUtils.parseToObjectList(data, CarOwnerCertificateBean.class);
}catch (JSONException e){
}
boolean certificated = false;
for (CarOwnerCertificateBean bean : list) {
if (bean.getStatus()!=2){ //排除意向车型,则证明用户已经车主认证过了
chexing = bean.getChexing();
certificated = true;
break;
}
}
if (certificated) {
Gson gson = new Gson();
CarSeriesEntity carSeriesEntity = gson.fromJson(chexing, CarSeriesEntity.class);
userCertifiedModel= carSeriesEntity.getSeriesName();
}
if (userCertifiedModel.equals("")){
int max = ProfileManager.getInstance().getMaxCarModelCount(getApplicationContext());
carCount=ProfileManager.getInstance().getCarModelCount(getApplicationContext()) + 1;
int count =carCount >= max ? 0 :carCount;
ProfileManager.getInstance().setCarModelCount(getApplicationContext(), count);
}else{
ProfileManager.getInstance().setCarModelCount(getApplicationContext(),0);
ProfileManager.getInstance().setMaxCarModelCount(getApplicationContext(), 4);
}
}
}
});
}catch (Exception e){
}
}).start();
}
}
private void setFestival() {
int time = (int) (System.currentTimeMillis() / 1000);
if (time >= 1484841600 && time <= 1486569599) {
MainApplication.festival_time = "1";
} else if (time >= 1486569600 && time <= 1486915199) {
MainApplication.festival_time = "2";
}
}
/**
* 设置greenDao
*/
private void setDatabase() {
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "my-search-text-db", null);
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
public String getPushID() {
if (TextUtils.isEmpty(pushID)) {
return ProfileManager.getInstance().getPushID(getApplicationContext());
} else {
return pushID;
}
}
public void setPushID(String pushID) {
this.pushID = pushID;
ProfileManager.getInstance().setPushID(getApplicationContext(), pushID);
}
public static void initSDK() {
AMapLocationClient.updatePrivacyShow(context,true,true);
AMapLocationClient.updatePrivacyAgree(context,true);
MobSDK.init(MainApplication.context);
MobSDK.submitPolicyGrantResult(true,null);
CrashReport.initCrashReport(MainApplication.context, "900010422", BuildConfig.DEBUG);
CrashReport.setAppChannel(MainApplication.context, BuildConfig.FLAVOR);
}
}
|