Compare commits

..
50 Commits
Author SHA1 Message Date
lijia cc86f031b7 运单操作异常 message提示优化 2024-12-18 10:42:53 +08:00
lijia bb85e8ace7 运单操作异常 提示优化 2024-12-18 09:54:56 +08:00
lijia 35a2329073 删除测试代码 2024-12-18 09:15:16 +08:00
lijia c6c0fdbb6f 替换新路交正式配置 2024-12-18 08:45:20 +08:00
lijia d561b3598a 新路交正式测试环境一键切换 2024-12-17 15:13:02 +08:00
lijia 1f0613ffcf Merge branch 'master' into newlj 2024-12-17 14:42:09 +08:00
lijia 80a257273b 根据华为市场复审75版本 2024-12-17 10:12:03 +08:00
lijia 5a846d220d 根据华为市场审核修改隐私政策格式 2024-12-17 10:02:49 +08:00
lijia 736c73ea11 onstart刷新 2024-12-17 09:11:30 +08:00
lijia 153d7c2c82 Merge branch 'master' into newlj 2024-12-16 17:10:59 +08:00
lijia 01bd0e03ff 多种类型经纬度转换工具类 2024-12-13 18:04:33 +08:00
lijia 82b1413429 合同显示不全优化 2024-12-11 10:24:12 +08:00
lijia 8b2007a11d 74版本 2024-12-09 16:40:35 +08:00
lijia d181d819b0 域名拦截 2024-12-09 15:57:37 +08:00
lijia ae21a860b6 Merge branch 'master' into newlj 2024-12-09 09:23:19 +08:00
lijia 1042fbd283 刷新优化 2024-12-09 09:22:31 +08:00
lijia 781e58ab44 Merge branch 'master' into newlj 2024-12-06 16:23:04 +08:00
lijia f1ffdd31af 账户状态刷新 2024-12-06 16:06:59 +08:00
lijia d053e4492f Merge branch 'master' into newlj 2024-12-06 09:45:47 +08:00
lijia 3b7a77c45b 货源详情默认选中指派车辆 2024-12-06 09:45:12 +08:00
lijia 5cf861671b Merge branch 'master' into newlj 2024-12-05 16:12:11 +08:00
lijia 7fdb48817f 货源详情重复打开 2024-12-05 16:11:47 +08:00
lijia 258058d86c 修改运单详情启动模式 2024-12-05 10:47:31 +08:00
lijia cf94fa8573 Merge branch 'master' into newlj 2024-12-05 10:11:03 +08:00
lijia e126ecb8e7 Merge branch 'master' into newlj 2024-12-04 16:12:52 +08:00
lijia 7614dc4476 首页添加双重刷新机制 2024-12-04 14:00:34 +08:00
lijia c9fcd9fb91 Merge branch 'master' into newlj 2024-12-04 10:53:48 +08:00
lijia e41edf7b58 关闭onstart 2024-12-04 10:10:14 +08:00
lijia 5d4389329d 首页添加onstart 2024-12-04 09:44:29 +08:00
lijia 6fcaa21d57 Merge branch 'master' into newlj
# Conflicts:
#	app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/auth/PhotoCarActivity.java
#	app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/shangchuan/ShangChuangImgActivity.java
#	app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/login/LoginActivity.java
#	build.gradle
2024-12-04 09:28:30 +08:00
lijia b97d3dcb61 老路交认证注释 2024-12-03 16:12:09 +08:00
lijia f0da8e0234 从业资格,倒叙空指针优化 2024-12-03 15:56:05 +08:00
lijia 8de8c92b79 新建前台服务 2024-12-03 08:48:13 +08:00
lijia c6a4d3bca3 装卸货添加位置上传 2024-12-02 10:01:46 +08:00
lijia 671ca60854 测试代码撤销 2024-11-29 18:09:07 +08:00
lijia f0e7d63ae0 token自动刷新 并处理并发问题 2024-11-29 18:08:34 +08:00
lijia f648050328 同意开发票 2024-11-29 14:50:13 +08:00
lijia c5f16d7d17 定位服务 2024-11-28 15:19:08 +08:00
lijia 7d29c5ec89 集成定位服务 2024-11-28 08:26:45 +08:00
lijia bfbe7e9b5f Merge branch 'master' into newlj 2024-11-27 14:21:07 +08:00
lijia a7db2019ad 定位服务aar 2024-11-27 14:18:09 +08:00
lijia d8f80ad07d 新路交接口替换 2024-11-26 11:01:13 +08:00
lijia f5e24e2273 新路交接口替换 2024-11-25 18:38:25 +08:00
lijia f13815709d Merge branch 'master' into newlj 2024-11-25 17:35:50 +08:00
lijia 1b40375c3c 新路交部分接口2 2024-11-25 17:34:59 +08:00
lijia ca76fd4cc3 新路交部分接口 2024-11-25 16:28:00 +08:00
lijia 88144de31c 登录接口 2024-11-25 10:48:04 +08:00
lijia 9388a6ac87 新路交工具类创建 2024-11-25 09:54:05 +08:00
lijia 0b2d42c090 Merge branch 'master' into newlj 2024-11-25 09:49:38 +08:00
lijia d0df0bd42e 新路交对接开始 2024-11-21 16:37:32 +08:00
54 changed files with 4150 additions and 270 deletions
+28 -20
View File
@@ -2,8 +2,7 @@ plugins {
id 'com.android.application' id 'com.android.application'
id 'kotlin-android' id 'kotlin-android'
id 'kotlin-kapt' id 'kotlin-kapt'
id 'com.huawei.agconnect' // id 'kotlin-android-extensions'
id 'kotlin-android-extensions'
} }
android { android {
@@ -38,17 +37,17 @@ android {
applicationId "com.arpa.hndahesudintocctmsdriver" applicationId "com.arpa.hndahesudintocctmsdriver"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 30 targetSdkVersion 30
versionCode 73 versionCode 75
versionName "3.4.3" versionName "3.4.5"
flavorDimensions "CHANNEL_VALUE" flavorDimensions "CHANNEL_VALUE"
flavorDimensions "app_icon" flavorDimensions "app_icon"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { // annotationProcessorOptions {
includeCompileClasspath = true // includeCompileClasspath = true
arguments = [moduleName: project.getName()] // arguments = [moduleName: project.getName()]
} // }
} }
ndk { ndk {
@@ -83,17 +82,17 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '1.8'
} }
allprojects { // allprojects {
repositories { // repositories {
maven { url "https://jitpack.io" } // maven { url "https://jitpack.io" }
} // }
} // }
repositories { // repositories {
flatDir { // flatDir {
dirs 'libs' // dirs 'libs'
} // }
} // }
productFlavors { productFlavors {
qa { qa {
@@ -157,6 +156,9 @@ android {
dependencies { dependencies {
// implementation(fileTree("libs"))
// implementation(name: 'mdp-release', ext: 'aar')
implementation 'com.google.android.material:material:1.2.1' implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'com.caverock:androidsvg-aar:1.3' implementation 'com.caverock:androidsvg-aar:1.3'
@@ -186,7 +188,8 @@ dependencies {
implementation 'com.alibaba:fastjson:1.2.61' implementation 'com.alibaba:fastjson:1.2.61'
implementation 'org.bouncycastle:bcprov-jdk15on:1.55' implementation 'org.bouncycastle:bcprov-jdk15on:1.55'
implementation 'org.apache.commons:commons-lang3:3.5' implementation 'org.apache.commons:commons-lang3:3.5'
implementation(name: 'locationgd-androidx_2.1.0', ext: 'aar')//交通厅 // implementation(name: 'locationgd-androidx_2.1.0', ext: 'aar')//交通厅
implementation files('libs/locationgd-androidx_2.1.0.aar')
//安联 //安联
// implementation 'com.google.code.gson:gson:2.8.6' // implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.loopj.android:android-async-http:1.4.9' implementation 'com.loopj.android:android-async-http:1.4.9'
@@ -213,8 +216,10 @@ dependencies {
//EventBus //EventBus
implementation 'org.greenrobot:eventbus:3.1.1' implementation 'org.greenrobot:eventbus:3.1.1'
//易签宝 //易签宝
implementation(name: 'EsignSDK', ext: 'aar') // implementation(name: 'EsignSDK', ext: 'aar')
implementation 'pub.devrel:easypermissions:1.3.0' implementation 'pub.devrel:easypermissions:1.3.0'
implementation files('libs/EsignSDK.aar')
implementation "com.squareup.retrofit2:retrofit:2.4.0" implementation "com.squareup.retrofit2:retrofit:2.4.0"
// implementation "com.squareup.retrofit2:converter-gson:2.4.0" // implementation "com.squareup.retrofit2:converter-gson:2.4.0"
@@ -229,6 +234,9 @@ dependencies {
// //
implementation 'com.github.getActivity:XToast:8.2' implementation 'com.github.getActivity:XToast:8.2'
implementation files('libs/mdp-release.aar')
// implementation(name: 'mdp-release', ext: 'aar')
implementation project(path: ':mylibrary') implementation project(path: ':mylibrary')
} }
Binary file not shown.
+36 -9
View File
@@ -100,8 +100,9 @@
android:name="com.arpa.hndahesudintocctmsdriver.ui.auth.VehicleAuthActivity" android:name="com.arpa.hndahesudintocctmsdriver.ui.auth.VehicleAuthActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.arpa.hndahesudintocctmsdriver.ui.home.shangchuan.ShangChuangImgActivity" android:name=".ui.home.shangchuan.ShangChuangImgActivity"
android:screenOrientation="portrait"> android:screenOrientation="portrait"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" />
@@ -114,8 +115,24 @@
</activity> </activity>
<activity <activity
android:name="com.arpa.hndahesudintocctmsdriver.ui.home.shangchuan.ShangChuangImgActivityBC" android:name=".ui.home.shangchuan.ShangChuangImgNewActivity"
android:screenOrientation="portrait"> android:screenOrientation="portrait"
android:exported="true">
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
<activity
android:name=".ui.home.shangchuan.ShangChuangImgActivityBC"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" />
@@ -129,8 +146,9 @@
<activity <activity
android:name="com.arpa.hndahesudintocctmsdriver.ui.home.shangchuan.ShangChuangImgActivity2" android:name=".ui.home.shangchuan.ShangChuangImgActivity2"
android:screenOrientation="portrait"> android:screenOrientation="portrait"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" />
@@ -254,6 +272,12 @@
android:name="com.alct.mdp.MDPLocationService" android:name="com.alct.mdp.MDPLocationService"
android:exported="true" android:exported="true"
android:process=":mdpLocation_v1" /> android:process=":mdpLocation_v1" />
<service
android:name="com.express.mdp.GpsService"
android:foregroundServiceType="location"
android:label="GPS服务"
android:priority="1000" />
<service <service
android:name="com.baidu.location.f" android:name="com.baidu.location.f"
android:enabled="true" android:enabled="true"
@@ -360,7 +384,8 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".ui.NFCActivity"> <activity android:name=".ui.NFCActivity"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" />
@@ -374,7 +399,8 @@
<activity <activity
android:name=".H5Activity" android:name=".H5Activity"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait"> android:screenOrientation="portrait"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
@@ -402,7 +428,8 @@
<activity <activity
android:name=".H5Activity2" android:name=".H5Activity2"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait"> android:screenOrientation="portrait"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
@@ -63,8 +63,8 @@ public class App extends Application {
} }
//在使用SDK各组件之前初始化context信息,传入ApplicationContext //在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 路由初始化 // 路由初始化
JVerificationInterface.setDebugMode(true); // JVerificationInterface.setDebugMode(true);
JVerificationInterface.init(this, 5000, (code, msg) -> Log.d("tag", "code = " + code + " msg = " + msg)); // JVerificationInterface.init(this, 5000, (code, msg) -> Log.d("tag", "code = " + code + " msg = " + msg));
//友盟 //友盟
//设置非debug版本开启 //设置非debug版本开启
if (!isDebugVersion(con)) { if (!isDebugVersion(con)) {
@@ -242,7 +242,7 @@ public class H5Activity extends AppCompatActivity {
} catch (Exception e) { } catch (Exception e) {
} }
// }else if (url.startsWith("https://agreement.dahehuoyun.com/#/1ba5c216/912f4c9587/5eb5184653/6ef9")) { // }else if (url.startsWith("https://agreement.dahehuoyun.com/#/1ba5c216/912f4c9587/5eb5184653/6ef9")) {
} else if (url.startsWith("https://agreement.dahehuoyun.com/goApp")) { } else if (url.startsWith("https://agreement.dahehuoyun.com")) {
Intent in = new Intent(ctx, FaceSuccActivity.class); Intent in = new Intent(ctx, FaceSuccActivity.class);
startActivity(in); startActivity(in);
if (isGoCar) { if (isGoCar) {
@@ -271,7 +271,7 @@ public class H5Activity extends AppCompatActivity {
Log.e("test", "要加载的地址:" + uri.getScheme() + " " + url + " "); Log.e("test", "要加载的地址:" + uri.getScheme() + " " + url + " ");
if (uri.getScheme().equals("http") || uri.getScheme().equals("https")) { if (uri.getScheme().equals("http") || uri.getScheme().equals("https")) {
// if (url.startsWith("https://agreement.dahehuoyun.com/#/1ba5c216/912f4c9587/5eb5184653/6ef9")) { // if (url.startsWith("https://agreement.dahehuoyun.com/#/1ba5c216/912f4c9587/5eb5184653/6ef9")) {
if (url.startsWith("https://agreement.dahehuoyun.com/goApp")) { if (url.startsWith("https://agreement.dahehuoyun.com")) {
Intent in = new Intent(ctx, FaceSuccActivity.class); Intent in = new Intent(ctx, FaceSuccActivity.class);
in.putExtra("isGoCar", isGoCar); in.putExtra("isGoCar", isGoCar);
startActivity(in); startActivity(in);
@@ -354,11 +354,11 @@ public class H5Activity extends AppCompatActivity {
if (status) { if (status) {
//认证成功返回 //认证成功返回
//认证成功返回 //认证成功返回
new Handler().postDelayed(() -> { // new Handler().postDelayed(() -> {
FaceEvent he = new FaceEvent("刷脸成功"); // FaceEvent he = new FaceEvent("刷脸成功");
EventBus.getDefault().post(he); // EventBus.getDefault().post(he);
finish(); // finish();
}, 800); // }, 800);
Toast.makeText(H5Activity.this, "认证成功", Toast.LENGTH_LONG).show(); Toast.makeText(H5Activity.this, "认证成功", Toast.LENGTH_LONG).show();
finish(); finish();
} }
@@ -0,0 +1,53 @@
package com.arpa.hndahesudintocctmsdriver.bean;
import com.google.gson.annotations.SerializedName;
/**
* @ClassName GDImage
* @Author john
* @Date 2024/11/27 14:04
* @Description TODO
*/
public class GDImage extends GDLocation{
private String fileName;
private String fileData;
private String fileExt;
private String imageTakenDate;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileData() {
return fileData;
}
public void setFileData(String fileData) {
this.fileData = fileData;
}
public String getFileExt() {
return fileExt;
}
public void setFileExt(String fileExt) {
this.fileExt = fileExt;
}
public String getImageTakenDate() {
return imageTakenDate;
}
public void setImageTakenDate(String imageTakenDate) {
this.imageTakenDate = imageTakenDate;
}
}
@@ -0,0 +1,87 @@
package com.arpa.hndahesudintocctmsdriver.bean;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
/**
* @ClassName GDLocation
* @Author john
* @Date 2024/11/27 13:59
* @Description TODO
*/
public class GDLocation implements Serializable {
private double baiduLongitude;
private double baiduLatitude;
private String location;
private String time;
private double altitude;
private float speed;
private float direction;
private int interval;
public double getBaiduLongitude() {
return baiduLongitude;
}
public void setBaiduLongitude(double baiduLongitude) {
this.baiduLongitude = baiduLongitude;
}
public double getBaiduLatitude() {
return baiduLatitude;
}
public void setBaiduLatitude(double baiduLatitude) {
this.baiduLatitude = baiduLatitude;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public double getAltitude() {
return altitude;
}
public void setAltitude(double altitude) {
this.altitude = altitude;
}
public float getSpeed() {
return speed;
}
public void setSpeed(float speed) {
this.speed = speed;
}
public float getDirection() {
return direction;
}
public void setDirection(float direction) {
this.direction = direction;
}
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
}
@@ -83,6 +83,8 @@ public class HuoYuanDelBean {
private String vehicleTypeName; private String vehicleTypeName;
private int vehicleLength; private int vehicleLength;
private String vehicleLengthName; private String vehicleLengthName;
private String carNumber;
private String carId;
private String namedDrivers; private String namedDrivers;
private String requirement; private String requirement;
private String totalFreight; private String totalFreight;
@@ -97,6 +99,23 @@ public class HuoYuanDelBean {
private Object contactName; private Object contactName;
private Object contactPhone; private Object contactPhone;
public String getCarNumber() {
return carNumber == null ? "" : carNumber;
}
public void setCarNumber(String carNumber) {
this.carNumber = carNumber;
}
public String getCarId() {
return carId == null ? "" : carId;
}
public void setCarId(String carId) {
this.carId = carId;
}
public int getId() { public int getId() {
return id; return id;
} }
@@ -0,0 +1,19 @@
package com.arpa.hndahesudintocctmsdriver.constant;
import com.arpa.hndahesudintocctmsdriver.BuildConfig;
/**
* @author hlh
* @version 1.0.0
* @date 2022/1/10 11:34
* @description:交通厅参数
*/
public class NewLJConstant {
public final static String ENTER_PRISE_CODE ="E0019169";
public final static String ENTER_PRISE_IDENTITY = BuildConfig.isTest?"95033cc3492e420d83d7f09eea1400ac":"9179388b0e0847e1862d6400f9cbc778";
public final static String ENTER_PRISE_KEY =BuildConfig.isTest?"e9844a9b0bba417e89cb8623489abd2f":"156d724e9701420198fcbd52cb1ca529";
}
@@ -1,20 +1,12 @@
package com.arpa.hndahesudintocctmsdriver.cuspop package com.arpa.hndahesudintocctmsdriver.cuspop
import android.Manifest
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.view.View import android.view.View
import android.widget.Toast import android.widget.TextView
import androidx.fragment.app.FragmentActivity
import com.arpa.hndahesudintocctmsdriver.R import com.arpa.hndahesudintocctmsdriver.R
import com.arpa.hndahesudintocctmsdriver.util.alert.ToastUtil
import com.dahe.mylibrary.utils.ToastUtils
import com.lxj.xpopup.core.CenterPopupView import com.lxj.xpopup.core.CenterPopupView
import com.lxj.xpopup.util.XPermission
import com.permissionx.guolindev.PermissionX
import kotlinx.android.synthetic.main.load.view.*
import kotlinx.android.synthetic.main.pop_message_center.view.*
/** /**
@@ -38,9 +30,14 @@ class MessagePop(context: Context) : CenterPopupView(context), View.OnClickListe
} }
override fun getImplLayoutId() = R.layout.pop_message_center override fun getImplLayoutId() = R.layout.pop_message_center
private lateinit var tvPhone : TextView
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
val tvCancel = findViewById<View>(R.id.tvCancel) as TextView
val tvOk = findViewById<View>(R.id.tvOk) as TextView
tvPhone = findViewById<View>(R.id.tvPhone) as TextView
val tvContent = findViewById<View>(R.id.tvContent) as TextView
val tvMessage2 = findViewById<View>(R.id.tvMessage2) as TextView
tvCancel.setOnClickListener(this) tvCancel.setOnClickListener(this)
tvOk.setOnClickListener(this) tvOk.setOnClickListener(this)
tvPhone.setOnClickListener(this) tvPhone.setOnClickListener(this)
@@ -55,15 +52,15 @@ class MessagePop(context: Context) : CenterPopupView(context), View.OnClickListe
} }
R.id.tvOk,R.id.tvPhone -> { R.id.tvOk,R.id.tvPhone -> {
dismiss() dismiss()
if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){ // if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){
val toString = tvPhone.text.toString() val toString = tvPhone.text.toString()
val intent = Intent(Intent.ACTION_DIAL) val intent = Intent(Intent.ACTION_DIAL)
val data = Uri.parse("tel:$toString") val data = Uri.parse("tel:$toString")
intent.data = data intent.data = data
context.startActivity(intent) context.startActivity(intent)
}else{ // }else{
ToastUtils.showToast(context,"请开启电话权限") // ToastUtils.showToast(context,"请开启电话权限")
} // }
// BaseUtils.callPhone(content as Activity, tvPhone.text.toString()) // BaseUtils.callPhone(content as Activity, tvPhone.text.toString())
} }
@@ -2,11 +2,9 @@ package com.arpa.hndahesudintocctmsdriver.cuspop
import android.content.Context import android.content.Context
import android.view.View import android.view.View
import android.widget.TextView
import com.arpa.hndahesudintocctmsdriver.R import com.arpa.hndahesudintocctmsdriver.R
import com.arpa.hndahesudintocctmsdriver.ui.auth.CertificatesActivity
import com.lxj.xpopup.core.CenterPopupView import com.lxj.xpopup.core.CenterPopupView
import kotlinx.android.synthetic.main.pop_sim_center.view.*
import org.bouncycastle.jcajce.provider.symmetric.Rijndael
/** /**
@@ -33,6 +31,10 @@ class SimCenterPop(context: Context) : CenterPopupView(context), View.OnClickLis
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
val tvCancel = findViewById<View>(R.id.tvCancel) as TextView
val tvOk = findViewById<View>(R.id.tvOk) as TextView
val tvContent = findViewById<View>(R.id.tvContent) as TextView
tvCancel.text = titleLeft tvCancel.text = titleLeft
tvOk.text = titleReft tvOk.text = titleReft
tvCancel.setOnClickListener(this) tvCancel.setOnClickListener(this)
@@ -1,11 +1,11 @@
package com.arpa.hndahesudintocctmsdriver.cuspop package com.arpa.hndahesudintocctmsdriver.cuspop
import android.content.Context import android.content.Context
import android.view.View
import android.widget.TextView
import com.arpa.hndahesudintocctmsdriver.R import com.arpa.hndahesudintocctmsdriver.R
import com.lxj.xpopup.core.PositionPopupView import com.lxj.xpopup.core.PositionPopupView
import com.lxj.xpopup.enums.DragOrientation import com.lxj.xpopup.enums.DragOrientation
import kotlinx.android.synthetic.main.popup_qq_msg.view.tvMessage
import kotlinx.android.synthetic.main.popup_qq_msg.view.tvTitle
/** /**
* Description: 自定义自由定位Position弹窗 * Description: 自定义自由定位Position弹窗
@@ -30,6 +30,9 @@ class TopMsgPopup(context: Context,title:String, message: String) : PositionPopu
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
val tvMessage = findViewById<View>(R.id.tvMessage) as TextView
val tvTitle = findViewById<View>(R.id.tvTitle) as TextView
tvMessage.text = message tvMessage.text = message
tvTitle.text = title tvTitle.text = title
} }
@@ -12,7 +12,10 @@ import com.arpa.hndahesudintocctmsdriver.App;
import com.arpa.hndahesudintocctmsdriver.BuildConfig; import com.arpa.hndahesudintocctmsdriver.BuildConfig;
import com.arpa.hndahesudintocctmsdriver.parts.AuthParts; import com.arpa.hndahesudintocctmsdriver.parts.AuthParts;
import com.arpa.hndahesudintocctmsdriver.util.MessageUtils; import com.arpa.hndahesudintocctmsdriver.util.MessageUtils;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.arpa.hndahesudintocctmsdriver.util.msg.MsgUtil; import com.arpa.hndahesudintocctmsdriver.util.msg.MsgUtil;
import com.dahe.mylibrary.callback.OnGDDownloadResultListener;
import com.dahe.mylibrary.callback.OnGDResultListener;
import com.dahe.mylibrary.utils.ToastUtils; import com.dahe.mylibrary.utils.ToastUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.arpa.hndahesudintocctmsdriver.bean.DriverAuthDataBean; import com.arpa.hndahesudintocctmsdriver.bean.DriverAuthDataBean;
@@ -47,27 +50,49 @@ public class ALProcess {
return; return;
} }
Identity idy=new Identity(); // Identity idy=new Identity();
//企业代码 // //企业代码
idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE); // idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE);
//企业app的身份码 // //企业app的身份码
idy.setAppIdentity(BuildConfig.isTest?APP_IDENTITY_TEXT:APP_IDENTITY); // idy.setAppIdentity(BuildConfig.isTest?APP_IDENTITY_TEXT:APP_IDENTITY);
//企业app验证码 // //企业app验证码
idy.setAppKey(BuildConfig.isTest?APP_KEY_TEXT:APP_KEY); // idy.setAppKey(BuildConfig.isTest?APP_KEY_TEXT:APP_KEY);
//司机身份证 // //司机身份证
idy.setDriverIdentity(auth.getData().getIdcard()); // idy.setDriverIdentity(auth.getData().getIdcard());
//idy.setDriverIdentity("410725198311042012"); // //idy.setDriverIdentity("410725198311042012");
MDPLocationCollectionManager.register(con, idy, new OnResultListener() { // MDPLocationCollectionManager.register(con, idy, new OnResultListener() {
// @Override
// public void onSuccess() {
// Log.e("--success--","验证成功");
// getFq(con);
// }
//
// @Override
// public void onFailure(java.lang.String s, java.lang.String s1) {
// Log.e("--error--",s+s1+"");
// new MessageUtils().showCenMessage(con,s1);
// }
// });
NewLJUtils.getInstance().getToken(con, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
Log.e("--success--","验证成功"); NewLJUtils.getInstance().confirmInvoice(con, new OnGDResultListener() {
getFq(con); @Override
public void onSuccess() {
} }
@Override @Override
public void onFailure(java.lang.String s, java.lang.String s1) { public void onFailure(String var1, String var2) {
Log.e("--error--",s+s1+"");
new MessageUtils().showCenMessage(con,s1); }
});
}
@Override
public void onFailure(String var1, String var2) {
} }
}); });
} }
@@ -133,31 +158,69 @@ public class ALProcess {
public static void verification(Context con,Handler hd){ public static void verification(Context con,Handler hd){
DriverAuthDataBean auth= AuthParts.getAuth(con); DriverAuthDataBean auth= AuthParts.getAuth(con);
Identity idy=new Identity(); if (auth==null){
//企业代码 return;
idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE); }
//企业app的身份码 // Identity idy=new Identity();
idy.setAppIdentity(BuildConfig.isTest?APP_IDENTITY_TEXT:APP_IDENTITY); // //企业代码
//企业app验证码 // idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE);
idy.setAppKey(BuildConfig.isTest?APP_KEY_TEXT:APP_KEY); // //企业app的身份码
//司机身份证 // idy.setAppIdentity(BuildConfig.isTest?APP_IDENTITY_TEXT:APP_IDENTITY);
idy.setDriverIdentity(auth.getData().getIdcard()); // //企业app验证码
//idy.setDriverIdentity("410725198311042012"); // idy.setAppKey(BuildConfig.isTest?APP_KEY_TEXT:APP_KEY);
MDPLocationCollectionManager.register(con, idy, new OnResultListener() { // //司机身份证
// idy.setDriverIdentity(auth.getData().getIdcard());
// //idy.setDriverIdentity("410725198311042012");
// MDPLocationCollectionManager.register(con, idy, new OnResultListener() {
// @Override
// public void onSuccess() {
// MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功");
// Log.e("--success--","验证成功");
// getFq(con);
// }
//
// @Override
// public void onFailure(java.lang.String s, java.lang.String s1) {
// Log.e("--error--",s+s1+"");
// MsgUtil.addHdMsgWatBody(hd, 2222,s1);
//// new MessageUtils().showCenMessage(con,s1);
// }
// });
NewLJUtils.getInstance().searchDriver(con, auth.getData().getIdcard(), new OnGDDownloadResultListener(){
@Override @Override
public void onSuccess() { public void onSuccess(String var1) {
MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功"); MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功");
Log.e("--success--","验证成功");
getFq(con);
} }
@Override @Override
public void onFailure(java.lang.String s, java.lang.String s1) { public void onFailure(String var1, String var2) {
Log.e("--error--",s+s1+""); MsgUtil.addHdMsgWatBody(hd, 2222,var2);
MsgUtil.addHdMsgWatBody(hd, 2222,s1);
// new MessageUtils().showCenMessage(con,s1);
} }
}); });
// NewLJUtils.getInstance().getToken(con, new OnGDResultListener() {
// @Override
// public void onSuccess() {
// NewLJUtils.getInstance().confirmInvoice(con, new OnGDResultListener() {
// @Override
// public void onSuccess() {
//
// }
//
// @Override
// public void onFailure(String var1, String var2) {
//
// }
// });
// }
//
// @Override
// public void onFailure(String var1, String var2) {
//
// }
// });
} }
} }
@@ -80,6 +80,12 @@ public class UserRequset {
RequestUtil.start(1, "userdata", re, con, hd); RequestUtil.start(1, "userdata", re, con, hd);
} }
//账户信息
public void User2() {
Request re = OkHttpUtil.posts(new OkDate(RequestConstant.getUserUrl(), ""), getToken(con), con);
RequestUtil.start(1, "userdata2", re, con, hd);
}
//司机认证信息 //司机认证信息
public void driverAuthData() { public void driverAuthData() {
String mt = "{}"; String mt = "{}";
@@ -0,0 +1,40 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import java.io.Serializable;
/**
* @ClassName InvoiceBean
* @Author john
* @Date 2024/11/25 17:06
* @Description TODO
*/
public class InvoiceBean implements Serializable {
private String driverIdentification;
private String driverInvoiceCode;
private String enterpriseCode;
public String getDriverIdentification() {
return driverIdentification;
}
public void setDriverIdentification(String driverIdentification) {
this.driverIdentification = driverIdentification;
}
public String getDriverInvoiceCode() {
return driverInvoiceCode;
}
public void setDriverInvoiceCode(String driverInvoiceCode) {
this.driverInvoiceCode = driverInvoiceCode;
}
public String getEnterpriseCode() {
return enterpriseCode;
}
public void setEnterpriseCode(String enterpriseCode) {
this.enterpriseCode = enterpriseCode;
}
}
@@ -0,0 +1,135 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import java.io.Serializable;
import java.util.List;
/**
* @ClassName InvoicesBean
* @Author john
* @Date 2024/11/29 13:08
* @Description TODO
*/
public class InvoicesBean implements Serializable {
private String totalPage;
private String totalCount;
private String pageSize;
private String currentPage;
private String sortField;
private String sortDirection;
private List<DataDTO> driverInvoices;
public String getTotalPage() {
return totalPage;
}
public void setTotalPage(String totalPage) {
this.totalPage = totalPage;
}
public String getTotalCount() {
return totalCount;
}
public void setTotalCount(String totalCount) {
this.totalCount = totalCount;
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public String getCurrentPage() {
return currentPage;
}
public void setCurrentPage(String currentPage) {
this.currentPage = currentPage;
}
public String getSortField() {
return sortField;
}
public void setSortField(String sortField) {
this.sortField = sortField;
}
public String getSortDirection() {
return sortDirection;
}
public void setSortDirection(String sortDirection) {
this.sortDirection = sortDirection;
}
public List<DataDTO> getDriverInvoices() {
return driverInvoices;
}
public void setDriverInvoices(List<DataDTO> driverInvoices) {
this.driverInvoices = driverInvoices;
}
public static class DataDTO{
private String taxAmount;
private String totalAmount;
private String invoiceReceiverName;
private String totalAmountIncludeTax;
private String driverInvoiceCode;
private String taxRate;
public String getTaxAmount() {
return taxAmount;
}
public void setTaxAmount(String taxAmount) {
this.taxAmount = taxAmount;
}
public String getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(String totalAmount) {
this.totalAmount = totalAmount;
}
public String getInvoiceReceiverName() {
return invoiceReceiverName;
}
public void setInvoiceReceiverName(String invoiceReceiverName) {
this.invoiceReceiverName = invoiceReceiverName;
}
public String getTotalAmountIncludeTax() {
return totalAmountIncludeTax;
}
public void setTotalAmountIncludeTax(String totalAmountIncludeTax) {
this.totalAmountIncludeTax = totalAmountIncludeTax;
}
public String getDriverInvoiceCode() {
return driverInvoiceCode;
}
public void setDriverInvoiceCode(String driverInvoiceCode) {
this.driverInvoiceCode = driverInvoiceCode;
}
public String getTaxRate() {
return taxRate;
}
public void setTaxRate(String taxRate) {
this.taxRate = taxRate;
}
}
}
@@ -0,0 +1,41 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import java.io.Serializable;
/**
* @ClassName LjTokenBean
* @Author john
* @Date 2024/11/25 10:05
* @Description TODO
*/
public class LjTokenBean implements Serializable {
private String enterpriseCode;
private String enterpriseIdentity;
private String enterpriseKey;
public String getEnterpriseCode() {
return enterpriseCode;
}
public void setEnterpriseCode(String enterpriseCode) {
this.enterpriseCode = enterpriseCode;
}
public String getEnterpriseIdentity() {
return enterpriseIdentity;
}
public void setEnterpriseIdentity(String enterpriseIdentity) {
this.enterpriseIdentity = enterpriseIdentity;
}
public String getEnterpriseKey() {
return enterpriseKey;
}
public void setEnterpriseKey(String enterpriseKey) {
this.enterpriseKey = enterpriseKey;
}
}
@@ -0,0 +1,109 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import com.alct.mdp.model.Location;
import com.arpa.hndahesudintocctmsdriver.bean.GDLocation;
import java.io.Serializable;
/**
* @ClassName PickupBean
* @Author john
* @Date 2024/11/25 10:19
* @Description TODO
*/
public class PickupBean implements Serializable {
private String shipmentCode;
private String enterpriseCode;
private GDLocation location;
public String getShipmentCode() {
return shipmentCode;
}
public void setShipmentCode(String shipmentCode) {
this.shipmentCode = shipmentCode;
}
public String getEnterpriseCode() {
return enterpriseCode;
}
public void setEnterpriseCode(String enterpriseCode) {
this.enterpriseCode = enterpriseCode;
}
public GDLocation getLocation() {
return location;
}
public void setLocation(GDLocation location) {
this.location = location;
}
public static class LocationDTO {
private String time;
private double baiduLatitude;
private double baiduLongitude;
private double altitude;
private double speed;
private double bearing;
private String location;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public double getBaiduLatitude() {
return baiduLatitude;
}
public void setBaiduLatitude(double baiduLatitude) {
this.baiduLatitude = baiduLatitude;
}
public double getBaiduLongitude() {
return baiduLongitude;
}
public void setBaiduLongitude(double baiduLongitude) {
this.baiduLongitude = baiduLongitude;
}
public double getAltitude() {
return altitude;
}
public void setAltitude(double altitude) {
this.altitude = altitude;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public double getBearing() {
return bearing;
}
public void setBearing(double bearing) {
this.bearing = bearing;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
}
@@ -0,0 +1,31 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import java.io.Serializable;
/**
* @ClassName ShipmentStatusBean
* @Author john
* @Date 2024/11/25 17:16
* @Description TODO
*/
public class ShipmentStatusBean implements Serializable {
private String shipmentCode;
private String enterpriseCode;
public String getShipmentCode() {
return shipmentCode;
}
public void setShipmentCode(String shipmentCode) {
this.shipmentCode = shipmentCode;
}
public String getEnterpriseCode() {
return enterpriseCode;
}
public void setEnterpriseCode(String enterpriseCode) {
this.enterpriseCode = enterpriseCode;
}
}
@@ -0,0 +1,118 @@
package com.arpa.hndahesudintocctmsdriver.request.bean.newlj;
import com.alct.mdp.model.Image;
import com.arpa.hndahesudintocctmsdriver.bean.GDImage;
import java.io.Serializable;
/**
* @ClassName UpimgBean
* @Author john
* @Date 2024/11/25 14:36
* @Description TODO
*/
public class UpimgBean implements Serializable {
private String shipmentCode;
private String enterpriseCode;
private GDImage image;
public String getShipmentCode() {
return shipmentCode;
}
public void setShipmentCode(String shipmentCode) {
this.shipmentCode = shipmentCode;
}
public String getEnterpriseCode() {
return enterpriseCode;
}
public void setEnterpriseCode(String enterpriseCode) {
this.enterpriseCode = enterpriseCode;
}
public GDImage getImage() {
return image;
}
public void setImage(GDImage image) {
this.image = image;
}
public static class ImageDTO {
private String fileName;
private String fileExt;
private double baiduLongitude;
private double baiduLatitude;
private String location;
private String imageTakenDate;
private String time;
private String fileData;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileExt() {
return fileExt;
}
public void setFileExt(String fileExt) {
this.fileExt = fileExt;
}
public double getBaiduLongitude() {
return baiduLongitude;
}
public void setBaiduLongitude(double baiduLongitude) {
this.baiduLongitude = baiduLongitude;
}
public double getBaiduLatitude() {
return baiduLatitude;
}
public void setBaiduLatitude(double baiduLatitude) {
this.baiduLatitude = baiduLatitude;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getImageTakenDate() {
return imageTakenDate;
}
public void setImageTakenDate(String imageTakenDate) {
this.imageTakenDate = imageTakenDate;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getFileData() {
return fileData;
}
public void setFileData(String fileData) {
this.fileData = fileData;
}
}
}
@@ -4,11 +4,23 @@ package com.arpa.hndahesudintocctmsdriver.request.net;
import com.arpa.hndahesudintocctmsdriver.BuildConfig; import com.arpa.hndahesudintocctmsdriver.BuildConfig;
import com.arpa.hndahesudintocctmsdriver.bean.UserBean; import com.arpa.hndahesudintocctmsdriver.bean.UserBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.LoginRegInputBean; import com.arpa.hndahesudintocctmsdriver.request.bean.LoginRegInputBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.InvoiceBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.InvoicesBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.LjTokenBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.PickupBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.ShipmentStatusBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.UpimgBean;
import com.dahe.mylibrary.net.CommonResponseBean; import com.dahe.mylibrary.net.CommonResponseBean;
import java.util.HashMap;
import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observable;
import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query; import retrofit2.http.Query;
/** /**
@@ -17,7 +29,7 @@ import retrofit2.http.Query;
public interface Api { public interface Api {
String BASE_URL = BuildConfig.BASE_URL; String BASE_URL = BuildConfig.isTest? "http://api.kehui56.cn/api/v1/":"https://api.kehui56.com/api/v1/";
//获取版本 //获取版本
@@ -26,5 +38,119 @@ public interface Api {
// @POST(BASE_URL+"/common/register") // @POST(BASE_URL+"/common/register")
// Observable<CommonResponseBean> log(@Body LoginRegInputBean bean); // Observable<CommonResponseBean> log(@Body LoginRegInputBean bean);
@POST(BASE_URL+"openapi/enterprises/login")
Observable<CommonResponseBean> getToken(@Body LjTokenBean bean);
@POST(BASE_URL+"openapi/enterprises/login")
Call<HashMap<String, String>> getRefreshToken(@Body LjTokenBean bean);
/**
* 刷新token
* @return
*/
@POST(BASE_URL+"openapi/enterprises/refresh-token/{refreshToken}")
Observable<CommonResponseBean> refreshToken(@Path("refreshToken") String refreshToken);
/**
* 运单提货
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/pickup")
Observable<CommonResponseBean> pickup(@Body PickupBean bean);
/**
* 运单卸货
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/unload")
Observable<CommonResponseBean> unload(@Body PickupBean bean);
/**
* 运单签收
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/sign")
Observable<CommonResponseBean> sign(@Body PickupBean bean);
/**
* 运单回单
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/pod")
Observable<CommonResponseBean> pod(@Body PickupBean bean);
/**
* 运单提货照片上传
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/uploadPickupImage")
Observable<CommonResponseBean> uploadPickupImage(@Body UpimgBean bean);
/**
* 运单卸货照片上传
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/uploadUnloadImage")
Observable<CommonResponseBean> uploadUnloadImage(@Body UpimgBean bean);
/**
* 运单回单照片上传
* @param bean
* @return
*/
@POST(BASE_URL+"openapi/shipments/uploadPODImage")
Observable<CommonResponseBean> uploadPODImage(@Body UpimgBean bean);
/**
* 同意发票申请
* @param bean
* @return
*/
@PUT(BASE_URL+"openapi/confirmInvoice")
Observable<CommonResponseBean> confirmInvoice(@Body InvoiceBean bean);
/**
* 待同意发票列表获取
* @param enterpriseCodeParam
* @param driverIdentification
* @param currentPage
* @param pageSize
* @return
*/
@GET(BASE_URL+"openapi/getInvoices")
Observable<CommonResponseBean<InvoicesBean>> getInvoices(@Query("enterpriseCodeParam") String enterpriseCodeParam,
@Query("driverIdentification") String driverIdentification,
@Query("currentPage") int currentPage,
@Query("pageSize") int pageSize);
/**
* 获取运单状态
* @param bean
* @return
*/
@POST(BASE_URL+"/openapi/getShipmentStatus")
Observable<CommonResponseBean> getShipmentStatus(@Body ShipmentStatusBean bean);
@POST(BASE_URL+"/openapi/shipments/getPODImageNames")
Observable<CommonResponseBean> getPODImageNames(@Body ShipmentStatusBean bean);
@GET(BASE_URL+"/openapi/drivers")
Observable<CommonResponseBean> searchDriver(@Query("identityNo") String identityNo);
} }
@@ -0,0 +1,114 @@
package com.arpa.hndahesudintocctmsdriver.request.net
import okhttp3.Interceptor
import okhttp3.Request
import okio.IOException
import retrofit2.Response
import java.util.concurrent.atomic.AtomicBoolean
/**
* @ClassName ApiInterceptor
* @Author john
* @Date 2024/11/29 17:05
* @Description TODO
*/
class ApiInterceptor : Interceptor {
// 需要验证token的接口的路径集合
// private val checkTokenInterface = arrayListOf(
// "/example/user/info,
// "/example/user/info/edit"
// )
// 是否正在刷新token
// 使用AtomicBoolean,确保多线程中获取的值一致
// private var refreshingToken = AtomicBoolean(false)
//
// private val authHeaderKey = "token-key"
//
// // 当前token
// private var currentToken = "tokenValue"
// override fun intercept(chain: Interceptor.Chain): Response {
// 根据接口路径判断是否需要验证token
// val checkToken = checkTokenInterface.contains(chain.request().url.encodedPath)
// // 需要验证token则添加请求头,不需要则保持原样
// var request = if (checkToken) {
// chain.request().newBuilder()
// .addHeader(authHeaderKey, currentToken)
// .build()
// } else {
// chain.request()
// }
// // 获取响应
// var response = chain.proceed(request)
// if (checkToken) {
// // 需要验证token,处理响应,判断token是否过期
// response.body?.let { responseBody ->
// try {
// if (判断token过期的条件) {
// runBlocking {
// // 请求头中的token与currentToken仍然一样则需要刷新token
// // 确保多线程中不会重复刷新
// if (request.header(authHeaderKey) == currentToken){
// // 标记为正在刷新token
// if (refreshingToken.compareAndSet(false, true)) {
// refreshToken(chain).takeIf { it.isNotEmpty() && it.isNotBlank() }?.let { newToken ->
// // 保存newToken
// currentToken = newToken
// }
// // 标记为刷新token已结束
// refreshingToken.set(false)
// }
// }
// // async{}.await()会等待方法块内的代码执行完毕。
// // 等到refreshingToken为false时才会执行后续代码。
// if (async { stopRefreshingToken() }.await()) {
// // 携带newToken执行原请求获取响应
// response = chain.proceed(chain.request().newBuilder()
// .addHeader(authHeaderKey, currentToken)
// .build())
// }
// }
// }
// } catch (e: Exception) {
// e.printStackTrace()
// }
// }
// }
// // 返回最终的响应结果。
// // 刷新token也可能失败,此时返回原响应,可以让用户重新登录。
// return response
// }
//
// private fun refreshToken(chain: Interceptor.Chain): String {
// // 创建刷新token的请求
// val refreshTokenRequest = Request.Builder()
// .url("refresh token url")
// .addHeader(authHeaderKey, currentToken)
// .get()
// .build()
// return try {
// // 获取响应并解析获得新token
// val refreshTokenResponse = chain.proceed(refreshTokenRequest)
// refreshTokenResponse.token
// } catch (e: IOException) {
// // 失败时返回空字符串
// ""
// }
// }
//
// private suspend fun stopRefreshingToken(): Boolean {
// return if (refreshingToken.get()) {
// // 仍在刷新token中,延迟1秒后再次执行此方法
// delay(1000)
// stopRefreshingToken()
// } else {
// true
// }
// }
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
TODO("Not yet implemented")
}
}
@@ -37,7 +37,7 @@ public class BaseObserver<T> implements Observer<CommonResponseBean<T>> {
@Override @Override
public void onNext(CommonResponseBean<T> tCommonResponseBean) { public void onNext(CommonResponseBean<T> tCommonResponseBean) {
if (200==tCommonResponseBean.getCode()) { if ("0".equals(tCommonResponseBean.getCode())) {
mRxHttpCallBack.onSuccess(tCommonResponseBean); mRxHttpCallBack.onSuccess(tCommonResponseBean);
} else { } else {
mRxHttpCallBack.onCodeError(mContext, tCommonResponseBean); mRxHttpCallBack.onCodeError(mContext, tCommonResponseBean);
@@ -2,7 +2,6 @@ package com.arpa.hndahesudintocctmsdriver.request.net;
import com.dahe.mylibrary.CommonBaseLibrary; import com.dahe.mylibrary.CommonBaseLibrary;
import com.dahe.mylibrary.net.JsonInterceptor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -0,0 +1,119 @@
package com.arpa.hndahesudintocctmsdriver.request.net;
import static com.dahe.mylibrary.utils.BaseSPUtils.NEW_LJ_TOKEN;
import android.text.TextUtils;
import android.util.Log;
import com.arpa.hndahesudintocctmsdriver.App;
import com.arpa.hndahesudintocctmsdriver.constant.NewLJConstant;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.LjTokenBean;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.arpa.hndahesudintocctmsdriver.util.SPUtils;
import com.dahe.mylibrary.CommonBaseLibrary;
import com.dahe.mylibrary.net.CommonResponseBean;
import com.dahe.mylibrary.net.ResultException;
import org.json.JSONObject;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import io.reactivex.rxjava3.core.Observable;
import kotlin.jvm.Synchronized;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okio.Buffer;
import okio.BufferedSource;
/**
* json的Interceptor
*/
public class JsonInterceptor implements Interceptor {
private static final String TAG = "JsonInterceptor";
public JsonInterceptor() {
}
// 使用AtomicBoolean,确保多线程中获取的值一致
private AtomicBoolean refreshingToken = new AtomicBoolean(false);
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
ResponseBody responseBody = response.body();
//为了不消耗buffer,我们这里使用source先获得buffer对象,然后clone()后使用
BufferedSource source = responseBody.source();
source.request(Long.MAX_VALUE); // Buffer the entire body.
//获得返回的数据
Buffer buffer = source.buffer();
//使用前clone()下,避免直接消耗
String responseBodyStr = buffer.clone().readString(Charset.forName("UTF-8"));
Log.i(TAG, "result-body= " + responseBodyStr);
try {
JSONObject jsonObject = new JSONObject(responseBodyStr);
String str = jsonObject.optString("data");
int code = jsonObject.optInt("code");
if (401 == code) {
refreshToken();
// if (execute.body() != null) {
// String refreshToken = execute.body().get("token");
// SPUtils.put(App.getApp(), NEW_LJ_TOKEN, refreshToken);
// }
response.close();
try {
return chain.proceed(request);
} catch (IOException e) {
e.printStackTrace();
}
}
if (-1 == code) {
jsonObject.put("data", new JSONObject());
throw new ResultException();
} else {
if (TextUtils.isEmpty(str)) {
jsonObject.put("data", new JSONObject());
}
}
String data = jsonObject.toString();
responseBody = ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), data);
} catch (Exception e) {
e.printStackTrace();
}
response = response.newBuilder().body(responseBody).build();
return response;
}
@Synchronized
private void refreshToken() throws IOException {
Api api = CommonBaseLibrary.getRetrofit().newBuilder()
.client(new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build())
// .addNetworkInterceptor(new TokenInterceptor())
.build().create(Api.class);
LjTokenBean ljTokenBean = new LjTokenBean();
ljTokenBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
ljTokenBean.setEnterpriseIdentity(NewLJConstant.ENTER_PRISE_IDENTITY);
ljTokenBean.setEnterpriseKey(NewLJConstant.ENTER_PRISE_KEY);
retrofit2.Response<HashMap<String, String>> execute = api.getRefreshToken(ljTokenBean).execute();
if (execute.body() != null) {
String refreshToken = execute.body().get("token");
SPUtils.put(App.getApp(), NEW_LJ_TOKEN, refreshToken);
}
}
}
@@ -1,5 +1,7 @@
package com.arpa.hndahesudintocctmsdriver.request.net; package com.arpa.hndahesudintocctmsdriver.request.net;
import static com.dahe.mylibrary.utils.BaseSPUtils.NEW_LJ_TOKEN;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -27,9 +29,10 @@ public class RequestHeadInterceptor implements Interceptor {
@Override @Override
public Response intercept(Chain chain) throws IOException { public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder(); Request.Builder builder = chain.request().newBuilder();
if (!TextUtils.isEmpty(SPUtil.getSP(App.getApp(), LoginActivity.USER,LoginActivity.USER_TOKEN))) { String token = SPUtils.get(App.getApp(), NEW_LJ_TOKEN, "").toString();
if (!TextUtils.isEmpty(token)) {
// builder.addHeader("Authorization", SPUtils.getUserInfo(App.getApp()).getToken()); // builder.addHeader("Authorization", SPUtils.getUserInfo(App.getApp()).getToken());
builder.addHeader("Authorization", SPUtil.getSP(App.getApp(), LoginActivity.USER,LoginActivity.USER_TOKEN)); builder.addHeader("token", token);
} }
Request request = builder Request request = builder
.addHeader("versionCode", AppUtils.getAppVersionCode() + "") .addHeader("versionCode", AppUtils.getAppVersionCode() + "")
@@ -11,6 +11,7 @@ import android.view.Window;
import com.arpa.hndahesudintocctmsdriver.ui.MainActivity; import com.arpa.hndahesudintocctmsdriver.ui.MainActivity;
import com.arpa.hndahesudintocctmsdriver.ui.UiAuxiliary; import com.arpa.hndahesudintocctmsdriver.ui.UiAuxiliary;
import com.arpa.hndahesudintocctmsdriver.ui.login.LoginActivity; import com.arpa.hndahesudintocctmsdriver.ui.login.LoginActivity;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.dahe.mylibrary.net.CommonResponseBean; import com.dahe.mylibrary.net.CommonResponseBean;
import com.dahe.mylibrary.net.ResultException; import com.dahe.mylibrary.net.ResultException;
import com.dahe.mylibrary.utils.ToastUtils; import com.dahe.mylibrary.utils.ToastUtils;
@@ -86,14 +87,15 @@ public abstract class RxHttpCallBack<T> {
dialog.dismiss(); dialog.dismiss();
} }
if (t.getCode() == 401) { if ("401".equals(t.getCode())) {
UiAuxiliary.delLogin(mContext); // NewLJUtils.getInstance().refreshToken(mContext);
Intent intent = new Intent(mContext, MainActivity.class); // UiAuxiliary.delLogin(mContext);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); // Intent intent = new Intent(mContext, MainActivity.class);
mContext.startActivity(intent); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
ToastUtils.showToast(mContext,"您的账号再异地登录,请重新登录"); // mContext.startActivity(intent);
// ToastUtils.showToast(mContext,"您的账号再异地登录,请重新登录");
}else{ }else{
ToastUtils.showToast(mContext,t.getMsg()); // ToastUtils.showToast(mContext,t.getMessage());
} }
// if (t.getMessage().getMsg_code() == 100 && SPUtils.hasUserInfo(mContext)) { // if (t.getMessage().getMsg_code() == 100 && SPUtils.hasUserInfo(mContext)) {
@@ -0,0 +1,89 @@
package com.arpa.hndahesudintocctmsdriver.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import com.arpa.hndahesudintocctmsdriver.R;
import com.express.mdp.gps.a;
/**
* @ClassName TrackForeService
* @Author john
* @Date 2024/12/2 13:12
* @Description TODO
*/
public class TrackForeService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
// String var3 = "channelId" + System.currentTimeMillis();
// NotificationCompat.Builder var4;
// NotificationCompat.Builder var10001 = var4 = new NotificationCompat.Builder;
// var4.<init>(this, var3);
// var4.setContentText("运单轨迹服务");
// var4.setContentTitle("");
// var10001.setSmallIcon(var1);
// var10001.setAutoCancel(false);
// var10001.setShowWhen(true);
// var10001.setWhen(System.currentTimeMillis());
// var10001.setPriority(2);
// var10001.setOngoing(true);
// var10001.setDefaults(-1);
// NotificationManager var7 = (NotificationManager)this.getSystemService("notification");
// if (Build.VERSION.SDK_INT >= 26) {
// NotificationChannel var5;
// var5 = new NotificationChannel.<init>(var3, var2, 4);
// var7.createNotificationChannel(var5);
// var4.setChannelId(var3);
// }
//
// a var10000 = this;
// Notification var6 = var4.build();
// var4.setContentIntent((PendingIntent)null);
// var7.notify(6, var6);
// var10000.startForeground(6, var6);
// 判断是否为8.0版本以上
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// 获取系统服务管理器
NotificationManager manage = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String id = "channelId" + System.currentTimeMillis();
String name = "通知分类名称";
// 建立通知通道
NotificationChannel notificationChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_DEFAULT);
manage.createNotificationChannel(notificationChannel);
Notification build = new NotificationCompat.Builder(this, id)
.setContentTitle("前台服务")
.setContentText("运单轨迹服务")
.setWhen(System.currentTimeMillis()) // 当前时间
.setSmallIcon(R.drawable.ic_launcher_background) // 图标
.setProgress(100, 10, false) // 进度
.build();
// 第一个参数唯一就好
startForeground(1, build);
manage.notify(1, build);
}
}}
@@ -1,5 +1,7 @@
package com.arpa.hndahesudintocctmsdriver.ui; package com.arpa.hndahesudintocctmsdriver.ui;
import static com.dahe.mylibrary.utils.BaseSPUtils.NEW_LJ_TOKEN;
import android.content.Context; import android.content.Context;
import com.arpa.hndahesudintocctmsdriver.event.HomeEvent; import com.arpa.hndahesudintocctmsdriver.event.HomeEvent;
@@ -39,8 +41,9 @@ public class UiAuxiliary {
} }
public static void delLogin(Context con){ public static void delLogin(Context con){
JPushInterface.deleteAlias(con,0); // JPushInterface.deleteAlias(con,0);
SPUtils.remove(con,"curWaybillId"); SPUtils.remove(con,"curWaybillId");
SPUtils.remove(con,NEW_LJ_TOKEN);
SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_TOKEN,""); SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_TOKEN,"");
SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_UNAME,""); SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_UNAME,"");
SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_RNAME,""); SPUtil.insSP(con,LoginActivity.USER,LoginActivity.USER_RNAME,"");
@@ -8,11 +8,14 @@ import android.widget.Button;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.arpa.hndahesudintocctmsdriver.R; import com.arpa.hndahesudintocctmsdriver.R;
import com.arpa.hndahesudintocctmsdriver.event.PersonEvent;
import com.arpa.hndahesudintocctmsdriver.ui.MainActivity; import com.arpa.hndahesudintocctmsdriver.ui.MainActivity;
import com.arpa.hndahesudintocctmsdriver.util.statusbar.StateStyleUtil; import com.arpa.hndahesudintocctmsdriver.util.statusbar.StateStyleUtil;
import com.arpa.hndahesudintocctmsdriver.util.view.BaseAppCompatActivity; import com.arpa.hndahesudintocctmsdriver.util.view.BaseAppCompatActivity;
import com.dahe.mylibrary.utils.ActivityUtils; import com.dahe.mylibrary.utils.ActivityUtils;
import org.greenrobot.eventbus.EventBus;
/** /**
* @ClassName FaceSuccActivity * @ClassName FaceSuccActivity
* @Author john * @Author john
@@ -39,7 +42,9 @@ public class FaceSuccActivity extends BaseAppCompatActivity {
btnAddCar.setVisibility(View.GONE); btnAddCar.setVisibility(View.GONE);
} }
btnHome.setOnClickListener(v -> finish()); btnHome.setOnClickListener(v -> {
finish();
});
btnAddCar.setOnClickListener(v -> { btnAddCar.setOnClickListener(v -> {
Intent in = new Intent(con, CertificatesActivity.class); Intent in = new Intent(con, CertificatesActivity.class);
in.putExtra("index", 2); in.putExtra("index", 2);
@@ -48,4 +53,10 @@ public class FaceSuccActivity extends BaseAppCompatActivity {
}); });
} }
@Override
protected void onPause() {
super.onPause();
EventBus.getDefault().post(new PersonEvent("刷脸成功"));
}
} }
@@ -1,5 +1,7 @@
package com.arpa.hndahesudintocctmsdriver.ui.auth; package com.arpa.hndahesudintocctmsdriver.ui.auth;
import static com.sdk.base.framework.utils.app.AppUtils.getPackageName;
import android.Manifest; import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -75,15 +77,15 @@ public class PersonalAuthActivity extends BaseAppCompatActivity {
super.msgMethod(m); super.msgMethod(m);
switch (m.what) { switch (m.what) {
case RequsetCodeConstants.SUCCESS: case RequsetCodeConstants.SUCCESS:
if (CacheGroup.cacheList.get("userdata") != null) { if (CacheGroup.cacheList.get("userdata2") != null) {
ub = gson.fromJson(CacheGroup.cacheList.get("userdata"), UserBean.class); ub = gson.fromJson(CacheGroup.cacheList.get("userdata2"), UserBean.class);
if (ub.getCode() == 200) { if (ub.getCode() == 200) {
initView(ub); initView(ub);
SPUtil.insSP(con, "data", "userdata", CacheGroup.cacheList.get("userdata")); SPUtil.insSP(con, "data", "userdata", CacheGroup.cacheList.get("userdata2"));
} else { } else {
Toast.makeText(con, ub.getMsg(), Toast.LENGTH_SHORT).show(); Toast.makeText(con, ub.getMsg(), Toast.LENGTH_SHORT).show();
} }
CacheGroup.cacheList.remove("userdata"); CacheGroup.cacheList.remove("userdata2");
} }
if (CacheGroup.cacheList.get("upload") != null) { if (CacheGroup.cacheList.get("upload") != null) {
upb = gson.fromJson(CacheGroup.cacheList.get("upload"), UploadBean.class); upb = gson.fromJson(CacheGroup.cacheList.get("upload"), UploadBean.class);
@@ -208,7 +210,22 @@ public class PersonalAuthActivity extends BaseAppCompatActivity {
}); });
//头像 //头像
up_img.setOnClickListener(v -> { up_img.setOnClickListener(v -> {
PermissionUtils.Companion.getInstance().showPermissionMessage(this, "拍摄,媒体查询权限使用说明", "用于拍照或者选择图片用于上传头像功能",
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA},
(allGranted, grantedList, deniedList) -> {
if (allGranted) {
gia.showPopueWindow(this); gia.showPopueWindow(this);
} else {
new MessageUtils().showSimCenPop(con, "缺少拍摄,媒体查询权限,将无法为您提供服务,去开启!", "取消", "确认", () -> {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
});
// Toast.makeText(act.getBaseContext(), "请先开启定位权限", Toast.LENGTH_LONG).show();
}
});
}); });
up_head.setOnClickListener(v -> { up_head.setOnClickListener(v -> {
if (ub.getData().getHeadportraitUrl() != null && !ub.getData().getHeadportraitUrl().equals("")) { if (ub.getData().getHeadportraitUrl() != null && !ub.getData().getHeadportraitUrl().equals("")) {
@@ -222,10 +239,15 @@ public class PersonalAuthActivity extends BaseAppCompatActivity {
}); });
hyr = new HuoYuanRequset(con, hd); hyr = new HuoYuanRequset(con, hd);
ur = new UserRequset(con, hd); ur = new UserRequset(con, hd);
ur.User();
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
} }
@Override
protected void onStart() {
super.onStart();
ur.User2();
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
@@ -249,7 +271,7 @@ public class PersonalAuthActivity extends BaseAppCompatActivity {
public void personResult(PersonEvent home) { public void personResult(PersonEvent home) {
Log.e("-res-", home.getMessage()); Log.e("-res-", home.getMessage());
if (ur != null) { if (ur != null) {
ur.User(); ur.User2();
} }
} }
@@ -460,6 +460,7 @@ public class HomeFragment extends BaseFragment {
}); });
btn_update.setOnClickListener(v -> { btn_update.setOnClickListener(v -> {
getRequest(); getRequest();
refreshWaybills();
}); });
home_top.setOnClickListener(v -> { home_top.setOnClickListener(v -> {
if (!UiAuxiliary.isLogin(con)) { if (!UiAuxiliary.isLogin(con)) {
@@ -520,6 +521,7 @@ public class HomeFragment extends BaseFragment {
Log.e("下拉刷新", "pps"); Log.e("下拉刷新", "pps");
keys = true; keys = true;
getRequest(); getRequest();
refreshWaybills();
}); });
} }
@@ -784,6 +786,7 @@ public class HomeFragment extends BaseFragment {
*/ */
public void initMap() { public void initMap() {
getRequest(); getRequest();
refreshWaybills();
} }
private CustomDialog customDialog; private CustomDialog customDialog;
@@ -796,18 +799,18 @@ public class HomeFragment extends BaseFragment {
// customDialog=new CustomDialog(con,"加载中..."); // customDialog=new CustomDialog(con,"加载中...");
// customDialog.show(); // customDialog.show();
ur.upApp(); ur.upApp();
hyr.getHuoYuan(1, 100); // hyr.getHuoYuan(1, 100);
ur.getImage(1); ur.getImage(1);
WalletRequest qr = new WalletRequest(con, hd); WalletRequest qr = new WalletRequest(con, hd);
if (UiAuxiliary.isLogin(con)) { if (UiAuxiliary.isLogin(con)) {
int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1); // int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1);
ur.User(); ur.User();
// if (!OneDayShowUtils.getInstance().todayIsShow(con)) { // if (!OneDayShowUtils.getInstance().todayIsShow(con)) {
// qr.getBankCardList(); // qr.getBankCardList();
// } // }
ur.getDriverExpire(); ur.getDriverExpire();
hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId); // hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId);
// hyr.startOrder(0); // hyr.startOrder(0);
//获取权限 应用市场审核不通过 //获取权限 应用市场审核不通过
ur.driverAuthData(); ur.driverAuthData();
@@ -1177,6 +1180,7 @@ public class HomeFragment extends BaseFragment {
.permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE, .permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
Manifest.permission.CAMERA, Manifest.permission.CAMERA,
Manifest.permission.ACCESS_COARSE_LOCATION) Manifest.permission.ACCESS_COARSE_LOCATION)
.request((allGranted, grantedList, deniedList) -> { .request((allGranted, grantedList, deniedList) -> {
@@ -1300,26 +1304,29 @@ public class HomeFragment extends BaseFragment {
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
// ToastUtils.showToast(con,"onstart");
// refreshLayout.autoRefresh();
refreshWaybills(); refreshWaybills();
} }
private void refreshWaybills() { private void refreshWaybills() {
// if (UiAuxiliary.isLogin(con)) { hyr.getHuoYuan(1, 100);
// int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1); if (UiAuxiliary.isLogin(con)) {
// hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId); int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1);
// } hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId);
}
} }
@Subscribe @Subscribe
public void processResult(HomeWaybillEvent home) { public void processResult(HomeWaybillEvent home) {
if (home.getMessage() == 1) { // if (home.getMessage() == 1) {
int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1); // int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1);
hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId); // hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId);
hyr.getHuoYuan(1, 100); // hyr.getHuoYuan(1, 100);
} else { // } else {
int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1); // int curWaybillId = (int) SPUtils.get(con, "curWaybillId", -1);
hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId); // hyr.startOrder(curWaybillId == -1 ? 0 : curWaybillId);
} // }
} }
@@ -315,7 +315,11 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
}); });
// //
ImageButton xuanze = v.findViewById(R.id.xuanze); ImageButton xuanze = v.findViewById(R.id.xuanze);
if (clb != null && clb.getData().size() == 1) {
if (hyd!=null&&hyd.getData()!=null&& !TextUtils.isEmpty(hyd.getData().getCarNumber())){
cid = hyd.getData().getCarId();
car.setText("选择车辆:" + hyd.getData().getCarNumber());
}else if (clb != null && clb.getData().size() == 1) {
cid = clb.getData().get(0).getCarId(); cid = clb.getData().get(0).getCarId();
car.setText("选择车辆:" + clb.getData().get(0).getCarNumber()); car.setText("选择车辆:" + clb.getData().get(0).getCarNumber());
} }
@@ -408,6 +412,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
UiAuxiliary.homeRequest("接单"); UiAuxiliary.homeRequest("接单");
Intent in = new Intent(con, StartYunDanActivity.class); Intent in = new Intent(con, StartYunDanActivity.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
in.putExtra("id", "0"); in.putExtra("id", "0");
startActivity(in); startActivity(in);
finish(); finish();
@@ -534,4 +539,9 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
// ALProcess.verification(con, hd); // ALProcess.verification(con, hd);
} }
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
} }
@@ -27,6 +27,8 @@ import com.alct.mdp.model.Location;
import com.alct.mdp.model.ShipmentStatusEnum; import com.alct.mdp.model.ShipmentStatusEnum;
import com.arpa.hndahesudintocctmsdriver.BuildConfig; import com.arpa.hndahesudintocctmsdriver.BuildConfig;
import com.arpa.hndahesudintocctmsdriver.bean.CarInfoBean; import com.arpa.hndahesudintocctmsdriver.bean.CarInfoBean;
import com.arpa.hndahesudintocctmsdriver.bean.GDImage;
import com.arpa.hndahesudintocctmsdriver.bean.GDLocation;
import com.arpa.hndahesudintocctmsdriver.bean.WaybillStatusBean; import com.arpa.hndahesudintocctmsdriver.bean.WaybillStatusBean;
import com.arpa.hndahesudintocctmsdriver.event.HomeWaybillEvent; import com.arpa.hndahesudintocctmsdriver.event.HomeWaybillEvent;
import com.arpa.hndahesudintocctmsdriver.report.JTTProcess; import com.arpa.hndahesudintocctmsdriver.report.JTTProcess;
@@ -35,6 +37,7 @@ import com.arpa.hndahesudintocctmsdriver.request.bean.TrackInputBean;
import com.arpa.hndahesudintocctmsdriver.ui.MainActivity; import com.arpa.hndahesudintocctmsdriver.ui.MainActivity;
import com.arpa.hndahesudintocctmsdriver.util.BitmapUtil; import com.arpa.hndahesudintocctmsdriver.util.BitmapUtil;
import com.arpa.hndahesudintocctmsdriver.util.MessageUtils; import com.arpa.hndahesudintocctmsdriver.util.MessageUtils;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.arpa.hndahesudintocctmsdriver.util.NfcUtils; import com.arpa.hndahesudintocctmsdriver.util.NfcUtils;
import com.arpa.hndahesudintocctmsdriver.util.SPUtils; import com.arpa.hndahesudintocctmsdriver.util.SPUtils;
import com.arpa.hndahesudintocctmsdriver.util.alert.ToastUtil; import com.arpa.hndahesudintocctmsdriver.util.alert.ToastUtil;
@@ -43,6 +46,8 @@ import com.arpa.hndahesudintocctmsdriver.util.location.LocationUtil;
import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.CoordinateConverter; import com.baidu.mapapi.utils.CoordinateConverter;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.dahe.mylibrary.callback.OnGDDownloadResultListener;
import com.dahe.mylibrary.callback.OnGDResultListener;
import com.dahe.mylibrary.utils.ActivityUtils; import com.dahe.mylibrary.utils.ActivityUtils;
import com.dahe.mylibrary.utils.ImageLoader; import com.dahe.mylibrary.utils.ImageLoader;
import com.dahe.mylibrary.utils.ToastUtils; import com.dahe.mylibrary.utils.ToastUtils;
@@ -134,6 +139,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
CacheGroup.cacheList.remove("upload"); CacheGroup.cacheList.remove("upload");
} }
if (CacheGroup.cacheList.get("genzong") != null) { if (CacheGroup.cacheList.get("genzong") != null) {
BaseBean bb = gson.fromJson(CacheGroup.cacheList.get("genzong"), BaseBean.class); BaseBean bb = gson.fromJson(CacheGroup.cacheList.get("genzong"), BaseBean.class);
if (bb.getCode() == 200) { if (bb.getCode() == 200) {
@@ -143,6 +149,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
CacheGroup.cacheList.remove("genzong"); CacheGroup.cacheList.remove("genzong");
} }
if (CacheGroup.cacheList.get("waybillStatus") != null) { if (CacheGroup.cacheList.get("waybillStatus") != null) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
@@ -474,30 +481,54 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
Log.e("--装货信息", gson.toJson(lub)); Log.e("--装货信息", gson.toJson(lub));
if (locationKey) {//高德定位 if (locationKey) {//高德定位
if (keys) { if (keys) {
MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
@Override
public void onSuccess(Object o) {
String string = o.toString(); NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
if (string.equals("PICKUPED")) {//安联装货,单平台未装货 @Override
public void onSuccess(String var1) {
String string = var1;
if (string.equals("30")) {//安联装货,单平台未装货
isFinish = true; isFinish = true;
//平台确认装货 //平台确认装货
hyr.loading(lub); hyr.loading(lub);
} else { } else {
nfc(); // nfc();
loadInfo(); loadInfo();
} }
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
// NewLJUtils.getInstance().startLocationService(ShangChuangImgActivity.this);
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
} }
ToastUtils.showToast(con, s1); ToastUtils.showToast(con, var2);
} }
}); });
// MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
// @Override
// public void onSuccess(Object o) {
//
// String string = o.toString();
// if (string.equals("PICKUPED")) {//安联装货,单平台未装货
// isFinish = true;
// //平台确认装货
// hyr.loading(lub);
// } else {
// nfc();
// loadInfo();
// }
// }
//
// @Override
// public void onFailure(String s, String s1) {
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// ToastUtils.showToast(con, s1);
// }
// });
// nfc(); // nfc();
@@ -530,10 +561,11 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
Log.e("--卸货信息", gson.toJson(lub)); Log.e("--卸货信息", gson.toJson(lub));
if (locationKey) { if (locationKey) {
if (keys) { if (keys) {
MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
@Override @Override
public void onSuccess(Object o) { public void onSuccess(String var1) {
if (o.toString().equals("UNLOADED")) {//安联装货,单平台未装货 if (var1.equals("40")) {//安联装货,单平台未装货
//卸货状态-平台 //卸货状态-平台
isFinish = true; isFinish = true;
hyr.dischargeCargo(lub); hyr.dischargeCargo(lub);
@@ -542,17 +574,40 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
uploadInfo(); uploadInfo();
} }
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
// NewLJUtils.getInstance().stopLocationService();
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
} }
ToastUtils.showToast(con, s1); ToastUtils.showToast(con, var2);
} }
}); });
// MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
// @Override
// public void onSuccess(Object o) {
// if (o.toString().equals("UNLOADED")) {//安联装货,单平台未装货
// //卸货状态-平台
// isFinish = true;
// hyr.dischargeCargo(lub);
// } else {
// nfc();
// uploadInfo();
// }
// }
//
// @Override
// public void onFailure(String s, String s1) {
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// ToastUtils.showToast(con, s1);
// }
// });
// nfc(); // nfc();
// uploadInfo(); // uploadInfo();
@@ -589,8 +644,8 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
if (locationKey) { if (locationKey) {
if (index == 2 && keys) { if (index == 2 && keys) {
up_trafficSign(); up_trafficSign();
up_trafficReceipt(); // up_trafficReceipt();
receipt_image(); // receipt_image();
} }
hyr.receipt(urib); hyr.receipt(urib);
} else { } else {
@@ -637,7 +692,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
//上传安联-签收 //上传安联-签收
public void up_trafficSign() { public void up_trafficSign() {
//安联 //安联
Location l = new Location(); GDLocation l = new GDLocation();
l.setBaiduLongitude(latLng.longitude); l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude); l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress()); l.setLocation(lgdu.getAddress());
@@ -661,56 +716,86 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
} }
} }
MDPLocationCollectionManager.sign(con, sob.getData().getShippingNoteNumber(), l, gs, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().sign(con, sob.getData().getShippingNoteNumber(), l, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
NewLJUtils.getInstance().stopLocationService();
up_trafficReceipt();
receipt_image();
Log.e("上报安联", "签收成功"); Log.e("上报安联", "签收成功");
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(签收):", s + s1); Log.e("上报安联失败(签收):", var1 + var2);
} }
}); });
// MDPLocationCollectionManager.sign(con, sob.getData().getShippingNoteNumber(), l, gs, new com.alct.mdp.callback.OnResultListener() {
// @Override
// public void onSuccess() {
// Log.e("上报安联", "签收成功");
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(签收):", s + s1);
// }
// });
} }
//上传安联-回单 //上传安联-回单
public void up_trafficReceipt() { public void up_trafficReceipt() {
//安联 //安联
Location l = new Location(); GDLocation l = new GDLocation();
l.setBaiduLongitude(latLng.longitude); l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude); l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress()); l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT()); l.setTime(Timer.getTimerT());
MDPLocationCollectionManager.pod(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().pod(con, sob.getData().getShippingNoteNumber(), l, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
Log.e("上报安联", "回单上传成功"); Log.e("上报安联", "回单上传成功");
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(回单):", s + s1); Log.e("上报安联失败(回单):", var1 + var2);
} }
}); });
// MDPLocationCollectionManager.pod(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
//
// @Override
// public void onSuccess() {
// Log.e("上报安联", "回单上传成功");
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(回单):", s + s1);
// }
//
// });
} }
public void up_image_z() { public void up_image_z() {
///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg ///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg
File file = new File(path); File file = new File(path);
Image image = new Image(); GDImage image = new GDImage();
String base = BitmapUtil.imageToBase64(path); String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base); image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file)); image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file)); image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT()); image.setImageTakenDate(Timer.getTimerT());
image.setTime(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude); image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude); image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress()); image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadPickupImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
String json = new Gson().toJson(image);
NewLJUtils.getInstance().uploadPickupImage(con, sob.getData().getShippingNoteNumber(), image, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
@@ -723,30 +808,50 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(装货照片):", s + s1); Log.e("上报安联失败(装货照片):", var1 + var2);
// SPUtil.insSP(con,"make","装货",sob.getData().getShippingNoteNumber());
// SPUtil.insSP(con,"make","装货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
// Intent serviceIn=new Intent(con, MakeUpAlService.class);
// startService(serviceIn);
} }
}); });
// MDPLocationCollectionManager.uploadPickupImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
//
// @Override
// public void onSuccess() {
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// EventBus.getDefault().post(new HomeWaybillEvent());
// Log.e("上报安联", "装货照片上传成功");
// Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
// finish();
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(装货照片):", s + s1);
//// SPUtil.insSP(con,"make","装货",sob.getData().getShippingNoteNumber());
//// SPUtil.insSP(con,"make","装货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
//// Intent serviceIn=new Intent(con, MakeUpAlService.class);
//// startService(serviceIn);
// }
//
// });
} }
public void up_image() { public void up_image() {
File file = new File(path); File file = new File(path);
Image image = new Image(); GDImage image = new GDImage();
String base = BitmapUtil.imageToBase64(path); String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base); image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file)); image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file)); image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT()); image.setImageTakenDate(Timer.getTimerT());
image.setTime(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude); image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude); image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress()); image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadUnloadImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().uploadUnloadImage(con, sob.getData().getShippingNoteNumber(), image, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
@@ -759,34 +864,56 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(卸货照片):", s + s1); Log.e("上报安联失败(卸货照片):", var1 + var2);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
} }
// SPUtil.insSP(con,"make","卸货",sob.getData().getShippingNoteNumber());
// SPUtil.insSP(con,"make","卸货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
// Intent serviceIn=new Intent(con, MakeUpAlService.class);
// startService(serviceIn);
} }
}); });
// MDPLocationCollectionManager.uploadUnloadImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
//
// @Override
// public void onSuccess() {
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// EventBus.getDefault().post(new HomeWaybillEvent());
// Log.e("上报安联", "卸货照片上传成功");
// Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
// finish();
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(卸货照片):", s + s1);
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
//// SPUtil.insSP(con,"make","卸货",sob.getData().getShippingNoteNumber());
//// SPUtil.insSP(con,"make","卸货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
//// Intent serviceIn=new Intent(con, MakeUpAlService.class);
//// startService(serviceIn);
// }
//
// });
} }
public void receipt_image() { public void receipt_image() {
///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg ///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg
File file = new File(path); File file = new File(path);
Image image = new Image(); GDImage image = new GDImage();
String base = BitmapUtil.imageToBase64(path); String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base); image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file)); image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file)); image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT()); image.setImageTakenDate(Timer.getTimerT());
image.setTime(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude); image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude); image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress()); image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadPODImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().uploadPODImage(con, sob.getData().getShippingNoteNumber(), image, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
@@ -800,15 +927,34 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(回单照片):", s + s1); Log.e("上报安联失败(回单照片):", var1 + var2);
// SPUtil.insSP(con,"make","回单",sob.getData().getShippingNoteNumber());
//// SPUtil.insSP(con,"make","回单-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
//// Intent serviceIn=new Intent(con, MakeUpAlService.class);
//// startService(serviceIn);
} }
}); });
// MDPLocationCollectionManager.uploadPODImage(con, sob.getData().getShippingNoteNumber(), image, new com.alct.mdp.callback.OnResultListener() {
//
// @Override
// public void onSuccess() {
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// SPUtils.remove(con, "curWaybillId");
// EventBus.getDefault().post(new HomeWaybillEvent());
// Log.e("上报安联", "回单照片上传成功");
// Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
// finish();
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(回单照片):", s + s1);
//// SPUtil.insSP(con,"make","回单",sob.getData().getShippingNoteNumber());
////// SPUtil.insSP(con,"make","回单-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
////// Intent serviceIn=new Intent(con, MakeUpAlService.class);
////// startService(serviceIn);
// }
//
// });
} }
@Override @Override
@@ -847,12 +993,13 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
private void loadInfo() { private void loadInfo() {
//安联 //安联
if (sob.getData().getReportAlct() == 1) { if (sob.getData().getReportAlct() == 1) {
Location l = new Location(); GDLocation l = new GDLocation();
l.setBaiduLongitude(latLng.longitude); l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude); l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress()); l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT()); l.setTime(Timer.getTimerT());
MDPLocationCollectionManager.pickup(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().pickUp(con, sob.getData().getShippingNoteNumber(), l, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
Log.e("上报安联", "装货上传成功"); Log.e("上报安联", "装货上传成功");
@@ -860,6 +1007,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
if (sob.getData().getReport() == 1) { if (sob.getData().getReport() == 1) {
JTTProcess.start(con, sob, ""); JTTProcess.start(con, sob, "");
} }
NewLJUtils.getInstance().startLocationService(ShangChuangImgActivity.this);
//装货状态 //装货状态
hyr.loading(lub); hyr.loading(lub);
//装货照片 //装货照片
@@ -867,14 +1015,39 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(装货):", s + s1); Log.e("上报安联失败(装货):", var1 + var2);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
} }
new MessageUtils().showCenMessage(con, s1); new MessageUtils().showCenMessage(con, var2);
} }
}); });
// MDPLocationCollectionManager.pickup(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
// @Override
// public void onSuccess() {
// Log.e("上报安联", "装货上传成功");
// //交通厅
// if (sob.getData().getReport() == 1) {
// JTTProcess.start(con, sob, "");
// }
// //装货状态
// hyr.loading(lub);
// //装货照片
// up_image_z();
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(装货):", s + s1);
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// new MessageUtils().showCenMessage(con, s1);
// }
// });
} }
} }
@@ -886,13 +1059,14 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
//安联 //安联
if (sob.getData().getReportAlct() == 1) { if (sob.getData().getReportAlct() == 1) {
Location l = new Location(); GDLocation l = new GDLocation();
l.setBaiduLongitude(latLng.longitude); l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude); l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress()); l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT()); l.setTime(Timer.getTimerT());
Log.e("-安联卸货信息-", gson.toJson(l)); Log.e("-安联卸货信息-", gson.toJson(l));
MDPLocationCollectionManager.unload(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
NewLJUtils.getInstance().unload(con, sob.getData().getShippingNoteNumber(), l, new OnGDResultListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
Log.e("上报安联", "卸货上传成功"); Log.e("上报安联", "卸货上传成功");
@@ -900,6 +1074,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
if (sob.getData().getReport() == 1) { if (sob.getData().getReport() == 1) {
JTTProcess.stop(con, sob, ""); JTTProcess.stop(con, sob, "");
} }
//卸货状态-平台 //卸货状态-平台
hyr.dischargeCargo(lub); hyr.dischargeCargo(lub);
//卸货照片-安联 //卸货照片-安联
@@ -907,14 +1082,37 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
} }
@Override @Override
public void onFailure(String s, String s1) { public void onFailure(String var1, String var2) {
Log.e("上报安联失败(卸货):", s + s1); Log.e("上报安联失败(卸货):", var1 + var2);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss(); customDialog.dismiss();
} }
new MessageUtils().showCenMessage(con, s1); new MessageUtils().showCenMessage(con, var2);
} }
}); });
// MDPLocationCollectionManager.unload(con, sob.getData().getShippingNoteNumber(), l, new com.alct.mdp.callback.OnResultListener() {
// @Override
// public void onSuccess() {
// Log.e("上报安联", "卸货上传成功");
// //交通厅
// if (sob.getData().getReport() == 1) {
// JTTProcess.stop(con, sob, "");
// }
// //卸货状态-平台
// hyr.dischargeCargo(lub);
// //卸货照片-安联
// up_image();
// }
//
// @Override
// public void onFailure(String s, String s1) {
// Log.e("上报安联失败(卸货):", s + s1);
// if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
// customDialog.dismiss();
// }
// new MessageUtils().showCenMessage(con, s1);
// }
// });
} }
@@ -0,0 +1,900 @@
package com.arpa.hndahesudintocctmsdriver.ui.home.shangchuan;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.alct.mdp.MDPLocationCollectionManager;
import com.alct.mdp.callback.OnDownloadResultListener;
import com.alct.mdp.callback.OnResultListener;
import com.alct.mdp.model.Goods;
import com.alct.mdp.model.Image;
import com.alct.mdp.model.Location;
import com.arpa.hndahesudintocctmsdriver.BuildConfig;
import com.arpa.hndahesudintocctmsdriver.R;
import com.arpa.hndahesudintocctmsdriver.bean.BaseBean;
import com.arpa.hndahesudintocctmsdriver.bean.CarInfoBean;
import com.arpa.hndahesudintocctmsdriver.bean.StartOrderBean;
import com.arpa.hndahesudintocctmsdriver.bean.UploadBean;
import com.arpa.hndahesudintocctmsdriver.bean.WaybillStatusBean;
import com.arpa.hndahesudintocctmsdriver.event.HomeWaybillEvent;
import com.arpa.hndahesudintocctmsdriver.report.JTTProcess;
import com.arpa.hndahesudintocctmsdriver.request.HuoYuanRequset;
import com.arpa.hndahesudintocctmsdriver.request.OCRRequest;
import com.arpa.hndahesudintocctmsdriver.request.bean.LUInputBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.UploadReceiptInputBean;
import com.arpa.hndahesudintocctmsdriver.ui.MainActivity;
import com.arpa.hndahesudintocctmsdriver.util.BitmapUtil;
import com.arpa.hndahesudintocctmsdriver.util.MessageUtils;
import com.arpa.hndahesudintocctmsdriver.util.NfcUtils;
import com.arpa.hndahesudintocctmsdriver.util.SPUtils;
import com.arpa.hndahesudintocctmsdriver.util.alert.CustomDialog;
import com.arpa.hndahesudintocctmsdriver.util.alert.ToastUtil;
import com.arpa.hndahesudintocctmsdriver.util.cache.CacheGroup;
import com.arpa.hndahesudintocctmsdriver.util.file.FileUtil;
import com.arpa.hndahesudintocctmsdriver.util.file.ImageFileCompressUtil;
import com.arpa.hndahesudintocctmsdriver.util.http.RequsetCodeConstants;
import com.arpa.hndahesudintocctmsdriver.util.img.GetCarImageAlert;
import com.arpa.hndahesudintocctmsdriver.util.location.LocationGDUtil;
import com.arpa.hndahesudintocctmsdriver.util.location.LocationUtil;
import com.arpa.hndahesudintocctmsdriver.util.statusbar.StateStyleUtil;
import com.arpa.hndahesudintocctmsdriver.util.time.Timer;
import com.arpa.hndahesudintocctmsdriver.util.view.BaseAppCompatActivity;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.CoordinateConverter;
import com.bumptech.glide.Glide;
import com.dahe.mylibrary.utils.ActivityUtils;
import com.dahe.mylibrary.utils.ToastUtils;
import com.google.gson.Gson;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.entity.LocalMedia;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.util.SmartGlideImageLoader;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
public class ShangChuangImgNewActivity extends BaseAppCompatActivity {
private TextView submit, name_top, name_body, address, tips, tips_x;
private RelativeLayout getImg;
private ImageView res_img, img_icon, img_delete;
private String[] names = {"装货", "卸货", "回单"};
public static String[] TYPE_NAME = {"zhuanghuo", "xiehuo", "huidan"};
private int index = 0;
//
private Gson gson = new Gson();
//
private LUInputBean lub = new LUInputBean();
private UploadReceiptInputBean urib = new UploadReceiptInputBean();
private LocationGDUtil lgdu;
public LocationUtil lu;
private List<Integer> imgIds = new ArrayList<>();
private UploadBean ub;
private HuoYuanRequset hyr;
//
private GetCarImageAlert gia = new GetCarImageAlert();
private CustomDialog customDialog;
private int id = 0;
private boolean key = true;
private boolean keys = false;
private boolean locationKey = false;
private TextView tv_loaction;
private boolean isFinish = false;
@Override
public void msgMethod(Message m) {
super.msgMethod(m);
switch (m.what) {
case RequsetCodeConstants.SUCCESS:
if (CacheGroup.cacheList.get("upload") != null) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Log.e("upload", CacheGroup.cacheList.get("upload"));
ub = gson.fromJson(CacheGroup.cacheList.remove("upload"), UploadBean.class);
if (ub.getCode() == 200) {
imgIds.add(ub.getData().getId());
// Glide.with(con).load(ub.getData().getUrl()).into(res_img);
Glide.with(con).load(path).into(res_img);
res_img.setVisibility(View.VISIBLE);
img_delete.setVisibility(View.VISIBLE);
img_icon.setVisibility(View.GONE);
key = false;
} else {
Toast.makeText(con, ub.getMsg(), Toast.LENGTH_SHORT).show();
}
CacheGroup.cacheList.remove("upload");
}
if (CacheGroup.cacheList.get("waybillStatus") != null) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Log.e("waybillStatus", CacheGroup.cacheList.get("waybillStatus"));
WaybillStatusBean status = gson.fromJson(CacheGroup.cacheList.get("waybillStatus"), WaybillStatusBean.class);
if (status.getCode() == 200) {
if (status.getData() != null) {
//执行运单下一步操作
typeRequest();
} else {//订单已取消
new MessageUtils().showSimCenPop(con, "运单异常将无法进行下步操作,请返回首页", "取消", "确定", () -> {
SPUtils.remove(con, "curWaybillId");
EventBus.getDefault().post(new HomeWaybillEvent());
ActivityUtils.finishToActivity(MainActivity.class, false);
});
}
} else {
Toast.makeText(con, status.getMsg(), Toast.LENGTH_SHORT).show();
}
CacheGroup.cacheList.remove("waybillStatus");
}
for (int i = 0; i < TYPE_NAME.length; i++) {
if (CacheGroup.cacheList.get(TYPE_NAME[i]) != null) {
BaseBean bb = gson.fromJson(CacheGroup.cacheList.get(TYPE_NAME[i]), BaseBean.class);
if (bb.getCode() == 200) {
if (index == 2) {
if (!keys) {//装货回单
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
EventBus.getDefault().post(new HomeWaybillEvent());
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
} else if ((0 == index || 1 == index) && isFinish) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
EventBus.getDefault().post(new HomeWaybillEvent());
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, bb.getMsg(), Toast.LENGTH_SHORT).show();
}
CacheGroup.cacheList.remove(TYPE_NAME[i]);
break;
}
}
if (CacheGroup.cacheList.get("carName") != null) {
BaseBean bb = gson.fromJson(CacheGroup.cacheList.get("carName"), BaseBean.class);
if (bb.getCode() == 200) {
}
CacheGroup.cacheList.remove("carName");
}
if (CacheGroup.cacheList.get("carNum") != null) {
Log.e("upload", CacheGroup.cacheList.get("carNum"));
CarInfoBean ub = gson.fromJson(CacheGroup.cacheList.remove("carNum"), CarInfoBean.class);
if (ub.getCode() == 200 && ub.getData().getData().getPrism_keyValueInfo().size() > 0) {
String value = ub.getData().getData().getPrism_keyValueInfo().get(0).getValue();
String forceMatching = ub.getData().getForceMatching();
if ("1".equals(forceMatching)) {//是否强校验车牌号 1:强校验
if (sob.getData().getCarNumber().equals(value)) {
hyr.uploadFile(new File(path));
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
new MessageUtils().showCenMessage(ShangChuangImgNewActivity.this, "车牌号不匹配!", "请重新拍照或联系管理员");
}
} else {
hyr.uploadFile(new File(path));
}
} else {//识别失败后返回code500
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
if (index == 0) {//装卸货车辆需要识别车牌号){
Toast.makeText(con, "装货照片包含车牌号、三分之二车身或者装卸货场景。", Toast.LENGTH_SHORT).show();
} else if (index == 1) {
Toast.makeText(con, "卸货照片包含车牌号、三分之二车身或者装卸货场景。", Toast.LENGTH_SHORT).show();
}
}
CacheGroup.cacheList.remove("carNum");
}
break;
case 14://定位成功
locationKey = true;
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
tv_loaction.setText("定位成功");
tv_loaction.setTextColor(getResources().getColor(R.color.theme_color, null));
latLng = convertGPSToBaidu(new LatLng(lgdu.getLatitude(), lgdu.getLongitude()));
initLocation();
break;
case 16://定位失败
locationKey = false;
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
tv_loaction.setText("定位失败,点击重试");
tv_loaction.setTextColor(getResources().getColor(R.color.loaction_no_color, null));
new MessageUtils().showSimCenPop(con, "缺少定位权限,去开启精确定位权限!", "取消", "确认", () -> {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
});
// Toast.makeText(con, "定位失败,请确认开启定位后重试!", Toast.LENGTH_LONG).show();
//定位结果接收
//finish();
break;
case 15:
break;
case ImageFileCompressUtil.COMPRESS_SUCCESS:
path = (String) m.obj;
Log.e("res:", "选定图片结果");
Log.e("res:", path);
//选定图片结果
// if(index==1 || index==2){
// new OCRRequest().OCRPlateLicense(con,hd,new File(path));
// }
if ((index == 0 || index == 1) && !BuildConfig.isTest) {//装卸货车辆需要识别车牌号,测试环境不校验车牌号
new OCRRequest().OCRCarPlateLicense(con, hd, new File(path));
} else {
hyr.uploadFile(new File(path));
}
break;
default:
break;
}
}
private LatLng latLng;
public LatLng convertGPSToBaidu(LatLng srLatLng) {
CoordinateConverter converter = new CoordinateConverter();
converter.from(CoordinateConverter.CoordType.COMMON);
converter.coord(srLatLng);
return converter.convert();
}
private String wid;
private int h_type;
String sobStr = "";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StateStyleUtil.stateTextColor(this);
setContentView(R.layout.activity_shangchuan);
con = this;
submit = findViewById(R.id.submit);
name_top = findViewById(R.id.name_top);
name_body = findViewById(R.id.name_body);
address = findViewById(R.id.address);
getImg = findViewById(R.id.getImg);
res_img = findViewById(R.id.res_img);
img_icon = findViewById(R.id.img_icon);
img_delete = findViewById(R.id.img_delete);
tv_loaction = findViewById(R.id.tv_loaction);
tips = findViewById(R.id.tips);
tips_x = findViewById(R.id.tips_x);
Bundle ins = getIntent().getExtras();
index = ins.getInt("type");
wid = ins.getString("wid");
h_type = ins.getInt("h_type");
keys = ins.getBoolean("keys");
sobStr = getIntent().getExtras().getString("sob");
//Log.e("---sdwStr--",sdwStr);
sob = new Gson().fromJson(sobStr, StartOrderBean.class);
initView(null);
customDialog = new CustomDialog(con, "正在定位当前位置...");
customDialog.show();
lgdu = new LocationGDUtil(con, hd);
//启动定位
lgdu.onCreate();
// lu = new LocationUtil(con, hd);
// lu.onCreate();
// if (keys) {
// lu = new LocationUtil(con, hd);
// lu.onCreate();
// }
tv_loaction.setOnClickListener(v -> {
if (!locationKey) {
customDialog.show();
lgdu.onCreate();
// lu = new LocationUtil(con, hd);
// lu.onCreate();
}
});
hyr = new HuoYuanRequset(con, hd);
// if (!NfcUtils.hasNfc(con)) {
// Toast.makeText(con,"请先开启nfc",Toast.LENGTH_LONG).show();
// }else{
// initData();
// }
}
public void initData() {
//nfc初始化设置
NfcUtils nfcUtils = new NfcUtils(this);
}
@Override
public void initView(Object obj) {
super.initView(obj);
name_top.setText("上传" + names[index] + "照片");
name_body.setText(names[index] + "照片");
if (index == 1) {
tips.setVisibility(View.VISIBLE);
tips_x.setVisibility(View.VISIBLE);
}
submit.setOnClickListener(v -> {
if (imgIds.size() != 0) {
//判断运单是否已取消
hyr.getWaybillStatus(sob.getData().getWaybillId());
// typeRequest();
} else {
Toast.makeText(con, "请先上传一张图片", Toast.LENGTH_SHORT).show();
}
});
getImg.setOnClickListener(v -> {
if (key) {
Log.e("--imgIds.size()--", imgIds.size() + "");
gia.showPopueWindow(this, index == 2);
} else {
new XPopup.Builder(con)
.asImageViewer(res_img, ub.getData().getUrl(), new SmartGlideImageLoader(R.mipmap.ic_launcher))
.show();
// new XPopup.Builder(con)
// .asImageViewer(res_img, ub.getData().getUrl(), true, -1, -1, 50, false,new CertificatesActivity.ImageLoader())
// .show();
Toast.makeText(con, "查看了照片", Toast.LENGTH_SHORT).show();
}
});
img_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imgIds = new ArrayList<>();
ub = new UploadBean();
res_img.setVisibility(View.GONE);
img_delete.setVisibility(View.GONE);
img_icon.setVisibility(View.VISIBLE);
key = true;
}
});
}
String path;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 12 && resultCode == RESULT_OK) {
if (null == gia.getFile()) {
new ToastUtil(con, Gravity.CENTER, "图片选择失败").show(Toast.LENGTH_SHORT);
return;
}
path = gia.getFile().getPath();
Log.e("图片地址:", path);
gia.dis();
if (customDialog != null && !customDialog.isShowing()) {
customDialog = new CustomDialog(con, "网络请求中...");
customDialog.show();
}
ImageFileCompressUtil.imageFileCompress(con, new File(path), hd);
} else if (requestCode == PictureConfig.CHOOSE_REQUEST && resultCode == RESULT_OK) {
List<LocalMedia> imgs = PictureSelector.obtainMultipleResult(data);
if (imgs != null && imgs.size() > 0) {
LocalMedia image = imgs.get(0);
String paths = image.getAndroidQToPath();
if (TextUtils.isEmpty(paths)) {
paths = image.getPath();
}
path = paths;
Log.e("图片地址:", path);
gia.dis();
if (customDialog != null && !customDialog.isShowing()) {
customDialog = new CustomDialog(con, "网络请求中...");
customDialog.show();
}
ImageFileCompressUtil.imageFileCompress(con, new File(path), hd);
}
}
}
public void initLocation() {
address.setText(lgdu.getAddress());
}
public void typeRequest() {
// for(int i=0;i<imgIds.size();i++){
// Log.e("--imgIds--",imgIds.get(i)+"");
// }
if (customDialog != null && !customDialog.isShowing()) {
customDialog = new CustomDialog(con, "网络请求中...");
customDialog.show();
}
switch (index) {
case 0:
//装货
if (imgIds != null && imgIds.size() > 0) {
lub.setLatitude(lgdu.getLatitude() + "");
lub.setLongitude(lgdu.getLongitude() + "");
lub.setLocationAddress(lgdu.getAddress());
lub.setImageId(imgIds);
lub.setWaybillId(wid);
Log.e("--装货信息", gson.toJson(lub));
if (locationKey) {//高德定位
if (keys) {
MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
@Override
public void onSuccess(Object o) {
String string = o.toString();
if (string.equals("PICKUPED")) {//安联装货,单平台未装货
isFinish = true;
//平台确认装货
hyr.loading(lub);
} else {
nfc();
loadInfo();
}
}
@Override
public void onFailure(String s, String s1) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, s1);
}
});
// nfc();
// loadInfo();
// up_traffic_start();
// up_image_z();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "定位异常,请重新定位", Toast.LENGTH_SHORT).show();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "图片上传异常,请重新上传", Toast.LENGTH_SHORT).show();
}
break;
case 1:
if (imgIds != null && imgIds.size() > 0) {
//卸货
lub.setLatitude(lgdu.getLatitude() + "");
lub.setLongitude(lgdu.getLongitude() + "");
lub.setLocationAddress(lgdu.getAddress());
lub.setImageId(imgIds);
lub.setWaybillId(wid);
Log.e("--卸货信息", gson.toJson(lub));
if (locationKey) {
if (keys) {
MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
@Override
public void onSuccess(Object o) {
if (o.toString().equals("UNLOADED")) {//安联装货,单平台未装货
//卸货状态-平台
isFinish = true;
hyr.dischargeCargo(lub);
} else {
nfc();
uploadInfo();
}
}
@Override
public void onFailure(String s, String s1) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, s1);
}
});
// nfc();
// uploadInfo();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "定位异常,请重新定位", Toast.LENGTH_SHORT).show();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "图片上传异常,请重新上传", Toast.LENGTH_SHORT).show();
}
break;
case 2:
if (imgIds != null && imgIds.size() > 0) {//卸货回单
//上传回单
urib.setLatitude(lgdu.getLatitude() + "");
urib.setLongitude(lgdu.getLongitude() + "");
urib.setLocationAddress(lgdu.getAddress());
//装卸货类型
urib.setType(h_type + 1);
//回单id 数组
urib.setReceiptId(imgIds);
//子运运单ID
urib.setWaybillId(wid);
Log.e("--回单信息", gson.toJson(urib));
if (locationKey) {
if (index == 2 && keys) {
up_trafficSign();
up_trafficReceipt();
receipt_image();
}
hyr.receipt(urib);
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "定位异常,请重新定位", Toast.LENGTH_SHORT).show();
}
} else {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
Toast.makeText(con, "图片上传异常,请重新上传", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
private StartOrderBean sob;
public void nfc() {
// if(sob.getData().getNfcId().equals(nfcStr)){
// Toast.makeText(con,"nfcId匹配失败",Toast.LENGTH_LONG).show();
// }
if ("".equals(sob.getData().getNfcId()) || sob.getData().getNfcId() == null) {
return;
}
MDPLocationCollectionManager.checkNfc(con, sob.getData().getShippingNoteNumber(),
sob.getData().getNfcId(), new OnResultListener() {
@Override
public void onSuccess() {
Toast.makeText(con, "nfcId匹配成功", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(String s, String s1) {
Log.e("不匹配", "" + s + s1);
}
});
}
//上传安联-签收
public void up_trafficSign() {
//安联
Location l = new Location();
l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT());
List<Goods> gs = new ArrayList<>();
for (StartOrderBean.DataDTO.WayChildrenDTO wayChild : sob.getData().getWayChildren()) {
if (wid.equals(wayChild.getId() + "")) {
for (StartOrderBean.DataDTO.WayChildrenDTO.GoodsDTO good : wayChild.getGoods()) {
Goods g = new Goods();
g.setGoodsName(good.getGoodName());
g.setUnit(good.getGoodUnit());
g.setItemNo(good.getId());
//实收
g.setQuantity(1);
//应收
g.setReceivedQuantity(1);
//破损
g.setDamageQuantity(1);
//丢失
g.setQuantity(1);
}
}
}
MDPLocationCollectionManager.sign(con, sob.getData().getShippingNoteNumber(), l, gs, new OnResultListener() {
@Override
public void onSuccess() {
Log.e("上报安联", "签收成功");
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(签收):", s + s1);
}
});
}
//上传安联-回单
public void up_trafficReceipt() {
//安联
Location l = new Location();
l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT());
MDPLocationCollectionManager.pod(con, sob.getData().getShippingNoteNumber(), l, new OnResultListener() {
@Override
public void onSuccess() {
Log.e("上报安联", "回单上传成功");
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(回单):", s + s1);
}
});
}
public void up_image_z() {
///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg
File file = new File(path);
Image image = new Image();
String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadPickupImage(con, sob.getData().getShippingNoteNumber(), image, new OnResultListener() {
@Override
public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
EventBus.getDefault().post(new HomeWaybillEvent());
Log.e("上报安联", "装货照片上传成功");
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(装货照片):", s + s1);
// SPUtil.insSP(con,"make","装货",sob.getData().getShippingNoteNumber());
// SPUtil.insSP(con,"make","装货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
// Intent serviceIn=new Intent(con, MakeUpAlService.class);
// startService(serviceIn);
}
});
}
public void up_image() {
File file = new File(path);
Image image = new Image();
String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadUnloadImage(con, sob.getData().getShippingNoteNumber(), image, new OnResultListener() {
@Override
public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
EventBus.getDefault().post(new HomeWaybillEvent());
Log.e("上报安联", "卸货照片上传成功");
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(卸货照片):", s + s1);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
// SPUtil.insSP(con,"make","卸货",sob.getData().getShippingNoteNumber());
// SPUtil.insSP(con,"make","卸货-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
// Intent serviceIn=new Intent(con, MakeUpAlService.class);
// startService(serviceIn);
}
});
}
public void receipt_image() {
///storage/emulated/0/Android/data/com.oneclouds.wangluohuoyun/files/Pictures/163124593063154.jpg
File file = new File(path);
Image image = new Image();
String base = BitmapUtil.imageToBase64(path);
image.setFileData("data:image/" + FileUtil.lastName(file) + ";base64," + base);
image.setFileExt(FileUtil.lastName(file));
image.setFileName(FileUtil.fileName(file));
image.setImageTakenDate(Timer.getTimerT());
image.setBaiduLongitude(latLng.longitude);
image.setBaiduLatitude(latLng.latitude);
image.setLocation(lgdu.getAddress());
MDPLocationCollectionManager.uploadPODImage(con, sob.getData().getShippingNoteNumber(), image, new OnResultListener() {
@Override
public void onSuccess() {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
SPUtils.remove(con, "curWaybillId");
EventBus.getDefault().post(new HomeWaybillEvent());
Log.e("上报安联", "回单照片上传成功");
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(回单照片):", s + s1);
// SPUtil.insSP(con,"make","回单",sob.getData().getShippingNoteNumber());
//// SPUtil.insSP(con,"make","回单-"+sob.getData().getShippingNoteNumber(),gson.toJson(image));
//// Intent serviceIn=new Intent(con, MakeUpAlService.class);
//// startService(serviceIn);
}
});
}
@Override
protected void onResume() {
super.onResume();
//开启前台调度系统
//NfcUtils.mNfcAdapter.enableForegroundDispatch(this, NfcUtils.mPendingIntent, NfcUtils.mIntentFilter, NfcUtils.mTechList);
}
@Override
protected void onPause() {
super.onPause();
//关闭前台调度系统
//NfcUtils.mNfcAdapter.disableForegroundDispatch(this);
}
String nfcStr = "";
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//当该Activity接收到NFC标签时,运行该方法
//调用工具方法,读取NFC数据
try {
nfcStr = NfcUtils.readNFCId(intent);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Log.e("nfc", nfcStr);
}
/**
* 上传安联和交通厅,平台-装货
*/
private void loadInfo() {
//安联
if (sob.getData().getReportAlct() == 1) {
Location l = new Location();
l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT());
MDPLocationCollectionManager.pickup(con, sob.getData().getShippingNoteNumber(), l, new OnResultListener() {
@Override
public void onSuccess() {
Log.e("上报安联", "装货上传成功");
//交通厅
if (sob.getData().getReport() == 1) {
JTTProcess.start(con, sob, "");
}
//装货状态
hyr.loading(lub);
//装货照片
up_image_z();
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(装货):", s + s1);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
new MessageUtils().showCenMessage(con, s1);
}
});
}
}
/**
* 上传安联和交通厅,平台-卸货
*/
private void uploadInfo() {
//安联
if (sob.getData().getReportAlct() == 1) {
Location l = new Location();
l.setBaiduLongitude(latLng.longitude);
l.setBaiduLatitude(latLng.latitude);
l.setLocation(lgdu.getAddress());
l.setTime(Timer.getTimerT());
Log.e("-安联卸货信息-", gson.toJson(l));
MDPLocationCollectionManager.unload(con, sob.getData().getShippingNoteNumber(), l, new OnResultListener() {
@Override
public void onSuccess() {
Log.e("上报安联", "卸货上传成功");
//交通厅
if (sob.getData().getReport() == 1) {
JTTProcess.stop(con, sob, "");
}
//卸货状态-平台
hyr.dischargeCargo(lub);
//卸货照片-安联
up_image();
}
@Override
public void onFailure(String s, String s1) {
Log.e("上报安联失败(卸货):", s + s1);
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
new MessageUtils().showCenMessage(con, s1);
}
});
}
}
}
@@ -58,7 +58,7 @@ public class WebPDFActivity extends BaseActivity {
protected void onPostExecute(Void aVoid) { protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid); super.onPostExecute(aVoid);
pdf_view.fromStream(input[0]) pdf_view.fromStream(input[0])
.pages(0,1) // all pages are displayed by default // .pages(0,1,2,3,4,5,6,7) // all pages are displayed by default
.enableAnnotationRendering(true) .enableAnnotationRendering(true)
.load(); .load();
} }
@@ -32,6 +32,7 @@ import com.arpa.hndahesudintocctmsdriver.request.net.BaseObserver;
import com.arpa.hndahesudintocctmsdriver.request.net.DataManager; import com.arpa.hndahesudintocctmsdriver.request.net.DataManager;
import com.arpa.hndahesudintocctmsdriver.request.net.RxHttpCallBack; import com.arpa.hndahesudintocctmsdriver.request.net.RxHttpCallBack;
import com.arpa.hndahesudintocctmsdriver.ui.web.WebOnlyOneActivity; import com.arpa.hndahesudintocctmsdriver.ui.web.WebOnlyOneActivity;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.arpa.hndahesudintocctmsdriver.util.alert.CustomDialog; import com.arpa.hndahesudintocctmsdriver.util.alert.CustomDialog;
import com.arpa.hndahesudintocctmsdriver.weight.OnLimitClickHelper; import com.arpa.hndahesudintocctmsdriver.weight.OnLimitClickHelper;
import com.dahe.mylibrary.net.CommonResponseBean; import com.dahe.mylibrary.net.CommonResponseBean;
@@ -108,11 +109,13 @@ public class LoginActivity extends BaseActivity {
Log.e("--登录信息--", new Gson().toJson(loginBean)); Log.e("--登录信息--", new Gson().toJson(loginBean));
AppInfoBean appInfoBean = new AppInfoBean(); AppInfoBean appInfoBean = new AppInfoBean();
if (loginBean.getCode() == 200) { if (loginBean.getCode() == 200) {
//获取新路交token
NewLJUtils.getInstance().getToken(con);
SPUtil.insSP(con, USER, USER_TOKEN, loginBean.getData().getToken()); SPUtil.insSP(con, USER, USER_TOKEN, loginBean.getData().getToken());
SPUtil.insSP(con, USER, USER_UNAME, loginBean.getData().getUname()); SPUtil.insSP(con, USER, USER_UNAME, loginBean.getData().getUname());
SPUtil.insSP(con, USER, USER_RNAME, loginBean.getData().getRname()); SPUtil.insSP(con, USER, USER_RNAME, loginBean.getData().getRname());
SPUtil.insSP(con, USER, USER_ID, loginBean.getData().getId() + ""); SPUtil.insSP(con, USER, USER_ID, loginBean.getData().getId() + "");
JPushInterface.setAlias(con, 0, loginBean.getData().getUname()); // JPushInterface.setAlias(con, 0, loginBean.getData().getUname());
appInfoBean.setStatus("0"); appInfoBean.setStatus("0");
appInfoBean.setUserPhone(String.valueOf(input_phone.getText())); appInfoBean.setUserPhone(String.valueOf(input_phone.getText()));
ur.postAppInfo(appInfoBean, "post"); ur.postAppInfo(appInfoBean, "post");
@@ -346,8 +346,8 @@ public class WelcomeActivity extends BaseAppCompatActivity {
} }
//在使用SDK各组件之前初始化context信息,传入ApplicationContext //在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 路由初始化 // 路由初始化
JVerificationInterface.setDebugMode(true); // JVerificationInterface.setDebugMode(true);
JVerificationInterface.init(con, 5000, (code, msg) -> Log.d("tag", "code = " + code + " msg = " + msg)); // JVerificationInterface.init(con, 5000, (code, msg) -> Log.d("tag", "code = " + code + " msg = " + msg));
//友盟 //友盟
//设置非debug版本开启 //设置非debug版本开启
if (!isDebugVersion(con)) { if (!isDebugVersion(con)) {
@@ -16,6 +16,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.arpa.hndahesudintocctmsdriver.bean.UpAppBean; import com.arpa.hndahesudintocctmsdriver.bean.UpAppBean;
import com.arpa.hndahesudintocctmsdriver.event.PersonEvent; import com.arpa.hndahesudintocctmsdriver.event.PersonEvent;
@@ -26,9 +27,11 @@ import com.arpa.hndahesudintocctmsdriver.parts.StartOrderParts;
import com.arpa.hndahesudintocctmsdriver.parts.UserParts; import com.arpa.hndahesudintocctmsdriver.parts.UserParts;
import com.arpa.hndahesudintocctmsdriver.ui.alert.UpAppAlert; import com.arpa.hndahesudintocctmsdriver.ui.alert.UpAppAlert;
import com.arpa.hndahesudintocctmsdriver.ui.business.BusinessActivity; import com.arpa.hndahesudintocctmsdriver.ui.business.BusinessActivity;
import com.arpa.hndahesudintocctmsdriver.util.NewLJUtils;
import com.arpa.hndahesudintocctmsdriver.util.PicturlUtil; import com.arpa.hndahesudintocctmsdriver.util.PicturlUtil;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.dahe.mylibrary.utils.ImageLoader; import com.dahe.mylibrary.utils.ImageLoader;
import com.dahe.mylibrary.utils.ToastUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.lxj.xpopup.XPopup; import com.lxj.xpopup.XPopup;
@@ -51,6 +54,7 @@ import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -344,11 +348,19 @@ public class MyFragment extends BaseFragment {
ur.vehicleList("1"); ur.vehicleList("1");
} }
@Subscribe @Subscribe(threadMode = ThreadMode.MAIN)
public void personResult(PersonEvent home) { public void personResult(PersonEvent home) {
Log.e("-res-", home.getMessage()); Log.e("-res-", home.getMessage());
if (ur != null) { if (ur != null) {
ur.User(); ur.User();
} }
} }
@Override
public void onStart() {
super.onStart();
if (ur != null) {
ur.User();
}
}
} }
@@ -74,9 +74,9 @@ public class SetupActivity extends BaseActivity {
ConfigBean cb= ConfigParts.getConfigParts(con); ConfigBean cb= ConfigParts.getConfigParts(con);
if(cb!=null){ if(cb!=null){
// url1=cb.getData().getUserUrl(); // url1=cb.getData().getUserUrl();
url1="http://agreement.dahehuoyun.com/rule/serviceAgreement/dist/index.html#/"; url1="https://agreement.dahehuoyun.com/rule/serviceAgreement/dist/index.html#/";
// url2=cb.getData().getPrivateUrl(); // url2=cb.getData().getPrivateUrl();
url2="http://agreement.dahehuoyun.com/currency/#/"; url2="https://agreement.dahehuoyun.com/currency/#/";
kefu=cb.getData().getServiceMobile(); kefu=cb.getData().getServiceMobile();
url3=cb.getData().getSecurityUrl(); url3=cb.getData().getSecurityUrl();
} }
@@ -0,0 +1,759 @@
package com.arpa.hndahesudintocctmsdriver.util;
import static com.dahe.mylibrary.utils.BaseSPUtils.NEW_LJ_TOKEN;
import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.arpa.hndahesudintocctmsdriver.App;
import com.arpa.hndahesudintocctmsdriver.bean.DriverAuthDataBean;
import com.arpa.hndahesudintocctmsdriver.bean.GDImage;
import com.arpa.hndahesudintocctmsdriver.bean.GDLocation;
import com.arpa.hndahesudintocctmsdriver.bean.IsAuthCardBean;
import com.arpa.hndahesudintocctmsdriver.constant.NewLJConstant;
import com.arpa.hndahesudintocctmsdriver.parts.AuthParts;
import com.arpa.hndahesudintocctmsdriver.request.AuthRequest;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.InvoiceBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.InvoicesBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.LjTokenBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.PickupBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.ShipmentStatusBean;
import com.arpa.hndahesudintocctmsdriver.request.bean.newlj.UpimgBean;
import com.arpa.hndahesudintocctmsdriver.request.net.BaseObserver;
import com.arpa.hndahesudintocctmsdriver.request.net.DataManager;
import com.arpa.hndahesudintocctmsdriver.request.net.RxHttpCallBack;
import com.arpa.hndahesudintocctmsdriver.ui.auth.CertificatesActivity;
import com.arpa.hndahesudintocctmsdriver.util.cache.CacheGroup;
import com.arpa.hndahesudintocctmsdriver.util.http.RequestUtil;
import com.arpa.hndahesudintocctmsdriver.util.http.RequsetCodeConstants;
import com.dahe.mylibrary.bean.DriverBean;
import com.dahe.mylibrary.callback.OnGDDownloadResultListener;
import com.dahe.mylibrary.callback.OnGDResultListener;
import com.dahe.mylibrary.net.CommonResponseBean;
import com.dahe.mylibrary.utils.ToastUtils;
import com.express.mdp.Api;
import com.express.mdp.Callback;
import com.google.gson.Gson;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.schedulers.Schedulers;
/**
* @ClassName NewLJUtils
* @Author john
* @Date 2024/11/25 09:53
* @Description TODO
*/
public class NewLJUtils {
private static class SingletonHolder {
private static final NewLJUtils INSTANCE = new NewLJUtils();
}
private NewLJUtils() {
}
public static final NewLJUtils getInstance() {
return SingletonHolder.INSTANCE;
}
public void getToken(Context ctx) {
LjTokenBean ljTokenBean = new LjTokenBean();
ljTokenBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
ljTokenBean.setEnterpriseIdentity(NewLJConstant.ENTER_PRISE_IDENTITY);
ljTokenBean.setEnterpriseKey(NewLJConstant.ENTER_PRISE_KEY);
DataManager.getInstance().getToken(ljTokenBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
SPUtils.put(ctx, NEW_LJ_TOKEN, t.getToken());
}
}));
}
/**
* 刷新token
* @param ctx
*/
public void refreshToken(Context ctx){
String token = SPUtils.get(ctx, NEW_LJ_TOKEN, "").toString();
DataManager.getInstance().refreshToken(token)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean<CommonResponseBean> t) {
super.onSuccess(t);
SPUtils.put(ctx, NEW_LJ_TOKEN, t.getToken());
}
}));
}
public void getToken(Context ctx, OnGDResultListener listener) {
LjTokenBean ljTokenBean = new LjTokenBean();
ljTokenBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
ljTokenBean.setEnterpriseIdentity(NewLJConstant.ENTER_PRISE_IDENTITY);
ljTokenBean.setEnterpriseKey(NewLJConstant.ENTER_PRISE_KEY);
DataManager.getInstance().getToken(ljTokenBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
SPUtils.put(ctx, NEW_LJ_TOKEN, t.getToken());
if (listener != null)
listener.onSuccess();
}
}));
}
/**
* 运单提货
*
* @param ctx
* @param shipmentCode
* @param location
*/
public void pickUp(Context ctx, String shipmentCode, GDLocation location, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (Double.isNaN(location.getBaiduLatitude()) || Double.isNaN(location.getBaiduLongitude())) {
ToastUtils.showToast(ctx, "经纬度不能为空");
return;
}
PickupBean pickupBean = new PickupBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setLocation(location);
DataManager.getInstance().pickup(pickupBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单卸货
*
* @param ctx
* @param shipmentCode
* @param location
*/
public void unload(Context ctx, String shipmentCode, GDLocation location, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (Double.isNaN(location.getBaiduLatitude()) || Double.isNaN(location.getBaiduLongitude())) {
ToastUtils.showToast(ctx, "经纬度不能为空");
return;
}
PickupBean pickupBean = new PickupBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setLocation(location);
DataManager.getInstance().unload(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单签收
*
* @param ctx
* @param shipmentCode
* @param location
*/
public void sign(Context ctx, String shipmentCode, GDLocation location, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (Double.isNaN(location.getBaiduLatitude()) || Double.isNaN(location.getBaiduLongitude())) {
ToastUtils.showToast(ctx, "经纬度不能为空");
return;
}
PickupBean pickupBean = new PickupBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setLocation(location);
DataManager.getInstance().sign(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单回单
*
* @param ctx
* @param shipmentCode
* @param location
*/
public void pod(Context ctx, String shipmentCode, GDLocation location, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (Double.isNaN(location.getBaiduLatitude()) || Double.isNaN(location.getBaiduLongitude())) {
ToastUtils.showToast(ctx, "经纬度不能为空");
return;
}
PickupBean pickupBean = new PickupBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setLocation(location);
DataManager.getInstance().pod(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单提货照片上传
*
* @param ctx
* @param shipmentCode
* @param imageDTO
*/
public void uploadPickupImage(Context ctx, String shipmentCode, GDImage imageDTO, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (TextUtils.isEmpty(imageDTO.getFileName())) {
ToastUtils.showToast(ctx, "照片不能为空");
return;
}
UpimgBean pickupBean = new UpimgBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setImage(imageDTO);
DataManager.getInstance().uploadPickupImage(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单卸货照片上传
*
* @param ctx
* @param shipmentCode
* @param imageDTO
*/
public void uploadUnloadImage(Context ctx, String shipmentCode, GDImage imageDTO, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (TextUtils.isEmpty(imageDTO.getFileName())) {
ToastUtils.showToast(ctx, "照片不能为空");
return;
}
UpimgBean pickupBean = new UpimgBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setImage(imageDTO);
DataManager.getInstance().uploadUnloadImage(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 运单回单照片上传
*
* @param ctx
* @param shipmentCode
* @param imageDTO
*/
public void uploadPODImage(Context ctx, String shipmentCode, GDImage imageDTO, OnGDResultListener listener) {
if (TextUtils.isEmpty(shipmentCode)) {
ToastUtils.showToast(ctx, "运单号不能为空");
return;
}
if (TextUtils.isEmpty(imageDTO.getFileName())) {
ToastUtils.showToast(ctx, "照片不能为空");
return;
}
UpimgBean pickupBean = new UpimgBean();
pickupBean.setShipmentCode(shipmentCode);
pickupBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
pickupBean.setImage(imageDTO);
DataManager.getInstance().uploadPODImage(pickupBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
/**
* 获取发票列表
*
* @param ctx
* @param listener
*/
public void getInvoices(Context ctx, OnGDResultListener listener) {
DriverAuthDataBean auth = AuthParts.getAuth(ctx);
if (auth == null) {
return;
}
DataManager.getInstance().getInvoices(NewLJConstant.ENTER_PRISE_CODE, auth.getData().getIdcard(), 1, 100)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean<InvoicesBean>>() {
@Override
public void onSuccess(CommonResponseBean<CommonResponseBean<InvoicesBean>> t) {
super.onSuccess(t);
if (t.getData().getData().getDriverInvoices().size() > 0) {
confirmInvoice(ctx, new OnGDResultListener() {
@Override
public void onSuccess() {
}
@Override
public void onFailure(String var1, String var2) {
Log.e("NewLJUtils", var1 + var2);
}
});
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean<InvoicesBean>> t) {
super.onCodeError(mContext, t);
// Log.e("NewLJUtils", t.getMsg().toString());
}
}));
}
/**
* 同意发票申请
*
* @param ctx
*/
public void confirmInvoice(Context ctx, OnGDResultListener listener) {
DriverAuthDataBean auth = AuthParts.getAuth(ctx);
if (auth == null) {
return;
}
searchDriver(ctx, auth.getData().getIdcard(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
InvoiceBean invoiceBean = new InvoiceBean();
invoiceBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
invoiceBean.setDriverInvoiceCode(var1);
invoiceBean.setDriverIdentification(auth.getData().getIdcard());
DataManager.getInstance().confirmInvoice(invoiceBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess();
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
@Override
public void onFailure(String var1, String var2) {
}
});
//查询身份证信息
// new AuthRequest().getCard(ctx, new Handler(msg -> {
// switch (msg.what) {
// case RequsetCodeConstants.ERROR:
// Toast.makeText(ctx, RequsetCodeConstants.FEEDBACK_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.UNKONWN:
// Toast.makeText(ctx, RequsetCodeConstants.UNKONWN_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.SERVER_ERROR:
// Toast.makeText(ctx, RequsetCodeConstants.SERVER_ERROR_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.GATEWAY_ERROR:
// Toast.makeText(ctx, RequsetCodeConstants.GATEWAY_ERROR_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.SUCCESS:
// IsAuthCardBean iacb = new Gson().fromJson(CacheGroup.cacheList.get(CertificatesActivity.ISAUTH), IsAuthCardBean.class);
// if (iacb != null || iacb.getData() != null || !TextUtils.isEmpty(iacb.getData().getIdcard())) {
// //根据身份证号查询路交司机信息
// searchDriver(ctx, iacb.getData().getIdcard(), new OnGDDownloadResultListener() {
// @Override
// public void onSuccess(String var1) {
// InvoiceBean invoiceBean = new InvoiceBean();
// invoiceBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
// invoiceBean.setDriverInvoiceCode(var1);
// invoiceBean.setDriverIdentification(iacb.getData().getIdcard());
// DataManager.getInstance().confirmInvoice(invoiceBean)
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
// @Override
// public void onSuccess(CommonResponseBean t) {
// super.onSuccess(t);
// if (listener != null) {
// listener.onSuccess();
// }
// }
//
// @Override
// public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
// super.onCodeError(mContext, t);
// if (listener != null) {
// listener.onFailure(t.getCode() + "", t.getMessage());
// }
// }
// }));
// }
//
// @Override
// public void onFailure(String var1, String var2) {
//
// }
// });
// } else {
// Toast.makeText(ctx, "缺少身份证信息", Toast.LENGTH_SHORT).show();
// }
// break;
// }
// return false;
// }));
}
/**
* 运单状态查询
*
* @param ctx
* @param shipmentCode
*/
public void getShipmentStatus(Context ctx, String shipmentCode, OnGDDownloadResultListener listener) {
ShipmentStatusBean shipmentStatusBean = new ShipmentStatusBean();
shipmentStatusBean.setShipmentCode(shipmentCode);
shipmentStatusBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
DataManager.getInstance().getShipmentStatus(shipmentStatusBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
if (listener != null) {
listener.onSuccess(t.getStatusCode());
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null) {
listener.onFailure(t.getCode() + "", TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}
}));
}
public void getPODImageNames(Context ctx, String shipmentCode) {
ShipmentStatusBean shipmentStatusBean = new ShipmentStatusBean();
shipmentStatusBean.setShipmentCode(shipmentCode);
shipmentStatusBean.setEnterpriseCode(NewLJConstant.ENTER_PRISE_CODE);
DataManager.getInstance().getPODImageNames(shipmentStatusBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean t) {
super.onSuccess(t);
System.out.println("sadf");
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
System.out.println("sadf");
}
}));
}
/**
* 开启位置上传
*
* @param act
*/
public void startLocationService(AppCompatActivity act) {
DriverAuthDataBean auth = AuthParts.getAuth(act);
if (auth == null) {
return;
}
searchDriver(act, auth.getData().getIdcard(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
try {
//开启定位服务
Api.setBaseUrl("https://kehui56.cn/api", "https://api.kehui56.cn/api");
String result = Api.startLocationService(act, var1, s -> {
Log.e("位置上报", s);
});
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void onFailure(String var1, String var2) {
}
});
//查询身份证信息
// new AuthRequest().getCard(act, new Handler(msg -> {
// switch (msg.what) {
// case RequsetCodeConstants.ERROR:
// Toast.makeText(act, RequsetCodeConstants.FEEDBACK_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.UNKONWN:
// Toast.makeText(act, RequsetCodeConstants.UNKONWN_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.SERVER_ERROR:
// Toast.makeText(act, RequsetCodeConstants.SERVER_ERROR_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.GATEWAY_ERROR:
// Toast.makeText(act, RequsetCodeConstants.GATEWAY_ERROR_TEXT, Toast.LENGTH_SHORT).show();
// break;
// case RequsetCodeConstants.SUCCESS:
// IsAuthCardBean iacb = new Gson().fromJson(CacheGroup.cacheList.get(CertificatesActivity.ISAUTH), IsAuthCardBean.class);
// if (iacb != null || iacb.getData() != null || !TextUtils.isEmpty(iacb.getData().getIdcard())) {
// //根据身份证号查询路交司机信息
// searchDriver(act,iacb.getData().getIdcard(), new OnGDDownloadResultListener() {
// @Override
// public void onSuccess(String var1) {
// try {
// //开启定位服务
// Api.setBaseUrl("https://kehui56.cn/api", "https://api.kehui56.cn/api");
// String result = Api.startLocationService(act, var1, s -> {
// Log.e("位置上报", s);
// });
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
//
// @Override
// public void onFailure(String var1, String var2) {
//
// }
// });
// } else {
// Toast.makeText(act, "缺少身份证信息", Toast.LENGTH_SHORT).show();
// }
// break;
// }
// return false;
// }));
}
/**
* 关闭定位服务
*/
public void stopLocationService() {
Api.stopLocationService();
}
/**
* 查询司机
*/
public void searchDriver(Context ctx, String idCard, OnGDDownloadResultListener listener) {
DataManager.getInstance().searchDriver(idCard)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean<CommonResponseBean> t) {
super.onSuccess(t);
DriverBean driver = t.getDriver();
if (driver != null && !TextUtils.isEmpty(driver.getDriverCode())) {
if (listener != null)
listener.onSuccess(driver.getDriverCode());
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null)
listener.onFailure(t.getCode(), TextUtils.isEmpty(t.getMessage())?"运单操作异常":t.getMessage());
}
}));
}
}
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:id="@+id/rl_title"
android:layout_width="match_parent"
android:layout_height="44dp"
>
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:padding="5dp"
android:layout_marginLeft="10dp"
android:src="@mipmap/btn_back" />
<TextView
android:id="@+id/close"
android:layout_toRightOf="@id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="关闭" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:singleLine="true"
android:ellipsize="end"
android:layout_marginLeft="70dp"
android:layout_marginRight="60dp"
android:gravity="center_vertical"
android:textSize="17sp"
android:textColor="@color/color_333333"
android:text="人脸识别" />
</RelativeLayout>
<com.esign.esignsdk.h5.view.X5WebView
android:id="@+id/webview"
android:layout_below="@id/rl_title"
app:layout_constraintTop_toBottomOf="@id/rl_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<LinearLayout
android:id="@+id/ll_exception"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_white"
android:layout_below="@id/rl_title"
android:orientation="vertical"
android:visibility="gone"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:src="@mipmap/icon_exception"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textSize="16sp"
android:textColor="@color/color_282828"
android:text="@string/exception_tips"
android:gravity="center_horizontal"/>
</LinearLayout>
</RelativeLayout>
@@ -1,23 +0,0 @@
package com.arpa.hndahesudintocctmsdriver;
import android.util.Log;
import org.junit.Test;
import java.math.BigDecimal;
/**
* @author hlh
* @version 1.0.0
* @date 2021/10/12 16:53
* @description:
*/
public class test1 {
@Test
public void te(){
String s = new BigDecimal("100.000").subtract(new BigDecimal("5")).toString();
Log.i("",s);
}
}
+5 -41
View File
@@ -1,45 +1,9 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins {
id 'com.android.application' version '7.2.2' apply false
id 'com.android.library' version '7.2.2' apply false
id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
}
apply from: "compile.gradle" apply from: "compile.gradle"
buildscript {
// ext.kotlin_version = "1.5.0"
ext.kotlin_version = "1.6.10"
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
google()
jcenter() // 这个
mavenCentral()
maven { url 'http://developer.huawei.com/repo/'}
maven { url 'https://repo1.maven.org/maven2/' }
maven {
url 'https://maven.aliyun.com/repository/releases'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.huawei.agconnect:agcp:1.4.1.300'
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
google()
jcenter() // Warning: this repository is going to shut down soon
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
maven { url 'https://www.jitpack.io' }
maven { url 'https://repo1.maven.org/maven2/' }
maven {
url 'https://maven.aliyun.com/repository/releases'
}
}
}
task clean(type: Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
+2 -1
View File
@@ -1,6 +1,7 @@
#Mon Jul 12 10:16:49 CST 2021 #Mon Jul 12 10:16:49 CST 2021
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-bin.zip #distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-bin.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
+1 -1
View File
@@ -35,7 +35,7 @@ android {
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.1' implementation 'androidx.core:core-ktx:1.3.1'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1' implementation 'com.google.android.material:material:1.2.1'
@@ -0,0 +1,49 @@
package com.dahe.mylibrary.bean;
import java.io.Serializable;
/**
* @ClassName DriverBean
* @Author john
* @Date 2024/11/28 12:24
* @Description TODO
*/
public class DriverBean implements Serializable {
private String driverCode;
private String isTaxRegistered;
private String taxRegisterStatus;
private String taxRegisterStatusDescription;
public String getDriverCode() {
return driverCode;
}
public void setDriverCode(String driverCode) {
this.driverCode = driverCode;
}
public String getIsTaxRegistered() {
return isTaxRegistered;
}
public void setIsTaxRegistered(String isTaxRegistered) {
this.isTaxRegistered = isTaxRegistered;
}
public String getTaxRegisterStatus() {
return taxRegisterStatus;
}
public void setTaxRegisterStatus(String taxRegisterStatus) {
this.taxRegisterStatus = taxRegisterStatus;
}
public String getTaxRegisterStatusDescription() {
return taxRegisterStatusDescription;
}
public void setTaxRegisterStatusDescription(String taxRegisterStatusDescription) {
this.taxRegisterStatusDescription = taxRegisterStatusDescription;
}
}
@@ -0,0 +1,13 @@
package com.dahe.mylibrary.callback;
/**
* @ClassName OnGDDownloadResultListener
* @Author john
* @Date 2024/11/25 18:22
* @Description TODO
*/
public interface OnGDDownloadResultListener {
void onSuccess(String var1);
void onFailure(String var1, String var2);
}
@@ -0,0 +1,14 @@
package com.dahe.mylibrary.callback;
/**
* @ClassName OnGDResultListener
* @Author john
* @Date 2024/11/25 17:48
* @Description TODO
*/
public interface OnGDResultListener {
void onSuccess();
void onFailure(String var1, String var2);
}
@@ -1,5 +1,7 @@
package com.dahe.mylibrary.net; package com.dahe.mylibrary.net;
import com.dahe.mylibrary.bean.DriverBean;
import java.io.Serializable; import java.io.Serializable;
/** /**
@@ -8,13 +10,59 @@ import java.io.Serializable;
public class CommonResponseBean<T> implements Serializable { public class CommonResponseBean<T> implements Serializable {
private T data; private T data;
private int code; private String code;
private String info; private String info;
private String msg; private String msg;
private String message;
private String url; private String url;
private String fileName; private String fileName;
private String token;
private String expiryIn;
private String statusCode;
private boolean success; private boolean success;
private DriverBean driver;
public DriverBean getDriver() {
return driver;
}
public void setDriver(DriverBean driver) {
this.driver = driver;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getExpiryIn() {
return expiryIn;
}
public void setExpiryIn(String expiryIn) {
this.expiryIn = expiryIn;
}
public T getData() { public T getData() {
return data; return data;
} }
@@ -23,11 +71,11 @@ public class CommonResponseBean<T> implements Serializable {
this.data = data; this.data = data;
} }
public int getCode() { public String getCode() {
return code; return code;
} }
public void setCode(int code) { public void setCode(String code) {
this.code = code; this.code = code;
} }
@@ -20,6 +20,7 @@ public class BaseSPUtils {
public static final String USER_INFO_KEY = "user_info_key"; public static final String USER_INFO_KEY = "user_info_key";
public static final String NET_SERVICE_TEST = "net_service_test"; public static final String NET_SERVICE_TEST = "net_service_test";
public static final String SEARRH_CACHE = "search_cache"; public static final String SEARRH_CACHE = "search_cache";
public static final String NEW_LJ_TOKEN = "NEW_LJ_TOKEN";
public static final String NAVI_PH_EDIT_CACHE = "navi_ph_edit_cache"; public static final String NAVI_PH_EDIT_CACHE = "navi_ph_edit_cache";
public static final String FIRST_OPEN = "first_open"; public static final String FIRST_OPEN = "first_open";
public static final String KEY_PRIVACY_AGREEMENT = "privacy_agreement"; public static final String KEY_PRIVACY_AGREEMENT = "privacy_agreement";
@@ -0,0 +1,33 @@
package com.dahe.mylibrary.utils;
/**
* @ClassName Gps
* @Author john
* @Date 2024/12/13 17:25
* @Description TODO
*/
public class Gps {
private double wgLon;
private double wgLat;
public Gps(double wgLat,double wgLon) {
this.wgLat = wgLat;
this.wgLon = wgLon;
}
public double getWgLon() {
return wgLon;
}
public void setWgLon(double wgLon) {
this.wgLon = wgLon;
}
public double getWgLat() {
return wgLat;
}
public void setWgLat(double wgLat) {
this.wgLat = wgLat;
}
}
@@ -0,0 +1,539 @@
package com.dahe.mylibrary.utils;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Locale;
/**
* @author ondear
* time : 16/11/13
* desc : 定位相关工具类
*/
public class RxLocationUtils {
public static double pi = 3.1415926535897932384626;
public static double a = 6378245.0;
public static double ee = 0.00669342162296594323;
private static OnLocationChangeListener mListener;
private static MyLocationListener myLocationListener;
private static LocationManager mLocationManager;
/**
* 判断Gps是否可用
*
* @return {@code true}: 是<br>{@code false}: 否
*/
public static boolean isGpsEnabled(Context context) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
/**
* 判断定位是否可用
*
* @return {@code true}: 是<br>{@code false}: 否
*/
public static boolean isLocationEnabled(Context context) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER) || lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
/**
* 打开Gps设置界面
*/
public static void openGpsSettings(Context context) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
/**
* 注册
* <p>使用完记得调用{@link #unregister()}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.INTERNET"/>}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>}</p>
* <p>需添加权限 {@code <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>}</p>
* <p>如果{@code minDistance}为0,则通过{@code minTime}来定时更新;</p>
* <p>{@code minDistance}不为0,则以{@code minDistance}为准;</p>
* <p>两者都为0,则随时刷新。</p>
*
* @param minTime 位置信息更新周期(单位:毫秒)
* @param minDistance 位置变化最小距离:当位置距离变化超过此值时,将更新位置信息(单位:米)
* @param listener 位置刷新的回调接口
* @return {@code true}: 初始化成功<br>{@code false}: 初始化失败
*/
public static boolean register(Context context, long minTime, long minDistance, OnLocationChangeListener listener) {
if (listener == null) return false;
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
return false;
}
mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
mListener = listener;
if (!isLocationEnabled(context)) {
ToastUtils.showToast(context, "无法定位,请打开定位服务");
return false;
}
String provider = mLocationManager.getBestProvider(getCriteria(), true);
Location location = mLocationManager.getLastKnownLocation(provider);
if (location != null) listener.getLastKnownLocation(location);
if (myLocationListener == null) myLocationListener = new MyLocationListener();
mLocationManager.requestLocationUpdates(provider, minTime, minDistance, myLocationListener);
return true;
}
/**
* 注销
*/
public static void unregister() {
if (mLocationManager != null) {
if (myLocationListener != null) {
mLocationManager.removeUpdates(myLocationListener);
myLocationListener = null;
}
mLocationManager = null;
}
}
/**
* 设置定位参数
*
* @return {@link Criteria}
*/
private static Criteria getCriteria() {
Criteria criteria = new Criteria();
//设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//设置是否要求速度
criteria.setSpeedRequired(false);
// 设置是否允许运营商收费
criteria.setCostAllowed(false);
//设置是否需要方位信息
criteria.setBearingRequired(false);
//设置是否需要海拔信息
criteria.setAltitudeRequired(false);
// 设置对电源的需求
criteria.setPowerRequirement(Criteria.POWER_LOW);
return criteria;
}
/**
* 根据经纬度获取地理位置
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return {@link Address}
*/
public static Address getAddress(Context context, double latitude, double longitude) {
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0) return addresses.get(0);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据经纬度获取所在国家
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return 所在国家
*/
public static String getCountryName(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getCountryName();
}
/**
* 根据经纬度获取所在地
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return 所在地
*/
public static String getLocality(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getLocality();
}
/**
* 根据经纬度获取所在街道
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return 所在街道
*/
public static String getStreet(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "unknown" : address.getAddressLine(0);
}
/**
* 根据经纬度获取详细地址
*
* @param context 上下文
* @param latitude 纬度
* @param longitude 经度
* @return 所在街道
*/
public static String getFeature(Context context, double latitude, double longitude) {
Address address = getAddress(context, latitude, longitude);
return address == null ? "未知地点" : address.getFeatureName();
}
//------------------------------------------坐标转换工具start--------------------------------------
/**
* GPS坐标 转换成 角度
* 例如 113.202222 转换成 113°128″
*
* @param location
* @return
*/
public static String gpsToDegree(double location) {
double degree = Math.floor(location);
double minute_temp = (location - degree) * 60;
double minute = Math.floor(minute_temp);
// double second = Math.floor((minute_temp - minute)*60);
String second = new DecimalFormat("#.##").format((minute_temp - minute) * 60);
return (int) degree + "°" + (int) minute + "" + second + "";
}
/**
* 国际 GPS84 坐标系
* 转换成
* [国测局坐标系] 火星坐标系 (GCJ-02)
* <p>
* World Geodetic System ==> Mars Geodetic System
*
* @param lon 经度
* @param lat 纬度
* @return GPS实体类
*/
public static Gps GPS84ToGCJ02(double lat, double lon) {
if (outOfChina(lat, lon)) {
return null;
}
double dLat = transformLat(lon - 105.0, lat - 35.0);
double dLon = transformLon(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 * pi;
double magic = Math.sin(radLat);
magic = 1 - ee * magic * magic;
double sqrtMagic = Math.sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
double mgLat = lat + dLat;
double mgLon = lon + dLon;
return new Gps(mgLat, mgLon);
}
/**
* [国测局坐标系] 火星坐标系 (GCJ-02)
* 转换成
* 国际 GPS84 坐标系
*
* @param lon 火星经度
* @param lat 火星纬度
*/
public static Gps GCJ02ToGPS84(double lat, double lon) {
Gps gps = transform(lat, lon);
double lontitude = lon * 2 - gps.getWgLon();
double latitude = lat * 2 - gps.getWgLat();
return new Gps(latitude, lontitude);
}
/**
* 火星坐标系 (GCJ-02)
* 转换成
* 百度坐标系 (BD-09)
*
* @param gg_lon 经度
* @param gg_lat 纬度
*/
public static Gps GCJ02ToBD09(double gg_lat, double gg_lon) {
double x = gg_lon, y = gg_lat;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
double bd_lon = z * Math.cos(theta) + 0.0065;
double bd_lat = z * Math.sin(theta) + 0.006;
return new Gps(bd_lat, bd_lon);
}
/**
* 国际 GPS84 坐标系
* 转换成
* 百度坐标系 (BD-09)
*
* @param lon 经度
* @param lat 纬度
*/
public static Gps GPS84ToBD09(double lat, double lon) {
Gps gps = GPS84ToGCJ02(lat,lon);
if (gps == null) {
return new Gps(lat,lon);
}
//GCJ-02 转 BD-09
return GCJ02ToBD09(gps.getWgLat(), gps.getWgLon());
}
/**
* 百度坐标系 (BD-09)
* 转换成
* 火星坐标系 (GCJ-02)
*
* @param bd_lon 百度*经度
* @param bd_lat 百度*纬度
* @return GPS实体类
*/
public static Gps BD09ToGCJ02(double bd_lat, double bd_lon) {
double x = bd_lon - 0.0065, y = bd_lat - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
double gg_lon = z * Math.cos(theta);
double gg_lat = z * Math.sin(theta);
return new Gps(gg_lat, gg_lon);
}
/**
* 百度坐标系 (BD-09)
* 转换成
* 国际 GPS84 坐标系
*
* @param bd_lon 百度*经度
* @param bd_lat 百度*纬度
* @return GPS实体类
*/
public static Gps BD09ToGPS84(double bd_lat, double bd_lon) {
Gps gcj02 = BD09ToGCJ02(bd_lat, bd_lon);
Gps map84 = GCJ02ToGPS84(gcj02.getWgLat(),
gcj02.getWgLon());
return map84;
}
/**
* 不在中国范围内
*
* @param lon 经度
* @param lat 纬度
* @return boolean值
*/
public static boolean outOfChina(double lat, double lon) {
if (lon < 72.004 || lon > 137.8347)
return true;
return lat < 0.8293 || lat > 55.8271;
}
/**
* 转化算法
*
* @param lon
* @param lat
* @return
*/
public static Gps transform(double lat, double lon) {
if (outOfChina(lat, lon)) {
return new Gps(lat, lon);
}
double dLat = transformLat(lon - 105.0, lat - 35.0);
double dLon = transformLon(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 * pi;
double magic = Math.sin(radLat);
magic = 1 - ee * magic * magic;
double sqrtMagic = Math.sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
double mgLat = lat + dLat;
double mgLon = lon + dLon;
return new Gps(mgLat, mgLon);
}
/**
* 纬度转化算法
*
* @param x
* @param y
* @return
*/
public static double transformLat(double x, double y) {
double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y
+ 0.2 * Math.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
return ret;
}
/**
* 经度转化算法
*
* @param x
* @param y
* @return
*/
public static double transformLon(double x, double y) {
double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1
* Math.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0
* pi)) * 2.0 / 3.0;
return ret;
}
public interface OnLocationChangeListener {
/**
* 获取最后一次保留的坐标
*
* @param location 坐标
*/
void getLastKnownLocation(Location location);
/**
* 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
*
* @param location 坐标
*/
void onLocationChanged(Location location);
/**
* provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数
*
* @param provider 提供者
* @param status 状态
* @param extras provider可选包
*/
void onStatusChanged(String provider, int status, Bundle extras);//位置状态发生改变
void onProviderEnabled(String provider);
void onProviderDisabled(String provider);
}
private static class MyLocationListener
implements LocationListener {
/**
* 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
*
* @param location 坐标
*/
@Override
public void onLocationChanged(Location location) {
if (mListener != null) {
mListener.onLocationChanged(location);
}
}
/**
* provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数
*
* @param provider 提供者
* @param status 状态
* @param extras provider可选包
*/
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
if (mListener != null) {
mListener.onStatusChanged(provider, status, extras);
}
switch (status) {
case LocationProvider.AVAILABLE:
Log.d("onStatusChanged", "当前GPS状态为可见状态");
break;
case LocationProvider.OUT_OF_SERVICE:
Log.d("onStatusChanged", "当前GPS状态为服务区外状态");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.d("onStatusChanged", "当前GPS状态为暂停服务状态");
break;
}
}
/**
* provider被enable时触发此函数,比如GPS被打开
*/
@Override
public void onProviderEnabled(String provider) {
if (mListener != null) {
mListener.onProviderEnabled(provider);
}
}
/**
* provider被disable时触发此函数,比如GPS被关闭
*/
@Override
public void onProviderDisabled(String provider) {
if (mListener != null) {
mListener.onProviderDisabled(provider);
}
}
}
//===========================================坐标转换工具end====================================
private static final double EARTH_RADIUS = 6378137.0; //地球半径
/**
* 计算两个经纬度之间的距离
*
* @param longitude
* @param latitude
* @param longitude2
* @param latitude2
* @return 单位米
*/
public static double getDistance(double longitude, double latitude, double longitude2, double latitude2) {
double lat1 = rad(latitude);
double lat2 = rad(latitude2);
double a = lat1 - lat2;
double b = rad(longitude) - rad(longitude2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000; //四舍五入
return s;
}
/**
* 弧度换为角度
* @param d
* @return
*/
private static double rad(double d) {
return d * Math.PI / 180.0;
}
}
+24
View File
@@ -1,3 +1,27 @@
pluginManagement {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url "https://jitpack.io" }
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url "https://jitpack.io" }
google()
mavenCentral()
}
}
rootProject.name = "wangluohuoyun" rootProject.name = "wangluohuoyun"
include ':app' include ':app'
//include ':AliyunVideoCommon' //include ':AliyunVideoCommon'