Skip to content

安卓11不能弹出升级的框 安卓9可以 #178

@zp-techie

Description

@zp-techie

调用的地方:
`XUpdate.newBuild(QSHomeActivity.this).updateUrl(BuildConfig.BASEURL+UrlConfig.getAppVersion)
.updateParser(new CustomUpdateParser(QSHomeActivity.this)) //设置自定义的版本更新解析器
.update();

    XUpdate.get().setILogger(new ILogger() {
        @Override
        public void log(int priority, String tag, String message, Throwable t) {
            // Realize the function of logging
        SHLogUtil.e("下载","咋回事-》"+message);

        }
    });`

CustomUpdateParser
`package com.android.nativetemplate.main.activity;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.location.Location;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;

import com.android.nativetemplate.BuildConfig;
import com.android.nativetemplate.R;
import com.android.nativetemplate.common.QSCenterDialog;
import com.android.nativetemplate.common.base.CommonFullScreenBaseActivity;
import com.android.nativetemplate.common.constant.QSConstants;
import com.android.nativetemplate.databinding.ActivityStartBinding;
import com.android.nativetemplate.jpush.QSNotifyUtils;
import com.android.nativetemplate.main.QSHomeAdapter;
import com.android.nativetemplate.main.networkService.CustomUpdateParser;
import com.android.nativetemplate.main.networkService.NetworkService;
import com.android.nativetemplate.main.networkService.UrlConfig;
import com.android.nativetemplate.main.networkService.entity.MineTask;
import com.android.nativetemplate.main.networkService.entity.home.HomeMenu;
import com.android.nativetemplate.main.networkService.entity.home.HomeVehicleInfo;
import com.android.nativetemplate.main.networkService.entity.home.LastMileageDetail;
import com.android.nativetemplate.main.service.TaskService;
import com.android.nativetemplate.main.views.DialogSubmitListener;
import com.android.nativetemplate.main.views.QSLanguageSelectPopup;
import com.android.nativetemplate.main.views.QSVehicleEditDialog;
import com.android.nativetemplate.mineRepair.QSMineRepairActivity;
import com.android.nativetemplate.mineTask.QSMineTaskActivity;
import com.android.nativetemplate.mineTask.QSMineTaskSlagActivity;
import com.android.nativetemplate.model.LocationUpload;
import com.android.nativetemplate.report_repair.activity.QSReportRepairActivity;
import com.android.nativetemplate.utils.DeviceLocationUtils;
import com.android.nativetemplate.utils.GPSLocationListener;
import com.android.nativetemplate.utils.MultiLanguageUtils;
import com.android.nativetemplate.utils.SHGreenDaoHelper;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.BasePopupView;
import com.lxj.xpopup.interfaces.OnConfirmListener;
import com.ruffian.library.widget.helper.RTextViewHelper;
import com.wzp.baselibrary.eventBusUtil.WZPEvent;
import com.wzp.baselibrary.eventBusUtil.WZPEventBusUil;
import com.wzp.baselibrary.logger.SHLogUtil;
import com.wzp.baselibrary.snackbarUtil.WZPSnackbarUtils;
import com.wzp.baselibrary.utils.CommonUtils;
import com.wzp.baselibrary.utils.DateUtils;
import com.wzp.recyclerview.util.WZPItemClickListener;
import com.xuexiang.xupdate.XUpdate;
import com.xuexiang.xupdate.logs.ILogger;
import com.zyq.easypermission.EasyPermission;
import com.zyq.easypermission.EasyPermissionResult;
import com.zyq.easypermission.bean.PermissionAlertInfo;

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import cn.jpush.android.api.NotificationMessage;
import rxhttp.RxHttp;
import rxhttp.wrapper.utils.GsonUtil;

/**

  • Copyright 2021 - wzp_vicky

  • 功能详细描述

  • @author wangzhipeng 623301600@qq.com

  • @Version 0.1 2021/10/23 22:45
    */
    public class QSHomeActivity extends CommonFullScreenBaseActivity {
    private QSHomeAdapter mQSHomeAdapter;
    List mMenus = new ArrayList<>();
    GridLayoutManager mGridlayoutManager = new GridLayoutManager(this, 3) {
    @OverRide
    public boolean checkLayoutParams(RecyclerView.LayoutParams lp) {
    // 使得每个单元格跨度为1
    lp.width = getWidth() / 3;
    return true;
    }
    };

    private HomeVehicleInfo mVehicleInfo;
    private Bundle mMineRepairBundle = new Bundle();
    private FusedLocationProviderClient fusedLocationClient;
    private LocationRequest locationRequest;
    private LocationCallback locationCallback;
    private ActivityResultLauncher mActivityLauncher;
    private BasePopupView mOPenLocationDialog;
    private Bundle mMineBundle = new Bundle();
    private DeviceLocationUtils mGPSLocationUtils;
    private double mGPSLon, mGPSLat;
    private double mGoogleLon, mGoogleLat;
    private Location mGoogleLocation;
    private int mPos;

    private String mRegistrationId;
    private ScheduledExecutorService executorService;
    private int intervalPeriod = 3 * 1000; // 间隔时间,单位为毫秒
    private Intent intentService;
    private int mOrderType = 0;
    private String mPreMileage = "";
    private int mClasses = -1;//班次:白班:1 夜班:2
    private LastMileageDetail mPreMileageDetail;

    @OverRide
    protected void initViews() {
    WZPEventBusUil.register(this);
    getIMEI();
    _setHomeMenuAdapter();
    __initListener();
    mGPSLocationUtils = DeviceLocationUtils.getInstance();

     mGPSLocationUtils.setGPSLocationListener(new GPSLocationListener() {
         @Override
         public void getLocation(double lon, double lat) {
             mGPSLon = lon;
             mGPSLat = lat;
         }
    
         @Override
         public void getLocationBeans(Location location) {
             mGoogleLocation = location;
         }
     });
    
     boolean isOpen = isOpenLocation();
    
     SHLogUtil.i("是否开启位子服务", isOpen + "----------------");
    
     String vehicleInfo = mSPUtils.getString("vehicleInfo", "");
     if (!TextUtils.isEmpty(vehicleInfo)) {
         mVehicleInfo = GsonUtil.fromJson(vehicleInfo, HomeVehicleInfo.class);
         String vehicleNo = mVehicleInfo.getVehicleNo();
         mBinding.vehicleNoVal.setText(vehicleNo);
         request2Bind(vehicleNo);
     }
    
    
     String vName = CommonUtils.getVersionName(this);
     mBinding.tvVersion.setText("V" + vName);
     Locale ll = MultiLanguageUtils.getSysPreferredLocale();
     String sysLanguage = ll.getLanguage();
    
     String sp_language = mSPUtils.getString("qs_language", sysLanguage.isEmpty() ? "" : sysLanguage);
     if (sp_language.contains("zh")) {
         mBinding.ivLanguage.setImageResource(R.mipmap.language_zh_black);
     } else if (sp_language.contains("en")) {
         mBinding.ivLanguage.setImageResource(R.mipmap.language_en_black);
     } else if (sp_language.contains("in")) {
         mBinding.ivLanguage.setImageResource(R.mipmap.language_id_black);
     }
     checkPermission(true);
    
     request2GetAppVersion();
    

    }

    private void _startService() {
    if (intentService == null) {
    //连续启动Service
    intentService = new Intent(this, TaskService.class);
    // startService(intentService);

     }
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
         startForegroundService(intentService);
     } else {
         startService(intentService);
     }
    

    }

    @OverRide
    protected void onResume() {
    super.onResume();
    startLocationUpdates();

// SHLogUtil.e("任务service-EHttpClient", "QSHomeActivity-->onResume-->");
// if (mIsPaused && intentService != null) {
// mIsPaused = false;
// stopService(intentService);
//
// _startService();
// }
}

@Override
protected void onPause() {
    super.onPause();
    SHLogUtil.e("任务service-EHttpClient", "QSHomeActivity-->onPause-->");
}


private void __initListener() {
    mBinding.edit.setOnClickListener(this);
    mBinding.language.setOnClickListener(this);
    mBinding.rlMileage.setOnClickListener(this);
    mBinding.tvTagYb.setOnClickListener(this);
    mBinding.tvTagBb.setOnClickListener(this);
}


@Override
protected void processOnClickListener(View v) {
    super.processOnClickListener(v);
    switch (v.getId()) {
        case R.id.edit:
            new XPopup.Builder(QSHomeActivity.this).autoFocusEditText(false)
                    .asCustom(new QSVehicleEditDialog(QSHomeActivity.this, 0, new DialogSubmitListener() {
                        @Override
                        public void submit(String vehicle) {
                            request2Bind(vehicle);
                        }
                    }))
                    .show();
            break;
        case R.id.rl_mileage:
            String pre = mPreMileage.length() <= 4 ? mPreMileage : mPreMileage.substring(0, mPreMileage.length() - 4);//带出上次数据后四位前边的数字
            new XPopup.Builder(QSHomeActivity.this).autoFocusEditText(false)
                    .asCustom(new QSVehicleEditDialog(QSHomeActivity.this, 1, pre, mPreMileage, new DialogSubmitListener() {
                        @Override
                        public void submit(String mileage) {
                            if (TextUtils.isEmpty(mileage)) return;
                            request2SubmitMileage(mileage);
                        }
                    }))
                    .show();
            break;
        case R.id.language:
            new XPopup.Builder(QSHomeActivity.this)
                    .hasBlurBg(false)
                    .atView(mBinding.language)
                    .offsetX(-10)
                    .asCustom(new QSLanguageSelectPopup(QSHomeActivity.this))

                    .show();
            break;
        case R.id.tv_tag_bb:
            if (mClasses == 1) return;
            mClasses = -1;
            _updateBanci(1);
            break;
        case R.id.tv_tag_yb:
            if (mClasses == 2) return;
            mClasses = -1;
            _updateBanci(2);
            break;
    }
}

// @OverRide
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// switch (keyCode) {
// case KeyEvent.KEYCODE_MENU:
// return true;
// case KeyEvent.KEYCODE_BACK:
// return true;
// case KeyEvent.KEYCODE_HOME:
// return true;
// }
// return super.onKeyDown(keyCode, event);
// }

private void _setHomeMenuAdapter() {

    mMenus.add(new HomeMenu(getString(R.string.mine_task), R.mipmap.mine_task));
    mMenus.add(new HomeMenu(getString(R.string.mine_repair), R.mipmap.mine_repair));
    mMenus.add(new HomeMenu(getString(R.string.repair_report), R.mipmap.rapair_report));

    mQSHomeAdapter = new QSHomeAdapter(this, mMenus);
    mBinding.homeRecyclerview.setAdapter(mQSHomeAdapter);
    mGridlayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            // 返回每个位置的跨度大小,这里设置每个项的跨度都为1
            return 1;
        }
    });
    mBinding.homeRecyclerview.setLayoutManager(mGridlayoutManager);


    mQSHomeAdapter.setOnItemClickListener(new WZPItemClickListener() {
        @Override
        public void onItemClick(int pos) {

// if (true) {
//
// if (pos == 0) {
// enterActivity(null, LocationActivity.class);
// return;
// } else {
// enterActivity(null, MapActivity.class);
// return;
// }
// }
// enterActivity(null, MapActivity.class);
// checkLocationOpen();

            if (mVehicleInfo == null) {
                WZPSnackbarUtils.showSnackbar(getString(R.string.please_input_vehicle));
                return;
            }

            mPos = pos;

//
if (mGoogleLon != 0 && mGoogleLat != 0) {
if (pos == 2) {
mMineBundle.putDouble("lon", mGoogleLon);
mMineBundle.putDouble("lat", mGoogleLat);
enterActivity(null, QSReportRepairActivity.class);
} else if (pos == 1) {
mMineRepairBundle.putParcelable("vehicle", mVehicleInfo);
mMineRepairBundle.putDouble("lon", mGoogleLon);
mMineRepairBundle.putDouble("lat", mGoogleLat);
enterActivity(mMineRepairBundle, QSMineRepairActivity.class);
} else if (mPos == 0) {
__request2GetMineTask(false);

                }
            } else {
                checkLocationOpen();
            }


        }
    });
}


private void request2Bind(String vehicle) {
    if (TextUtils.isEmpty(vehicle)) return;
    super.baseRequest("", UrlConfig.bindVehicle);
    HashMap<String, Object> params = new HashMap<>();
    vehicle = vehicle.toUpperCase();
    params.put("vehicleNo", vehicle);
    String finalVehicle = vehicle;
    mNetworkService.baseRequest2Obj(UrlConfig.bindVehicle, params, HomeVehicleInfo.class, new NetworkService.NetworkServiceListener<HomeVehicleInfo>() {
        @Override
        public void success(HomeVehicleInfo info) {

            String driverName = info.getDriverName();
            mBinding.driverNameVal.setText(driverName);
            info.setVehicleNo(finalVehicle);

            mBinding.vehicleNoVal.setText(finalVehicle);

            String vehicleInfoJson = mSPUtils.getString("vehicleInfo", "");

            if (!TextUtils.isEmpty(vehicleInfoJson)) {
                HomeVehicleInfo vehicleInfo = GsonUtil.fromJson(vehicleInfoJson, HomeVehicleInfo.class);
                int vehicleNo = vehicleInfo.getVehicleId();
                unRequest2RegisterJPush(vehicleNo);
            }


            mSPUtils.setString("vehicleInfo", GsonUtil.toJson(info));

            mVehicleInfo = info;

            mRegistrationId = mSPUtils.getString(QSConstants.JPUSH_RegistrationId, "");

            request2RegisterJPush();

// request2GetLastMileage();
mHandler.removeMessages(100);
mClasses = -1;
mOrderType = 0;
__request2GetMineTask(true);

        }

        @Override
        public void falied(int code, String errorMsg) {
            if (!TextUtils.isEmpty(errorMsg)) {
                WZPSnackbarUtils.showSnackbar(errorMsg);
            }
        }
    });
}

private void request2SubmitMileage(String mileage) {
    if (TextUtils.isEmpty(mileage) || mVehicleInfo == null) return;
    super.baseRequest("", UrlConfig.bindVehicle);
    HashMap<String, Object> params = new HashMap<>();
    params.put("plateNum", mVehicleInfo.getVehicleNo());
    params.put("dataDate", new Date().getTime());
    params.put("classes", mClasses);// 1 白班、2 晚班   非必填
    params.put("mileage", mileage);// 里程  必填
    mNetworkService.baseRequest2Obj(UrlConfig.submitMileage, params, LastMileageDetail.class, new NetworkService.NetworkServiceListener<LastMileageDetail>() {
        @Override
        public void success(LastMileageDetail info) {
            mPreMileage = mileage;
            mPreMileageDetail = info;

            mBinding.mileageVal.setText(mileage);


        }

        @Override
        public void falied(int code, String errorMsg) {
            if (!TextUtils.isEmpty(errorMsg)) {
                WZPSnackbarUtils.showSnackbar(errorMsg);
            }
        }
    });
}


private void getLocation2() {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

    // 创建位置请求
    locationRequest = LocationRequest.create();
    locationRequest.setInterval(1000); // 设置更新间隔,单位毫秒
    locationRequest.setFastestInterval(200); // 设置最快更新间隔,单位毫秒
    locationRequest.setSmallestDisplacement(10);//最小偏移10m
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // 设置定位精度


    locationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {

// Log.i("位置服务", "--首页:---------" + locationResult.toString());
// Log.i("位置服务", "--首页:--e-------" + locationResult.getLocations().toString());
// WZPSnackbarUtils.showSnackbar("位置更新了" + locationResult.getLocations().toString());
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
// Update UI with location data
// ...
Log.i("位置服务", "-----取值------" + location.getLatitude() + "--" + location.getLongitude() + "-getLatitude-" + location.getLatitude() + "-getTime-" + location.getTime() + "--getProvider-" + location.getProvider() + "--getAccuracy-" + location.getAccuracy() + "--getSpeed-" + location.getSpeed() + "--getBearing-" + location.getBearing() + "--getElapsedRealtimeNanos-" + location.getElapsedRealtimeNanos() + "--getTime-" + location.getTime() + "--getElapsedRealtimeNanos-");
// SHLogUtil.i("位置服务000-》", location != null ? location.toString() : "位置是空的");
// if (mGoogleLocation == null) {
// startInterval();
// }
mGoogleLocation = location;
mGoogleLon = location.getLongitude();
mGoogleLat = location.getLatitude();

            }
        }
    };

    mActivityLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
    });
}

@SuppressLint("MissingPermission")
private void startLocationUpdates() {
    Log.i("位置服务", "首页:获取实5时位置");
    if (fusedLocationClient != null) {

        fusedLocationClient.requestLocationUpdates(locationRequest,
                locationCallback,
                Looper.getMainLooper());
    }
}

private void stopLocationUpdates() {
    fusedLocationClient.removeLocationUpdates(locationCallback);
}


private boolean isOpenLocation() {
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
            locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}

@SuppressLint("MissingPermission")
private void getLocationWithGoogle() {

// FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
// LocationRequest locationRequest = LocationRequest.create()
//// .setIntervalMillis(10000)
//// .setFastestIntervalMillis(5000)
// .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
if (fusedLocationClient == null) {
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}

    fusedLocationClient.getLastLocation()
            .addOnSuccessListener(this, new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {

                    // Got last known location. In some rare situations this can be null.
                    if (location != null) {
                        // Logic to handle location object
                        Log.i("位置服务", "首页:我拿到的服务是--》" + location.toString());
                        Log.i("位置服务", "首页:我拿到的服务是--》" + location.getLongitude() + "---" + location.getLatitude());
                        mMineBundle.putDouble("lon", location.getLongitude());
                        mMineBundle.putDouble("lat", location.getLatitude());

                        mMineRepairBundle.putDouble("lon", location.getLongitude());
                        mMineRepairBundle.putDouble("lat", location.getLatitude());
                    } else {
                        mMineBundle.putDouble("lon", mGPSLon);
                        mMineBundle.putDouble("lat", mGPSLat);

                        mMineRepairBundle.putDouble("lon", mGPSLon);
                        mMineRepairBundle.putDouble("lat", mGPSLat);


                    }

                    mMineBundle.clear();
                    if (mPos == 2) {
                        enterActivity(mMineBundle, QSReportRepairActivity.class);
                    } else if (mPos == 1) {
                        mMineRepairBundle.putParcelable("vehicle", mVehicleInfo);
                        enterActivity(mMineRepairBundle, QSMineRepairActivity.class);

                    } else if (mPos == 0) {
                        __request2GetMineTask(false);
                    }
                }
            });
}


//检查位置服务是够打开
private void checkLocationOpen() {

    if (isOpenLocation()) {

// __apply2Location();
checkPermission(false);

    } else {
        mOPenLocationDialog = new XPopup.Builder(this)
                .borderRadius(10)
                .asCustom(new QSCenterDialog(this, new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if (mOPenLocationDialog != null) {
                            mOPenLocationDialog.dismiss();
                            openLocation();
                        }
                    }
                }));
        mOPenLocationDialog.show();

    }
}

private void openLocation() {
    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    mActivityLauncher.launch(intent);
}


//跟随系统
private void changeLanguageBySystem() {
    //获取手机系统的首要语言
    //此处可以有逻辑,如系统第一语言APP不提供,则顺次判断系统语言是否符合APP提供语言
    Locale locale = MultiLanguageUtils.getSystemLanguage().get(0);
    assert locale != null;
    String language = locale.getLanguage();
    String country = locale.getCountry();
    //将APP内语言切换成手机系统语言
    MultiLanguageUtils.changeLanguage(QSHomeActivity.this, language, country);
    //清空SP数据 ,用于当系统切换语言时 应用可以同步保持切换
    //例:系统转换成英文 则应用语言也会变成英文
    MultiLanguageUtils.changeLanguage(QSHomeActivity.this, null, null);
    //重启APP,到第一个Activity

// ActivityUtils.finishAllActivities()
// ActivityUtils.startActivity(this.requireActivity()::class.java);
}

@Override
protected void receiveEvent(WZPEvent event) {
    super.receiveEvent(event);

// Log.e("JPushMessageReceiver", "我在页面上收到了消息" + event.getData()+"**"+event.getCode());
if (event.getCode() == QSConstants.EVENT_JPUSH_RECEIVE_MESSAGE) {
NotificationMessage message = (NotificationMessage) event.getData();
String title = message.notificationTitle;
String notificationContent = message.notificationContent;
if (TextUtils.isEmpty(title) || TextUtils.isEmpty(notificationContent)) return;

        QSNotifyUtils.showNotifyDialog(title, notificationContent, this);
        __request2GetMineTask(true);
    } else if (event.getCode() == QSConstants.EVENT_JPUSH_REGISTER) {
        mRegistrationId = (String) event.getData();
        mSPUtils.setString(QSConstants.JPUSH_RegistrationId, mRegistrationId);
        request2RegisterJPush();


    } else if (event.getCode() == QSConstants.EVENT_UPLOAD_LOCATION_SERVICE) {
        super.baseRequest("", UrlConfig.sendGpsData);
        String time = event.getData() == null ? "" : event.getData().toString();
        mBinding.uploadTime.setText(time);
    }
}

private void request2GetLastMileage() {
    super.baseRequest("", UrlConfig.getLastMileageV2);
    HashMap<String, Object> params = new HashMap<>();
    params.put("plateNum", mVehicleInfo.getVehicleNo());
    mNetworkService.baseRequest2GetObj(UrlConfig.getLastMileageV2, params, LastMileageDetail.class, new NetworkService.NetworkServiceListener<LastMileageDetail>() {
        @Override
        public void success(LastMileageDetail info) {
            mPreMileage = String.valueOf(info.getMileage());
            mPreMileageDetail = info;

// mBinding.mileageVal.setText("" + info);
_calDate2UpdateBanCi();
}

        @Override
        public void falied(int code, String errorMsg) {
            Log.i("---", "4354" + code);
            mBinding.mileageVal.setText("");
        }
    });
}

private void request2RegisterJPush() {
    if (TextUtils.isEmpty(mRegistrationId) || mVehicleInfo == null) return;
    String pre = mSPUtils.getString("jpush_registrationId_qs_smartDisplay", "");
    if (!TextUtils.isEmpty(mRegistrationId) && mRegistrationId.equals(pre)) return;

    super.baseRequest("", UrlConfig.registerJPush);
    HashMap<String, Object> params = new HashMap<>();
    params.put("vehicleId", mVehicleInfo.getVehicleId());
    params.put("registrationId", mRegistrationId);
    mNetworkService.baseRequest2Obj(UrlConfig.registerJPush, params, HomeVehicleInfo.class, new NetworkService.NetworkServiceListener<HomeVehicleInfo>() {
        @Override
        public void success(HomeVehicleInfo info) {
        }

        @Override
        public void falied(int code, String errorMsg) {
        }
    });
}

private void unRequest2RegisterJPush(int vehicleId) {

    super.baseRequest("", UrlConfig.unregisterJPush);
    HashMap<String, Object> params = new HashMap<>();
    params.put("vehicleId", vehicleId);
    mNetworkService.baseRequest2Obj(UrlConfig.unregisterJPush, params, HomeVehicleInfo.class, new NetworkService.NetworkServiceListener<HomeVehicleInfo>() {
        @Override
        public void success(HomeVehicleInfo info) {
        }

        @Override
        public void falied(int code, String errorMsg) {
        }
    });
}

@Override
protected void onDestroy() {
    super.onDestroy();
    WZPEventBusUil.unregister(this);
    if (executorService != null) {
        executorService.shutdown();
    }
    if (intentService != null) {
        stopService(intentService);
    }
    if (mHandler != null) {
        mHandler.removeMessages(100);
    }
}
//==========================================================================================

private void checkPermission(boolean isInit) {

    EasyPermission permissionUtils = EasyPermission.build();

    permissionUtils.mRequestCode(QSConstants.REQUEST_PERMISSION_LOCATION)//请求code,自己定义
            .mPerms(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)//权限,可支持多个

            .mAlertInfo(new PermissionAlertInfo(getString(R.string.request_location_permission),
                    getString(R.string.request_location_permission_info)))
            .mResult(new EasyPermissionResult() {
                @Override
                public void onPermissionsAccess(int requestCode) {
                    super.onPermissionsAccess(requestCode);
                    //权限已通过
                    if (isInit) {
                        getLocation2();
                    } else {
                        getLocationWithGoogle();
                    }

                    startLocationUpdates();
                    mGPSLocationUtils.getLocations(QSHomeActivity.this);
                }

                @Override
                public void onPermissionsDismiss(int requestCode, List<String> permissions) {
                    super.onPermissionsDismiss(requestCode, permissions);
                    //权限被拒绝
                    WZPSnackbarUtils.showSnackbar("拒绝权限");
                }

            });

    permissionUtils.requestPermission();
}


private void __request2GetMineTask(boolean isGetTaskType) {

    super.baseRequest("", UrlConfig.getMineTask);
    HashMap<String, Object> params = new HashMap<>();
    params.put("vehicleId", mVehicleInfo.getVehicleId());
    mNetworkService.baseRequest2GetObj(UrlConfig.getMineTask, params, MineTask.class, new NetworkService.NetworkServiceListener<MineTask>() {
        @Override
        public void success(MineTask detail) {
            mMineBundle.putParcelable("mineTask", detail);
            mMineBundle.putParcelable("vehicle", mVehicleInfo);

            mOrderType = detail.getOrderType();
            if (isGetTaskType) {
                /*if (detail.getOrderType() != mOrderType) {

// mOrderType = detail.getOrderType();
_calDate2UpdateBanCi();
}*/
request2GetLastMileage();
return;
}

            if (mOrderType == 2) {//水渣
                enterActivity(mMineBundle, QSMineTaskSlagActivity.class);

            } else {

                enterActivity(mMineBundle, QSMineTaskActivity.class);
            }
        }

        @Override
        public void falied(int code, String errorMsg) {
            if (!TextUtils.isEmpty(errorMsg)) {
                WZPSnackbarUtils.showSnackbar(errorMsg);
            }
            if (isGetTaskType) {
                mOrderType = 0;

// _calDate2UpdateBanCi();
request2GetLastMileage();
}
}
});
}

private void getIMEI() {
    new Thread(() -> {
        try {
            AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(this);
            String advertisingId = adInfo.getId(); // 获取 Advertising ID
            SHLogUtil.w("这个智慧屏的IMEI是--->", advertisingId);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }).start();

}

public void startInterval() {
    executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(() -> {
        if (mGoogleLocation == null || mVehicleInfo == null) return;
        // 在这里执行你的定期任务

// request2UploadLocation();
long sTime = System.currentTimeMillis();
SHGreenDaoHelper helper = SHGreenDaoHelper.getInstance();
LocationUpload locationBean = new LocationUpload();
locationBean.setAltitude(mGoogleLocation.getAltitude());
locationBean.setCourse(mGoogleLocation.getBearing());
locationBean.setLat(mGoogleLocation.getLatitude());
locationBean.setLng(mGoogleLocation.getLongitude());
locationBean.setGoogleTime(mGoogleLocation.getTime());
locationBean.setTime(sTime);
locationBean.setSpeed(mGoogleLocation.getSpeed());
locationBean.setVehicleId(mVehicleInfo.getVehicleId());
helper.insertLocationData(locationBean);
Log.i("准备获取位置信息", (mGoogleLocation == null ? "空的" : mGoogleLocation.toString()) + "==" + sTime);

    }, 0, intervalPeriod, TimeUnit.MILLISECONDS);

    _startService();
}


private void _calDate2UpdateBanCi() {
    Calendar calendar = Calendar.getInstance();
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    /**
     * mOrderType 0代表没有  7··19
     * 1 镍矿    :7--19 点默认白班,    19--次日7点 默认夜班
     * 2、水渣   :6--18 点默认白班,  18--次日6点 默认夜班
     * 3 煤炭
     */

    int type = -1; //白班:1  夜班:2
    if (mOrderType == 2) {
        if (hour >= 6 && hour < 18) {
            type = 1;

// return "白班";
} else { // 夜班:18 - 次日6 点
// return "夜班";
type = 2;
}
} else {
if (hour >= 7 && hour < 19) {
type = 1;
// return "白班";
} else { // 夜班:18 - 次日6 点
// return "夜班";
type = 2;
}
}
if (mClasses != type) {
_updateBanci(type);
}
}

private void _updateBanci(int type) {
    if (mClasses == -1) {
        mHandler.removeMessages(100);
        startHourlyTask();
    }
    RTextViewHelper tvBBHelper = mBinding.tvTagBb.getHelper();
    RTextViewHelper tvYBHelper = mBinding.tvTagYb.getHelper();
    mClasses = type;
    if (type == 1) {
        tvBBHelper.setBackgroundColorNormal(ContextCompat.getColor(this, R.color.primaryColor));
        tvBBHelper.setTextColorNormal(ContextCompat.getColor(this, R.color.white));

        tvYBHelper.setBackgroundColorNormal(Color.TRANSPARENT);
        tvYBHelper.setTextColorNormal(Color.BLACK);
    } else {
        tvYBHelper.setBackgroundColorNormal(ContextCompat.getColor(this, R.color.primaryColor));
        tvYBHelper.setTextColorNormal(ContextCompat.getColor(this, R.color.white));

        tvBBHelper.setBackgroundColorNormal(Color.TRANSPARENT);
        tvBBHelper.setTextColorNormal(Color.BLACK);
    }

    if(mPreMileageDetail==null){
        mBinding.mileageVal.setText("");
        return;
    }

    int preClasses = mPreMileageDetail.getClasses();
    boolean isToday = DateUtils.isToday(mPreMileageDetail.getDataDate());
    if (isToday) {
        if (mClasses == preClasses) {
            mBinding.mileageVal.setText(mPreMileage);
        } else {
            mBinding.mileageVal.setText("");
        }
    } else {
        mBinding.mileageVal.setText("");
    }
}

private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(@NonNull Message msg) {
        if (msg.what == 100) {//更新班次
            _calDate2UpdateBanCi();
            mHandler.sendEmptyMessageDelayed(100, 60 * 60 * 1000);
        }
    }
};


private void startHourlyTask() {
    long now = System.currentTimeMillis();
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(now);
    int minutes = calendar.get(Calendar.MINUTE);
    int seconds = calendar.get(Calendar.SECOND);
    int millis = calendar.get(Calendar.MILLISECOND);

    // 计算到下一个整点的时间差
    long delay = (60 - minutes) * 60 * 1000 - seconds * 1000 - millis;
    mHandler.sendEmptyMessageDelayed(100, delay);
}

private void request2GetAppVersion() {
   /* super.baseRequest("", UrlConfig.getAppVersion);
    mNetworkService.baseRequest2GetObj(UrlConfig.getAppVersion, null, LastMileageDetail.class, new NetworkService.NetworkServiceListener<LastMileageDetail>() {
        @Override
        public void success(LastMileageDetail info) {
        }

        @Override
        public void falied(int code, String errorMsg) {
        }
    });*/
    XUpdate.newBuild(QSHomeActivity.this).updateUrl(BuildConfig.BASEURL+UrlConfig.getAppVersion)
            .updateParser(new CustomUpdateParser(QSHomeActivity.this)) //设置自定义的版本更新解析器
            .update();


    XUpdate.get().setILogger(new ILogger() {
        @Override
        public void log(int priority, String tag, String message, Throwable t) {
            // Realize the function of logging
        SHLogUtil.e("下载","咋回事-》"+message);

        }
    });

}

}

`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions