-
-
Notifications
You must be signed in to change notification settings - Fork 414
Description
调用的地方:
`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);
}
});
}
}
`