diff --git a/SCBAXJ/app/.gitignore b/SCBAXJ/app/.gitignore new file mode 100755 index 0000000..796b96d --- /dev/null +++ b/SCBAXJ/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/SCBAXJ/app/build.gradle b/SCBAXJ/app/build.gradle new file mode 100755 index 0000000..00a1ee5 --- /dev/null +++ b/SCBAXJ/app/build.gradle @@ -0,0 +1,100 @@ +apply plugin: 'com.android.application' +apply plugin: 'org.jetbrains.kotlin.android' + +android { + compileSdkVersion 33 + buildToolsVersion "33.0.1" + defaultConfig { + applicationId "com.rehome.scbaxj" + minSdkVersion 26 + targetSdkVersion 33 + versionCode 1 + versionName "1.0.0" + multiDexEnabled true + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + //每个应用拥有不同的authorities,防止相同的在同一个手机上无法同时安装 + resValue "string", "authorities", applicationId + resourceConfigurations += ['zh', 'en', 'hdpi'] + } + buildFeatures { + viewBinding = true + } + /* keypassword:abc123123 alias key0*/ + buildTypes { + release { + lintOptions { + checkReleaseBuilds false + abortOnError false + } + minifyEnabled false + zipAlignEnabled true // 对齐zip + debuggable false // 是否debug + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + java.srcDirs = ['src/main/java'] + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + namespace 'com.rehome.scbaxj' +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.zhy:autolayout:1.4.5' + //网络请求 + implementation 'com.android.volley:volley:1.2.1' + implementation 'com.yolanda.nohttp:nohttp:1.0.5' + implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'org.litepal.android:core:1.5.1' + implementation 'com.yanzhenjie:permission:2.0.3' + implementation 'com.github.huangyanbin:SmartTable:2.2.0' + implementation 'com.google.android.material:material:1.7.0' + implementation 'androidx.multidex:multidex:2.0.1' + implementation 'androidx.recyclerview:recyclerview:1.2.1' + implementation 'de.hdodenhof:circleimageview:3.1.0' + //第三方库图片选择器 + // PictureSelector basic (Necessary) + implementation 'io.github.lucksiege:pictureselector:v3.10.7' + // image compress library (Not necessary) + implementation 'io.github.lucksiege:compress:v3.10.7' + // uCrop library (Not necessary) + implementation 'io.github.lucksiege:ucrop:v3.10.7' + // simple camerax library (Not necessary) + implementation 'io.github.lucksiege:camerax:v3.10.7' + //implementation 'com.azhon:appupdateX:2.9.0' + implementation 'io.github.azhon:appupdate:4.2.6' + implementation 'com.tencent.bugly:crashreport:3.2.1' + implementation 'com.github.xuexiangjys:XUI:1.1.5' + implementation files('libs/rinsunMT.jar') + implementation 'org.greenrobot:eventbus:3.0.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' + implementation 'cn.hutool:hutool-all:5.8.5' + + //mqtt + implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4' + implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' + implementation 'org.bouncycastle:bcpkix-jdk15on:1.67' + implementation 'commons-codec:commons-codec:1.15' + //websocket + //implementation("com.squareup.okhttp3:okhttp") + implementation("com.squareup.okhttp3:okhttp:5.0.0-alpha.2") + //java websocket + implementation "org.java-websocket:Java-WebSocket:1.4.0" + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' + configurations { + all*.exclude group: 'com.google.code.gson' + } +} diff --git a/SCBAXJ/app/libs/AudioEngineSDK.jar b/SCBAXJ/app/libs/AudioEngineSDK.jar new file mode 100644 index 0000000..f5d453f Binary files /dev/null and b/SCBAXJ/app/libs/AudioEngineSDK.jar differ diff --git a/SCBAXJ/app/libs/HCNetSDK.jar b/SCBAXJ/app/libs/HCNetSDK.jar new file mode 100644 index 0000000..88a5fec Binary files /dev/null and b/SCBAXJ/app/libs/HCNetSDK.jar differ diff --git a/SCBAXJ/app/libs/HCNetSDK_E.jar b/SCBAXJ/app/libs/HCNetSDK_E.jar new file mode 100644 index 0000000..889e608 Binary files /dev/null and b/SCBAXJ/app/libs/HCNetSDK_E.jar differ diff --git a/SCBAXJ/app/libs/MiPush_SDK_Client_3_2_2.jar b/SCBAXJ/app/libs/MiPush_SDK_Client_3_2_2.jar new file mode 100755 index 0000000..bd8562e Binary files /dev/null and b/SCBAXJ/app/libs/MiPush_SDK_Client_3_2_2.jar differ diff --git a/SCBAXJ/app/libs/PlayerSDK_hcnetsdk.jar b/SCBAXJ/app/libs/PlayerSDK_hcnetsdk.jar new file mode 100644 index 0000000..97c6504 Binary files /dev/null and b/SCBAXJ/app/libs/PlayerSDK_hcnetsdk.jar differ diff --git a/SCBAXJ/app/libs/SangforSDK.jar b/SCBAXJ/app/libs/SangforSDK.jar new file mode 100755 index 0000000..56abdc0 Binary files /dev/null and b/SCBAXJ/app/libs/SangforSDK.jar differ diff --git a/SCBAXJ/app/libs/ZSDK_API.jar b/SCBAXJ/app/libs/ZSDK_API.jar new file mode 100755 index 0000000..bd0a7e6 Binary files /dev/null and b/SCBAXJ/app/libs/ZSDK_API.jar differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libAudioEngine.so b/SCBAXJ/app/libs/arm64-v8a/libAudioEngine.so new file mode 100644 index 0000000..e20d235 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libAudioEngine.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCAlarm.so b/SCBAXJ/app/libs/arm64-v8a/libHCAlarm.so new file mode 100644 index 0000000..080cc48 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCAlarm.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCCore.so b/SCBAXJ/app/libs/arm64-v8a/libHCCore.so new file mode 100644 index 0000000..ff6b081 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCCore.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCCoreDevCfg.so b/SCBAXJ/app/libs/arm64-v8a/libHCCoreDevCfg.so new file mode 100644 index 0000000..d199924 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCCoreDevCfg.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCDisplay.so b/SCBAXJ/app/libs/arm64-v8a/libHCDisplay.so new file mode 100644 index 0000000..15b11db Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCDisplay.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCGeneralCfgMgr.so b/SCBAXJ/app/libs/arm64-v8a/libHCGeneralCfgMgr.so new file mode 100644 index 0000000..f5b5f3a Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCGeneralCfgMgr.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCIndustry.so b/SCBAXJ/app/libs/arm64-v8a/libHCIndustry.so new file mode 100644 index 0000000..3d012c7 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCIndustry.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCPlayBack.so b/SCBAXJ/app/libs/arm64-v8a/libHCPlayBack.so new file mode 100644 index 0000000..de2ce92 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCPlayBack.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCPreview.so b/SCBAXJ/app/libs/arm64-v8a/libHCPreview.so new file mode 100644 index 0000000..ea2d0b9 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCPreview.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libHCVoiceTalk.so b/SCBAXJ/app/libs/arm64-v8a/libHCVoiceTalk.so new file mode 100644 index 0000000..93d8260 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libHCVoiceTalk.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libNPQos.so b/SCBAXJ/app/libs/arm64-v8a/libNPQos.so new file mode 100644 index 0000000..901a077 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libNPQos.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl.so b/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl.so new file mode 100644 index 0000000..3423347 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl_L.so b/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl_L.so new file mode 100644 index 0000000..fc952f2 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libPlayCtrl_L.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libSystemTransform.so b/SCBAXJ/app/libs/arm64-v8a/libSystemTransform.so new file mode 100644 index 0000000..9c4dd7b Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libSystemTransform.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libcryptoPrivate.so b/SCBAXJ/app/libs/arm64-v8a/libcryptoPrivate.so new file mode 100644 index 0000000..8dc9c11 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libcryptoPrivate.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libhcnetsdk.so b/SCBAXJ/app/libs/arm64-v8a/libhcnetsdk.so new file mode 100644 index 0000000..82dcd1c Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libhcnetsdk.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libjnidispatch.so b/SCBAXJ/app/libs/arm64-v8a/libjnidispatch.so new file mode 100644 index 0000000..82a4f2d Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libjnidispatch.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/librinsunMT-lib.so b/SCBAXJ/app/libs/arm64-v8a/librinsunMT-lib.so new file mode 100644 index 0000000..87b7246 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/librinsunMT-lib.so differ diff --git a/SCBAXJ/app/libs/arm64-v8a/libsslPrivate.so b/SCBAXJ/app/libs/arm64-v8a/libsslPrivate.so new file mode 100644 index 0000000..977b7e7 Binary files /dev/null and b/SCBAXJ/app/libs/arm64-v8a/libsslPrivate.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libAudioEngine.so b/SCBAXJ/app/libs/armeabi-v7a/libAudioEngine.so new file mode 100644 index 0000000..b81e726 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libAudioEngine.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCAlarm.so b/SCBAXJ/app/libs/armeabi-v7a/libHCAlarm.so new file mode 100644 index 0000000..ab8f9f0 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCAlarm.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCCore.so b/SCBAXJ/app/libs/armeabi-v7a/libHCCore.so new file mode 100644 index 0000000..c85a029 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCCore.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCCoreDevCfg.so b/SCBAXJ/app/libs/armeabi-v7a/libHCCoreDevCfg.so new file mode 100644 index 0000000..07a1796 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCCoreDevCfg.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCDisplay.so b/SCBAXJ/app/libs/armeabi-v7a/libHCDisplay.so new file mode 100644 index 0000000..ce10cab Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCDisplay.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCGeneralCfgMgr.so b/SCBAXJ/app/libs/armeabi-v7a/libHCGeneralCfgMgr.so new file mode 100644 index 0000000..ee96df0 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCGeneralCfgMgr.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCIndustry.so b/SCBAXJ/app/libs/armeabi-v7a/libHCIndustry.so new file mode 100644 index 0000000..3dc18c3 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCIndustry.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCPlayBack.so b/SCBAXJ/app/libs/armeabi-v7a/libHCPlayBack.so new file mode 100644 index 0000000..4f4254d Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCPlayBack.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCPreview.so b/SCBAXJ/app/libs/armeabi-v7a/libHCPreview.so new file mode 100644 index 0000000..8e065de Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCPreview.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libHCVoiceTalk.so b/SCBAXJ/app/libs/armeabi-v7a/libHCVoiceTalk.so new file mode 100644 index 0000000..eb2517f Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libHCVoiceTalk.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libNPQos.so b/SCBAXJ/app/libs/armeabi-v7a/libNPQos.so new file mode 100644 index 0000000..65a1a67 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libNPQos.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl.so b/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl.so new file mode 100644 index 0000000..0635ee8 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl_L.so b/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl_L.so new file mode 100644 index 0000000..7135239 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libPlayCtrl_L.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libSystemTransform.so b/SCBAXJ/app/libs/armeabi-v7a/libSystemTransform.so new file mode 100644 index 0000000..a169eab Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libSystemTransform.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libcryptoPrivate.so b/SCBAXJ/app/libs/armeabi-v7a/libcryptoPrivate.so new file mode 100644 index 0000000..2ce2974 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libcryptoPrivate.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libgnustl_shared.so b/SCBAXJ/app/libs/armeabi-v7a/libgnustl_shared.so new file mode 100644 index 0000000..bca5820 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libgnustl_shared.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libhcnetsdk.so b/SCBAXJ/app/libs/armeabi-v7a/libhcnetsdk.so new file mode 100644 index 0000000..9ac3033 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libhcnetsdk.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libhpr.so b/SCBAXJ/app/libs/armeabi-v7a/libhpr.so new file mode 100644 index 0000000..13e1fe4 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libhpr.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libjnidispatch.so b/SCBAXJ/app/libs/armeabi-v7a/libjnidispatch.so new file mode 100644 index 0000000..f1e2831 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libjnidispatch.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libopensslwrap.so b/SCBAXJ/app/libs/armeabi-v7a/libopensslwrap.so new file mode 100644 index 0000000..d67a685 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libopensslwrap.so differ diff --git a/SCBAXJ/app/libs/armeabi-v7a/libsslPrivate.so b/SCBAXJ/app/libs/armeabi-v7a/libsslPrivate.so new file mode 100644 index 0000000..541cf8d Binary files /dev/null and b/SCBAXJ/app/libs/armeabi-v7a/libsslPrivate.so differ diff --git a/SCBAXJ/app/libs/armeabi/libAudioEngine.so b/SCBAXJ/app/libs/armeabi/libAudioEngine.so new file mode 100644 index 0000000..b81e726 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libAudioEngine.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCAlarm.so b/SCBAXJ/app/libs/armeabi/libHCAlarm.so new file mode 100644 index 0000000..63395fb Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCAlarm.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCCore.so b/SCBAXJ/app/libs/armeabi/libHCCore.so new file mode 100644 index 0000000..880159f Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCCore.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCCoreDevCfg.so b/SCBAXJ/app/libs/armeabi/libHCCoreDevCfg.so new file mode 100644 index 0000000..b481e2a Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCCoreDevCfg.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCDisplay.so b/SCBAXJ/app/libs/armeabi/libHCDisplay.so new file mode 100644 index 0000000..cbef08d Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCDisplay.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCGeneralCfgMgr.so b/SCBAXJ/app/libs/armeabi/libHCGeneralCfgMgr.so new file mode 100644 index 0000000..51a8460 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCGeneralCfgMgr.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCIndustry.so b/SCBAXJ/app/libs/armeabi/libHCIndustry.so new file mode 100644 index 0000000..5f8b765 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCIndustry.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCPlayBack.so b/SCBAXJ/app/libs/armeabi/libHCPlayBack.so new file mode 100644 index 0000000..6357c6a Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCPlayBack.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCPreview.so b/SCBAXJ/app/libs/armeabi/libHCPreview.so new file mode 100644 index 0000000..829917c Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCPreview.so differ diff --git a/SCBAXJ/app/libs/armeabi/libHCVoiceTalk.so b/SCBAXJ/app/libs/armeabi/libHCVoiceTalk.so new file mode 100644 index 0000000..3b59c20 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libHCVoiceTalk.so differ diff --git a/SCBAXJ/app/libs/armeabi/libNPQos.so b/SCBAXJ/app/libs/armeabi/libNPQos.so new file mode 100644 index 0000000..bf9d39e Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libNPQos.so differ diff --git a/SCBAXJ/app/libs/armeabi/libPlayCtrl.so b/SCBAXJ/app/libs/armeabi/libPlayCtrl.so new file mode 100644 index 0000000..2ff1b71 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libPlayCtrl.so differ diff --git a/SCBAXJ/app/libs/armeabi/libPlayCtrl_L.so b/SCBAXJ/app/libs/armeabi/libPlayCtrl_L.so new file mode 100644 index 0000000..7135239 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libPlayCtrl_L.so differ diff --git a/SCBAXJ/app/libs/armeabi/libSystemTransform.so b/SCBAXJ/app/libs/armeabi/libSystemTransform.so new file mode 100644 index 0000000..c47a21b Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libSystemTransform.so differ diff --git a/SCBAXJ/app/libs/armeabi/libcryptoPrivate.so b/SCBAXJ/app/libs/armeabi/libcryptoPrivate.so new file mode 100644 index 0000000..2ce2974 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libcryptoPrivate.so differ diff --git a/SCBAXJ/app/libs/armeabi/libgnustl_shared.so b/SCBAXJ/app/libs/armeabi/libgnustl_shared.so new file mode 100644 index 0000000..bca5820 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libgnustl_shared.so differ diff --git a/SCBAXJ/app/libs/armeabi/libhcnetsdk.so b/SCBAXJ/app/libs/armeabi/libhcnetsdk.so new file mode 100644 index 0000000..6a88c2b Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libhcnetsdk.so differ diff --git a/SCBAXJ/app/libs/armeabi/libhpr.so b/SCBAXJ/app/libs/armeabi/libhpr.so new file mode 100644 index 0000000..13e1fe4 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libhpr.so differ diff --git a/SCBAXJ/app/libs/armeabi/libjnidispatch.so b/SCBAXJ/app/libs/armeabi/libjnidispatch.so new file mode 100644 index 0000000..24e4e7d Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libjnidispatch.so differ diff --git a/SCBAXJ/app/libs/armeabi/libopensslwrap.so b/SCBAXJ/app/libs/armeabi/libopensslwrap.so new file mode 100644 index 0000000..d67a685 Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libopensslwrap.so differ diff --git a/SCBAXJ/app/libs/armeabi/libsslPrivate.so b/SCBAXJ/app/libs/armeabi/libsslPrivate.so new file mode 100644 index 0000000..541cf8d Binary files /dev/null and b/SCBAXJ/app/libs/armeabi/libsslPrivate.so differ diff --git a/SCBAXJ/app/libs/badgeview.jar b/SCBAXJ/app/libs/badgeview.jar new file mode 100755 index 0000000..8190474 Binary files /dev/null and b/SCBAXJ/app/libs/badgeview.jar differ diff --git a/SCBAXJ/app/libs/gson-2.7.jar b/SCBAXJ/app/libs/gson-2.7.jar new file mode 100755 index 0000000..be5b59b Binary files /dev/null and b/SCBAXJ/app/libs/gson-2.7.jar differ diff --git a/SCBAXJ/app/libs/jna.jar b/SCBAXJ/app/libs/jna.jar new file mode 100644 index 0000000..dff20f7 Binary files /dev/null and b/SCBAXJ/app/libs/jna.jar differ diff --git a/SCBAXJ/app/libs/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar b/SCBAXJ/app/libs/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar new file mode 100755 index 0000000..3a97971 Binary files /dev/null and b/SCBAXJ/app/libs/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar differ diff --git a/SCBAXJ/app/libs/rinsunMT.jar b/SCBAXJ/app/libs/rinsunMT.jar new file mode 100644 index 0000000..1761ddc Binary files /dev/null and b/SCBAXJ/app/libs/rinsunMT.jar differ diff --git a/SCBAXJ/app/libs/zxing.jar b/SCBAXJ/app/libs/zxing.jar new file mode 100755 index 0000000..c069965 Binary files /dev/null and b/SCBAXJ/app/libs/zxing.jar differ diff --git a/SCBAXJ/app/proguard-rules.pro b/SCBAXJ/app/proguard-rules.pro new file mode 100755 index 0000000..476bc8c --- /dev/null +++ b/SCBAXJ/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/ruihong/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/SCBAXJ/app/release/output-metadata.json b/SCBAXJ/app/release/output-metadata.json new file mode 100644 index 0000000..b765657 --- /dev/null +++ b/SCBAXJ/app/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.rehome.scbaxj", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "1.0.0", + "outputFile": "app-release.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/SCBAXJ/app/src/androidTest/java/com/rehome/scbaxj/ExampleInstrumentedTest.java b/SCBAXJ/app/src/androidTest/java/com/rehome/scbaxj/ExampleInstrumentedTest.java new file mode 100755 index 0000000..f92c855 --- /dev/null +++ b/SCBAXJ/app/src/androidTest/java/com/rehome/scbaxj/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.rehome.scbaxj; + +import android.content.Context; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.rehome.bhdxj", appContext.getPackageName()); + } +} diff --git a/SCBAXJ/app/src/main/AndroidManifest.xml b/SCBAXJ/app/src/main/AndroidManifest.xml new file mode 100755 index 0000000..2401aec --- /dev/null +++ b/SCBAXJ/app/src/main/AndroidManifest.xml @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/assets/litepal.xml b/SCBAXJ/app/src/main/assets/litepal.xml new file mode 100755 index 0000000..821202a --- /dev/null +++ b/SCBAXJ/app/src/main/assets/litepal.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/ic_launcher-playstore.png b/SCBAXJ/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..d053e2d Binary files /dev/null and b/SCBAXJ/app/src/main/ic_launcher-playstore.png differ diff --git a/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKByJNA.java b/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKByJNA.java new file mode 100644 index 0000000..eac2a40 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKByJNA.java @@ -0,0 +1,6281 @@ +package com.hcnetsdk.jna; + +import java.util.Arrays; +import java.util.List; + +import com.hikvision.netsdk.EAP_TTLS; +import com.hikvision.netsdk.NET_DVR_RECORDDAY; +import com.hikvision.netsdk.NET_DVR_RECORDSCHED; +import com.sun.jna.Callback; +import com.sun.jna.Library; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; +import com.sun.jna.Union; +import com.sun.jna.ptr.ByteByReference; +import com.sun.jna.ptr.IntByReference; + +public interface HCNetSDKByJNA extends Library { + + // command begin + public static final int NET_DVR_SET_PTZPOS =292; + public static final int NET_DVR_GET_PTZPOS =293; + + public static final int NET_DVR_GET_TIMECFG = 118; + public static final int NET_DVR_SET_TIMECFG = 119; + //public static final int NET_DVR_GET_NTPCFG = 224; //jni + //public static final int NET_DVR_SET_NTPCFG = 225; //jni/**Set network application parameters(NTP)*/ + //public static final int NET_DVR_GET_DEVICECFG_V40 = 1100; //jni + //public static final int NET_DVR_SET_DEVICECFG_V40 = 1101; //jni + //public static final int NET_DVR_GET_NETCFG_V30 = 1000; //jni + //public static final int NET_DVR_SET_NETCFG_V30 = 1001; //jni + //public static final int NET_DVR_SET_WIFI_CFG = 306; //jni + //public static final int NET_DVR_GET_WIFI_CFG = 307; //jni + //public static final int NET_DVR_GET_AP_INFO_LIST = 305; //jni  + //public static final int NET_DVR_GET_WIFI_STATUS = 310; //jni + public static final int NET_DVR_GET_RECORDCFG_V30 = 1004; + public static final int NET_DVR_SET_RECORDCFG_V30 = 1005; + public static final int NET_DVR_SET_ALARMIN_PARAM_V50 = 1200; + public static final int NET_DVR_GET_ALARMIN_PARAM_V50 = 1201; + public static final int NET_DVR_GET_WEEK_PLAN_CFG = 2100; //get week plan of door + public static final int NET_DVR_SET_WEEK_PLAN_CFG = 2101; //set week plan of door + public static final int NET_DVR_GET_ACS_WORK_STATUS = 2123; + public static final int NET_DVR_GET_VERIFY_WEEK_PLAN = 2124; + public static final int NET_DVR_SET_VERIFY_WEEK_PLAN = 2125; + public static final int NET_DVR_GET_CARD_RIGHT_WEEK_PLAN = 2126; + public static final int NET_DVR_SET_CARD_RIGHT_WEEK_PLAN = 2127; + public static final int NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 = 2304; + public static final int NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 = 2305; + public static final int NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN = 2102; + public static final int NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN = 2103; + public static final int NET_DVR_GET_VERIFY_HOLIDAY_PLAN = 2128; + public static final int NET_DVR_SET_VERIFY_HOLIDAY_PLAN = 2129; + public static final int NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN = 2130; + public static final int NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN = 2131; + public static final int NET_DVR_GET_ALARMIN_PARAM_LIST_V50 = 2237; + public static final int NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 = 2310; + public static final int NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 = 2311; + public static final int NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP = 2104; + public static final int NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP = 2105; + public static final int NET_DVR_GET_VERIFY_HOLIDAY_GROUP = 2132; + public static final int NET_DVR_SET_VERIFY_HOLIDAY_GROUP = 2133; + public static final int NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP = 2134; + public static final int NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP = 2135; + public static final int NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 = 2316; + public static final int NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 = 2317; + public static final int NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE = 2106; + public static final int NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE = 2107; + public static final int NET_DVR_GET_VERIFY_PLAN_TEMPLATE = 2136; + public static final int NET_DVR_SET_VERIFY_PLAN_TEMPLATE = 2137; + public static final int NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE = 2138; + public static final int NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE = 2139; + public static final int NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2322; + public static final int NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2323; + public static final int NET_DVR_GET_DOOR_CFG = 2108; + public static final int NET_DVR_SET_DOOR_CFG = 2109; + public static final int NET_DVR_GET_CARD_READER_CFG_V50 = 2505; + public static final int NET_DVR_SET_CARD_READER_CFG_V50 = 2506; + public static final int NET_DVR_GET_ACS_WORK_STATUS_V50 = 2180; + public static final int NET_DVR_SET_WIFI_WORKMODE = 308; + public static final int NET_DVR_GET_WIFI_WORKMODE = 309; + public static final int NET_DVR_CLEAR_ACS_PARAM = 2118; + public static final int NET_DVR_COMPLETE_RESTORE_CTRL = 3420; + public static final int NET_DVR_GET_CARD_CFG = 2116; + + public static final int NET_DVR_VIDEO_CALL_SIGNAL_PROCESS = 16032; + + public static final int NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG = 2001; + public static final int NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG = 2002; + + public static final int NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 = 2228; + public static final int NET_DVR_GET_ALARMHOST_OTHER_STATUS_V51 = 2236; + + public static final int NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG = 3216; + public static final int NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG = 3217; + + public static final int NET_DVR_START_GET_INPUTVOLUME = 3370; + + public static final int NET_DVR_GET_LOITERING_DETECTION = 3521; + public static final int NET_DVR_SET_LOITERING_DETECTION = 3522; + + public static final int NET_DVR_GET_LED_AREA_INFO_LIST = 9295; + + public static final int NET_DVR_MATRIX_GETWINSTATUS = 9009; + + public static final int NET_SDK_GET_INPUTSTREAMCFG = 1551; + + public static final int NET_DVR_GET_EZVIZ_ACCESS_CFG = 3398; + public static final int NET_DVR_SET_EZVIZ_ACCESS_CFG = 3399; + + + public static final int NET_SDK_GET_VIDEOWALLDISPLAYNO = 1553; + + public static final int NET_SDK_GET_ALLSUBSYSTEM_BASIC_INFO =1554; + + public static final int NET_SDK_SET_ALLSUBSYSTEM_BASIC_INFO = 1555; + + public static final int NET_SDK_GET_AUDIO_INFO =1556; + + public static final int NET_DVR_GET_VIDEOWALLDISPLAYNO = 1732; + + public static final int NET_DVR_SET_VIDEOWALLDISPLAYPOSITION =1733; + + public static final int NET_DVR_GET_VIDEOWALLDISPLAYPOSITION =1734; + + public static final int NET_DVR_GET_CURTRIGGERMODE = 3130; + + public static final int NET_ITC_GET_RS485_ACCESSINFO = 3117; + + public static final int NET_ITC_SET_RS485_ACCESSINFO = 3118; + + public static final int NET_DVR_GET_SHOWSTRING_V30 = 1030; + + public static final int NET_DVR_SET_SHOWSTRING_V30 = 1031; + + public static final int NET_ITS_GET_OVERLAP_CFG = 5072; + + public static final int NET_ITS_SET_OVERLAP_CFG = 5073; + + public static final int NET_ITC_GET_TRIGGERCFG = 3003; + + public static final int NET_ITC_SET_TRIGGERCFG = 3004; + + public static final int NET_DVR_GET_CCDPARAMCFG_EX = 3368; + public static final int NET_DVR_SET_CCDPARAMCFG_EX = 3369; + + public static final int NET_DVR_FFC_MANUAL_CTRL = 3411; + + public static final int NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES = 3620; //Get Thermometry Basic Param capabilities + public static final int NET_DVR_GET_THERMOMETRY_BASICPARAM = 3621; + public static final int NET_DVR_SET_THERMOMETRY_BASICPARAM = 3622; + public static final int NET_DVR_GET_THERMOMETRY_PRESETINFO = 3624; //Get Thermometry Preset Info + public static final int NET_DVR_SET_THERMOMETRY_PRESETINFO = 3625; + + public static final int NET_DVR_GET_FACECONTRAST_TRIGGER = 3965; + public static final int NET_DVR_SET_FACECONTRAST_TRIGGER = 3966; + + public static final int NET_DVR_GET_FACECONTRAST_SCHEDULE = 3968; + public static final int NET_DVR_SET_FACECONTRAST_SCHEDULE = 3969; + + public static final int NET_DVR_GET_PICCFG_V40 = 6179; + public static final int NET_DVR_SET_PICCFG_V40 = 6180; + + public static final int NET_DVR_GET_THERMAL_PIP = 6768; + public static final int NET_DVR_SET_THERMAL_PIP = 6769; + + /*************************************************New ACS ***************************************************/ + public static final int NET_DVR_GET_CARD_CFG_V50 = 2178;//Parameters to acquire new CARDS (V50) + public static final int NET_DVR_SET_CARD_CFG_V50 = 2179;//Setting up the new parameters (V50) + + public static final int NET_DVR_SET_FACE_PARAM_CFG=2508; + public static final int NET_DVR_GET_FACE_PARAM_CFG=2507; + + public static final int NET_DVR_GET_ACS_EVENT = 2514; + + public static final int NET_DVR_CAPTURE_FACE_INFO =2510; + + public static final int NET_DVR_DEL_FACE_PARAM_CFG = 2509; //del face param + /**********************************************************************************************************/ + + + public static final int NET_DVR_GET_NETCFG_V50 = 1015; //Get network parameter configuration (V50) + public static final int NET_DVR_SET_NETCFG_V50 = 1016; //Set network parameter configuration (V50) + + public static final int NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 = 2518; //Get event card number linkage configuration parameters (V51) + public static final int NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 = 2519; //Set up the event card number linkage configuration parameters (V51) + + // command end + + //alarm type + public static final int COMM_ALARM_RULE = 0x1102; + public static final int COMM_ALARM_PDC = 0x1103; + public static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112; + public static final int COMM_UPLOAD_PLATE_RESULT = 0x2800; + public static final int COMM_SNAP_MATCH_ALARM = 0x2902; + public static final int COMM_ITS_PLATE_RESULT = 0x3050; + public static final int COMM_VEHICLE_CONTROL_ALARM = 0x3059; + public static final int COMM_ALARM_V30 = 0x4000; + public static final int COMM_ALARM_V40 = 0x4007; + public static final int COMM_ALARM_FACE_DETECTION = 0x4010; + public static final int COMM_ALARM_TFS = 0x1113; + /****************************************New ACS*************************************/ + public static final int COMM_ID_INFO_ALARM=0x5200; + /***********************************************************************************/ + + public static final int COMM_ALARM_ACS = 0x5002; //access card alarm + public static final int COMM_PASSNUM_INFO_ALARM = 0x5201; //pass number info alarm + + public static final int COMM_THERMOMETRY_ALARM = 0x5212; + public static final int COMM_ISAPI_ALARM = 0x6009; + //alarm type end + + public static final int NET_DVR_DEV_ADDRESS_MAX_LEN = 129; + public static final int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64; + public static final int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64; + public static final int NET_SDK_CALLBACK_TYPE_STATUS = 0; + public static final int NET_SDK_CALLBACK_TYPE_PROGRESS = 1; + public static final int NET_SDK_CALLBACK_TYPE_DATA = 2; + + public static final int NET_SDK_CALLBACK_STATUS_SUCCESS = 1000; + public static final int NET_SDK_CALLBACK_STATUS_PROCESSING = 1001; + public static final int NET_SDK_CALLBACK_STATUS_FAILED = 1002; + public static final int NET_SDK_CALLBACK_STATUS_EXCEPTION = 1003; + public static final int NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH = 1004; + public static final int NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH = 1005; + public static final int NET_DVR_CALLBACK_STATUS_SEND_WAIT = 1006; + + public static final int NET_SDK_EMPLOYEE_NO_LEN = 32; + public static final int NET_SDK_UUID_LEN = 36; + public static final int NET_DEV_NAME_LEN = 64; + public static final int ACS_CARD_NO_LEN = 32; + public static final int CARD_PASSWORD_LEN = 8; + public static final int MAX_DOOR_NUM = 32; + public static final int MAX_CARD_RIGHT_PLAN_NUM = 4; + + public static final int STREAM_ID_LEN = 32; + public static final int SERIALNO_LEN = 48; + public static final int NAME_LEN = 32; + public static final int MACADDR_LEN = 6; + public static final int MAX_DISKNUM_V30 = 33; + public static final int MAX_DISKNUM = 16; + public static final int MAX_LICENSE_LEN = 16; + + public static final int MAX_HUMAN_BIRTHDATE_LEN = 10; + + public static final int MAX_CHANNUM = 16; + public static final int MAX_ALARMIN = 16; + public static final int MAX_ALARMOUT = 4; + + public static final int MAX_ANALOG_CHANNUM = 32; + public static final int MAX_ANALOG_ALARMOUT = 32; + public static final int MAX_ANALOG_ALARMIN = 32; + public static final int MAX_IP_DEVICE = 32; + public static final int MAX_IP_CHANNEL = 32; + public static final int MAX_IP_ALARMIN = 128; + public static final int MAX_IP_ALARMOUT = 64; + public static final int ALARMHOST_DETECTOR_SERIAL_LEN_V50 = 16; + + public static final int MAX_CHANNUM_V30 = (MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL);// 64 + public static final int MAX_ALARMOUT_V30 = (MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT);// 96 + public static final int MAX_ALARMIN_V30 = (MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN);// 160 + + public static final int VCA_MAX_POLYGON_POINT_NUM = 10; + public static final int MAX_REGION_NUM = 8; + public static final int MAX_NUM_OUTPUT_CHANNEL = 512; + + public static final int MAX_DISPLAY_NUM = 512; + + public static final int ALARMHOST_MAX_SIREN_NUM = 8; + public static final int MAX_DETECTOR_NUM = 128; + public static final int MAX_DETECTOR_NUM_V51 = 256; + public static final int MAX_REPEATER_NUM = 16; + public static final int MAX_OUTPUT_MODULE_NUM = 64; + public static final int ENUM_VCA_EVENT_TRAVERSE_PLANE = 1; + public static final int ENUM_VCA_EVENT_ENTER_AREA = 2; + public static final int ENUM_VCA_EVENT_EXIT_AREA = 3; + public static final int ENUM_VCA_EVENT_INTRUSION = 4; + public static final int ENUM_VCA_EVENT_LOITER = 5; + public static final int ENUM_VCA_EVENT_LEFT_TAKE = 6; + public static final int ENUM_VCA_EVENT_PARKING = 7; + public static final int ENUM_VCA_EVENT_RUN = 8; + public static final int ENUM_VCA_EVENT_HIGH_DENSITY = 9; + public static final int ENUM_VCA_EVENT_VIOLENT_MOTION = 10; + public static final int ENUM_VCA_EVENT_REACH_HIGHT = 11; + public static final int ENUM_VCA_EVENT_GET_UP = 12; + public static final int ENUM_VCA_EVENT_LEFT = 13; + public static final int ENUM_VCA_EVENT_TAKE = 14; + public static final int ENUM_VCA_EVENT_LEAVE_POSITION = 15; + public static final int ENUM_VCA_EVENT_TRAIL = 16; + public static final int ENUM_VCA_EVENT_KEY_PERSON_GET_UP = 17; + public static final int ENUM_VCA_EVENT_STANDUP = 18; + public static final int ENUM_VCA_EVENT_FALL_DOWN = 20; + public static final int ENUM_VCA_EVENT_AUDIO_ABNORMAL = 21; + public static final int ENUM_VCA_EVENT_ADV_REACH_HEIGHT = 22; + public static final int ENUM_VCA_EVENT_TOILET_TARRY = 23; + public static final int ENUM_VCA_EVENT_YARD_TARRY = 24; + public static final int ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE = 25; + public static final int ENUM_VCA_EVENT_HUMAN_ENTER = 29; + public static final int ENUM_VCA_EVENT_OVER_TIME = 30; + public static final int ENUM_VCA_EVENT_STICK_UP = 31; + public static final int ENUM_VCA_EVENT_INSTALL_SCANNER = 32; + public static final int ENUM_VCA_EVENT_PEOPLENUM_CHANGE = 35; + public static final int ENUM_VCA_EVENT_SPACING_CHANGE = 36; + public static final int ENUM_VCA_EVENT_COMBINED_RULE = 37; + public static final int ENUM_VCA_EVENT_SIT_QUIETLY = 38; + public static final int ENUM_VCA_EVENT_HIGH_DENSITY_STATUS = 39; + + + public static final int MAX_SUBSYSTEM_ID_LEN = 16; + public static final int ACCOUNTNUM_LEN = 6; + public static final int ACCOUNTNUM_LEN_32 = 32; + + + public static final int EZVIZ_DEVICEID_LEN = 32; + public static final int EZVIZ_REQURL_LEN = 64; + public static final int EZVIZ_ACCESSTOKEN_LEN = 128; + public static final int EZVIZ_CLIENTTYPE_LEN = 32; + public static final int EZVIZ_FEATURECODE_LEN = 64; + public static final int EZVIZ_OSVERSION_LEN = 32; + public static final int EZVIZ_NETTYPE_LEN = 32; + public static final int EZVIZ_SDKVERSION_LEN = 32; + public static final int EZVIZ_APPID_LEN = 64; + + public static final int MAX_DOMAIN_NAME = 64; + public static final int PASSWD_LEN = 16; + public static final int MAX_CARDNO_LEN = 48; + + public static final int NET_SDK_MAX_VERIFICATION_CODE_LEN = 32; + + public static final int NET_SDK_MAX_FDID_LEN = 256; + public static final int MAX_UPLOADFILE_URL_LEN = 260; + public static final int NET_SDK_MAX_PICID_LEN = 256; + + public static final int ENUM_DVR_VEHICLE_CHECK = 1; + public static final int ENUM_MSC_SEND_DATA = 2; + public static final int ENUM_ACS_SEND_DATA =3; + public static final int ENUM_TME_CARD_SEND_DATA = 4; + public static final int ENUM_TME_VEHICLE_SEND_DATA = 5; + public static final int ENUM_DVR_DEBUG_CMD = 6; + public static final int ENUM_DVR_SCREEN_CTRL_CMD =7; + public static final int ENUM_CVR_PASSBACK_SEND_DATA = 8; + + public static final int ISAPI_DATA_LEN = 10*1024*1024; + public static final int ISAPI_STATUS_LEN = 4*4096; + public static final int BYTE_ARRAY_LEN = 1024; + + public static final int MAX_MAX_ALARMIN_NUM = 64; + public static final int MAX_DAYS = 7; + public static final int MAX_TIMESEGMENT_V30 = 8; + public static final int MAX_TIMESEGMENT = 4; + public static final int HOLIDAY_GROUP_NAME_LEN = 32; + public static final int MAX_HOLIDAY_PLAN_NUM = 16; + public static final int TEMPLATE_NAME_LEN = 32; + public static final int MAX_HOLIDAY_GROUP_NUM = 16; + public static final int DEV_TYPE_NAME_LEN = 64; + public static final int DOOR_NAME_LEN = 32; + public static final int STRESS_PASSWORD_LEN = 8; + public static final int SUPER_PASSWORD_LEN = 8; + public static final int UNLOCK_PASSWORD_LEN = 8; + public static final int CARD_READER_DESCRIPTION = 32; + public static final int MAX_DOOR_NUM_256 = 256; + public static final int MAX_CASE_SENSOR_NUM = 8; + public static final int MAX_CARD_READER_NUM = 64; + public static final int MAX_CARD_READER_NUM_512 = 512; + public static final int MAX_ALARMHOST_ALARMOUT_NUM = 512; + public static final int MAX_ALARMHOST_ALARMIN_NUM = 512; + public static final int ALARMHOST_DETECTOR_SERIAL_LEN = 9; + + public static final int PICTURE_NAME_LEN = 64; + public static final int MAX_FACE_PIC_NUM = 30; + public static final int CARDNUM_LEN_V30 = 40; + public static final int MAX_ITC_LANE_NUM = 6; + public static final int MAX_CHJC_NUM = 3; + public static final int MAX_IOOUT_NUM = 4; + public static final int MAX_LANEAREA_NUM = 2; + public static final int MAX_INTERVAL_NUM = 4; + public static final int ITC_MAX_POLYGON_POINT_NUM = 20; + public static final int MAX_OVERLAP_ITEM_NUM = 50; + public static final int MAX_STRINGNUM_V30 = 8; + public static final int NET_DVR_FILE_SUCCESS = 1000; + public static final int NET_DVR_FILE_NOFIND = 1001; + public static final int NET_DVR_ISFINDING = 1002; + public static final int NET_DVR_NOMOREFILE = 1003; + public static final int NET_DVR_FILE_EXCEPTION = 1004; + public static final int MAX_SUBSYSTEM_NUM_V40 = 120; + + public static final int MONITORSITE_ID_LEN = 48; + public static final int DEVICE_ID_LEN = 48; + + public static final int MAX_SHELTERNUM = 4; + public static final int MAX_ALARMOUT_V40 = 4128; + public static final int MAX_CHANNUM_V40 = 512; + public static final int MAX_MULTI_AREA_NUM = 24; + public static final int MAX_THERMOMETRY_REGION_NUM = 40; + + public static final int MAX_CATEGORY_LEN = 8; + public static final int MAX_LICENSE_LEN_EX = 32; + + + /* Commands for playing file*/ + public static final int NET_DVR_PLAYSTART = 1;//Start play + public static final int NET_DVR_PLAYSTOP = 2;//Stop play + public static final int NET_DVR_PLAYPAUSE = 3;//Pause + public static final int NET_DVR_PLAYRESTART = 4;//Restore + public static final int NET_DVR_PLAYFAST = 5;//Play Faster + public static final int NET_DVR_PLAYSLOW = 6;//Play Slower + public static final int NET_DVR_PLAYNORMAL = 7;//Normal Speed + public static final int NET_DVR_PLAYSTARTAUDIO = 9;//Open Audio + public static final int NET_DVR_PLAYSTOPAUDIO = 10;//Close Audio + public static final int NET_DVR_PLAYSETPOS = 12;//Change playing progress + public static final int NET_DVR_RESETBUFFER =37 ;//reset matrix decode buffer(remote playback file) + + /*********************************************New ACS**********************************************/ + /*ID Card*/ + public static class NET_DVR_ID_CARD_INFO_ALARM extends Structure { + public int dwSize; + public NET_DVR_ID_CARD_INFO struIDCardCfg = new NET_DVR_ID_CARD_INFO(); + public int dwMajor; + public int dwMinor; + public NET_DVR_TIME_V30 struSwipeTime = new NET_DVR_TIME_V30(); + public byte byNetUser[] = new byte[16]; + public NET_DVR_IPADDR struRemoteHostAddr = new NET_DVR_IPADDR(); + public int dwCardReaderNo; + public int dwDoorNo; + public int dwPicDataLen; + public Pointer pPicData; + public byte byCardType; + public byte byDeviceNo; + public byte byMask; + public byte byRes2; + public int dwFingerPrintDataLen; + public Pointer pFingerPrintData; + public int dwCapturePicDataLen; + public Pointer pCapturePicData; + public int dwCertificatePicDataLen; + public Pointer pCertificatePicData; + public byte byCardReaderKind; + public byte byRes3[] = new byte[2]; + public byte byIDCardInfoExtend; + public Pointer pIDCardInfoExtend; + public byte byRes[] = new byte[172]; + + public NET_DVR_ID_CARD_INFO_ALARM(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "struIDCardCfg", "dwMajor", + "dwMinor", "struSwipeTime", "byNetUser", + "struRemoteHostAddr", "dwCardReaderNo", "dwDoorNo", + "dwPicDataLen", "pPicData", "byCardType", "byDeviceNo", + "byMask", "byRes2", "dwFingerPrintDataLen", "pFingerPrintData", + "dwCapturePicDataLen", "pCapturePicData", "dwCertificatePicDataLen", "pCertificatePicData", + "byCardReaderKind", "byRes3", "byIDCardInfoExtend", + "pIDCardInfoExtend", "byRes"); + } + } + + public static class NET_DVR_ID_CARD_INFO_EXTEND extends Structure + { + public byte byRemoteCheck; //是否需要远程核验(0-无效,1-不需要(默认),2-需要) + public byte byThermometryUnit; //测温单位(0-摄氏度(默认),1-华氏度,2-开尔文) + public byte byIsAbnomalTemperature; //人脸抓拍测温是否温度异常:1-是,0-否 + public byte byRes2; + public float fCurrTemperature; //人脸温度(精确到小数点后一位) + public NET_VCA_POINT struRegionCoordinates = new NET_VCA_POINT(); //人脸温度坐标 + public int dwQRCodeInfoLen; //二维码信息长度,不为0是表示后面带数据 + public int dwVisibleLightDataLen; //热成像相机可见光图片长度,不为0是表示后面带数据 + public int dwThermalDataLen; //热成像图片长度,不为0是表示后面带数据 + public Pointer pQRCodeInfo; //二维码信息指针 + public Pointer pVisibleLightData; //热成像相机可见光图片指针 + public Pointer pThermalData; //热成像图片指针 + public byte[] byRes = new byte[1024]; + + public NET_DVR_ID_CARD_INFO_EXTEND(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byRemoteCheck","byThermometryUnit","byIsAbnomalTemperature","byRes2", + "fCurrTemperature","struRegionCoordinates","dwQRCodeInfoLen","dwVisibleLightDataLen", + "dwThermalDataLen","pQRCodeInfo","pVisibleLightData","pThermalData","byRes"); + } + } + + public static class NET_DVR_ID_CARD_INFO extends Structure { + public int dwSize; + public byte byName[] = new byte[128]; + public NET_DVR_DATE struBirth = new NET_DVR_DATE(); + public byte byAddr[] = new byte[280]; + public byte byIDNum[] = new byte[32]; + public byte byIssuingAuthority[] = new byte[128]; + public NET_DVR_DATE struStartDate = new NET_DVR_DATE(); + public NET_DVR_DATE struEndDate = new NET_DVR_DATE(); + public byte byTermOfValidity; + public byte bySex; + public byte byNation; + public byte byRes[] = new byte[101]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byName", "struBirth", "byAddr", + "byIDNum", "byIssuingAuthority", "struStartDate", + "struEndDate", "byTermOfValidity", "bySex", "byNation", + "byRes"); + } + } + + public static class NET_DVR_FACE_PARAM_STATUS extends Structure { + public int dwSize; + public byte byCardNo[] = new byte[32]; + public byte byCardReaderRecvStatus[] = new byte[512]; + public byte byErrorMsg[] = new byte[32]; + public int dwCardReaderNo; + public byte byTotalStatus; + public byte byFaceID; + public byte byRes[] = new byte[130]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byCardNo", + "byCardReaderRecvStatus", "byErrorMsg", "dwCardReaderNo", + "byTotalStatus", "byFaceID", "byRes"); + } + public NET_DVR_FACE_PARAM_STATUS(Pointer p) { + super(p); + } + } + + + + /*门禁事件类型*/ + public static class NET_DVR_ACS_EVENT_COND extends Structure { + public int dwSize; + public int dwMajor; + public int dwMinor; + public NET_DVR_TIME struStartTime = new NET_DVR_TIME(); + public NET_DVR_TIME struEndTime = new NET_DVR_TIME(); + public byte byCardNo[] = new byte[32]; + public byte byName[] = new byte[32]; + public byte byPicEnable; + public byte byRes2[] = new byte[3]; + public int dwBeginSerialNo; + public int dwEndSerialNo; + public byte byRes[] = new byte[244]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "dwMajor", "dwMinor", + "struStartTime", "struEndTime", "byCardNo", "byName", + "byPicEnable", "byRes2", "dwBeginSerialNo", + "dwEndSerialNo", "byRes"); + } + } + + /*人脸采集*/ + public static class NET_DVR_CAPTURE_FACE_COND extends Structure { + public int dwSize; + public byte byRes[] = new byte[128]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byRes"); + } + } + + + /*人脸参数*/ + public static class NET_DVR_FACE_PARAM_COND extends Structure { + public int dwSize; + public byte byCardNo[] = new byte[32]; + public byte byEnableCardReader[] = new byte[512]; + public int dwFaceNum; + public byte byFaceID; + public byte byRes[] = new byte[127]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byCardNo", "byEnableCardReader", + "dwFaceNum", "byFaceID", "byRes"); + } + } + + public static class NET_DVR_CARD_CFG_V50 extends Structure { + public static class short_arr_1 extends Structure { + public short byKeyInfo[] = new short[256]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("byKeyInfo"); + } + } + + public int dwSize; + public int dwModifyParamType; + public byte byCardNo[] = new byte[32]; + public byte byCardValid; + public byte byCardType; + public byte byLeaderCard; + public byte byRes1; + public byte byDoorRight[] = new byte[256]; + public NET_DVR_VALID_PERIOD_CFG struValid = new NET_DVR_VALID_PERIOD_CFG(); + public byte byBelongGroup[] = new byte[128]; + public byte byCardPassword[] = new byte[8]; + public short_arr_1 wCardRightPlan[] = (short_arr_1[]) new short_arr_1() + .toArray(4); + public int dwMaxSwipeTime; + public int dwSwipeTime; + public short wRoomNumber; + public short wFloorNumber; + public int dwEmployeeNo; + public byte byName[] = new byte[32]; + public short wDepartmentNo; + public short wSchedulePlanNo; + public byte bySchedulePlanType; + public byte byRightType; + public byte byRes2[] = new byte[2]; + public int dwLockID; + public byte byLockCode[] = new byte[8]; + public byte byRoomCode[] = new byte[8]; + public int dwCardRight; + public int dwPlanTemplate; + public int dwCardUserId; + public byte byCardModelType; + public byte byRes3[] = new byte[51]; + public byte bySIMNum[] = new byte[32]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "dwModifyParamType", "byCardNo", + "byCardValid", "byCardType", "byLeaderCard", "byRes1", + "byDoorRight", "struValid", "byBelongGroup", + "byCardPassword", "wCardRightPlan", "dwMaxSwipeTime", + "dwSwipeTime", "wRoomNumber", "wFloorNumber", + "dwEmployeeNo", "byName", "wDepartmentNo", + "wSchedulePlanNo", "bySchedulePlanType", "byRightType", + "byRes2", "dwLockID", "byLockCode", "byRoomCode", + "dwCardRight", "dwPlanTemplate", "dwCardUserId", + "byCardModelType", "byRes3", "bySIMNum"); + } + + public NET_DVR_CARD_CFG_V50(Pointer p) { + super(p); + } + } + + + /*删除人脸*/ + public static class NET_DVR_FACE_PARAM_CTRL extends Structure { + public int dwSize; + public byte byMode; + public byte byRes1[] = new byte[3]; + public NET_DVR_DEL_FACE_PARAM_MODE struProcessMode = new NET_DVR_DEL_FACE_PARAM_MODE(); + public byte byRes[] = new byte[64]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byMode", "byRes1", + "struProcessMode", "byRes"); + } + } + + public static class NET_DVR_DEL_FACE_PARAM_MODE extends Union { + public byte uLen[] = new byte[588]; + public NET_DVR_FACE_PARAM_BYCARD struByCard = new NET_DVR_FACE_PARAM_BYCARD(); + public NET_DVR_FACE_PARAM_BYREADER struByReader = new NET_DVR_FACE_PARAM_BYREADER(); + +// protected List getFieldOrder() { +// return Arrays.asList("uLen", "struByCard", "struByReader"); +// } + } + + public static class NET_DVR_FACE_PARAM_BYCARD extends Structure { + public byte byCardNo[] = new byte[32]; + public byte byEnableCardReader[] = new byte[512]; + public byte byFaceID[] = new byte[2]; + public byte byRes1[] = new byte[42]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("byCardNo", "byEnableCardReader", "byFaceID", + "byRes1"); + } + } + + public static class NET_DVR_FACE_PARAM_BYREADER extends Structure { + public int dwCardReaderNo; + public byte byClearAllCard; + public byte byRes1[] = new byte[3]; + public byte byCardNo[] = new byte[32]; + public byte byRes[] = new byte[548]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwCardReaderNo", "byClearAllCard", "byRes1", + "byCardNo", "byRes"); + } + } + + + /*************************************************************************************************/ + + public class NET_SDK_LOCAL_CFG_TYPE { + public static final int NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0; + public static final int NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND = 1; + public static final int NET_SDK_LOCAL_CFG_TYPE_MEM_POOL = 2; + public static final int NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT = 3; + public static final int NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE = 4; + public static final int NET_SDK_LOCAL_CFG_TYPE_TALK_MODE = 5; + public static final int NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY = 6; + public static final int NET_SDK_LOCAL_CFG_TYPE_CFG_VERSION = 7; + public static final int NET_SDK_LOCAL_CFG_TYPE_RTSP_PARAMS = 8; + public static final int NET_SDK_LOCAL_CFG_TYPE_SIMXML_LOGIN = 9; + public static final int NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV = 10; + public static final int NET_SDK_LOCAL_CFG_TYPE_SECURITY = 11; + public static final int NET_SDK_LOCAL_CFG_TYPE_EZVIZLIB_PATH = 12; + public static final int NET_SDK_LOCAL_CFG_TYPE_CHAR_ENCODE = 13; + public static final int NET_SDK_LOCAL_CFG_TYPE_PROXYS = 14; + public static final int NET_DVR_LOCAL_CFG_TYPE_LOG = 15; + public static final int NET_DVR_LOCAL_CFG_TYPE_STREAM_CALLBACK = 16; + public static final int NET_DVR_LOCAL_CFG_TYPE_GENERAL = 17; + public static final int NET_DVR_LOCAL_CFG_TYPE_PTZ = 18; + } + + public static class NET_DVR_TIME_V30 extends Structure{ + public short wYear; + public byte byMonth; + public byte byDay; + public byte byHour; + public byte byMinute; + public byte bySecond; + public byte byRes; + public short wMilliSec; + public byte cTimeDifferenceH; + public byte cTimeDifferenceM; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wYear", "byMonth", "byDay", "byHour","byMinute", "bySecond","byRes", "wMilliSec", "cTimeDifferenceH","cTimeDifferenceM"); + } + } + + public static class NET_DVR_IPADDR extends Structure { + public byte[] sIpV4 = new byte[16]; + public byte[] byRes = new byte[128]; + + public String toString() { + return "NET_DVR_IPADDR.sIpV4: " + new String(sIpV4) + "\n" + + "NET_DVR_IPADDR.byRes: " + new String(byRes) + "\n"; + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sIpV4", "byRes"); + } + } + + public static class NET_VCA_POINT extends Structure{ + public float fX; + public float fY; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("fX", "fY"); + } + } + + public static class NET_VCA_LINE extends Structure{ + public NET_VCA_POINT struStart = new NET_VCA_POINT(); + public NET_VCA_POINT struEnd = new NET_VCA_POINT(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struStart", "struEnd"); + } + } + + public static class NET_VCA_POLYGON extends Structure { + + public int dwPointNum; + public NET_VCA_POINT[] struPos = (NET_VCA_POINT[]) new NET_VCA_POINT().toArray(10); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwPointNum", "struPos"); + } + } + + + public static class NET_DVR_MULTI_ALARMIN_COND extends Structure { + public int dwSize; + public int[] iZoneNo = new int[MAX_MAX_ALARMIN_NUM]; //zone numner start with 0,invalid < 0 + public byte[] byRes = new byte[256]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "iZoneNo","byRes"); + } + } + + public static class NET_DVR_SINGLE_ALARMIN_PARAM extends Structure { + public int dwSize; + public short wZoneNo; //readonly + public byte byJointSubSystem; //readonly + public byte byType; //type 0:real time ,1-24 hours,2-delay ,3-innter闁挎冻鎷�4-key 5-fire alarm 6-boundary 7-24 hours without sound 8-24 hours support 闁挎冻鎷�9-24 hours shake 0xff-no + public byte[] byName = new byte[NAME_LEN]; + public short wDetectorType; // DETECTOR_TYPE + public short wInDelay; + public short wOutDelay; + public byte byAlarmType; + public byte byZoneSignalType; + public byte[] byDetectorSerialNo = new byte[ALARMHOST_DETECTOR_SERIAL_LEN]; + public byte byDisableDetectorTypeCfg; + public byte[] byRes2 = new byte[118]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "wZoneNo", "byJointSubSystem", "byType", + "byName", "wDetectorType", "wInDelay", "wOutDelay", "byAlarmType", + "byZoneSignalType", "byDetectorSerialNo", "byDisableDetectorTypeCfg", "byRes2"); + } + } + + public static class NET_DVR_ALARMIN_PARAM_LIST extends Structure { + public int dwSize; + public NET_DVR_SINGLE_ALARMIN_PARAM[] struSingleAlarmInParam = (NET_DVR_SINGLE_ALARMIN_PARAM[]) new NET_DVR_SINGLE_ALARMIN_PARAM().toArray(MAX_MAX_ALARMIN_NUM); + public byte[] byRes = new byte[128]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struSingleAlarmInParam", "byRes"); + } + } + + public static class NET_DVR_SINGLE_ALARMIN_PARAM_V50 extends Structure { + public int dwSize; + public short wZoneNo; //readonly + public byte byJointSubSystem; //readonly + public byte byType; //type 0:real time ,1-24 hours,2-delay ,3-innter闁挎冻鎷�4-key 5-fire alarm 6-boundary 7-24 hours without sound 8-24 hours support 闁挎冻鎷�9-24 hours shake 0xff-no + public byte[] byName = new byte[NAME_LEN]; + public short wDetectorType; // DETECTOR_TYPE + public short wInDelay; + public short wOutDelay; + public byte byAlarmType; + public byte byZoneSignalType; + public byte[] byDetectorSerialNo = new byte[ALARMHOST_DETECTOR_SERIAL_LEN]; + public byte byDisableDetectorTypeCfg; + public byte byTimeOutRange; + public byte byDetectorSignalIntensity; + public short wTimeOut; + public byte byTimeOutMethod; + public byte byAssociateFlashLamp; + public byte byStayAwayEnabled; + public byte bySilentModeEnabled; + public byte[] byRes3 = new byte[2]; + public byte[] byAssociateAlarmOut = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; + public byte[] byRes2 = new byte[128]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "wZoneNo", "byJointSubSystem", "byType","byName", "wDetectorType", "wInDelay", "wOutDelay", "byAlarmType", "byZoneSignalType", "byDetectorSerialNo", "byDisableDetectorTypeCfg", "byTimeOutRange", "byDetectorSignalIntensity", "wTimeOut", "byTimeOutMethod", "byAssociateFlashLamp", "byStayAwayEnabled", "bySilentModeEnabled", "byRes3", "byAssociateAlarmOut", "byRes2"); + } + } + + public static class NET_DVR_ALARMIN_PARAM_LIST_V50 extends Structure { + public int dwSize; + public NET_DVR_SINGLE_ALARMIN_PARAM_V50[] struSingleAlarmInParam = (NET_DVR_SINGLE_ALARMIN_PARAM_V50[]) new NET_DVR_SINGLE_ALARMIN_PARAM_V50().toArray(MAX_MAX_ALARMIN_NUM); + public byte[] byRes = new byte[128]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struSingleAlarmInParam", "byRes"); + } + } + + public static class NET_DVR_ALARMIN_PARAM_V50 extends Structure { + public int dwSize; + public byte[] byName = new byte[NAME_LEN]; + public short wDetectorType; //see to DETECTOR_TYPE + public byte byType; + public byte byUploadAlarmRecoveryReport; + public int dwParam; + public NET_DVR_SCHEDTIME_DAYS[] struAlarmTime = (NET_DVR_SCHEDTIME_DAYS[])new NET_DVR_SCHEDTIME_DAYS().toArray(MAX_TIMESEGMENT); + public byte[] byAssociateAlarmOut = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; + public byte[] byAssociateSirenOut = new byte[8]; + public byte bySensitivityParam; + public byte byArrayBypass; + public byte byJointSubSystem; + public byte byModuleStatus; + public short wModuleAddress; + public byte byModuleChan; + public byte byModuleType; + public short wZoneIndex; + public short wInDelay; + public short wOutDelay; + public byte byAlarmType; + public byte byZoneResistor; + public float fZoneResistorManual; + public byte[] byDetectorSerialNo = new byte[ALARMHOST_DETECTOR_SERIAL_LEN_V50]; + public byte byZoneSignalType; + public byte byDisableDetectorTypeCfg; + public short wTimeOut; + public byte[] byAssociateLampOut = new byte[8]; + public byte[] byVoiceFileName = new byte[32]; + public byte byTimeOutRange; + public byte byDetectorSignalIntensity; + public byte byTimeOutMethod; + public byte byAssociateFlashLamp; + public byte byStayAwayEnabled; + public byte bySilentModeEnabled; + public byte[] byRes3 = new byte[506]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byName", "wDetectorType", "byType", "byUploadAlarmRecoveryReport", "dwParam", "struAlarmTime", "byAssociateAlarmOut", "byAssociateSirenOut", "bySensitivityParam", "byArrayBypass", "byJointSubSystem", "byModuleStatus", "wModuleAddress", "byModuleChan", "byModuleType", "wZoneIndex", "wInDelay", "wOutDelay", "byAlarmType", "byZoneResistor", "fZoneResistorManual", "byDetectorSerialNo", "byZoneSignalType", "byDisableDetectorTypeCfg", "wTimeOut", "byAssociateLampOut", "byVoiceFileName", "byTimeOutRange", "byDetectorSignalIntensity", "byTimeOutMethod", "byAssociateFlashLamp", "byStayAwayEnabled", "bySilentModeEnabled", "byRes3"); + } + } + + public static class NET_DVR_STD_CONFIG extends Structure { + public Pointer lpCondBuffer; + public int dwCondSize; + public Pointer lpInBuffer; + public int dwInSize; + public Pointer lpOutBuffer; + public int dwOutSize; + public Pointer lpStatusBuffer; + public int dwStatusSize; + public Pointer lpXmlBuffer; + public int dwXmlSize; + public byte byDataType; + public byte[] byRes = new byte[23]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("lpCondBuffer", "dwCondSize", + "lpInBuffer", "dwInSize", "lpOutBuffer", "dwOutSize", + "lpStatusBuffer", "dwStatusSize", "lpXmlBuffer", + "dwXmlSize", "byDataType", "byRes"); + } + } + + public static class NET_DVR_STD_ABILITY extends Structure { + public Pointer lpCondBuffer; + public int dwCondSize; + public Pointer lpOutBuffer; + public int dwOutSize; + public Pointer lpStatusBuffer; + public int dwStatusSize; + public int dwRetSize; + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("lpCondBuffer", "dwCondSize", + "lpOutBuffer", "dwOutSize", "lpStatusBuffer", + "dwStatusSize", "dwRetSize", "byRes"); + } + } + + public static class NET_VCA_RECT extends Structure { + public float fX; + public float fY; + public float fWidth; + public float fHeight; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays + .asList("fX", "fY", "fWidth", "fHeight"); + } + } + + public static class NET_DVR_ALARMINFO extends Structure { + public int dwAlarmType; + public int dwAlarmInputNumber; + public int[] dwAlarmOutputNumber = new int[MAX_ALARMOUT]; + public int[] dwAlarmRelateChannel = new int[MAX_CHANNUM]; + public int[] dwChannel = new int[MAX_CHANNUM]; + public int[] dwDiskNumber = new int[MAX_DISKNUM]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmType", + "dwAlarmInputNumber", "dwAlarmOutputNumber", + "dwAlarmRelateChannel", "dwChannel", "dwDiskNumber"); + } + } + + public static class NET_DVR_TIME extends Structure { + public int dwYear; + public int dwMonth; + public int dwDay; + public int dwHour; + public int dwMinute; + public int dwSecond; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwYear", "dwMonth", "dwDay", + "dwHour", "dwMinute", "dwSecond"); + } + } + + + //public static class NET_DVR_NTPPARA extends Structure { + // public byte[] sNTPServer = new byte[64]; /* Domain Name or IP addr of NTP server */ + // public short wInterval; /* adjust time interval(hours) */ + // public byte byEnableNTP; /* enable NTP client 0-no,1-yes*/ + // public byte cTimeDifferenceH; /* UTC -12 ... +13 */ + // public byte cTimeDifferenceM; /* UTC minutes 0, 30, 45*/ + // public byte res1; + // public short wNtpPort; /* ntp server port 9000 default 123*/ + // public byte[] res2 = new byte[8]; + // @Override + // protected List getFieldOrder() { + // // TODO Auto-generated method stub + // return Arrays.asList("sNTPServer", "wInterval", "byEnableNTP", + // "cTimeDifferenceH", "cTimeDifferenceM", "res1", "wNtpPort", "res2"); + // } + //} + + public static class NET_DVR_SIMPLE_DAYTIME extends Structure { + public byte byHour; + public byte byMinute; + public byte bySecond; + public byte byRes; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byHour", "byMinute", "bySecond", + "byRes"); + } + } + + public static class NET_DVR_TIME_SEGMENT extends Structure { + public NET_DVR_SIMPLE_DAYTIME struBeginTime = new NET_DVR_SIMPLE_DAYTIME(); + public NET_DVR_SIMPLE_DAYTIME struEndTime = new NET_DVR_SIMPLE_DAYTIME(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struBeginTime", "struEndTime"); + } + } + + public static class NET_DVR_SINGLE_PLAN_SEGMENT extends Structure { + public byte byEnable; + public byte byDoorStatus; //0-invalid,1-dormant,2-alawys open,3-alawys closed + public byte byVerifyMode; //0-invalid,1-dormant,2-card+password 3-card ,4-card or password闁挎冻鎷�5-fingerprint闁挎冻鎷�6-fingerprint and password闁挎冻鎷�7-fingerprint or card闁挎冻鎷�8-fingerprint and card闁挎冻鎷�9-fingerprint and card and password + public byte[] byRes = new byte[5]; + public NET_DVR_TIME_SEGMENT struTimeSegment = new NET_DVR_TIME_SEGMENT(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnable", "byDoorStatus", "byVerifyMode", "byRes", + "struTimeSegment"); + } + } + + public static class NET_DVR_DATE extends Structure{ + public short wYear; + public byte byMonth; + public byte byDay; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wYear", "byMonth", "byDay"); + } + } + + //2-dimen array + public static class arrayStruPlanCfg extends Structure { + public NET_DVR_SINGLE_PLAN_SEGMENT[] struDaysPlanCfg = (NET_DVR_SINGLE_PLAN_SEGMENT[])new NET_DVR_SINGLE_PLAN_SEGMENT().toArray(MAX_TIMESEGMENT_V30); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struDaysPlanCfg"); + } + } + + public static class NET_DVR_WEEK_PLAN_CFG extends Structure { + public int dwSize; + public byte byEnable; //0-no,1-enabled + public byte[] byRes1 = new byte[3]; + public arrayStruPlanCfg[] struPlanCfg = (arrayStruPlanCfg[])new arrayStruPlanCfg().toArray(MAX_DAYS); + public byte[] byRes2 = new byte[16]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byRes1", "struPlanCfg", + "byRes2"); + } + } + + public static class NET_DVR_WEEK_PLAN_COND extends Structure { + public int dwSize; + public int dwWeekPlanNumber; //no. + public short wLocalControllerID; //in [1,64] + public byte[] byRes = new byte[106]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwWeekPlanNumber", "wLocalControllerID", "byRes"); + } + } + + public static class NET_DVR_HOLIDAY_PLAN_CFG extends Structure { + public int dwSize; + public byte byEnable; //0-no,1-enabled + public byte[] byRes1 = new byte[3]; + public NET_DVR_DATE struBeginDate = new NET_DVR_DATE(); + public NET_DVR_DATE struEndDate = new NET_DVR_DATE(); + public NET_DVR_SINGLE_PLAN_SEGMENT[] struPlanCfg = (NET_DVR_SINGLE_PLAN_SEGMENT[])new NET_DVR_SINGLE_PLAN_SEGMENT().toArray(MAX_TIMESEGMENT_V30); + public byte[] byRes2 = new byte[16]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byRes1", "struBeginDate", + "struEndDate", "struPlanCfg", "byRes2"); + } + } + + public static class NET_DVR_HOLIDAY_PLAN_COND extends Structure { + public int dwSize; + public int dwHolidayPlanNumber; + public short wLocalControllerID; //[1,64] + public byte[] byRes = new byte[106]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwHolidayPlanNumber", "wLocalControllerID", "byRes"); + } + } + + public static class NET_DVR_HOLIDAY_GROUP_CFG extends Structure { + public int dwSize; + public byte byEnable; //0-no,1-enabled + public byte[] byRes1 = new byte[3]; + public byte[] byGroupName = new byte[HOLIDAY_GROUP_NAME_LEN]; + public int[] dwHolidayPlanNo = new int[MAX_HOLIDAY_PLAN_NUM]; //0 invalid + public byte[] byRes2 = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byRes1", "byGroupName", + "dwHolidayPlanNo", "byRes2"); + } + } + + public static class NET_DVR_HOLIDAY_GROUP_COND extends Structure { + public int dwSize; + public int dwHolidayGroupNumber; + public short wLocalControllerID; //[1,64] + public byte[] byRes = new byte[106]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwHolidayGroupNumber", "wLocalControllerID", "byRes"); + } + } + + public static class NET_DVR_PLAN_TEMPLATE extends Structure { + public int dwSize; + public byte byEnable; + public byte[] byRes1= new byte[3]; + public byte[] byTemplateName = new byte[TEMPLATE_NAME_LEN]; + public int dwWeekPlanNo; //闁告稏鍔忛鎼佸礆閹烘梻妞介柛娆忓殩缁憋拷0濞戞挾鍎ゅΛ銈夊极閿燂拷 + public int[] dwHolidayGroupNo = new int[MAX_HOLIDAY_GROUP_NUM]; + public byte[] byRes2 = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byRes1", "byTemplateName", + "dwWeekPlanNo", "dwHolidayGroupNo", "byRes2"); + } + } + + public static class NET_DVR_PLAN_TEMPLATE_COND extends Structure { + public int dwSize; + public int dwPlanTemplateNumber; + public short wLocalControllerID; //[1,64] + public byte[] byRes = new byte[106]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwPlanTemplateNumber", "wLocalControllerID", "byRes"); + } + } + + public static class NET_DVR_DEVICECFG_V40 extends Structure { + public int dwSize; + public byte[] sDVRName = new byte[NAME_LEN]; //DVR name + public int dwDVRID; //DVR ID,//V1.4(0-99), V1.5(0-255) + public int dwRecycleRecord; //1-yes 0-no + //readonly + public byte[] sSerialNumber = new byte[SERIALNO_LEN]; + public int dwSoftwareVersion; //high 16 bit major,minor low 16 bit + public int dwSoftwareBuildDate; //0xYYYYMMDD + public int dwDSPSoftwareVersion; //DSP high 16 bit major,minor low 16 bit + public int dwDSPSoftwareBuildDate; //DSP 0xYYYYMMDD + public int dwPanelVersion; ////high 16 bit major,minor low 16 bit + public int dwHardwareVersion; ////16 MSBmajor,minor LSB 16 + public byte byAlarmInPortNum; + public byte byAlarmOutPortNum; + public byte byRS232Num; + public byte byRS485Num; + public byte byNetworkPortNum; + public byte byDiskCtrlNum; + public byte byDiskNum; + public byte byDVRType; //DVR type, 1:DVR 2:ATM DVR 3:DVS ...... + public byte byChanNum; + public byte byStartChan; //DVS-1,DVR - 1 + public byte byDecordChans; + public byte byVGANum; //VGA + public byte byUSBNum; //USB + public byte byAuxoutNum; + public byte byAudioNum; + public byte byIPChanNum; //low 8,high 8 see byHighIPChanNum + public byte byZeroChanNum; + public byte bySupport; //0-not support,1-support + //bySupport & 0x1, intelligent search + //bySupport & 0x2, backup + //bySupport & 0x4, compressinfo config + //bySupport & 0x8, multi netcard + //bySupport & 0x10, SADP + //bySupport & 0x20, Raid card + //bySupport & 0x40, IPSAN search + //bySupport & 0x80, rtp over rtsp + public byte byEsataUseage; //Esata ,0-backup,1-record + public byte byIPCPlug; //0-close ,1-open + public byte byStorageMode; //0-HDD group,1-quota, 2-frame extract + public byte bySupport1; //0-not support,1-support + //bySupport1 & 0x1, snmp v30 + //bySupport1 & 0x2, playback or download + //bySupport1 & 0x4, alarm priority + //bySupport1 & 0x8, set alarm time extend + //bySupport1 & 0x10, multi HDD(over 33) + //bySupport1 & 0x20, rtsp over http + public short wDevType; + public byte[] byDevTypeName = new byte[DEV_TYPE_NAME_LEN]; + public byte bySupport2; + //bySupport2 & 0x1, OSD extra + public byte byAnalogAlarmInPortNum; + public byte byStartAlarmInNo; + public byte byStartAlarmOutNo; + public byte byStartIPAlarmInNo; + public byte byStartIPAlarmOutNo; + public byte byHighIPChanNum; + public byte[] byRes2= new byte[9]; //reserved + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "sDVRName", "dwDVRID", "dwRecycleRecord", + "sSerialNumber", "dwSoftwareVersion", "dwSoftwareBuildDate", "dwDSPSoftwareVersion", + "dwDSPSoftwareBuildDate", "dwPanelVersion", "dwHardwareVersion", "byAlarmInPortNum", + "byAlarmOutPortNum", "byRS232Num", "byRS485Num", "byNetworkPortNum", "byDiskCtrlNum", + "byDiskNum", "byDVRType", "byChanNum", "byStartChan", "byDecordChans", "byVGANum", + "byUSBNum", "byAuxoutNum", "byAudioNum", "byIPChanNum", "byZeroChanNum", "bySupport", + "byEsataUseage", "byIPCPlug", "byStorageMode", "bySupport1", "wDevType", "byDevTypeName", + "bySupport2", "byAnalogAlarmInPortNum", "byStartAlarmInNo", "byStartAlarmOutNo", + "byStartIPAlarmInNo", "byStartIPAlarmOutNo", "byHighIPChanNum", "byRes2"); + } + } + + public static class NET_DVR_DOOR_CFG extends Structure { + public int dwSize; + public byte[] byDoorName = new byte[DOOR_NAME_LEN]; + public byte byMagneticType; + public byte byOpenButtonType; + public byte byOpenDuration; + public byte byDisabledOpenDuration; + public byte byMagneticAlarmTimeout; + public byte byEnableDoorLock; + public byte byEnableLeaderCard; + public byte byLeaderCardMode; + public int dwLeaderCardOpenDuration; + public byte[] byStressPassword = new byte[STRESS_PASSWORD_LEN]; + public byte[] bySuperPassword = new byte[SUPER_PASSWORD_LEN]; + public byte[] byUnlockPassword = new byte[UNLOCK_PASSWORD_LEN]; + public byte byUseLocalController; + public byte byRes1; + public short wLocalControllerID; + public short wLocalControllerDoorNumber; + public short wLocalControllerStatus; + public byte byLockInputCheck; + public byte byLockInputType; + public byte byDoorTerminalMode; + public byte byOpenButton; + public byte byLadderControlDelayTime; + public byte[] byRes2 = new byte[43]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byDoorName", "byMagneticType", "byOpenButtonType", + "byOpenDuration", "byDisabledOpenDuration", "byMagneticAlarmTimeout", "byEnableDoorLock", + "byEnableLeaderCard", "byLeaderCardMode", "dwLeaderCardOpenDuration", "byStressPassword", + "bySuperPassword", "byUnlockPassword", "byUseLocalController", "byRes1", "wLocalControllerID", + "wLocalControllerDoorNumber", "wLocalControllerStatus", "byLockInputCheck", "byLockInputType", + "byDoorTerminalMode", "byOpenButton", "byLadderControlDelayTime", "byRes2"); + } + } + + public static class NET_DVR_CARD_READER_CFG_V50 extends Structure { + public int dwSize; + public byte byEnable; + public byte byCardReaderType; //,1-DS-K110XM/MK/C/CK,2-DS-K192AM/AMP,3-DS-K192BM/BMP闁挎冻鎷�4-DS-K182AM/AMP闁挎冻鎷�5-DS-K182BM/BMP闁挎冻鎷�6-DS-K182AMF/ACF闁挎冻鎷�7-闂傚闄勯悧鎾箣閿燂拷485濞戞挸绉村﹢顏嗙棯閸栵紕绀�8- DS-K1101M/MK闁挎冻鎷�9- DS-K1101C/CK闁挎冻鎷�10- DS-K1102M/MK/M-A闁挎冻鎷�11- DS-K1102C/CK闁挎冻鎷�12- DS-K1103M/MK闁挎冻鎷�13- DS-K1103C/CK闁挎冻鎷�14- DS-K1104M/MK闁挎冻鎷�15- DS-K1104C/CK闁挎冻鎷�16- DS-K1102S/SK/S-A闁挎冻鎷�17- DS-K1102G/GK闁挎冻鎷�18- DS-K1100S-B闁挎冻鎷�19- DS-K1102EM/EMK闁挎冻鎷�20- DS-K1102E/EK闁挎冻鎷�21- DS-K1200EF闁挎冻鎷�22- DS-K1200MF闁挎冻鎷�23- DS-K1200CF闁挎冻鎷�24- DS-K1300EF闁挎冻鎷�25- DS-K1300MF闁挎冻鎷�26- DS-K1300CF闁挎冻鎷�27- DS-K1105E闁挎冻鎷�28- DS-K1105M闁挎冻鎷�29- DS-K1105C闁挎冻鎷�30- DS-K182AMF闁挎冻鎷�31- DS-K196AMF闁挎冻鎷�32-DS-K194AMP闁挎冻鎷�33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C闁挎冻鎷�35-DS-K1T105E/E-C/M/M-C/C/C-C,36-DS-K1T803F/F-M/F-S/F-E,37-DS-K1A801F/F-M/F-S/F-E,38-DS-K1107M/MK,39-DS-K1107E/EK,40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H + public byte byOkLedPolarity; + public byte byErrorLedPolarity; + public byte byBuzzerPolarity; + public byte bySwipeInterval; + public byte byPressTimeout; + public byte byEnableFailAlarm; + public byte byMaxReadCardFailNum; + public byte byEnableTamperCheck; + public byte byOfflineCheckTime; + public byte byFingerPrintCheckLevel; + public byte byUseLocalController; + public byte byRes1; + public short wLocalControllerID; + public short wLocalControllerReaderID; + public short wCardReaderChannel; + public byte byFingerPrintImageQuality; + public byte byFingerPrintContrastTimeOut; + public byte byFingerPrintRecogizeInterval; + public byte byFingerPrintMatchFastMode; + public byte byFingerPrintModuleSensitive; + public byte byFingerPrintModuleLightCondition; + public byte byFaceMatchThresholdN; + public byte byFaceQuality; + public byte byFaceRecogizeTimeOut; + public byte byFaceRecogizeInterval; + public short wCardReaderFunction; + public byte[] byCardReaderDescription = new byte[CARD_READER_DESCRIPTION]; + public short wFaceImageSensitometry; + public byte byLivingBodyDetect; + public byte byFaceMatchThreshold1; + public byte[] byRes = new byte[256]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byCardReaderType", "byOkLedPolarity", + "byErrorLedPolarity", "byBuzzerPolarity", "bySwipeInterval", "byPressTimeout", + "byEnableFailAlarm", "byMaxReadCardFailNum", "byEnableTamperCheck", "byOfflineCheckTime", + "byFingerPrintCheckLevel", "byUseLocalController", "byRes1", "wLocalControllerID", "wLocalControllerReaderID", + "wCardReaderChannel", "byFingerPrintImageQuality", "byFingerPrintContrastTimeOut", "byFingerPrintRecogizeInterval", "byFingerPrintMatchFastMode", + "byFingerPrintModuleSensitive", "byFingerPrintModuleLightCondition", "byFaceMatchThresholdN", + "byFaceQuality", "byFaceRecogizeTimeOut", "byFaceRecogizeInterval", "wCardReaderFunction", + "byCardReaderDescription", "wFaceImageSensitometry", "byLivingBodyDetect", "byFaceMatchThreshold1", "byRes"); + } + } + + public static class NET_DVR_ACS_WORK_STATUS extends Structure + { + public int dwSize; + public byte[] byDoorLockStatus = new byte[MAX_DOOR_NUM]; + public byte[] byDoorStatus = new byte[MAX_DOOR_NUM]; + public byte[] byMagneticStatus = new byte[MAX_DOOR_NUM]; + public byte[] byCaseStatus = new byte[MAX_CASE_SENSOR_NUM]; + public short wBatteryVoltage; + public byte byBatteryLowVoltage; + public byte byPowerSupplyStatus; + public byte byMultiDoorInterlockStatus; + public byte byAntiSneakStatus; + public byte byHostAntiDismantleStatus; + public byte byIndicatorLightStatus; + public byte[] byCardReaderOnlineStatus = new byte[MAX_CARD_READER_NUM]; + public byte[] byCardReaderAntiDismantleStatus = new byte[MAX_CARD_READER_NUM]; + public byte[] byCardReaderVerifyMode = new byte[MAX_CARD_READER_NUM]; + public byte[] bySetupAlarmStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM]; + public byte[] byAlarmInStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM]; + public byte[] byAlarmOutStatus = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; + public int dwCardNum; + public byte[] byRes2 = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","byDoorLockStatus","byDoorStatus","byMagneticStatus","byCaseStatus","wBatteryVoltage","byBatteryLowVoltage", + "byPowerSupplyStatus","byMultiDoorInterlockStatus","byAntiSneakStatus","byHostAntiDismantleStatus","byIndicatorLightStatus", + "byCardReaderOnlineStatus","byCardReaderAntiDismantleStatus","byCardReaderVerifyMode","bySetupAlarmStatus","byAlarmInStatus", + "byAlarmOutStatus","dwCardNum","byRes2"); + } + } + + public static class NET_DVR_ACS_WORK_STATUS_V50 extends Structure { + public int dwSize; + public byte[] byDoorLockStatus = new byte[MAX_DOOR_NUM_256]; + public byte[] byDoorStatus = new byte[MAX_DOOR_NUM_256]; + public byte[] byMagneticStatus = new byte[MAX_DOOR_NUM_256]; + public byte[] byCaseStatus = new byte[MAX_CASE_SENSOR_NUM]; + public short wBatteryVoltage; + public byte byBatteryLowVoltage; + public byte byPowerSupplyStatus; + public byte byMultiDoorInterlockStatus; + public byte byAntiSneakStatus; + public byte byHostAntiDismantleStatus; + public byte byIndicatorLightStatus; + public byte[] byCardReaderOnlineStatus = new byte[MAX_CARD_READER_NUM_512]; + public byte[] byCardReaderAntiDismantleStatus = new byte[MAX_CARD_READER_NUM_512]; + public byte[] byCardReaderVerifyMode = new byte[MAX_CARD_READER_NUM_512]; + public byte[] bySetupAlarmStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM]; + public byte[] byAlarmInStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM]; + public byte[] byAlarmOutStatus = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; + public int dwCardNum; + public byte byFireAlarmStatus; + public byte[] byRes2 = new byte[123]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byDoorLockStatus", "byDoorStatus", "byMagneticStatus", + "byCaseStatus", "wBatteryVoltage", "byBatteryLowVoltage", "byPowerSupplyStatus", "byMultiDoorInterlockStatus", + "byAntiSneakStatus", "byHostAntiDismantleStatus", "byIndicatorLightStatus", "byCardReaderOnlineStatus", + "byCardReaderAntiDismantleStatus", "byCardReaderVerifyMode", "bySetupAlarmStatus", "byAlarmInStatus", "byAlarmOutStatus", + "dwCardNum", "byFireAlarmStatus", "byRes2"); + } + } + + public static class NET_DVR_ACS_PARAM_TYPE extends Structure { + public int dwSize; + public int dwParamType; + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwParamType", "byRes"); + } + } + + public static class NET_DVR_WIFI_WORKMODE extends Structure { + public int dwSize; + public int dwNetworkInterfaceMode; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwNetworkInterfaceMode"); + } + } + + public static class NET_DVR_COMPLETE_RESTORE_INFO extends Structure { + public int dwSize ; + public int dwChannel; + public byte[] byRes = new byte[64]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwChannel", "byRes"); + } + } + + public static class NET_DVR_XML_CONFIG_INPUT extends Structure + { + public int dwSize; + public Pointer lpRequestUrl; + public int dwRequestUrlLen; + public Pointer lpInBuffer; + public int dwInBufferSize; + public int dwRecvTimeOut; + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "lpRequestUrl", "dwRequestUrlLen", "lpInBuffer", "dwInBufferSize", + "dwRecvTimeOut", "byRes"); + } + } + + public static class NET_DVR_XML_CONFIG_OUTPUT extends Structure { + public int dwSize; + public Pointer lpOutBuffer; + public int dwOutBufferSize; + public int dwReturnedXMLSize; + public Pointer lpStatusBuffer; + public int dwStatusSize; + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "lpOutBuffer", + "dwOutBufferSize", "dwReturnedXMLSize", "lpStatusBuffer", + "dwStatusSize", "byRes"); + } + } + + public static class NET_DVR_CALL_ROOM_CFG extends Structure { + public int dwSize; + public short nFloorNumber; + public short wRoomNumber; + public byte byManageCenter; + public byte[] byRes = new byte[127]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "nFloorNumber", "wRoomNumber", "byManageCenter", "byRes"); + } + } + + public static class NET_DVR_ALARMER extends Structure { + public byte byUserIDValid; + public byte bySerialValid; + public byte byVersionValid; + public byte byDeviceNameValid; + public byte byMacAddrValid; + public byte byLinkPortValid; + public byte byDeviceIPValid; + public byte bySocketIPValid; + public int lUserID; + public byte[] sSerialNumber = new byte[SERIALNO_LEN]; + public int dwDeviceVersion; + public byte[] sDeviceName = new byte[NAME_LEN]; + public byte[] byMacAddr = new byte[MACADDR_LEN]; + public short wLinkPort; + public byte[] sDeviceIP = new byte[128]; + public byte[] sSocketIP = new byte[128]; + public byte byIpProtocol; + public byte[] byRes2 = new byte[11]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byUserIDValid", + "bySerialValid", "byVersionValid", "byDeviceNameValid", + "byMacAddrValid", "byLinkPortValid", "byDeviceIPValid", + "bySocketIPValid", "lUserID", "sSerialNumber", + "dwDeviceVersion", "sDeviceName", "byMacAddr", "wLinkPort", + "sDeviceIP", "sSocketIP", "byIpProtocol", "byRes2"); + } + } + + public static class NET_DVR_ALARMINFO_V30 extends Structure { + public int dwAlarmType; + public int dwAlarmInputNumber; + public byte[] byAlarmOutputNumber = new byte[MAX_ALARMOUT_V30]; + public byte[] byAlarmRelateChannel = new byte[MAX_CHANNUM_V30]; + public byte[] byChannel = new byte[MAX_CHANNUM_V30]; + public byte[] byDiskNumber = new byte[MAX_DISKNUM_V30]; + + public NET_DVR_ALARMINFO_V30(Pointer p) { + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmType", + "dwAlarmInputNumber", "byAlarmOutputNumber", + "byAlarmRelateChannel", "byChannel", "byDiskNumber"); + } + } + + public static class struIOAlarm extends Structure{ + public int dwAlarmInputNo; + public int dwTrigerAlarmOutNum; + public int dwTrigerRecordChanNum; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmInputNo","dwTrigerAlarmOutNum", "dwTrigerRecordChanNum"); + } + } + + public static class NET_DVR_TIME_EX extends Structure{ + public short wYear; + public byte byMonth; + public byte byDay; + public byte byHour; + public byte byMinute; + public byte bySecond; + public byte byRes; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wYear","byMonth", "byDay", "byHour","byMinute", "bySecond", "byRes"); + } + } + + public static class NET_VCA_DEV_INFO extends Structure{ + public NET_DVR_IPADDR struDevIP = new NET_DVR_IPADDR(); + public short wPort; + public byte byChannel; + public byte byIvmsChannel; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struDevIP", "wPort", "byChannel", "byIvmsChannel"); + } + } + + public static class struRecordingHost extends Structure{ + public byte bySubAlarmType; + public byte[] byRes1 = new byte[3]; + public NET_DVR_TIME_EX struRecordEndTime = new NET_DVR_TIME_EX(); + public byte[] byRes = new byte[116]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("bySubAlarmType", "byRes1", "struRecordEndTime", "byRes"); + } + } + + public static class struAlarmHardDisk extends Structure{ + public int dwAlarmHardDiskNum; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmHardDiskNum"); + } + } + + public static class struAlarmChannel extends Structure{ + public int dwAlarmChanNum; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmChanNum"); + } + } + + public static class uStruAlarm extends Union + { + public byte[] byUnionLen = new byte[128]; + public struIOAlarm struioAlarm = new struIOAlarm(); + public struAlarmHardDisk strualarmHardDisk = new struAlarmHardDisk(); + public struAlarmChannel sstrualarmChannel = new struAlarmChannel(); + public struRecordingHost strurecordingHost = new struRecordingHost(); + } + + public static class NET_DVR_ALRAM_FIXED_HEADER extends Structure{ + public int dwAlarmType; + public NET_DVR_TIME_EX struAlarmTime = new NET_DVR_TIME_EX(); + public uStruAlarm ustruAlarm = new uStruAlarm(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmType", "struAlarmTime", "ustruAlarm"); + } + } + + public static class NET_DVR_ALARMINFO_V40 extends Structure { + public NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader = new NET_DVR_ALRAM_FIXED_HEADER(); + public Pointer pAlarmData; + public NET_DVR_ALARMINFO_V40(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struAlarmFixedHeader", "pAlarmData"); + } + } + + public static class NET_DVR_PLATE_INFO extends Structure{ + public byte byPlateType; + public byte byColor; + public byte byBright; + public byte byLicenseLen; + public byte byEntireBelieve; + public byte byRegion; + public byte byCountry; + public byte[] byRes = new byte[33]; + public NET_VCA_RECT struPlateRect = new NET_VCA_RECT(); + public byte[] sLicense = new byte[MAX_LICENSE_LEN]; + public byte[] byBelieve = new byte[MAX_LICENSE_LEN]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byPlateType", "byColor", "byBright", "byLicenseLen", "byEntireBelieve", "byRegion", + "byCountry", "byRes", "struPlateRect", "sLicense", "byBelieve"); + } + + } + + public static class NET_DVR_VEHICLE_INFO extends Structure{ + public int dwIndex; + public byte byVehicleType; + public byte byColorDepth; + public byte byColor; + public byte byRadarState; + public short wSpeed; + public short wLength; + public byte byIllegalType; + public byte byVehicleLogoRecog; + public byte byVehicleSubLogoRecog; + public byte byVehicleModel; + public byte[] byCustomInfo = new byte[16]; + public short wVehicleLogoRecog; + public byte byIsParking; + public byte byRes; + public int dwParkingTime; //Parking time, unit: s + public byte byBelieve; //byIllegalType believe,1-100 + public byte byCurrentWorkerNumber;//Current Operating Number + public byte byCurrentGoodsLoadingRate;//Current cargo loading rate 0-empty 1-less 2-medium 3-more 4-full + public byte byDoorsStatus;//Door status 0 - Door closure 1 - Door opening + public byte[] byRes3 = new byte[4]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwIndex", "byVehicleType", "byColorDepth", "byColor", "byRadarState", "wSpeed", + "wLength", "byIllegalType", "byVehicleLogoRecog", "byVehicleSubLogoRecog", "byVehicleModel", + "byCustomInfo", "wVehicleLogoRecog", "byIsParking","byRes","dwParkingTime","byBelieve","byCurrentWorkerNumber","byCurrentGoodsLoadingRate","byDoorsStatus","byRes3"); + } + } + + public static class NET_DVR_PLATE_RESULT extends Structure{ + public int dwSize; + public byte byResultType; + public byte byChanIndex; + public short wAlarmRecordID; + public int dwRelativeTime; + public byte[] byAbsTime = new byte[32]; + public int dwPicLen; + public int dwPicPlateLen; + public int dwVideoLen; + public byte byTrafficLight; + public byte byPicNum; + public byte byDriveChan; + public byte byVehicleType; + public int dwBinPicLen; + public int dwCarPicLen; + public int dwFarCarPicLen; + public ByteByReference pBuffer3; + public ByteByReference pBuffer4; + public ByteByReference pBuffer5; + + public byte byRelaLaneDirectionType; + public byte byCarDirectionType; + public byte[] byRes3 = new byte[6]; + public NET_DVR_PLATE_INFO struPlateInfo = new NET_DVR_PLATE_INFO(); + public NET_DVR_VEHICLE_INFO struVehicleInfo = new NET_DVR_VEHICLE_INFO(); + public ByteByReference pBuffer1; + public ByteByReference pBuffer2; + + public NET_DVR_PLATE_RESULT(){ + super(); + } + public NET_DVR_PLATE_RESULT(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byResultType", "byChanIndex", "wAlarmRecordID", "dwRelativeTime", "byAbsTime", + "dwPicLen", "dwPicPlateLen", "dwVideoLen", "byTrafficLight", "byPicNum", "byDriveChan", "byVehicleType", + "dwBinPicLen", "dwCarPicLen", "dwFarCarPicLen", "pBuffer3", "pBuffer4", "pBuffer5", "byRelaLaneDirectionType","byCarDirectionType", + "byRes3", "struPlateInfo", "struVehicleInfo", "pBuffer1", "pBuffer2"); + } + } + + public static class NET_ITS_PICTURE_INFO extends Structure{ + public int dwDataLen; + public byte byType; + public byte byDataType; + public byte byCloseUpType; + public byte byPicRecogMode; + public int dwRedLightTime; + public byte[] byAbsTime = new byte[32]; + public NET_VCA_RECT struPlateRect; + public NET_VCA_RECT struPlateRecgRect; + public ByteByReference pBuffer; + public int dwUTCTime; + public byte byCompatibleAblity; + public byte[] byRes2 = new byte[7]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwDataLen", "byType", "byDataType", "byCloseUpType", "byPicRecogMode", "dwRedLightTime", + "byAbsTime", "struPlateRect", "struPlateRecgRect", "pBuffer", "dwUTCTime", "byCompatibleAblity", "byRes2"); + } + } + + public static class NET_ITS_PLATE_RESULT extends Structure{ + public int dwSize; + public int dwMatchNo; + public byte byGroupNum; + public byte byPicNo; + public byte bySecondCam; + public byte byFeaturePicNo; + public byte byDriveChan; + public byte byVehicleType; + public byte byDetSceneID; + public byte byVehicleAttribute; + public short wIllegalType; + public byte[] byIllegalSubType = new byte[8]; + public byte byPostPicNo; + public byte byChanIndex; + public short wSpeedLimit; + public byte[] byRes2 = new byte[2]; + public NET_DVR_PLATE_INFO struPlateInfo = new NET_DVR_PLATE_INFO(); + public NET_DVR_VEHICLE_INFO struVehicleInfo = new NET_DVR_VEHICLE_INFO(); + public byte[] byMonitoringSiteID = new byte[48]; + public byte[] byDeviceID = new byte[48]; + public byte byDir; + public byte byDetectType; + public byte byRelaLaneDirectionType; + public byte byCarDirectionType; + public int dwCustomIllegalType; + public ByteByReference pIllegalInfoBuf; + public byte byIllegalFromatType; + public byte byPendant; + public byte byDataAnalysis; + public byte byYellowLabelCar; + public byte byDangerousVehicles; + public byte byPilotSafebelt; + public byte byCopilotSafebelt; + public byte byPilotSunVisor; + public byte byCopilotSunVisor; + public byte byPilotCall; + public byte byBarrierGateCtrlType; + public byte byAlarmDataType; + public NET_DVR_TIME_V30 struSnapFirstPicTime = new NET_DVR_TIME_V30(); + public int dwIllegalTime; + public int dwPicNum; + public NET_ITS_PICTURE_INFO[] struPicInfo = (NET_ITS_PICTURE_INFO[])new NET_ITS_PICTURE_INFO().toArray(6); + + public NET_ITS_PLATE_RESULT(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwMatchNo", "byGroupNum", "byPicNo", "bySecondCam", "byFeaturePicNo","byDriveChan", + "byVehicleType", "byDetSceneID", "byVehicleAttribute", "wIllegalType", "byIllegalSubType", "byPostPicNo", + "byChanIndex", "wSpeedLimit", "byRes2", "struPlateInfo", "struVehicleInfo", "byMonitoringSiteID", "byDeviceID", + "byDir", "byDetectType", "byRelaLaneDirectionType", "byCarDirectionType", "dwCustomIllegalType", + "pIllegalInfoBuf","byIllegalFromatType", "byPendant", "byDataAnalysis", "byYellowLabelCar", "byDangerousVehicles", "byPilotSafebelt", + "byCopilotSafebelt", "byPilotSunVisor", "byCopilotSunVisor", "byPilotCall", "byBarrierGateCtrlType", "byAlarmDataType", + "struSnapFirstPicTime", "dwIllegalTime", "dwPicNum", "struPicInfo"); + } + } + + public static class NET_VCA_TARGET_INFO extends Structure { + public int dwID; + public NET_VCA_RECT struRect = new NET_VCA_RECT(); + public byte[] byRes = new byte[4]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwID", "struRect", "byRes"); + } + + } + + public static class NET_VCA_TRAVERSE_PLANE extends Structure { + public NET_VCA_LINE struPlaneBottom = new NET_VCA_LINE(); + public int dwCrossDirection; + public byte bySensitivity; + public byte byPlaneHeight; + public byte byDetectionTarget; + public byte[] byRes2 = new byte[37]; + + public NET_VCA_TRAVERSE_PLANE(Pointer pointer){ + super(pointer); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struPlaneBottom", "dwCrossDirection", "bySensitivity", "byPlaneHeight", "byDetectionTarget", "byRes2"); + } + } + + public static class NET_VCA_AREA extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public byte byDetectionTarget; + public byte[] byRes = new byte[7]; + + public NET_VCA_AREA(Pointer pointer) { + // TODO Auto-generated constructor stub + super(pointer); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "byDetectionTarget", "byRes"); + } + } + + public static class NET_VCA_INTRUSION extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte byRate; + public byte byDetectionTarget; + public byte[] byRes = new byte[3]; + + public NET_VCA_INTRUSION(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byRate", "byDetectionTarget", "byRes"); + } + } + + public static class NET_VCA_LOITER extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte[] byRes = new byte[6]; + + + public NET_VCA_LOITER(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "byRes"); + } + } + + public static class NET_VCA_TAKE_LEFT extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte[] byRes = new byte[6]; + + + public NET_VCA_TAKE_LEFT(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "byRes"); + } + } + + public static class NET_VCA_PARKING extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte[] byRes = new byte[6]; + + public NET_VCA_PARKING(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "byRes"); + } + } + + public static class NET_VCA_RUN extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public float fRunDistance; + public byte bySensitivity; + public byte byMode; + public byte byDetectionTarget; + public byte byRes; + + public NET_VCA_RUN(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "fRunDistance", "bySensitivity", "byMode", "byDetectionTarget", "byRes"); + } + } + + public static class NET_VCA_HIGH_DENSITY extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public float fDensity; + public byte bySensitivity; + public byte byRes; + public short wDuration; + + public NET_VCA_HIGH_DENSITY(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "fDensity", "bySensitivity", "byRes", "wDuration"); + } + } + + public static class NET_VCA_VIOLENT_MOTION extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte byMode; + public byte[] byRes = new byte[4]; + + public NET_VCA_VIOLENT_MOTION(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byMode", "byRes"); + } + } + + public static class NET_VCA_REACH_HIGHT extends Structure { + public NET_VCA_LINE struVcaLine = new NET_VCA_LINE(); + public short wDuration; + public byte[] byRes = new byte[6]; + + public NET_VCA_REACH_HIGHT(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struVcaLine", "wDuration", "byRes"); + } + } + + public static class NET_VCA_GET_UP extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte byMode; + public byte bySensitivity; + public byte[] byRes = new byte[4]; + + public NET_VCA_GET_UP(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "byMode", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_LEFT extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte[] byRes = new byte[5]; + + public NET_VCA_LEFT(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_TAKE extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte[] byRes = new byte[5]; + + public NET_VCA_TAKE(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_HUMAN_ENTER extends Structure { + public int[] dwRes = new int[23]; + + public NET_VCA_HUMAN_ENTER(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwRes"); + } + } + + public static class NET_VCA_OVER_TIME extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte[] byRes = new byte[6]; + + public NET_VCA_OVER_TIME(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "byRes"); + } + } + + public static class NET_VCA_STICK_UP extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte[] byRes = new byte[5]; + + public NET_VCA_STICK_UP(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_SCANNER extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte[] byRes = new byte[5]; + + public NET_VCA_SCANNER(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_LEAVE_POSITION extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wLeaveDelay; + public short wStaticDelay; + public byte byMode; + public byte byPersonType; + public byte[] byRes = new byte[2]; + + public NET_VCA_LEAVE_POSITION(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wLeaveDelay", "wStaticDelay", "byMode", "byPersonType", "byRes"); + } + } + + public static class NET_VCA_TRAIL extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wRes; + public byte bySensitivity; + public byte[] byRes = new byte[5]; + + public NET_VCA_TRAIL(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wRes", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_FALL_DOWN extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDuration; + public byte bySensitivity; + public byte byHeightThreshold; + public byte[] byRes = new byte[4]; + + public NET_VCA_FALL_DOWN(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDuration", "bySensitivity", "byHeightThreshold", "byRes"); + } + } + + public static class NET_VCA_AUDIO_ABNORMAL extends Structure { + public short wDecibel; + public byte bySensitivity; + public byte byAudioMode; + public byte byEnable; + public byte byThreshold; + public byte[] byRes = new byte[54]; + + public NET_VCA_AUDIO_ABNORMAL(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wDecibel", "bySensitivity", "byAudioMode", "byEnable", "byThreshold", "byRes"); + } + } + + public static class NET_VCA_ADV_REACH_HEIGHT extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public int dwCrossDirection; + public byte[] byRes = new byte[4]; + + public NET_VCA_ADV_REACH_HEIGHT(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "dwCrossDirection", "byRes"); + } + } + + public static class NET_VCA_TOILET_TARRY extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDelay; + public byte[] byRes = new byte[6]; + + public NET_VCA_TOILET_TARRY(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDelay", "byRes"); + } + } + + public static class NET_VCA_YARD_TARRY extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public short wDelay; + public byte[] byRes = new byte[6]; + + public NET_VCA_YARD_TARRY(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "wDelay", "byRes"); + } + } + + public static class NET_VCA_ADV_TRAVERSE_PLANE extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public int dwCrossDirection; + public byte bySensitivity; + public byte[] byRes = new byte[3]; + + public NET_VCA_ADV_TRAVERSE_PLANE(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "dwCrossDirection", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_STANDUP extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public byte bySensitivity; + public byte byHeightThreshold; + public short wDuration; + public byte[] byRes = new byte[4]; + + public NET_VCA_STANDUP(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "bySensitivity", "byHeightThreshold", "wDuration", "byRes"); + } + } + + public static class NET_VCA_PEOPLENUM_CHANGE extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public byte bySensitivity; + public byte byPeopleNumThreshold; + public byte byDetectMode; + public byte byNoneStateEffective; + public short wDuration; + public byte[] byRes = new byte[2]; + + public NET_VCA_PEOPLENUM_CHANGE(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "bySensitivity", "byPeopleNumThreshold", "byDetectMode", "byNoneStateEffective", "wDuration", "byRes"); + } + } + + public static class NET_VCA_SPACING_CHANGE extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public float fSpacingThreshold; + public byte bySensitivity; + public byte byDetectMode; + public short wDuration; + + public NET_VCA_SPACING_CHANGE(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "fSpacingThreshold", "bySensitivity", "byDetectMode", "wDuration"); + } + } + + public static class NET_VCA_RELATE_RULE_PARAM extends Structure { + public byte byRuleID; + public byte byRes; + public short wEventType; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRuleID", "byRes", "wEventType"); + } + } + + public static class NET_VCA_COMBINED_RULE extends Structure { + public byte byRuleSequence; + public byte[] byRes = new byte[7]; + public int dwMinInterval; + public int dwMaxInterval; + public NET_VCA_RELATE_RULE_PARAM struRule1Raram = new NET_VCA_RELATE_RULE_PARAM(); + public NET_VCA_RELATE_RULE_PARAM struRule2Raram = new NET_VCA_RELATE_RULE_PARAM(); + public byte[] byRes1 = new byte[36]; + + public NET_VCA_COMBINED_RULE(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRuleSequence", "byRes", "dwMinInterval", "dwMaxInterval", "struRule1Raram", "struRule2Raram", "byRes1"); + } + } + + public static class NET_VCA_SIT_QUIETLY extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public int dwDuration; + public byte[] byRes = new byte[4]; + + public NET_VCA_SIT_QUIETLY(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "dwDuration", "byRes"); + } + } + + public static class NET_VCA_HIGH_DENSITY_STATUS extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public float fDensity; + public byte bySensitivity; + public byte[] byRes = new byte[3]; + + public NET_VCA_HIGH_DENSITY_STATUS(Pointer p) { + super(p); + // TODO Auto-generated constructor stub + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "fDensity", "bySensitivity", "byRes"); + } + } + + public static class NET_VCA_EVENT_UNION extends Union + { + public int[] uLen = new int[23]; + //not list all the event structure,it's too slow,see COMM_ALARM_RULE in JNATest + } + + public static class NET_VCA_RULE_INFO extends Structure { + public byte byRuleID; + public byte byRes; + public short wEventTypeEx; + public byte[] byRuleName = new byte[NAME_LEN]; + public int dwEventType; + public NET_VCA_EVENT_UNION uEventParam = new NET_VCA_EVENT_UNION(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRuleID", "byRes", "wEventTypeEx", "byRuleName", "dwEventType", "uEventParam"); + } + } + + public static class NET_VCA_RULE_ALARM extends Structure { + public int dwSize; + public int dwRelativeTime; + public int dwAbsTime; + public NET_VCA_RULE_INFO struRuleInfo = new NET_VCA_RULE_INFO(); + public NET_VCA_TARGET_INFO struTargetInfo = new NET_VCA_TARGET_INFO(); + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public int dwPicDataLen; + public byte byPicType; + public byte byRelAlarmPicNum; + public byte bySmart; + public byte byRes; + public int dwAlarmID; + public byte[] byRes2 = new byte[8]; + public ByteByReference pImage; + + public NET_VCA_RULE_ALARM(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwRelativeTime", "dwAbsTime", "struRuleInfo", "struTargetInfo", "struDevInfo", + "dwPicDataLen", "byPicType", "byRelAlarmPicNum", "bySmart", "byRes", "dwAlarmID", "byRes2", "pImage"); + } + } + + public static class NET_DVR_STREAM_INFO extends Structure { + public int dwSize; + public byte[] byID = new byte[STREAM_ID_LEN]; + public int dwChannel; + public byte[] byRes = new byte[32]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byID", "dwChannel", + "byRes"); + } + } + + public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND extends + Structure { + public int dwSize; + public NET_DVR_STREAM_INFO struStreamInfo = new NET_DVR_STREAM_INFO(); + public int dwStreamType; + public byte byRes[] = new byte[32]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struStreamInfo", + "dwStreamType", "byRes"); + } + } + + public static class NET_DVR_COMPRESSION_INFO_V30 extends Structure { + public byte byStreamType; + public byte byResolution; + public byte byBitrateType; + public byte byPicQuality; + public int dwVideoBitrate; + public int dwVideoFrameRate; + public short wIntervalFrameI; + public byte byIntervalBPFrame; + public byte byENumber; + public byte byVideoEncType; + public byte byAudioEncType; + public byte[] byres = new byte[10]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byStreamType", "byResolution", + "byBitrateType", "byPicQuality", "dwVideoBitrate", + "dwVideoFrameRate", "wIntervalFrameI", "byIntervalBPFrame", + "byENumber", "byVideoEncType", "byAudioEncType", "byres"); + } + } + + public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG extends Structure { + public int dwSize; + public int dwStreamType; + public NET_DVR_COMPRESSION_INFO_V30 struStreamPara = new NET_DVR_COMPRESSION_INFO_V30(); + public byte[] byRes = new byte[80]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwStreamType", + "struStreamPara", "byRes"); + } + } + + public static class INT_ARRAY extends Structure { + public int[] iValue; + + public INT_ARRAY(int iLen) { + iValue = new int[iLen]; + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("iValue"); + } + } + + public static class BYTE_ARRAY extends Structure { + public byte[] byValue; + + public BYTE_ARRAY(int iLen) { + byValue = new byte[iLen]; + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byValue"); + } + } + + + + public static class NET_DVR_LOITERING_REGION extends Structure { + public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON(); + public byte bySensitivity; + public byte byTimeThreshold; + public byte[] byRes = new byte[62]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRegion", "bySensitivity", + "byTimeThreshold", "byRes"); + } + } + + public static class NET_DVR_LOITERING_DETECTION extends Structure { + public int dwSize; + public byte byEnabled; + public byte[] byRes1 = new byte[3]; + public NET_DVR_LOITERING_REGION[] struRegion = (NET_DVR_LOITERING_REGION[]) new NET_DVR_LOITERING_REGION() + .toArray(MAX_REGION_NUM); + public byte[] byRes2 = new byte[128]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnabled", + "byRes1", "struRegion", "byRes2"); + } + } + + public static class NET_DVR_SMART_REGION_COND extends Structure { + public int dwSize; + public int dwChannel; + public int dwRegion; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwChannel", + "dwRegion"); + } + } + + public static class NET_DVR_INPUTVOLUME extends Structure { + public int dwSize; + public byte byAudioInputChan; + public byte[] byRes = new byte[63]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byAudioInputChan", + "byRes"); + } + } + + public static class NET_DVR_CARD_CFG_COND extends Structure { + public int dwSize; + public int dwCardNum; + public byte byCheckCardNo; + public byte[] byRes1 = new byte[3]; + public short wLocalControllerID; + public byte[] byRes2 = new byte[2]; + public int dwLockID; + public byte[] byRes3 = new byte[20]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwCardNum", "byCheckCardNo", "byRes1", + "wLocalControllerID", "byRes2", "dwLockID", "byRes3"); + } + } + + public static class NET_DVR_VALID_PERIOD_CFG extends Structure { + public byte byEnable; + public byte[] byRes1 = new byte[3]; + public NET_DVR_TIME_EX struBeginTime = new NET_DVR_TIME_EX(); + public NET_DVR_TIME_EX struEndTime = new NET_DVR_TIME_EX(); + public byte[] byRes2 = new byte[32]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnable", "byRes1", + "struBeginTime", "struEndTime", "byRes2"); + } + } + + public static class arrayCardRightPlan extends Structure { + public byte[] byDoorRightPlan = new byte[MAX_CARD_RIGHT_PLAN_NUM]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byDoorRightPlan"); + } + } + + public static class NET_DVR_CARD_CFG extends Structure { + public int dwSize; + public int dwModifyParamType; + public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; + public byte byCardValid; + public byte byCardType; + public byte byLeaderCard; + public byte byRes1; + public int dwDoorRight; + public NET_DVR_VALID_PERIOD_CFG struValid = new NET_DVR_VALID_PERIOD_CFG(); + public int dwBelongGroup; + public byte[] byCardPassword = new byte[CARD_PASSWORD_LEN]; + public arrayCardRightPlan[] byCardRightPlan = new arrayCardRightPlan[MAX_DOOR_NUM]; + public int dwMaxSwipeTime; + public int dwSwipeTime; + public short wRoomNumber; + public short wFloorNumber; + public byte[] byRes2 = new byte[20]; + + public NET_DVR_CARD_CFG(Pointer p) { + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwModifyParamType", + "byCardNo", "byCardValid", "byCardType", "byLeaderCard", + "byRes1", "dwDoorRight", "struValid", "dwBelongGroup", + "byCardPassword", "byCardRightPlan", "dwMaxSwipeTime", + "dwSwipeTime", "wRoomNumber", "wFloorNumber", "byRes2"); + } + } + + public static class NET_DVR_LED_AREA_COND extends Structure + { + public int dwSize; + public int dwVideoWallNo; + public int dwLEDAreaNo; + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","dwVideoWallNo", + "dwLEDAreaNo","byRes"); + } + } + + public static class NET_DVR_RECTCFG_EX extends Structure + { + public int dwXCoordinate; + public int dwYCoordinate; + public int dwWidth; + public int dwHeight; + public byte [] byRes= new byte[4]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwXCoordinate","dwYCoordinate", + "dwWidth","dwHeight","byRes"); + } + } + + public static class NET_DVR_LED_AREA_INFO extends Structure + { + public int dwSize; + public int dwLEDAreaNo; + public NET_DVR_RECTCFG_EX struRect = new NET_DVR_RECTCFG_EX(); + public int []dwaOutputNo= new int[MAX_NUM_OUTPUT_CHANNEL]; + public byte byAreaType; + public byte [] byRes= new byte[31]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","dwLEDAreaNo","struRect", + "dwaOutputNo","byAreaType", "byRes"); + } + } + + public static class NET_DVR_LED_AREA_INFO_LIST extends Structure + { + public int dwSize; + public int dwLEDAreaNum; + public Pointer lpstruBuffer; + public int dwBufferSize; + public byte [] byRes= new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","dwLEDAreaNum","lpstruBuffer", + "dwBufferSize","byRes"); + } + } + + public static class NET_DVR_MATRIX_PASSIVEMODE extends Structure + { + public short wTransProtol; + public short wPassivePort; + public NET_DVR_IPADDR struMcastIP = new NET_DVR_IPADDR(); + public byte byStreamType; + public byte[] byRes= new byte[7]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wTransProtol","wPassivePort", + "struMcastIP","byStreamType","byRes"); + } + } + + public static class NET_DVR_ALARMHOST_OTHER_STATUS_V50 extends Structure + { + public int dwSize; + public byte[] bySirenStatus = new byte[ALARMHOST_MAX_SIREN_NUM]; + public byte[] byDetetorPower = new byte[MAX_DETECTOR_NUM]; + public byte[] byDetetorConnection = new byte[MAX_DETECTOR_NUM]; + public byte[] byRes= new byte[1024]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","bySirenStatus","byDetetorPower","byDetetorConnection","byRes"); + } + } + + public static class NET_DVR_ALARMHOST_OTHER_STATUS_V51 extends Structure + { + public int dwSize; + public byte[] bySirenStatus = new byte[ALARMHOST_MAX_SIREN_NUM]; + public byte[] byDetetorPower = new byte[MAX_DETECTOR_NUM_V51]; + public byte[] byDetetorConnection = new byte[MAX_DETECTOR_NUM_V51]; + public byte[] bySirenPower = new byte[ALARMHOST_MAX_SIREN_NUM]; + public byte[] bySirenTamperStatus = new byte[ALARMHOST_MAX_SIREN_NUM]; + public byte[] byPowerStausEnabled = new byte[MAX_DETECTOR_NUM_V51 / 8]; + public byte[] byDetetorPowerStatus = new byte[MAX_DETECTOR_NUM_V51 / 8]; + public byte byDetetorPowerType; + public byte[] byRes2 = new byte[3]; + public byte[] byRepeaterStatus = new byte[MAX_REPEATER_NUM]; + public byte[] byRepeaterTamperStatus = new byte[MAX_REPEATER_NUM / 8]; + public byte[] byAlarmOutTamperStatus = new byte[MAX_ALARMHOST_ALARMOUT_NUM / 8]; + public byte[] byOutputModuleTamperStatus = new byte[MAX_OUTPUT_MODULE_NUM / 8]; + public byte[] byRes = new byte[338]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "bySirenStatus", "byDetetorPower", "byDetetorConnection", "bySirenPower", "bySirenTamperStatus", "byPowerStausEnabled", "byDetetorPowerStatus", "byDetetorPowerType", "byRes2", "byRepeaterStatus", "byRepeaterTamperStatus", "byAlarmOutTamperStatus", "byOutputModuleTamperStatus", "byRes"); + } + } + + public static class NET_DVR_NOAMAL_SUB_SYSTEM extends Structure + { + public int dwBeJoinedSubSystem; + public byte[] byRes= new byte[16]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwBeJoinedSubSystem","byRes"); + } + } + + public static class NET_DVR_PUBLIC_SUB_SYSTEM extends Structure + { + public int dwJointSubSystem; + public byte[] byRes= new byte[16]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwJointSubSystem","byRes"); + } + } + + public static class NET_DVR_JOINT_SUB_SYSTEM extends Union + { + public NET_DVR_NOAMAL_SUB_SYSTEM struNormalSubSystem = new NET_DVR_NOAMAL_SUB_SYSTEM(); + public NET_DVR_PUBLIC_SUB_SYSTEM struPublicSubSystem = new NET_DVR_PUBLIC_SUB_SYSTEM(); + public byte[] byRes= new byte[20]; +// @Override +// protected List getFieldOrder() { +// // TODO Auto-generated method stub +// return Arrays.asList("struNormalSubSystem","struPublicSubSystem","byRes"); +// } + } + + public static class NET_DVR_ALARMSUBSYSTEMPARAM extends Structure + { + public int dwSize; + public short wEnterDelay; + public short wExitDelay; + public byte byHostageReport; + public byte bySubsystemEnable; + public byte byKeyToneOfArmOrDisarm; + public byte byKeyToneOfManualTestReport; + public short wDelayTime; + public byte byEnableAlarmInDelay; + public byte byPublicAttributeEnable; + public NET_DVR_JOINT_SUB_SYSTEM struJointSubSystem = new NET_DVR_JOINT_SUB_SYSTEM(); + public byte byKeyZoneArm; + public byte byKeyZoneArmReport; + public byte byKeyZoneDisarm; + public byte byKeyZoneDisarmReport; + public byte[] bySubSystemID = new byte[MAX_SUBSYSTEM_ID_LEN]; + public byte byKeyZoneArmReportEnable; + public byte byKeyZoneArmEnable; + public byte byOneKeySetupAlarmEnable; + public byte bySingleZoneSetupAlarmEnable; + public byte byCenterType; + public byte[] sCenterAccount = new byte[ACCOUNTNUM_LEN]; + public byte[] sCenterAccountV40 = new byte[ACCOUNTNUM_LEN_32]; + public byte[] byRes2 = new byte[565]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","wEnterDelay","wExitDelay","byHostageReport","bySubsystemEnable" + ,"byKeyToneOfArmOrDisarm","byKeyToneOfManualTestReport","wDelayTime","byEnableAlarmInDelay","byPublicAttributeEnable" + ,"struJointSubSystem","byKeyZoneArm","byKeyZoneArmReport","byKeyZoneDisarm","byKeyZoneDisarmReport" + ,"bySubSystemID","byKeyZoneArmReportEnable","byKeyZoneArmEnable","byOneKeySetupAlarmEnable","bySingleZoneSetupAlarmEnable" + ,"byCenterType","sCenterAccount","sCenterAccountV40","byRes2"); + } + } + + public static class NET_DVR_WALLWIN_INFO extends Structure + { + public int dwSize; + public int dwWinNum; + public int dwSubWinNum; + public int dwWallNo; + public byte[] byRes = new byte[12]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","dwWinNum","dwSubWinNum","dwWallNo","byRes"); + } + } + + public static class NET_DVR_WALL_WIN_STATUS extends Structure + { + public int dwSize; + public byte byDecodeStatus; + public byte byStreamType; + public byte byPacketType; + public byte byFpsDecV; + public byte byFpsDecA; + public byte[] byRes1 = new byte[7]; + public int dwDecodedV; + public int dwDecodedA; + public short wImgW; + public short wImgH; + public byte byStreamMode; + public byte[] byRes2 = new byte[31]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize","byDecodeStatus","byStreamType","byPacketType","byFpsDecV", + "byFpsDecA","byRes1","dwDecodedV","dwDecodedA","wImgW", + "wImgH","byStreamMode","byRes2"); + } + } + public static class NET_DVR_SETUPALARM_PARAM extends Structure + { + public int dwSize; + public byte byLevel; + public byte byAlarmInfoType; + public byte byRetAlarmTypeV40; + public byte byRetDevInfoVersion; + public byte byRetVQDAlarmType; + public byte byFaceAlarmDetection; + public byte bySupport; + public byte byBrokenNetHttp; + public short wTaskNo; + public byte[] byRes1 = new byte[6]; + + protected List getFieldOrder(){ + return Arrays.asList("dwSize", "byLevel", "byAlarmInfoType", + "byRetAlarmTypeV40", "byRetDevInfoVersion", "byRetVQDAlarmType", + "byFaceAlarmDetection", "bySupport", "byBrokenNetHttp", "wTaskNo", "byRes1"); + } + } + + public static class NET_DVR_DEVICEINFO_V30 extends Structure + { + public byte[] sSerialNumber = new byte[SERIALNO_LEN]; + public byte byAlarmInPortNum; + public byte byAlarmOutPortNum; + public byte byDiskNum; + public byte byDVRType; + public byte byChanNum; + public byte byStartChan; + public byte byAudioChanNum; + public byte byIPChanNum; + public byte byZeroChanNum; + public byte byMainProto; + public byte bySubProto; + public byte bySupport; + public byte bySupport1; + public byte bySupport2; + public short wDevType; + public byte bySupport3; + public byte byMultiStreamProto; + public byte byStartDChan; + public byte byStartDTalkChan; + public byte byHighDChanNum; + public byte bySupport4; + public byte byLanguageType; + public byte byVoiceInChanNum; + public byte byStartVoiceInChanNo; + public byte[] byRes3=new byte[2]; + public byte byMirrorChanNum; + public short wStartMirrorChanNo; + public byte[] byRes2=new byte[2]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sSerialNumber", "byAlarmInPortNum", "byAlarmOutPortNum", "byDiskNum", + "byDVRType", "byChanNum", "byStartChan", "byAudioChanNum", + "byIPChanNum", "byZeroChanNum","byMainProto", "bySubProto", + "bySupport", "bySupport1","bySupport2", "wDevType", + "bySupport3", "byMultiStreamProto","byStartDChan", "byStartDTalkChan", + "byHighDChanNum", "bySupport4","byLanguageType", "byVoiceInChanNum", + "byStartVoiceInChanNo", "byRes3","byMirrorChanNum", "wStartMirrorChanNo", "byRes2"); + } + } + + public static class NET_DVR_DEVICEINFO_V40 extends Structure + { + public NET_DVR_DEVICEINFO_V30 struDeviceV30 = new NET_DVR_DEVICEINFO_V30(); + public byte bySupportLock; + public byte byRetryLoginTime; + public byte byPasswordLevel; + public byte byProxyType; + public int dwSurplusLockTime; + public byte byCharEncodeType; + public byte bySupportDev5; + public byte byLoginMode; + public byte[] byRes2 = new byte[253]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struDeviceV30", "bySupportLock", "byRetryLoginTime", + "byPasswordLevel", "byProxyType", "dwSurplusLockTime", "byCharEncodeType", + "bySupportDev5", "byLoginMode", "byRes2"); + } + } + + + public static class NET_DVR_USER_LOGIN_INFO extends Structure + { + public byte[] sDeviceAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN]; + public byte byUseTransport; + public short wPort; + public byte[] sUserName = new byte[NET_DVR_LOGIN_USERNAME_MAX_LEN]; + public byte[] sPassword = new byte[NET_DVR_LOGIN_PASSWD_MAX_LEN]; + public FLoginResultCallBack cbLoginResult; + public Pointer pUser; + public boolean bUseAsynLogin; + public byte byProxyType; + public byte byUseUTCTime; + public byte byLoginMode; + public byte byHttps; + public int iProxyID; + public byte[] byRes3 = new byte[120]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sDeviceAddress", "byUseTransport", "wPort", "sUserName", "sPassword", + "cbLoginResult", "pUser", "bUseAsynLogin", "byProxyType", + "byUseUTCTime", "byLoginMode", "byHttps", "iProxyID", "byRes3"); + } + } + + + public static class NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO extends Structure + { + public byte[] sEzvizServerAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN]; + public byte[] byRes1 = new byte[3]; + public short wPort; + public byte[] byRes2 = new byte[2]; + public byte[] sUrl = new byte[EZVIZ_REQURL_LEN]; + public byte[] sAccessToken = new byte[EZVIZ_ACCESSTOKEN_LEN]; + public byte[] sDeviceID = new byte[EZVIZ_DEVICEID_LEN]; + public byte[] sClientType = new byte[EZVIZ_CLIENTTYPE_LEN]; + public byte[] sFeatureCode = new byte[EZVIZ_FEATURECODE_LEN]; + public byte[] sOsVersion = new byte[EZVIZ_OSVERSION_LEN]; + public byte[] sNetType = new byte[EZVIZ_NETTYPE_LEN]; + public byte[] sSdkVersion = new byte[EZVIZ_SDKVERSION_LEN]; + public byte[] sAppID = new byte[EZVIZ_APPID_LEN]; + public byte[] byRes3 = new byte[512]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sEzvizServerAddress", "byRes1", "wPort", "byRes2", "sUrl", + "sAccessToken", "sDeviceID", "sClientType", "sFeatureCode", + "sOsVersion", "sNetType", "sSdkVersion", "sAppID", "byRes3"); + } + } + + public static class NET_DVR_VIDEO_CALL_COND extends Structure + { + public int dwSize; + public byte[] byRes = new byte[128]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byRes"); + } + } + + public static class NET_DVR_VIDEO_CALL_PARAM extends Structure + { + public int dwSize; + public int dwCmdType; + public byte[] byRes = new byte[128]; + + public NET_DVR_VIDEO_CALL_PARAM() + { + super(); + } + public NET_DVR_VIDEO_CALL_PARAM(Pointer p) { + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwCmdType", "byRes"); + } + } + + public class NET_DVR_DEV_CHAN_INFO extends Structure { + /** DVR IP address */ + public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR(); + /** DVR PORT */ + public short wDVRPort; + /** Channel */ + public byte byChannel; + /** Transmit protocol:0-TCP, 1-UDP */ + public byte byTransProtocol; + /** Stream mode: 0-main stream, 1-sub stream */ + public byte byTransMode; + /** IPC factory type */ + public byte byFactoryType; + /** Device type(Used by videoplatfom VCA card), + * 1-decoder(use decode channel No. or display channel depends on byVcaSupportChanMode in video platform ability structure), + * 2-coder + */ + public byte byDeviceType; + /** Display channel No. used by VCA configuration */ + public byte byDispChan; + /** Display sub channel No. used by VCA configuration */ + public byte bySubDispChan; + /** Resolution: 1-CIF 2-4CIF 3-720P 4-1080P 5-500w used by big screen controler */ + public byte byResolution; + /** reserved */ + public byte[] byRes = new byte[2]; + /** Device domain name */ + public byte[] sDomain = new byte[MAX_DOMAIN_NAME]; + /** Remote device user name */ + public byte[] sUserName = new byte[NAME_LEN]; + /** Remote device password */ + public byte[] sPassword = new byte[PASSWD_LEN]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struIP", "wDVRPort", "byChannel", "byTransProtocol", "byTransMode", + "byFactoryType", "byDeviceType", "byDispChan", "bySubDispChan", + "byResolution", "byRes", "sDomain", "sUserName", "sPassword"); + } + } + + + public static class NET_DVR_SUBSYSTEM_BASIC_INFO extends Structure + { + public int dwSize; + public byte bySubSystemType; + public byte bySubSystemNo ; + public byte [] byRes1 = new byte[2]; + public int dwChan; + public NET_DVR_IPADDR struSubSystemIP; + public NET_DVR_IPADDR struSubSystemIPMask; + public NET_DVR_IPADDR struGatewayIpAddr; + public short wSubSystemPort; + public byte []byRes2 = new byte[6]; + public byte []sSerialNumber = new byte[SERIALNO_LEN]; + public byte byBelongBoard; + public byte [] byRes3 = new byte[3]; + public byte []byDeviceName = new byte[20]; + public int dwStartChanNo; + public byte byDevNo; + public byte [] byRes4 = new byte[63]; + + public NET_DVR_SUBSYSTEM_BASIC_INFO(Pointer p) { + super(p); + } + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "bySubSystemType", "bySubSystemNo", "byRes1", "dwChan", + "struSubSystemIP", "struSubSystemIPMask", "struGatewayIpAddr", "wSubSystemPort", "byRes2", + "sSerialNumber", "byBelongBoard", "byRes3", "byDeviceName", "dwStartChanNo", + "byDevNo", "byRes4"); + } + } + + public class NET_DVR_STREAM_MEDIA_SERVER_CFG extends Structure { + /** Is enable */ + public byte byValid; + /** reserved1 */ + public byte[] byRes1 = new byte[3]; + /** stream server IP */ + public NET_DVR_IPADDR struDevIP = new NET_DVR_IPADDR(); + /** stream server Port */ + public short wDevPort; + /** Protocol: 0-TCP, 1-UDP */ + public byte byTransmitType; + /** reserved2 */ + public byte[] byRes2 = new byte[69]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byValid", "byRes1", "struDevIP", "wDevPort", "byTransmitType", "byRes2"); + } + } + + public class NET_DVR_PU_STREAM_CFG extends Structure { + public int dwSize; + public NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg = new NET_DVR_STREAM_MEDIA_SERVER_CFG(); + public NET_DVR_DEV_CHAN_INFO struDevChanInfo = new NET_DVR_DEV_CHAN_INFO(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struStreamMediaSvrCfg", "struDevChanInfo"); + } + } + + public class NET_DVR_VIDEOEFFECT extends Structure { + public byte byBrightnessLevel; /*0- 100*/ + public byte byContrastLevel; /*0- 100*/ + public byte bySharpnessLevel; /*0- 100*/ + public byte bySaturationLevel; /*0- 100*/ + public byte byHueLevel; /*0- 100, (Reserved) */ + public byte byEnableFunc; //enable,bit0-SMART IR,bit1-illumination,bit2-light inhibit,0-no,1-yes + public byte byLightInhibitLevel; //light inhibit level,[1-3] + public byte byGrayLevel; //gray level,0-[0-255],1-[16-235] + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byBrightnessLevel", "byContrastLevel", "bySharpnessLevel", "bySaturationLevel", "byHueLevel", + "byEnableFunc", "byLightInhibitLevel", "byGrayLevel"); + } + } + + public static class NET_DVR_INPUTSTREAMCFG_V40 extends Structure + { + public int dwSize; + /** 0-invalid, !0-valid */ + public byte byValid; + /** reference to NET_DVR_CAM_MODE */ + public byte byCamMode; + /** input signal No. */ + public short wInputNo; + /** signal name */ + public byte[] sCamName = new byte[NAME_LEN]; + /** video effect parameters */ + public NET_DVR_VIDEOEFFECT struVideoEffect = new NET_DVR_VIDEOEFFECT(); + /** IP signal configurations */ + public NET_DVR_PU_STREAM_CFG struPuStream = new NET_DVR_PU_STREAM_CFG(); + /** sub board No., read only */ + public short wBoardNum; + /** index of signal in sub board, read only */ + public short wInputIdxOnBoard; + /** resolution */ + public int dwResolution; + /** video format, reference to VIDEO_STANDARD */ + public byte byVideoFormat; + /** signal status,0-invalid, 1-signal normal, 2-no signal, 3-exception */ + public byte byStatus; + /** signal group name */ + public byte[] sGroupName = new byte[NAME_LEN]; + /** relate matrix, 0-not related, 1-related, + * valid when signal type is NET_DVR_CAM_BNC or NET_DVR_CAM_VGA or NET_DVR_CAM_DVI or NET_DVR_CAM_HDMI + */ + public byte byJointMatrix; + /** joint No., read only */ + public byte byJointNo; + /** color mode, 0-self define, 1-sharp, 2-normal, + * 3-soft,struVideoEffect is valid when color mode is self define + */ + public byte byColorMode; + + public byte byScreenServer; + public byte byRes1[]= new byte[2]; + public int dwInputSignalNo; + + /** reserved */ + public byte[] byRes = new byte[120]; + + public NET_DVR_INPUTSTREAMCFG_V40() { + + } + + public NET_DVR_INPUTSTREAMCFG_V40(Pointer p) { + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byValid", "byCamMode", "wInputNo", "sCamName", "struVideoEffect", + "struPuStream", "wBoardNum", "wInputIdxOnBoard", "dwResolution", "byVideoFormat", "byStatus", + "sGroupName", "byJointMatrix", "byJointNo", "byColorMode", "byScreenServer", "byRes1", + "dwInputSignalNo", "byRes"); + } + } + + public static class NET_DVR_INPUT_SIGNAL_LIST extends Structure + { + public int dwSize; + public int dwInputSignalNums; + public Pointer pBuffer; + public byte byRes1[] = new byte[3]; + public int dwBufLen; + public byte byRes2[] = new byte[64]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwInputSignalNums", "pBuffer", "byRes1", "dwBufLen", "byRes2"); + } + } + + class NET_DVR_ALLSUBSYSTEMINFO_V40 extends Structure { + public int dwSize; + public NET_DVR_SUBSYSTEMINFO_V40[] struSubSystemInfo = new NET_DVR_SUBSYSTEMINFO_V40[MAX_SUBSYSTEM_NUM_V40]; + public byte[] byRes = new byte[8]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "struSubSystemInfo", "byRes"); + } + } + + class NET_DVR_SUBSYSTEMINFO_V40 extends Structure { + public byte bySubSystemType; + //subsystem channel number, for distributor subsystem, it means 485 serial number (just for get) + public byte byChan; + public byte byLoginType;//Login type, 1-direction 2-DNS, 3-peanuthull + public byte bySlotNum;//slot number, (just for getting) + public byte[] byRes1 = new byte[4]; + public NET_DVR_IPADDR struSubSystemIP; /*IPaddress (can change)*/ + public NET_DVR_IPADDR struSubSystemIPMask;//subnet mask + public NET_DVR_IPADDR struGatewayIpAddr; /* gateway address*/ + public short wSubSystemPort; //subsystem port (can change) + public byte[] byRes2 = new byte[6]; + public byte[] sUserName = new byte[NAME_LEN]; /*username (just for getting)*/ + public byte[] sPassword = new byte[PASSWD_LEN]; /*password (can change)*/ + public byte[] sDomainName = new byte[MAX_DOMAIN_NAME];//domain name (can change) + public byte[] sDnsAddress = new byte[MAX_DOMAIN_NAME];/*domain name or ip address*/ + public byte[] sSerialNumber = new byte[SERIALNO_LEN];//serial number (just for getting) + public byte byBelongBoard;//belong board, from 1 to start, 0xff means invaild + public byte byInterfaceType;//interface type,0-none, 1-BNC,2-VGA,3-HDMI,4-DVI,5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVI adapter,10-3GSDI,11-VGA/DVI adapter,12-HDTVI,13-HDBaseT,14-DP,15-DVIT,16-TVI,17-VSCREEN,0xff-invaild + public byte byInterfaceNums;//interface number,0xff means invaild + public byte byInterfaceStartNum;//interface number to start,0xff means invaild + public byte[] byDeviceName = new byte[20];//subsystem name + public byte byAudioChanNums; //audio channel number + public byte byAudioChanStartNum; //the start of audio channel + public byte byAudioChanType; //audio channel type, 0-invalid, 1-audio in, 2-audio out + public byte[] byRes3 = new byte[33]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("bySubSystemType", "byChan", "byLoginType", "bySlotNum", "byRes1", "struSubSystemIP", + "struSubSystemIPMask", "struGatewayIpAddr", "wSubSystemPort", "byRes2", "sUserName", "sPassword", "sDomainName", "sDnsAddress", + "sSerialNumber", "byBelongBoard", "byInterfaceType", "byInterfaceNums", "byInterfaceStartNum", "byDeviceName", "byAudioChanNums", "byAudioChanStartNum", + "byAudioChanType", "byRes3"); + } + } + + public static class NET_DVR_VEHICLE_CONTROL_ALARM extends Structure + { + public int dwSize; + public byte byListType; + public byte byPlateType; + public byte byPlateColor; + public byte byRes1; + public byte[] sLicense = new byte[MAX_LICENSE_LEN]; + public byte[] sCardNo = new byte[MAX_CARDNO_LEN]; + public NET_DVR_TIME_V30 struAlarmTime = new NET_DVR_TIME_V30(); + public int dwChannel; + public int dwPicDataLen; + public byte byPicType; + public byte byRes3[] = new byte[3]; + public ByteByReference pPicData; + public byte byRes2[] = new byte[48]; + public NET_DVR_VEHICLE_CONTROL_ALARM(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byListType", "byPlateType", "byPlateColor", "byRes1", "sLicense", + "sCardNo","struAlarmTime", "dwChannel", "dwPicDataLen", "byPicType", "byRes3","pPicData","byRes2"); + } + } + + public static class NET_VCA_HUMAN_FEATURE extends Structure + { + public byte byAgeGroup; + public byte bySex; + public byte byEyeGlass; + public byte byAge; + public byte byAgeDeviation; + public byte byEthnic; + public byte byMask; + public byte bySmile; + public byte byFaceExpression; + public byte byBeard; + public byte byRace; + public byte byHat; + public byte[] byRes = new byte[4]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byAgeGroup", "bySex", "byEyeGlass", "byAge", "byAgeDeviation", "byEthnic", "byMask", "bySmile", "byFaceExpression", "byBeard", "byRace", "byHat", "byRes"); + } + } + + public static class NET_DVR_FACE_DETECTION extends Structure + { + public int dwSize; + public int dwRelativeTime; + public int dwAbsTime; + public int dwBackgroundPicLen; + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public NET_VCA_RECT[] struFacePic = (NET_VCA_RECT[])new NET_VCA_RECT().toArray(MAX_FACE_PIC_NUM); + public byte byFacePicNum; + public byte byRes1; + public short wDevInfoIvmsChannelEx; + public byte[] byRes = new byte[252]; + public ByteByReference pBackgroundPicpBuffer; + public NET_DVR_FACE_DETECTION(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwRelativeTime", "dwAbsTime", "dwBackgroundPicLen", "struDevInfo", "struFacePic", + "byFacePicNum","byRes1", "wDevInfoIvmsChannelEx", "byRes", "pBackgroundPicpBuffer"); + } + } + + public static class NET_PTZ_INFO extends Structure + { + public float fPan; + public float fTilt; + public float fZoom; + public int dwFocus; + public byte[] byRes = new byte[4]; + public NET_PTZ_INFO(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("fPan", "fTilt", "fZoom", "dwFocus", "byRes"); + } + } + + public static class NET_DVR_THERMOMETRY_ALARM extends Structure + { + public int dwSize; + public int dwChannel; + public byte byRuleID; + public byte byThermometryUnit; + public short wPresetNo; + public NET_PTZ_INFO struPtzInfo; + public byte byAlarmLevel; + public byte byAlarmType; + public byte byAlarmRule; + public byte byRuleCalibType; + public NET_VCA_POINT struPoint; + public NET_VCA_POLYGON struRegion; + public float fRuleTemperature; + public float fCurrTemperature; + public int dwPicLen; + public int dwThermalPicLen; + public int dwThermalInfoLen; + public ByteByReference pPicBuff; + public ByteByReference pThermalPicBuff; + public ByteByReference pThermalInfoBuff; + public NET_VCA_POINT struHighestPoint; + public float fToleranceTemperature; + public int dwAlertFilteringTime; + public int dwAlarmFilteringTime; + public int dwTemperatureSuddenChangeCycle; + public float fTemperatureSuddenChangeValue; + public byte byPicTransType; + public byte[] byRes = new byte[39]; + public NET_DVR_THERMOMETRY_ALARM(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwChannel", "byRuleID", "byThermometryUnit", "wPresetNo", "struPtzInfo", "byAlarmLevel", + "byAlarmType", "byAlarmRule", "byRuleCalibType", "struPoint", "struRegion", "fRuleTemperature", "fCurrTemperature", + "dwPicLen", "dwThermalPicLen", "dwThermalInfoLen", "pPicBuff", "pThermalPicBuff", "pThermalInfoBuff", "struHighestPoint", + "fToleranceTemperature", "dwAlertFilteringTime", "dwAlarmFilteringTime", "dwTemperatureSuddenChangeCycle", "fTemperatureSuddenChangeValue", "byPicTransType", "byRes"); + } + } + + public static class NET_VCA_FACESNAP_ADDINFO extends Structure + { + public NET_VCA_RECT struFacePicRect; + public int iSwingAngle; + public int iTiltAngle; + public int dwPupilDistance; + public byte byBlockingState; + public byte byRes1; + public byte byIsAbnomalTemperature; + public byte byThermometryUnit; + public NET_DVR_TIME_EX struEnterTime; + public NET_DVR_TIME_EX struExitTime; + public float fFaceTemperature; + public float fAlarmTemperature; + public byte[] byRes = new byte[472]; + public NET_VCA_FACESNAP_ADDINFO(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struFacePicRect", "iSwingAngle", "iTiltAngle", "dwPupilDistance", "byBlockingState", "byRes1", + "byIsAbnomalTemperature","byThermometryUnit", "struEnterTime", "struExitTime", "fFaceTemperature", "fAlarmTemperature","byRes"); + } + } + + + public static class NET_VCA_FACESNAP_RESULT extends Structure + { + public int dwSize; + public int dwRelativeTime; + public int dwAbsTime; + public int dwFacePicID; + public int dwFaceScore; + public NET_VCA_TARGET_INFO struTargetInfo = new NET_VCA_TARGET_INFO(); + public NET_VCA_RECT struRect = new NET_VCA_RECT(); + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public int dwFacePicLen; + public int dwBackgroundPicLen; + public byte bySmart; + public byte byAlarmEndMark; + public byte byRepeatTimes; + public byte byUploadEventDataType; + public NET_VCA_HUMAN_FEATURE struFeature = new NET_VCA_HUMAN_FEATURE(); + public float fStayDuration; + public byte[] sStorageIP = new byte[16]; + public short wStoragePort; + public short wDevInfoIvmsChannelEx; + public byte byFacePicQuality; + public byte byUIDLen; + public byte byLivenessDetectionStatus; + public byte byAddInfo; + public ByteByReference pUIDBuffer; + public ByteByReference pAddInfoBuffer; + public byte byTimeDiffFlag; + public byte cTimeDifferenceH; + public byte cTimeDifferenceM; + public byte byBrokenNetHttp; + public ByteByReference pBuffer1; + public ByteByReference pBuffer2; + public NET_VCA_FACESNAP_RESULT(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwRelativeTime", "dwAbsTime", "dwFacePicID", "dwFaceScore", "struTargetInfo", + "struRect","struDevInfo", "dwFacePicLen", "dwBackgroundPicLen", "bySmart", "byAlarmEndMark", "byRepeatTimes", + "byUploadEventDataType", "struFeature", "fStayDuration", "sStorageIP", "wStoragePort", + "wDevInfoIvmsChannelEx", "byFacePicQuality", "byUIDLen", "byLivenessDetectionStatus", "byAddInfo", + "pUIDBuffer", "pAddInfoBuffer", "byTimeDiffFlag", "cTimeDifferenceH", "cTimeDifferenceM", "byBrokenNetHttp", "pBuffer1", "pBuffer2"); + } + } + + public static class NET_VCA_FACESNAP_INFO_ALARM extends Structure + { + public int dwRelativeTime; + public int dwAbsTime; + public int dwSnapFacePicID; + public int dwSnapFacePicLen; + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public byte byFaceScore; + public byte bySex; + public byte byGlasses; + public byte byAge; + public byte byAgeDeviation; + public byte[] byRes1 = new byte[3]; + public int dwUIDLen; + public ByteByReference pUIDBuffer; + public byte[] byRes = new byte[4]; + public ByteByReference pBuffer1; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwRelativeTime", "dwAbsTime", "dwSnapFacePicID", "dwSnapFacePicLen", "struDevInfo", "byFaceScore", + "bySex","byGlasses", "byAge", "byAgeDeviation", "byRes1","dwUIDLen","pUIDBuffer","byRes","pBuffer1"); + } + } + + public static class NET_DVR_AREAINFOCFG extends Structure + { + public short wNationalityID; + public short wProvinceID; + public short wCityID; + public short wCountyID; + public int dwCode; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wNationalityID", "wProvinceID", "wCityID", "wCountyID", "dwCode"); + } + } + + public static class NET_VCA_HUMAN_ATTRIBUTE extends Structure + { + public byte bySex; + public byte byCertificateType; + public byte[] byBirthDate = new byte[MAX_HUMAN_BIRTHDATE_LEN]; + public byte[] byName = new byte[NAME_LEN]; + public NET_DVR_AREAINFOCFG struNativePlace = new NET_DVR_AREAINFOCFG(); + public byte[] byCertificateNumber = new byte[NAME_LEN]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("bySex", "byCertificateType", "byBirthDate", "byName", "struNativePlace", "byCertificateNumber"); + } + } + + public static class NET_VCA_BLACKLIST_INFO extends Structure + { + public int dwSize; + public int dwRegisterID; + public int dwGroupNo; + public byte byType; + public byte byLevel; + public byte[] byRes1 = new byte[2]; + public NET_VCA_HUMAN_ATTRIBUTE struAttribute = new NET_VCA_HUMAN_ATTRIBUTE(); + public byte[] byRemark = new byte[NAME_LEN]; + public int dwFDDescriptionLen; + public ByteByReference pFDDescriptionBuffer; + public int dwFCAdditionInfoLen; + public ByteByReference pFCAdditionInfoBuffer; + public byte[] byRes2 = new byte[4]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwRegisterID", "dwGroupNo", "byType", "byLevel", "byRes1", + "struAttribute","byRemark", "dwFDDescriptionLen", "pFDDescriptionBuffer", "dwFCAdditionInfoLen", "pFCAdditionInfoBuffer", "byRes2"); + } + } + + public static class NET_VCA_BLACKLIST_INFO_ALARM extends Structure + { + public NET_VCA_BLACKLIST_INFO struBlackListInfo = new NET_VCA_BLACKLIST_INFO(); + public int dwBlackListPicLen; + public int dwFDIDLen; + public ByteByReference pFDID; + public int dwPIDLen; + public ByteByReference pPID; + public short wThresholdValue; + public byte[] byRes = new byte[2]; + public ByteByReference pBuffer1; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struBlackListInfo", "dwBlackListPicLen", "dwFDIDLen", "pFDID", "dwPIDLen", "pPID", + "wThresholdValue","byRes", "pBuffer1"); + } + } + + public static class NET_VCA_FACESNAP_MATCH_ALARM extends Structure + { + public int dwSize; + public float fSimilarity; + public NET_VCA_FACESNAP_INFO_ALARM struSnapInfo = new NET_VCA_FACESNAP_INFO_ALARM(); + public NET_VCA_BLACKLIST_INFO_ALARM struBlackListInfo = new NET_VCA_BLACKLIST_INFO_ALARM(); + public byte[] sStorageIP = new byte[16]; + public short wStoragePort; + public byte byMatchPicNum; + public byte byPicTransType; + public int dwSnapPicLen; + public ByteByReference pSnapPicBuffer; + public NET_VCA_RECT struRegion = new NET_VCA_RECT(); + public int dwModelDataLen; + public ByteByReference pModelDataBuffer; + public byte[] byRes = new byte[8]; + public NET_VCA_FACESNAP_MATCH_ALARM(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "fSimilarity", "struSnapInfo", "struBlackListInfo", "sStorageIP", "wStoragePort", + "byMatchPicNum","byPicTransType", "dwSnapPicLen", "pSnapPicBuffer","struRegion","dwModelDataLen", + "pModelDataBuffer","byRes"); + } + } + + public static class struStartFrame extends Structure{ + public int dwRelativeTime; + public int dwAbsTime; + public byte[] byRes = new byte[92]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwRelativeTime","dwAbsTime", "byRes"); + } + } + + public static class struStartTime extends Structure{ + public NET_DVR_TIME tmStart = new NET_DVR_TIME(); + public NET_DVR_TIME tmEnd = new NET_DVR_TIME(); + public byte[] byRes = new byte[92]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("tmStart","tmEnd", "byRes"); + } + } + + public static class unionStartModeParam extends Union{ + public struStartFrame struStartFrame = new struStartFrame(); + public struStartTime struStartTime = new struStartTime(); + } + + public static class NET_DVR_PDC_ALRAM_INFO extends Structure + { + public int dwSize; + public byte byMode; + public byte byChannel; + public byte bySmart; + public byte byRes1; + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public unionStartModeParam unionStartModeParam= new unionStartModeParam(); + public int dwLeaveNum; + public int dwEnterNum; + public byte byBrokenNetHttp; + public byte byRes3; + public short wDevInfoIvmsChannelEx; + public int dwPassingNum; + public byte[] byRes = new byte[32]; + public NET_DVR_PDC_ALRAM_INFO(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byMode", "byChannel", "bySmart", "byRes1", "struDevInfo","unionStartModeParam", + "dwLeaveNum","dwEnterNum", "byBrokenNetHttp", "byRes3", "wDevInfoIvmsChannelEx","dwPassingNum","byRes"); + } + + } + + public static class NET_DVR_FACELIB_COND extends Structure + { + public int dwSize; + public byte[] szFDID = new byte[NET_SDK_MAX_FDID_LEN]; + public byte byConcurrent; + public byte[] byRes = new byte[127]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "szFDID", "byConcurrent", "byRes"); + } + } + + public class NET_SDK_UPLOAD_TYPE { + public static final int UPGRADE_CERT_FILE = 0; + public static final int UPLOAD_CERT_FILE = 1; + public static final int TRIAL_CERT_FILE = 2; + public static final int CONFIGURATION_FILE = 3; + public static final int UPLOAD_RECORD_FILE = 4 ; + public static final int SCENE_CONFIGURATION_FILE = 5; + public static final int UPLOAD_PICTURE_FILE = 6; + public static final int UPLOAD_VIOLATION_FILE = 7; + public static final int UPLOAD_TG_FILE = 8; + public static final int UPLOAD_DATA_TO_DB = 9; + public static final int UPLOAD_BACKGROUND_PIC = 10; + public static final int UPLOAD_CALIBRATION_FILE = 11; + public static final int UPLOAD_TME_FILE = 12; + public static final int UPLOAD_VEHICLE_BLACKWHITELST_FILE = 13; + public static final int UPLOAD_PICTURE_TO_CLOUD = 15; + public static final int UPLOAD_VIDEO_FILE = 16; + public static final int UPLOAD_SCREEN_FILE = 17; + public static final int UPLOAD_PUBLISH_MATERIAL = 18; + public static final int UPLOAD_PUBLISH_UPGRADE_FILE = 19; + public static final int UPLOAD_RING_FILE = 20; + public static final int UPLOAD_ENCRYPT_CERT = 21; + public static final int UPLOAD_THERMOMETRIC_FILE = 22; + public static final int UPLOAD_SUBBRAND_FILE = 23; + public static final int UPLOAD_LED_CHECK_FILE = 24; + public static final int BATCH_UPLOAD_PICTURE_FILE = 25; + public static final int UPLOAD_EDID_CFG_FILE = 26; + public static final int UPLOAD_PANORAMIC_STITCH = 27; + public static final int UPLOAD_BINOCULAR_COUNTING = 28; + public static final int UPLOAD_AUDIO_FILE = 29; + public static final int UPLOAD_PUBLISH_THIRD_PARTY_FILE = 30; + public static final int UPLOAD_DEEPEYES_BINOCULAR = 31; + public static final int UPLOAD_CERTIFICATE_BLACK_LIST = 32; + public static final int UPLOAD_HD_CAMERA_CORRECT_TABLE = 33; + public static final int UPLOAD_FD_DATA = 35; + public static final int UPLOAD_FACE_DATA = 36; + public static final int UPLOAD_FACE_ANALYSIS_DATA = 37; + public static final int UPLOAD_FILEVOLUME_DATA = 38; + public static final int IMPORT_DATA_TO_FACELIB = 39; + public static final int UPLOAD_LEFTEYE_4K_CALIBFILE = 40; + public static final int UPLOAD_SECURITY_CFG_FILE = 41; + public static final int UPLOAD_RIGHT_CONTROLLER_AUDIO = 42; + public static final int UPLOAD_MODBUS_CFG_FILE = 43; + public static final int UPLOAD_NOTICE_VIDEO_DATA = 44; + public static final int UPLOAD_RS485_PROTOCOL_DLL_FILE = 45; + public static final int UPLOAD_PIC_BY_BUF = 46; + public static final int UPLOAD_CLIENT_CALIBFILE = 47; + public static final int UPLOAD_HD_CAMERA_CORRECT_TABLE_3200W = 48; + public static final int UPLOAD_DOOR_CONTENT = 49; + public static final int UPLOAD_ASR_CONTROL_FILE = 50; + public static final int UPLOAD_APP_FILE = 51; + public static final int UPLOAD_AI_ALGORITHM_MODEL = 52; + public static final int UPLOAD_PUBLISH_PROGRAM_THUMBNAIL = 53; + public static final int UPLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 54; + } + + public class NET_SDK_DOWNLOAD_TYPE { + public static final int NET_SDK_DOWNLOAD_CERT = 0; + public static final int NET_SDK_DOWNLOAD_IPC_CFG_FILE = 1; + public static final int NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC = 2; + public static final int NET_SDK_DOWNLOAD_VQD_ALARM_PIC = 3; + public static final int NET_SDK_DOWNLOAD_CONFIGURATION_FILE = 4; + public static final int NET_SDK_DOWNLOAD_SCENE_CONFIGURATION_FILE = 5; + public static final int NET_SDK_DOWNLOAD_FILE_FORM_DB = 6; + public static final int NET_SDK_DOWNLOAD_TME_FILE = 7; + public static final int NET_SDK_DOWNLOAD_VEHICLE_BLACKWHITELST_FILE = 8; + public static final int NET_SDK_DOWNLOAD_GUID_FILE = 9; + public static final int NET_SDK_DOWNLOAD_FILE_FORM_CLOUD = 10; + public static final int NET_SDK_DOWNLOAD_PICTURE = 11; + public static final int NET_SDK_DOWNLOAD_VIDEO = 12; + public static final int NET_DVR_DOWNLOAD_SCREEN_FILE = 13; + public static final int NET_SDK_DOWNLOAD_PUBLISH_MATERIAL = 14; + public static final int NET_SDK_DOWNLOAD_THERMOMETRIC_FILE = 15; + public static final int NET_SDK_DOWNLOAD_LED_CHECK_FILE = 16; + public static final int NET_SDK_DOWNLOAD_VEHICLE_INFORMATION = 17; + public static final int NET_SDK_DOWNLOAD_CERTIFICATE_BLACK_LIST_TEMPLET = 18; + public static final int NET_SDK_DOWNLOAD_LOG_FILE = 19; + public static final int NET_SDK_DOWNLOAD_FILEVOLUME_DATA = 20; + public static final int NET_SDK_DOWNLOAD_FD_DATA = 21; + public static final int NET_SDK_DOWNLOAD_SECURITY_CFG_FILE = 22; + public static final int NET_SDK_DOWNLOAD_PUBLISH_SCHEDULE = 23; + public static final int NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO = 24; + public static final int NET_SDK_DOWNLOAD_MODBUS_CFG_FILE = 25; + public static final int NET_SDK_DOWNLOAD_RS485_PROTOCOL_DLL_FILE = 26; + public static final int NET_SDK_DOWNLOAD_CLUSTER_MAINTENANCE_LOG = 27; + public static final int NET_SDK_DOWNLOAD_SQL_ARCHIVE_FILE = 28; + public static final int NET_SDK_DOWNLOAD_SUBWIND_STREAM = 29; + public static final int NET_SDK_DOWNLOAD_DEVTYPE_CALIBFILE = 30; + public static final int NET_SDK_DOWNLOAD_HD_CAMERA_CORRECT_TABLE = 31; + public static final int NET_SDK_DOWNLOAD_CLIENT_CALIBFILE = 32; + public static final int NET_SDK_DOWNLOAD_FOUE_CAMERAS_PICTURES = 33; + public static final int NET_SDK_DOWNLOAD_DOOR_CONTENT = 34; + public static final int NET_SDK_DOWNLOAD_PUBLISH_MATERIAL_THUMBNAIL = 35; + public static final int NET_SDK_DOWNLOAD_PUBLISH_PROGRAM_THUMBNAIL = 36; + public static final int NET_SDK_DOWNLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 37; + } + + public static class NET_DVR_SEND_PARAM_IN extends Structure + { + public Pointer pSendData; + public int dwSendDataLen; + public NET_DVR_TIME_V30 struTime; + public byte byPicType; + public byte[] byRes1 = new byte[3]; + public int dwPicManageNo; + public byte[] sPicName = new byte[NAME_LEN]; + public int dwPicDisplayTime; + public Pointer pSendAppendData; + public int dwSendAppendDataLen; + public byte[] byRes = new byte[192]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("pSendData", "dwSendDataLen", "struTime", "byPicType", "byRes1", "dwPicManageNo", + "sPicName","dwPicDisplayTime", "pSendAppendData", "dwSendAppendDataLen", "byRes"); + } + } + + public static class NET_DVR_UPLOAD_FACE_DATA_OUT extends Structure + { + public byte[] szPicID = new byte[NET_SDK_MAX_PICID_LEN]; + public byte[] byRes = new byte[128]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("szPicID", "byRes"); + } + } + + public static class NET_DVR_UPLOAD_FILE_RET extends Structure + { + public byte[] sUrl = new byte[MAX_UPLOADFILE_URL_LEN]; + public byte[] byRes = new byte[260]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sUrl", "byRes"); + } + } + + public static class NET_DVR_EZVIZ_ACCESS_CFG extends Structure + { + public int dwSize; + public byte byEnable; + public byte byDeviceStatus; + public byte byAllowRedirect; + public byte[] byDomainName = new byte[MAX_DOMAIN_NAME]; + public byte byRes1; + public byte[] byVerificationCode = new byte[NET_SDK_MAX_VERIFICATION_CODE_LEN]; + public byte byNetMode; + public byte[] byRes = new byte[411]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byDeviceStatus", "byAllowRedirect", "byDomainName", "byRes1", + "byVerificationCode","byNetMode", "byRes"); + } + } + + + public static class NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE extends Structure + { + public int dwSize; + public int dwErrorCode; + public byte byDevNo; + public byte bySubSystemNo ; + public byte [] byRes = new byte[30]; + + public NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE(Pointer p){ + super(p); + } + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwErrorCode", "byDevNo", "bySubSystemNo", "byRes"); + } + } + + + public static class NET_DVR_AUDIO_INFO extends Structure + { + public int dwSize; + public byte byAudioChanType; + public byte [] byRes1 = new byte[3]; + public int dwAudioNo; + public byte []byRes2= new byte[16]; + + public NET_DVR_AUDIO_INFO(Pointer p){ + super(p); + } + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byAudioChanType", "byRes1", "dwAudioNo", "byRes2"); + } + } + + public static class NET_DVR_DISPLAYPARAM extends Structure + { + public int dwDisplayNo; + public byte byDispChanType; + public byte byRes[] = new byte[11]; + + public NET_DVR_DISPLAYPARAM(Pointer p){ + super(p); + } + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwDisplayNo", "byDispChanType", "byRes"); + } + } + + + + public static class NET_DVR_DISPLAYCFG extends Structure + { + public int dwSize ; + public NET_DVR_DISPLAYPARAM []struDisplayParam = new NET_DVR_DISPLAYPARAM[MAX_DISPLAY_NUM] ; + public byte []byRes = new byte[128]; + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struDisplayParam", "byRes"); + } + } + + + public static class NET_DVR_VIDEOWALLDISPLAYPOSITION extends Structure + { + public int dwSize ; + public byte byEnable ; + public byte []byRes1 = new byte[3] ; + public int dwVideoWallNo ; + public int dwDisplayNo; + public NET_DVR_RECTCFG_EX struRectCfg = new NET_DVR_RECTCFG_EX(); + public byte []byRes2 = new byte[64]; + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byEnable", "byRes1","dwVideoWallNo", "dwDisplayNo", "struRectCfg", "byRes2"); + } + } + + public static class NET_DVR_MATRIX_DECCHAN_CONTROL extends Structure + { + public int dwSize; + public byte byDecChanScaleStatus; + public byte byDecodeDelay; + public byte byEnableSpartan; + public byte byLowLight; + public byte byNoiseReduction; + public byte byDefog; + public byte byEnableVcaDec; + public byte byEnableAudio; + public int dwAllCtrlType; + public byte []byRes = new byte[56]; + + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byDecChanScaleStatus", "byDecodeDelay","byEnableSpartan", "byLowLight", "byNoiseReduction", "byDefog", + "byEnableVcaDec", "byEnableAudio", "dwAllCtrlType", "byRes"); + } + } + + public static class NET_DVR_CURTRIGGERMODE extends Structure{ + public int dwSize; + public int dwTriggerType; + public byte[] byRes = new byte[24]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwTriggerType", "byRes"); + } + } + + public static class NET_ITC_RS485_ACCESS_INFO_COND extends Structure{ + public int dwSize; + public int dwChannel; + public int dwTriggerModeType; + public byte byAssociateRS485No; + public byte[] byRes = new byte[15]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwChannel", "dwTriggerModeType", "byAssociateRS485No", "byRes"); + } + } + + public static class NET_ITC_RADAR_PARAM extends Structure{ + public byte byRadarType; + public byte byLevelAngle; + public short wRadarSensitivity; + public short wRadarSpeedValidTime; + public byte[] byRes1 = new byte[2]; + public float fLineCorrectParam; + public int iConstCorrectParam; + public byte[] byRes2 = new byte[8]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRadarType", "byLevelAngle", "wRadarSensitivity", "wRadarSpeedValidTime", "byRes1", "fLineCorrectParam", "iConstCorrectParam", "byRes2"); + } + } + + public static class NET_ITC_RADAR_INFO_PARAM extends Structure{ + public NET_ITC_RADAR_PARAM struRadarParam = new NET_ITC_RADAR_PARAM(); + public byte byAssociateLaneNo; + public byte[] byRes = new byte[103]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struRadarParam", "byAssociateLaneNo", "byRes"); + } + } + + public static class NET_ITC_ACCESS_DEVINFO_PARAM_UNION extends Union + { + public byte[] uLen = new byte[128]; + public NET_ITC_RADAR_INFO_PARAM struRadarInfoParam = new NET_ITC_RADAR_INFO_PARAM(); + } + + public static class NET_ITC_RS485_ACCESS_CFG extends Structure{ + public int dwSize; + public byte byModeType; + public byte[] byRes = new byte[3]; + public NET_ITC_ACCESS_DEVINFO_PARAM_UNION uITCAccessDevinfoParam = new NET_ITC_ACCESS_DEVINFO_PARAM_UNION(); + public byte[] byRes1 = new byte[12]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "byModeType", "byRes", "uITCAccessDevinfoParam", "byRes1"); + } + } + + public static class NET_ITC_PLATE_RECOG_PARAM extends Structure{ + public byte[] byDefaultCHN = new byte[MAX_CHJC_NUM]; + public byte byEnable; + public int dwRecogMode; + public byte byVehicleLogoRecog; + public byte byProvince; + public byte byRegion; + public byte byRes1; + public short wPlatePixelWidthMin; + public short wPlatePixelWidthMax; + public byte[] byRes = new byte[24]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byDefaultCHN", "byEnable", "dwRecogMode", "byVehicleLogoRecog", "byProvince", "byRegion", "byRes1", "wPlatePixelWidthMin", "wPlatePixelWidthMax", "byRes"); + } + } + + public static class NET_ITC_INTERVAL_PARAM extends Structure{ + public byte byIntervalType; + public byte[] byRes1 = new byte[3]; + public short[] wInterval = new short[MAX_INTERVAL_NUM]; + public byte[] byRes = new byte[8]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byIntervalType", "byRes1", "wInterval", "byRes"); + } + } + + public static class NET_ITC_POLYGON extends Structure{ + public int dwPointNum; + public NET_VCA_POINT[] struPos = (NET_VCA_POINT[])new NET_VCA_POINT().toArray(ITC_MAX_POLYGON_POINT_NUM); + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwPointNum", "struPos"); + } + } + + public static class unionRegion extends Union{ + public NET_VCA_RECT struRect = new NET_VCA_RECT(); + public NET_ITC_POLYGON struPolygon = new NET_ITC_POLYGON(); + } + + public static class NET_ITC_PLATE_RECOG_REGION_PARAM extends Structure{ + public byte byMode; + public byte[] byRes1 = new byte[3]; + public unionRegion uRegion = new unionRegion(); + public byte[] byRes = new byte[16]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byMode", "byRes1", "uRegion", "byRes"); + } + } + + public static class NET_ITC_LANE_PARAM extends Structure{ + public byte byEnable; + public byte byRelatedDriveWay; + public short wDistance; + public short wTrigDelayTime; + public byte byTrigDelayDistance; + public byte bySpeedCapEn; + public byte bySignSpeed; + public byte bySpeedLimit; + public byte bySnapTimes; + public byte byOverlayDriveWay; + public NET_ITC_INTERVAL_PARAM struInterval = new NET_ITC_INTERVAL_PARAM(); + public byte[] byRelatedIOOut = new byte[MAX_IOOUT_NUM]; + public byte byFlashMode; + public byte byCartSignSpeed; + public byte byCartSpeedLimit; + public byte byRelatedIOOutEx; + public NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = (NET_ITC_PLATE_RECOG_REGION_PARAM[])new NET_ITC_PLATE_RECOG_REGION_PARAM().toArray(MAX_LANEAREA_NUM); + public byte byLaneType; + public byte byUseageType; + public byte byRelaLaneDirectionType; + public byte byLowSpeedLimit; + public byte byBigCarLowSpeedLimit; + public byte byLowSpeedCapEn; + public byte byEmergencyCapEn; + public byte[] byRes = new byte[9]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnable", "byRelatedDriveWay", "wDistance", "wTrigDelayTime", "byTrigDelayDistance", "bySpeedCapEn", "bySignSpeed", "bySpeedLimit", "bySnapTimes", "byOverlayDriveWay", "struInterval", "byRelatedIOOut", "byFlashMode", "byCartSignSpeed", "byCartSpeedLimit", "byRelatedIOOutEx", "struPlateRecog", "byLaneType", "byUseageType", "byRelaLaneDirectionType", "byLowSpeedLimit", "byBigCarLowSpeedLimit", "byLowSpeedCapEn", "byEmergencyCapEn", "byRes"); + } + } + + public static class NET_ITC_POST_RS485_RADAR_PARAM extends Structure{ + public byte byRelatedLaneNum; + public byte[] byRes1 = new byte[3]; + public NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new NET_ITC_PLATE_RECOG_PARAM(); + public NET_ITC_LANE_PARAM[] struLane = (NET_ITC_LANE_PARAM[])new NET_ITC_LANE_PARAM().toArray(MAX_ITC_LANE_NUM); + public NET_ITC_RADAR_PARAM struRadar = new NET_ITC_RADAR_PARAM(); + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRelatedLaneNum", "byRes1", "struPlateRecog", "struLane", "struRadar", "byRes"); + } + } + + public static class NET_ITC_TRIGGER_PARAM_UNION extends Union{ + public int[] uLen = new int[1070]; + public NET_ITC_POST_RS485_RADAR_PARAM struPostRadar = new NET_ITC_POST_RS485_RADAR_PARAM(); + } + + public static class NET_ITC_SINGLE_TRIGGERCFG extends Structure{ + public byte byEnable; + public byte[] byRes1 = new byte[3]; + public int dwTriggerType; + public NET_ITC_TRIGGER_PARAM_UNION uTriggerParam = new NET_ITC_TRIGGER_PARAM_UNION(); + public byte[] byRes = new byte[64]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnable", "byRes1", "dwTriggerType", "uTriggerParam", "byRes"); + } + } + + public static class NET_ITC_TRIGGERCFG extends Structure{ + public int dwSize; + public NET_ITC_SINGLE_TRIGGERCFG struTriggerParam = new NET_ITC_SINGLE_TRIGGERCFG(); + public byte[] byRes = new byte[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struTriggerParam", "byRes"); + } + } + + public static class NET_DVR_SHOWSTRINGINFO extends Structure{ + public short wShowString; + public short wStringSize; + public short wShowStringTopLeftX; + public short wShowStringTopLeftY; + public byte[] sString = new byte[44]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wShowString", "wStringSize", "wShowStringTopLeftX", "wShowStringTopLeftY", "sString"); + } + } + + public static class NET_DVR_SHOWSTRING_V30 extends Structure{ + public int dwSize; + public NET_DVR_SHOWSTRINGINFO[] struStringInfo = (NET_DVR_SHOWSTRINGINFO[])new NET_DVR_SHOWSTRINGINFO().toArray(MAX_STRINGNUM_V30); + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struStringInfo"); + } + } + + public static class NET_DVR_HANDLEEXCEPTION_V41 extends Structure{ + public int dwHandleType; + public byte[] byRes = new byte[16580]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwHandleType", "byRes"); + } + } + + public static class NET_DVR_EVENT_TRIGGER extends Structure{ + public int dwSize; + public NET_DVR_HANDLEEXCEPTION_V41 struHandleException = new NET_DVR_HANDLEEXCEPTION_V41(); + public byte[] byRes = new byte[14592]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struHandleException", "byRes"); + } + } + + public static class NET_DVR_SCHEDTIME extends Structure{ + public byte byStartHour; + public byte byStartMin; + public byte byStopHour; + public byte byStopMin; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byStartHour", "byStartMin", "byStopHour", "byStopMin"); + } + } + + public static class NET_DVR_SCHEDTIME_DAYS extends Structure{ + public NET_DVR_SCHEDTIME[] struSchedTimeDays = (NET_DVR_SCHEDTIME[])new NET_DVR_SCHEDTIME().toArray(MAX_DAYS); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struSchedTimeDays"); + } + } + + public static class NET_DVR_EVENT_SCHEDULE extends Structure{ + public int dwSize; + public NET_DVR_SCHEDTIME_DAYS[] struAlarmTime = (NET_DVR_SCHEDTIME_DAYS[])new NET_DVR_SCHEDTIME_DAYS().toArray(MAX_TIMESEGMENT_V30); + public byte[] byRes = new byte[160]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "struHandleException", "byRes"); + } + } + + public static class NET_DVR_FIND_PICTURE_PARAM extends Structure{ + public int dwSize; + public int lChannel; + public byte byFileType; + public byte byNeedCard; + public byte byProvince; + public byte byRes1; + public byte[] sCardNum = new byte[CARDNUM_LEN_V30]; + public NET_DVR_TIME struStartTime = new NET_DVR_TIME(); + public NET_DVR_TIME struStopTime = new NET_DVR_TIME(); + public int dwTrafficType; + public int dwVehicleType; + public int dwIllegalType; + public byte byLaneNo; + public byte bySubHvtType; + public byte[] byRes2 = new byte[2]; + public byte[] sLicense = new byte[MAX_LICENSE_LEN]; + public byte byRegion; + public byte byCountry; + public byte[] byRes3 = new byte[6]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "lChannel", "byFileType", "byNeedCard", "byProvince", "byRes1", "sCardNum", "struStartTime", "struStopTime", "dwTrafficType", "dwVehicleType", "dwIllegalType", "byLaneNo", "bySubHvtType", "byRes2", "sLicense", "byRegion", "byCountry", "byRes3"); + } + } + + public static class NET_DVR_FACE_EXTRA_INFO extends Structure{ + public NET_VCA_RECT[] struVcaRect = (NET_VCA_RECT[])new NET_VCA_RECT().toArray(MAX_FACE_PIC_NUM); + public byte[] byRes = new byte[64]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struVcaRect", "byRes"); + } + } + + public static class NET_DVR_PIC_EXTRA_INFO_UNION extends Union{ + public byte[] byUnionLen = new byte[544]; + public NET_DVR_FACE_EXTRA_INFO struFaceExtraInfo = new NET_DVR_FACE_EXTRA_INFO(); + } + + public static class NET_DVR_FIND_PICTURE_V40 extends Structure{ + public byte[] sFileName = new byte[PICTURE_NAME_LEN]; + public NET_DVR_TIME struTime = new NET_DVR_TIME(); + public int dwFileSize; + public byte[] sCardNum = new byte[CARDNUM_LEN_V30]; + public byte byPlateColor; + public byte byVehicleLogo; + public byte byFileType; + public byte byRecogResult ; + public byte[] sLicense = new byte[MAX_LICENSE_LEN]; + public byte byEventSearchStatus; + public byte[] byRes = new byte[75]; + public NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo = new NET_DVR_PIC_EXTRA_INFO_UNION(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("sFileName", "struTime", "dwFileSize", "sCardNum","byPlateColor", "byVehicleLogo","byFileType", "byRecogResult", "sLicense", "byEventSearchStatus", "byRes", "uPicExtraInfo"); + } + } + + public static class NET_DVR_DEVICE_RUN_STATUS extends Structure{ + public int dwSize; + public int dwMemoryTotal; + public int dwMemoryUsage; + public byte byCPUUsage; + public byte byMainFrameTemp; + public byte byBackPanelTemp; + public byte byRes1; + public byte[] byLeftDecResource = new byte[32]; + public float fNetworkFlow; + public byte[] byRes2 = new byte[88]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwMemoryTotal", "dwMemoryUsage", "byCPUUsage","byMainFrameTemp", + "byBackPanelTemp","byRes1", "byLeftDecResource", "fNetworkFlow", "byRes2"); + } + } + + public static class NET_DVR_LOCAL_TCP_PORT_BIND_CFG extends Structure{ + public short wLocalBindTcpMinPort; + public short wLocalBindTcpMaxPort; + public byte[] byRes = new byte[60]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wLocalBindTcpMinPort", "wLocalBindTcpMaxPort", "byRes"); + } + } + + public static class NET_DVR_LOCAL_UDP_PORT_BIND_CFG extends Structure{ + public short wLocalBindUdpMinPort; + public short wLocalBindUdpMaxPort; + public byte[] byRes = new byte[60]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wLocalBindUdpMinPort", "wLocalBindUdpMaxPort", "byRes"); + } + } + + public static class NET_DVR_LOCAL_MEM_POOL_CFG extends Structure{ + public int dwAlarmMaxBlockNum; + public int dwAlarmReleaseInterval; + public int dwObjectReleaseInterval; + public byte[] byRes = new byte[508]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwAlarmMaxBlockNum", "dwAlarmReleaseInterval", "dwObjectReleaseInterval", "byRes"); + } + } + + public static class NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG extends Structure{ + public int dwPreviewTime; + public int dwAlarmTime; + public int dwVodTime; + public int dwElse; + public byte[] byRes = new byte[512]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwPreviewTime", "dwAlarmTime", "dwVodTime", "dwElse", "byRes"); + } + } + + public static class NET_DVR_LOCAL_ABILITY_PARSE_CFG extends Structure{ + public byte byEnableAbilityParse; + public byte[] byRes = new byte[127]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnableAbilityParse", "byRes"); + } + } + + public static class NET_DVR_LOCAL_TALK_MODE_CFG extends Structure{ + public byte byTalkMode; + public byte[] byRes = new byte[127]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byTalkMode", "byRes"); + } + } + + public static class NET_DVR_LOCAL_PROTECT_KEY_CFG extends Structure{ + public byte[] byProtectKey = new byte[128]; + public byte[] byRes = new byte[128]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byProtectKey", "byRes"); + } + } + + public static class NET_DVR_LOCAL_CFG_VERSION extends Structure{ + public byte byVersion; + public byte[] byRes = new byte[63]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byVersion", "byRes"); + } + } + + public static class NET_DVR_RTSP_PARAMS_CFG extends Structure{ + public int dwMaxBuffRoomNum; + public byte byUseSort; + public byte[] byRes = new byte[123]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwMaxBuffRoomNum", "byUseSort", "byRes"); + } + } + + public static class NET_DVR_SIMXML_LOGIN extends Structure{ + public byte byLoginWithSimXml; + public byte[] byRes = new byte[127]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byLoginWithSimXml", "byRes"); + } + } + + public static class NET_DVR_LOCAL_CHECK_DEV extends Structure{ + public int dwCheckOnlineTimeout; + public int dwCheckOnlineNetFailMax; + public byte[] byRes = new byte[256]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwCheckOnlineTimeout", "dwCheckOnlineNetFailMax", "byRes"); + } + } + + public static class NET_DVR_LOCAL_SECURITY extends Structure{ + public byte bySecurityLevel; + public byte[] byRes = new byte[255]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("bySecurityLevel", "byRes"); + } + } + + public interface CHAR_ENCODE_CONVERT extends Callback { + public void invoke(Pointer pInput, int dwInputLen, + int dwInEncodeType, String pOutput, int dwOutputLen, int dwOutEncodeType); + } + + public static class NET_DVR_LOCAL_BYTE_ENCODE_CONVERT extends Structure{ + public CHAR_ENCODE_CONVERT fnCharConvertCallBack; + public byte[] byRes = new byte[256]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("fnCharConvertCallBack", "byRes"); + } + } + + public static class NET_DVR_SOCKS_PROXY_PARA extends Structure{ + public byte[] byIP = new byte[129]; + public byte byAuthType; + public short wPort; + public byte[] byRes2 = new byte[64]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byIP", "byAuthType", "wPort", "byRes2"); + } + } + + public static class NET_DVR_SOCKS_PROXYS extends Structure{ + public NET_DVR_SOCKS_PROXY_PARA[] struProxy = new NET_DVR_SOCKS_PROXY_PARA[32]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struProxy"); + } + } + + public static class NET_DVR_LOCAL_LOG_CFG extends Structure{ + public short wSDKLogNum; + public byte[] byRes = new byte[254]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wSDKLogNum", "byRes"); + } + } + + public static class NET_DVR_LOCAL_STREAM_CALLBACK_CFG extends Structure{ + public byte byPlayBackEndFlag; + public byte[] byRes = new byte[255]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byPlayBackEndFlag", "byRes"); + } + } + + public static class NET_DVR_LOCAL_GENERAL_CFG extends Structure{ + public byte byExceptionCbDirectly; + public byte byNotSplitRecordFile; + public byte byResumeUpgradeEnable; + public byte[] byRes = new byte[5]; + public long i64FileSize; + public int dwResumeUpgradeTimeout; + public byte[] byRes1 = new byte[236]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byExceptionCbDirectly", "byNotSplitRecordFile", "byResumeUpgradeEnable", "byRes", "i64FileSize", "dwResumeUpgradeTimeout", "byRes1"); + } + } + + public static class NET_DVR_LOCAL_PTZ_CFG extends Structure{ + public byte byWithoutRecv; + public byte[] byRes = new byte[63]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byWithoutRecv", "byRes"); + } + } + + + public static class NET_DVR_PTZPOS extends Structure + { + public short wAction; + public short wPanPos; + public short wTiltPos; + public short wZoomPos; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wAction", "wPanPos", "wTiltPos", "wZoomPos"); + } + } + + public static class NET_DVR_SCENE_INFO extends Structure { + public int dwSceneID; + public byte[] bySceneName = new byte[NAME_LEN]; + public byte byDirection; + public byte[] byRes1 = new byte[3]; + public NET_DVR_PTZPOS struPtzPos = new NET_DVR_PTZPOS(); + public byte[] byRes2 = new byte[64] ; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSceneID", "bySceneName", "byDirection", "byRes1", + "struPtzPos", "byRes2"); + } + } + + public static class NET_DVR_DIRECTION extends Structure { + + public NET_DVR_PTZPOS struStartPoint = new NET_DVR_PTZPOS(); + public NET_DVR_PTZPOS struEndPoint = new NET_DVR_PTZPOS(); + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struStartPoint", "struEndPoint"); + } + } + + + public static class NET_DVR_AID_INFO extends Structure { + public byte byRuleID; + public byte[] byRes1 = new byte[3]; + public byte[] byRuleName = new byte[NAME_LEN]; + public int dwAIDType; + public NET_DVR_DIRECTION struDirect = new NET_DVR_DIRECTION(); + public byte bySpeedLimit; + public byte byCurrentSpeed; + public byte byVehicleEnterState; + public byte[] byRes2 = new byte[37]; + + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRuleID", "byRes1", "byRuleName", "dwAIDType", + "struDirect", "bySpeedLimit", "byCurrentSpeed", "byVehicleEnterState", "byRes2"); + } + } + + public static class NET_DVR_TFS_ALARM extends Structure { + public int dwSize; + public int dwRelativeTime; + public int dwAbsTime; + public int dwIllegalType; + public int dwIllegalDuration; + public byte[] byMonitoringSiteID = new byte[MONITORSITE_ID_LEN]; + public byte[] byDeviceID = new byte[DEVICE_ID_LEN]; + public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO(); + public NET_DVR_SCENE_INFO struSceneInfo = new NET_DVR_SCENE_INFO(); + public NET_DVR_TIME_EX struBeginRecTime = new NET_DVR_TIME_EX(); + public NET_DVR_TIME_EX struEndRecTime = new NET_DVR_TIME_EX(); + public NET_DVR_AID_INFO struAIDInfo = new NET_DVR_AID_INFO(); + public NET_DVR_PLATE_INFO struPlateInfo = new NET_DVR_PLATE_INFO(); + public NET_DVR_VEHICLE_INFO struVehicleInfo = new NET_DVR_VEHICLE_INFO(); + public int dwPicNum; + public NET_ITS_PICTURE_INFO[] struPicInfo = (NET_ITS_PICTURE_INFO[])new NET_ITS_PICTURE_INFO().toArray(8); + public byte bySpecificVehicleType; + public byte byLaneNo; + public byte[] byRes1 = new byte[2]; + public NET_DVR_TIME_V30 struTime = new NET_DVR_TIME_V30(); + public int dwSerialNo; + public byte byVehicleAttribute; + public byte byPilotSafebelt; + public byte byCopilotSafebelt; + public byte byPilotSunVisor; + public byte byCopilotSunVisor; + public byte byPilotCall; + public byte[] byRes2 = new byte[2]; + public byte[] byIllegalCode = new byte[MONITORSITE_ID_LEN]; + public byte[] byRes = new byte[68]; + public NET_DVR_TFS_ALARM(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "dwRelativeTime", "dwAbsTime", "dwIllegalType", + "dwIllegalDuration", "byMonitoringSiteID", "byDeviceID", "struDevInfo", "struSceneInfo", + "struBeginRecTime", "struEndRecTime", "struAIDInfo", "struPlateInfo", + "struVehicleInfo", "dwPicNum", "struPicInfo", "bySpecificVehicleType", + "byLaneNo", "byRes1", "struTime", "dwSerialNo", + "byVehicleAttribute", "byPilotSafebelt", "byCopilotSafebelt", "byPilotSunVisor", + "byCopilotSunVisor", "byPilotCall", "byRes2", "byIllegalCode", + "byRes"); + } + } + + public static class NET_DVR_PICCFG_V40 extends Structure + { + public int dwSize; + public byte[] sChanName = new byte[NAME_LEN]; + public int dwVideoFormat; + public NET_DVR_VICOLOR struViColor; + public int dwShowChanName; + public short wShowNameTopLeftX; + public short wShowNameTopLeftY; + public int dwEnableHide; + public NET_DVR_SHELTER[] struShelter = new NET_DVR_SHELTER[MAX_SHELTERNUM]; + public int dwShowOsd; + public short wOSDTopLeftX; + public short wOSDTopLeftY; + public byte byOSDType; + public byte byDispWeek; + public byte byOSDAttrib; + public byte byHourOSDType; + public byte byFontSize; + public byte byOSDColorType; + public byte byAlignment; + public byte byOSDMilliSecondEnable; + public NET_DVR_VILOST_V40 struVILost; + public NET_DVR_VILOST_V40 struAULost; + public NET_DVR_MOTION_V40 struMotion; + public NET_DVR_HIDEALARM_V40 struHideAlarm; + public NET_DVR_RGB_COLOR struOsdColor; + public int dwBoundary; + public NET_DVR_RGB_COLOR struOsdBkColor; + public byte byOSDBkColorMode; + public byte[] byRes = new byte[115]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwSize", "sChanName", "dwVideoFormat", "struViColor", "dwShowChanName", + "wShowNameTopLeftX", "wShowNameTopLeftY", "dwEnableHide", "struShelter", + "dwShowOsd", "wOSDTopLeftX", "wOSDTopLeftY", "byOSDType", "byDispWeek", + "byOSDAttrib", "byHourOSDType", "byFontSize", "byOSDColorType", "byAlignment", + "byOSDMilliSecondEnable", "struVILost", "struAULost", "struMotion", "struHideAlarm", + "struOsdColor", "dwBoundary", "struOsdBkColor", "byOSDBkColorMode", "byRes"); + } + } + + public static class NET_DVR_VICOLOR extends Structure + { + public NET_DVR_COLOR[] struShelter = new NET_DVR_COLOR[MAX_TIMESEGMENT_V30]; + public NET_DVR_SCHEDTIME[] struHandleTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struShelter", "struHandleTime"); + } + } + + public static class NET_DVR_COLOR extends Structure + { + public byte byBrightness; + public byte byContrast; + public byte bySaturation; + public byte byHue; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byBrightness", "byContrast", "bySaturation", "byHue"); + } + } + + public static class NET_DVR_SHELTER extends Structure + { + public short wHideAreaTopLeftX; + public short wHideAreaTopLeftY; + public short wHideAreaWidth; + public short wHideAreaHeight; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("wHideAreaTopLeftX", "wHideAreaTopLeftY", "wHideAreaWidth", "wHideAreaHeight"); + } + } + + public static class NET_DVR_VILOST_V40 extends Structure + { + public int dwEnableVILostAlarm; + public int dwHandleType; + public int dwMaxRelAlarmOutChanNum; + public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; + public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; + public byte byVILostAlarmThreshold; + public byte[] byRes = new byte[63]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwEnableVILostAlarm", "dwHandleType", "dwMaxRelAlarmOutChanNum", + "dwRelAlarmOut", "struAlarmTime", "byVILostAlarmThreshold", "byRes"); + } + } + + public static class NET_DVR_SCHEDTIMEWEEK extends Structure + { + public NET_DVR_SCHEDTIME[] struAlarmTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struAlarmTime"); + } + } + + public static class NET_DVR_MOTION_V40 extends Structure + { + public NET_DVR_MOTION_MODE_PARAM struMotionMode; + public byte byEnableHandleMotion; + public byte byEnableDisplay; + public byte byConfigurationMode; + public byte byKeyingEnable; + public int dwHandleType; + public int dwMaxRelAlarmOutChanNum; + public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; + public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; + public int dwMaxRecordChanNum; + public int[] dwRelRecordChan = new int[MAX_CHANNUM_V40]; + public byte byDiscardFalseAlarm; + public byte[] byRes = new byte[127]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struMotionMode", "byEnableHandleMotion", "byEnableDisplay", "byConfigurationMode", + "byKeyingEnable", "dwHandleType", "dwMaxRelAlarmOutChanNum", "dwRelAlarmOut", + "struAlarmTime", "dwMaxRecordChanNum", "dwRelRecordChan", "byDiscardFalseAlarm", "byRes"); + } + } + + public static class NET_DVR_MOTION_MODE_PARAM extends Structure + { + public NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; + public NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struMotionSingleArea", "struMotionMultiArea"); + } + } + + public static class NET_DVR_MOTION_SINGLE_AREA extends Structure + { + public NET_DVR_MOTIONSCOPE[] byMotionScope = new NET_DVR_MOTIONSCOPE[64]; + public byte byMotionSensitive; + public byte[] byRes = new byte[3]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byMotionScope", "byMotionSensitive", "byRes"); + } + } + + public static class NET_DVR_MOTIONSCOPE extends Structure + { + public byte[] byMotionScope = new byte[96]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byMotionScope"); + } + } + + public static class NET_DVR_MOTION_MULTI_AREA extends Structure + { + public byte byDayNightCtrl; + public byte byAllMotionSensitive; + public byte[] byRes = new byte[2]; + public NET_DVR_SCHEDULE_DAYTIME struScheduleTime; + public NET_DVR_MOTION_MULTI_AREAPARAM[] struMotionMultiAreaParam = new NET_DVR_MOTION_MULTI_AREAPARAM[MAX_MULTI_AREA_NUM]; + public byte[] byRes1 = new byte[60]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byDayNightCtrl", "byAllMotionSensitive", "byRes", + "struScheduleTime", "struMotionMultiAreaParam", "byRes1"); + } + } + + public static class NET_DVR_SCHEDULE_DAYTIME extends Structure + { + public NET_DVR_DAYTIME struStartTime; + public NET_DVR_DAYTIME struStopTime; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("struStartTime", "struStopTime"); + } + } + + public static class NET_DVR_DAYTIME extends Structure + { + public byte byHour; + public byte byMinute; + public byte bySecond; + public byte byRes; + public short wMilliSecond; + public byte[] byRes1 = new byte[2]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byHour", "byMinute", "bySecond", "byRes", "wMilliSecond", + "byRes1"); + } + } + + public static class NET_DVR_MOTION_MULTI_AREAPARAM extends Structure + { + public byte byAreaNo; + public byte[] byRes = new byte[3]; + public NET_VCA_RECT struRect; + public NET_DVR_DNMODE struDayNightDisable; + public NET_DVR_DNMODE struDayModeParam; + public NET_DVR_DNMODE struNightModeParam; + public byte[] byRes1 = new byte[8]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byAreaNo", "byRes", "struRect", "struDayNightDisable", + "struDayModeParam", "struNightModeParam", "byRes1"); + } + } + + public static class NET_DVR_DNMODE extends Structure + { + public byte byObjectSize; + public byte byMotionSensitive; + public byte[] byRes = new byte[6]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byObjectSize", "byMotionSensitive", "byRes"); + } + } + + public static class NET_DVR_HIDEALARM_V40 extends Structure + { + public int dwEnableHideAlarm; + public short wHideAlarmAreaTopLeftX; + public short wHideAlarmAreaTopLeftY; + public short wHideAlarmAreaWidth; + public short wHideAlarmAreaHeight; + public int dwHandleType; + public int dwMaxRelAlarmOutChanNum; + public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; + public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; + public byte[] byRes = new byte[64]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwEnableHideAlarm", "wHideAlarmAreaTopLeftX", "wHideAlarmAreaTopLeftY", "wHideAlarmAreaWidth", + "wHideAlarmAreaHeight", "dwHandleType", "dwMaxRelAlarmOutChanNum", "dwRelAlarmOut", + "struAlarmTime", "byRes"); + } + } + + public static class NET_DVR_RGB_COLOR extends Structure + { + public byte byRed; + public byte byGreen; + public byte byBlue; + public byte byRes; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byRed", "byGreen", "byBlue", "byRes"); + } + } + + public static class NET_DVR_TEMPERATURE_COLOR extends Structure + { + public byte byType; + public byte[] byRes1 = new byte[3]; + public int iHighTemperature; + public int iLowTemperature; + public byte[] byRes = new byte[8]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byType", "byRes1", "iHighTemperature", "iLowTemperature", "byRes"); + } + } + + public static class NET_DVR_THERMOMETRY_BASICPARAM extends Structure + { + public int dwsize; + public byte byEnabled; + public byte byStreamOverlay; + public byte byPictureOverlay; + public byte byThermometryRange; + public byte byThermometryUnit; + public byte byThermometryCurve; + public byte byFireImageModea; + public byte byShowTempStripEnable; + public float fEmissivity; + public byte byDistanceUnit; + public byte byEnviroHumidity; + public byte[] byRes2 = new byte[2]; + public NET_DVR_TEMPERATURE_COLOR struTempColor; + public int iEnviroTemperature; + public int iCorrectionVolume; + public byte bySpecialPointThermType; + public byte byReflectiveEnabled; + public short wDistance; + public float fReflectiveTemperature; + public float fAlert; + public float fAlarm; + public float fThermalOpticalTransmittance; + public float fExternalOpticsWindowCorrection; + public byte byDisplayMaxTemperatureEnabled; + public byte byDisplayMinTemperatureEnabled; + public byte byDisplayAverageTemperatureEnabled; + public byte byThermometryInfoDisplayposition; + public int dwAlertFilteringTime; + public int dwAlarmFilteringTime; + public byte byemissivityMode; + public byte bydisplayTemperatureInOpticalChannelEnabled; + public byte byDisplayCentreTemperatureEnabled; + public byte[] byRes = new byte[49]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwsize", "byEnabled", "byStreamOverlay", "byPictureOverlay", "byThermometryRange", "byThermometryUnit", + "byThermometryCurve", "byFireImageModea", "byShowTempStripEnable", "fEmissivity", "byDistanceUnit", "byEnviroHumidity", + "byRes2", "struTempColor", "iEnviroTemperature", "iCorrectionVolume", "bySpecialPointThermType", "byReflectiveEnabled", + "wDistance", "fReflectiveTemperature", "fAlert", "fAlarm", "fThermalOpticalTransmittance", "fExternalOpticsWindowCorrection", + "byDisplayMaxTemperatureEnabled","byDisplayMinTemperatureEnabled","byDisplayAverageTemperatureEnabled", + "byThermometryInfoDisplayposition","dwAlertFilteringTime","dwAlarmFilteringTime","byemissivityMode","bydisplayTemperatureInOpticalChannelEnabled", + "byDisplayCentreTemperatureEnabled","byRes"); + } + } + + public static class NET_DVR_THERMOMETRY_COND extends Structure + { + public int dwsize; + public int dwChannel; + public short wPresetNo; + public byte[] byRes = new byte[62]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwsize", "dwChannel", "wPresetNo", "byRes"); + } + } + + public static class NET_DVR_THERMOMETRY_PRESETINFO_PARAM extends Structure + { + public byte byEnabled; + public byte byRuleID; + public short wDistance; + public float fEmissivity; + public byte[] byRes = new byte[3]; + public byte byReflectiveEnabled; + public float fReflectiveTemperature; + public byte[] szRuleName = new byte[NAME_LEN]; + public byte[] byRes1 = new byte[63]; + public byte byRuleCalibType; + public NET_VCA_POINT struPoint; + public NET_VCA_POLYGON struRegion; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("byEnabled", "byRuleID", "wDistance", "fEmissivity", "byRes", "byReflectiveEnabled", "fReflectiveTemperature", + "szRuleName", "byRes1", "byRuleCalibType", "struPoint", "struRegion"); + } + } + + + public static class NET_DVR_THERMOMETRY_PRESETINFO extends Structure + { + public int dwsize; + public short wPresetNo; + public byte[] byRes = new byte[2]; + public NET_DVR_THERMOMETRY_PRESETINFO_PARAM[] struPresetInfo = new NET_DVR_THERMOMETRY_PRESETINFO_PARAM[MAX_THERMOMETRY_REGION_NUM]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwsize", "wPresetNo", "byRes", "struPresetInfo"); + } + } + + + public static class NET_DVR_THERMAL_PIP extends Structure + { + public int dwsize; + public byte byEnable; + public byte byPipMode; + public byte byOverlapType; + public byte byTransparency; + public NET_VCA_POLYGON struPipRegion=new NET_VCA_POLYGON(); + public byte[] byRes = new byte[640]; + @Override + protected List getFieldOrder() { + // TODO Auto-generated method stub + return Arrays.asList("dwsize", "byEnable", "byPipMode", "byOverlapType", "byTransparency", "struPipRegion", "byRes"); + } + } + + public static class NET_DVR_CAMERAPARAMCFG_EX extends Structure + { + public int dwSize; + public NET_DVR_VIDEOEFFECT struVideoEffect=new NET_DVR_VIDEOEFFECT(); + public NET_DVR_GAIN struGain=new NET_DVR_GAIN(); + public NET_DVR_WHITEBALANCE struWhiteBalance=new NET_DVR_WHITEBALANCE(); + public NET_DVR_EXPOSURE struExposure=new NET_DVR_EXPOSURE(); + public NET_DVR_GAMMACORRECT struGammaCorrect=new NET_DVR_GAMMACORRECT(); + public NET_DVR_WDR struWdr=new NET_DVR_WDR(); + public NET_DVR_DAYNIGHT struDayNight=new NET_DVR_DAYNIGHT(); + public NET_DVR_BACKLIGHT struBackLight=new NET_DVR_BACKLIGHT(); + public NET_DVR_NOISEREMOVE struNoiseRemove=new NET_DVR_NOISEREMOVE(); + public byte byPowerLineFrequencyMode; + public byte byIrisMode; + public byte byMirror ; + public byte byDigitalZoom; + public byte byDeadPixelDetect; + public byte byBlackPwl; + public byte byEptzGate; + public byte byLocalOutputGate; + public byte byCoderOutputMode; + public byte byLineCoding; + public byte byDimmerMode; + public byte byPaletteMode; + public byte byEnhancedMode; + public byte byDynamicContrastEN; + public byte byDynamicContrast; + public byte byJPEGQuality; + public NET_DVR_CMOSMODECFG struCmosModeCfg=new NET_DVR_CMOSMODECFG(); + public byte byFilterSwitch; + public byte byFocusSpeed; + public byte byAutoCompensationInterval; + public byte bySceneMode; + public NET_DVR_DEFOGCFG struDefogCfg=new NET_DVR_DEFOGCFG(); + public NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization=new NET_DVR_ELECTRONICSTABILIZATION(); + public NET_DVR_CORRIDOR_MODE_CCD struCorridorMode=new NET_DVR_CORRIDOR_MODE_CCD(); + public byte byExposureSegmentEnable; + public byte byBrightCompensate; + public byte byCaptureModeN; + public byte byCaptureModeP; + public NET_DVR_SMARTIR_PARAM struSmartIRParam=new NET_DVR_SMARTIR_PARAM(); + public NET_DVR_PIRIS_PARAM struPIrisParam=new NET_DVR_PIRIS_PARAM(); + public NET_DVR_LASER_PARAM_CFG struLaserParam=new NET_DVR_LASER_PARAM_CFG(); + public NET_DVR_FFC_PARAM struFFCParam=new NET_DVR_FFC_PARAM(); + public NET_DVR_DDE_PARAM struDDEParam=new NET_DVR_DDE_PARAM(); + public NET_DVR_AGC_PARAM struAGCParam=new NET_DVR_AGC_PARAM(); + public byte byLensDistortionCorrection; + public byte byDistortionCorrectionLevel; + public byte byCalibrationAccurateLevel; + public byte byZoomedInDistantViewLevel; + public NET_DVR_SNAP_CAMERAPARAMCFG struSnapCCD=new NET_DVR_SNAP_CAMERAPARAMCFG(); + public NET_DVR_OPTICAL_DEHAZE struOpticalDehaze=new NET_DVR_OPTICAL_DEHAZE(); + public NET_DVR_THERMOMETRY_AGC struThermAGC=new NET_DVR_THERMOMETRY_AGC(); + public byte byFusionMode; + public byte byHorizontalFOV; + public byte byVerticalFOV; + public byte byBrightnessSuddenChangeSuppression; + public byte byGPSEnabled; + public byte[] byRes2 = new byte[155]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","struVideoEffect","struGain","struWhiteBalance","struExposure","struGammaCorrect","struWdr","struDayNight","struBackLight","struNoiseRemove","byPowerLineFrequencyMode","byIrisMode","byMirror","byDigitalZoom","byDeadPixelDetect","byBlackPwl","byEptzGate","byLocalOutputGate","byCoderOutputMode","byLineCoding","byDimmerMode","byPaletteMode","byEnhancedMode","byDynamicContrastEN","byDynamicContrast","byJPEGQuality","struCmosModeCfg","byFilterSwitch","byFocusSpeed","byAutoCompensationInterval","bySceneMode","struDefogCfg","struElectronicStabilization","struCorridorMode","byExposureSegmentEnable","byBrightCompensate","byCaptureModeN","byCaptureModeP","struSmartIRParam","struPIrisParam","struLaserParam","struFFCParam","struDDEParam","struAGCParam","byLensDistortionCorrection","byDistortionCorrectionLevel","byCalibrationAccurateLevel","byZoomedInDistantViewLevel","struSnapCCD","struOpticalDehaze","struThermAGC","byFusionMode","byHorizontalFOV","byVerticalFOV","byBrightnessSuddenChangeSuppression","byGPSEnabled","byRes2"); + } + } + + public static class NET_DVR_GAIN extends Structure + { + public byte byGainLevel; + public byte byGainUserSet; + public byte[] byRes = new byte[2]; + public int dwMaxGainValue; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byGainLevel","byGainUserSet","byRes","dwMaxGainValue"); + } + } + + public static class NET_DVR_WHITEBALANCE extends Structure + { + public byte byWhiteBalanceMode; + public byte byWhiteBalanceModeRGain; + public byte byWhiteBalanceModeBGain; + public byte[] byRes = new byte[5]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byWhiteBalanceMode","byWhiteBalanceModeRGain","byWhiteBalanceModeBGain","byRes"); + } + } + + public static class NET_DVR_EXPOSURE extends Structure + { + public byte byExposureMode; + public byte byAutoApertureLevel; + public byte[] byRes = new byte[2]; + public int dwVideoExposureSet; + public int dwExposureUserSet; + public int dwRes; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byExposureMode","byAutoApertureLevel","byRes","dwVideoExposureSet","dwExposureUserSet","dwRes"); + } + } + + public static class NET_DVR_GAMMACORRECT extends Structure + { + public byte byGammaCorrectionEnabled; + public byte byGammaCorrectionLevel; + public byte[] byRes = new byte[6]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byGammaCorrectionEnabled","byGammaCorrectionLevel","byRes"); + } + } + + public static class NET_DVR_WDR extends Structure + { + public byte byWDREnabled; + public byte byWDRLevel1; + public byte byWDRLevel2; + public byte byWDRContrastLevel; + public byte[] byRes = new byte[16]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byWDREnabled","byWDRLevel1","byWDRLevel2","byWDRContrastLevel","byRes"); + } + } + + public static class NET_DVR_DAYNIGHT extends Structure + { + public byte byDayNightFilterType; + public byte bySwitchScheduleEnabled; + public byte byBeginTime; + public byte byEndTime; + public byte byDayToNightFilterLevel; + public byte byNightToDayFilterLevel; + public byte byDayNightFilterTime; + public byte byBeginTimeMin; + public byte byBeginTimeSec; + public byte byEndTimeMin; + public byte byEndTimeSec; + public byte byAlarmTrigState; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byDayNightFilterType","bySwitchScheduleEnabled","byBeginTime","byEndTime","byDayToNightFilterLevel","byNightToDayFilterLevel","byDayNightFilterTime","byBeginTimeMin","byBeginTimeSec","byEndTimeMin","byEndTimeSec","byAlarmTrigState"); + } + } + + public static class NET_DVR_BACKLIGHT extends Structure + { + public byte byBacklightMode; + public byte byBacklightLevel; + public byte[] byRes1 = new byte[2]; + public int dwPositionX1; + public int dwPositionY1; + public int dwPositionX2; + public int dwPositionY2; + public byte[] byRes2 = new byte[4]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byBacklightMode","byBacklightLevel","byRes1","dwPositionX1","dwPositionY1","dwPositionX2","dwPositionY2","byRes2"); + } + } + + public static class NET_DVR_NOISEREMOVE extends Structure + { + public byte byDigitalNoiseRemoveEnable; + public byte byDigitalNoiseRemoveLevel; + public byte bySpectralLevel; + public byte byTemporalLevel; + public byte byDigitalNoiseRemove2DEnable; + public byte byDigitalNoiseRemove2DLevel; + public byte[] byRes = new byte[2]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byDigitalNoiseRemoveEnable","byDigitalNoiseRemoveLevel","bySpectralLevel","byTemporalLevel","byDigitalNoiseRemove2DEnable","byDigitalNoiseRemove2DLevel","byRes"); + } + } + + public static class NET_DVR_CMOSMODECFG extends Structure + { + public byte byCaptureMod; + public byte byBrightnessGate; + public byte byCaptureGain1; + public byte byCaptureGain2; + public int dwCaptureShutterSpeed1; + public int dwCaptureShutterSpeed2; + public byte[] byRes = new byte[4]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byCaptureMod","byBrightnessGate","byCaptureGain1","byCaptureGain2","dwCaptureShutterSpeed1","dwCaptureShutterSpeed2","byRes"); + } + } + + public static class NET_DVR_DEFOGCFG extends Structure + { + public byte byMode; + public byte byLevel; + public byte[] byRes = new byte[6]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byLevel","byRes"); + } + } + + public static class NET_DVR_ELECTRONICSTABILIZATION extends Structure + { + public byte byEnable; + public byte byLevel; + public byte[] byRes = new byte[6]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byEnable","byLevel","byRes"); + } + } + + public static class NET_DVR_CORRIDOR_MODE_CCD extends Structure + { + public byte byEnableCorridorMode; + public byte[] byRes = new byte[11]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byEnableCorridorMode","byRes"); + } + } + + public static class NET_DVR_SMARTIR_PARAM extends Structure + { + public byte byMode; + public byte byIRDistance; + public byte byShortIRDistance; + public byte byLongIRDistance; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byIRDistance","byShortIRDistance","byLongIRDistance"); + } + } + + public static class NET_DVR_PIRIS_PARAM extends Structure + { + public byte byMode; + public byte byPIrisAperture; + public byte[] byRes = new byte[6]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byPIrisAperture","byRes"); + } + } + + public static class NET_DVR_LASER_PARAM_CFG extends Structure + { + public byte byControlMode; + public byte bySensitivity; + public byte byTriggerMode; + public byte byBrightness; + public byte byAngle; + public byte byLimitBrightness; + public byte byEnabled ; + public byte byIllumination; + public byte byLightAngle; + public byte[] byRes = new byte[7]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byControlMode","bySensitivity","byTriggerMode","byBrightness","byAngle","byLimitBrightness","byEnabled","byIllumination","byLightAngle","byRes"); + } + } + + public static class NET_DVR_FFC_PARAM extends Structure + { + public byte byMode; + public byte byRes1; + public short wCompensateTime; + public byte[] byRes2 = new byte[4]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byRes1","wCompensateTime","byRes2"); + } + } + + public static class NET_DVR_DDE_PARAM extends Structure + { + public byte byMode; + public byte byNormalLevel; + public byte byExpertLevel; + public byte[] byRes = new byte[5]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byNormalLevel","byExpertLevel","byRes"); + } + } + + public static class NET_DVR_AGC_PARAM extends Structure + { + public byte bySceneType; + public byte byLightLevel; + public byte byGainLevel; + public byte[] byRes = new byte[5]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("bySceneType","byLightLevel","byGainLevel","byRes"); + } + } + + public static class NET_DVR_OPTICAL_DEHAZE extends Structure + { + public byte byEnable; + public byte[] byRes = new byte[7]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byEnable","byRes"); + } + } + + public static class NET_DVR_THERMOMETRY_AGC extends Structure + { + public byte byMode; + public byte[] byRes1 = new byte[3]; + public int iHighTemperature; + public int iLowTemperature; + public byte[] byRes = new byte[8]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byMode","byRes1","iHighTemperature","iLowTemperature","byRes"); + } + } + + public static class NET_DVR_MANUALSNAP extends Structure + { + public byte byOSDEnable; + public byte byLaneNo; + public byte byChannel; + public byte[] byRes = new byte[21]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("byOSDEnable","byLaneNo","byChannel","byRes"); + } + } + + public static class NET_DVR_PIC_PARAM extends Structure + { + public Pointer pDVRFileName; + public Pointer pSavedFileBuf; + public int dwBufLen; + public Pointer lpdwRetLen; + public NET_DVR_ADDRESS struAddr = new NET_DVR_ADDRESS(); + public byte[] byRes = new byte[256]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("pDVRFileName","pSavedFileBuf","dwBufLen","lpdwRetLen","struAddr","byRes"); + } + } + + public static class NET_DVR_ADDRESS extends Structure + { + public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR(); + public short wPort; + public byte[] byRes = new byte[2]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("struIP","wPort","byRes"); + } + } + + public static class NET_DVR_FFC_MANUAL_INFO extends Structure + { + public int dwSize; + public int dwChannel; + public byte[] byRes = new byte[64]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwChannel","byRes"); + } + } + + public static class NET_DVR_SNAP_CAMERAPARAMCFG extends Structure + { + public byte byWDRMode; + public byte byWDRType; + public byte byWDRLevel; + public byte byRes1; + public NET_DVR_TIME_EX struStartTime=new NET_DVR_TIME_EX(); + public NET_DVR_TIME_EX struEndTime=new NET_DVR_TIME_EX(); + public byte byDayNightBrightness; + public byte byMCEEnabled; + public byte byMCELevel; + public byte byAutoContrastEnabled; + public byte byAutoContrastLevel; + public byte byLSEDetailEnabled; + public byte byLSEDetailLevel; + public byte byLPDEEnabled; + public byte byLPDELevel; + public byte byLseEnabled; + public byte byLseLevel; + public byte byLSEHaloLevel; + public byte byLseType; + public byte[] byRes2 = new byte[3]; + public NET_DVR_TIME_EX struLSEStartTime=new NET_DVR_TIME_EX(); + public NET_DVR_TIME_EX struLSEEndTime=new NET_DVR_TIME_EX(); + public byte byLightLevel; + public byte byPlateContrastLevel; + public byte byPlateSaturationLevel; + public byte[] byRes = new byte[9]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byWDRMode","byWDRType","byWDRLevel","byRes1","struStartTime","struEndTime","byDayNightBrightness","byMCEEnabled","byMCELevel","byAutoContrastEnabled","byAutoContrastLevel","byLSEDetailEnabled","byLSEDetailLevel","byLPDEEnabled","byLPDELevel","byLseEnabled","byLseLevel","byLSEHaloLevel","byLseType","byRes2","struLSEStartTime","struLSEEndTime","byLightLevel","byPlateContrastLevel","byPlateSaturationLevel","byRes"); + } + } + + + + public static class NET_DVR_ETHERNET_V30 extends Structure + { + public NET_DVR_IPADDR[] struDVRIP=new NET_DVR_IPADDR[2]; + public NET_DVR_IPADDR struDVRIPMask=new NET_DVR_IPADDR(); + public int dwNetInterface; + public short wDVRPort; + public short wMTU; + public byte[] byMACAddr = new byte[6]; + public byte byEthernetPortNo; + public byte[] byRes = new byte[1]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("struDVRIP","struDVRIPMask","dwNetInterface","wDVRPort","wMTU","byMACAddr","byEthernetPortNo","byRes"); + } + } + + public static class NET_DVR_PPPOECFG extends Structure + { + public int dwPPPOE; + public byte[] sPPPoEUser = new byte[32]; + public byte[] sPPPoEPassword = new byte[16]; + public NET_DVR_IPADDR struDVRIP=new NET_DVR_IPADDR(); + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwPPPOE","sPPPoEUser","sPPPoEPassword","struDVRIP"); + } + } + + public static class NET_DVR_NETCFG_V50 extends Structure + { + public int dwSize; + public NET_DVR_ETHERNET_V30[] struEtherNet=new NET_DVR_ETHERNET_V30[2]; + public NET_DVR_IPADDR[] struRes1=new NET_DVR_IPADDR[2]; + public NET_DVR_IPADDR struAlarmHostIpAddr=new NET_DVR_IPADDR(); + public byte[] byRes2 = new byte[4]; + public short wAlarmHostIpPort; + public byte byUseDhcp; + public byte byIPv6Mode; + public NET_DVR_IPADDR struDnsServer1IpAddr=new NET_DVR_IPADDR(); + public NET_DVR_IPADDR struDnsServer2IpAddr=new NET_DVR_IPADDR(); + public byte[] byIpResolver = new byte[64]; + public short wIpResolverPort; + public short wHttpPortNo; + public NET_DVR_IPADDR struMulticastIpAddr=new NET_DVR_IPADDR(); + public NET_DVR_IPADDR struGatewayIpAddr=new NET_DVR_IPADDR(); + public NET_DVR_PPPOECFG struPPPoE=new NET_DVR_PPPOECFG(); + public byte byEnablePrivateMulticastDiscovery; + public byte byEnableOnvifMulticastDiscovery; + public short wAlarmHost2IpPort; + public NET_DVR_IPADDR struAlarmHost2IpAddr=new NET_DVR_IPADDR(); + public byte byEnableDNS; + public byte byAlarmOverTLS; + public byte[] byRes = new byte[598]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","struEtherNet","struRes1","struAlarmHostIpAddr","byRes2","wAlarmHostIpPort", + "byUseDhcp","byIPv6Mode","struDnsServer1IpAddr","struDnsServer2IpAddr","byIpResolver","wIpResolverPort", + "wHttpPortNo","struMulticastIpAddr","struGatewayIpAddr","struPPPoE","byEnablePrivateMulticastDiscovery", + "byEnableOnvifMulticastDiscovery","wAlarmHost2IpPort","struAlarmHost2IpAddr","byEnableDNS","byAlarmOverTLS", + "byRes"); + } + } + + public static class NET_DVR_EVENT_CARD_LINKAGE_COND extends Structure + { + public int dwSize; + public int dwEventID; + public short wLocalControllerID; + public byte[] byRes = new byte[106]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwEventID","wLocalControllerID","byRes"); + } + } + + public static class NET_DVR_EVENT_LINKAGE_INFO extends Structure + { + public short wMainEventType; + public short wSubEventType; + public byte[] byRes = new byte[28]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("wMainEventType","wSubEventType","byRes"); + } + } + + public static class NET_DVR_EVETN_CARD_LINKAGE_UNION extends Union + { + public byte[] byCardNo = new byte[32]; + public NET_DVR_EVENT_LINKAGE_INFO struEventLinkage = new NET_DVR_EVENT_LINKAGE_INFO(); + public byte[] byMACAddr = new byte[6]; + public byte[] byEmployeeNo = new byte[32]; + } + + public static class NET_DVR_EVENT_CARD_LINKAGE_CFG_V51 extends Structure + { + public int dwSize; + public byte byProMode; + public byte[] byRes1 = new byte[3]; + public int dwEventSourceID; + public NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo=new NET_DVR_EVETN_CARD_LINKAGE_UNION(); + public byte[] byAlarmout = new byte[512]; + public byte[] byRes2 = new byte[32]; + public byte[] byOpenDoor = new byte[256]; + public byte[] byCloseDoor = new byte[256]; + public byte[] byNormalOpen = new byte[256]; + public byte[] byNormalClose = new byte[256]; + public byte byMainDevBuzzer; + public byte byCapturePic; + public byte byRecordVideo; + public byte byMainDevStopBuzzer; + public byte[] byRes3 = new byte[28]; + public byte[] byReaderBuzzer = new byte[512]; + public byte[] byAlarmOutClose = new byte[512]; + public byte[] byAlarmInSetup = new byte[512]; + public byte[] byAlarmInClose = new byte[512]; + public byte[] byReaderStopBuzzer = new byte[512]; + public byte[] byRes = new byte[512]; + + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","byProMode","byRes1","dwEventSourceID", + "uLinkageInfo","byAlarmout","byRes2","byOpenDoor", + "byCloseDoor","byNormalOpen","byNormalClose","byMainDevBuzzer", + "byCapturePic","byRecordVideo","byMainDevStopBuzzer","byRes3", + "byReaderBuzzer","byAlarmOutClose","byAlarmInSetup","byAlarmInClose", + "byReaderStopBuzzer","byRes"); + } + } + + public static class NET_DVR_MATRIX_ABILITY extends Structure + { + public int dwSize; + public byte byDecNums; + public byte byStartChan; + public byte byVGANums; + public byte byBNCNums; + public byte[][] byVGAWindowMode = new byte[8][12]; + public byte[] byBNCWindowMode = new byte[4]; + public byte byDspNums; + public byte byHDMINums; + public byte byDVINums; + public byte[] byRes1 = new byte[13]; + public byte[] bySupportResolution = new byte[64]; + public byte[][] byHDMIWindowMode = new byte[4][8]; + public byte[][] byDVIWindowMode = new byte[4][8]; + public byte[] byRes2 = new byte[24]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","byDecNums","byStartChan","byVGANums", + "byBNCNums","byVGAWindowMode","byBNCWindowMode","byDspNums", + "byHDMINums","byDVINums","byRes1","bySupportResolution", + "byHDMIWindowMode","byDVIWindowMode","byRes2"); + } + } + + public static class NET_DVR_CARD_PASSWD_CFG extends Structure + { + public int dwSize; + public byte[] byCardNo = new byte[32]; + public byte[] byCardPassword = new byte[8]; + public int dwErrorCode; + public byte byCardValid; + public byte[] byRes2 = new byte[23]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","byCardNo","byCardPassword","dwErrorCode", + "byCardValid","byRes2"); + } + } + + + public static class NET_DVR_ACS_EVENT_DETAIL extends Structure { + public int dwSize; + public byte byCardNo[] = new byte[32]; + public byte byCardType; + public byte byWhiteListNo; + public byte byReportChannel; + public byte byCardReaderKind; + public int dwCardReaderNo; + public int dwDoorNo; + public int dwVerifyNo; + public int dwAlarmInNo; + public int dwAlarmOutNo; + public int dwCaseSensorNo; + public int dwRs485No; + public int dwMultiCardGroupNo; + public short wAccessChannel; + public byte byDeviceNo; + public byte byDistractControlNo; + public int dwEmployeeNo; + public short wLocalControllerID; + public byte byInternetAccess; + public byte byType; + public byte byMACAddr[] = new byte[6]; + public byte bySwipeCardType; + public byte byRes2; + public int dwSerialNo; + public byte byChannelControllerID; + public byte byChannelControllerLampID; + public byte byChannelControllerIRAdaptorID; + public byte byChannelControllerIREmitterID; + public byte byRes[] = new byte[108]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byCardNo", "byCardType", + "byWhiteListNo", "byReportChannel", "byCardReaderKind", + "dwCardReaderNo", "dwDoorNo", "dwVerifyNo", "dwAlarmInNo", + "dwAlarmOutNo", "dwCaseSensorNo", "dwRs485No", + "dwMultiCardGroupNo", "wAccessChannel", "byDeviceNo", + "byDistractControlNo", "dwEmployeeNo", + "wLocalControllerID", "byInternetAccess", "byType", + "byMACAddr", "bySwipeCardType", "byRes2", "dwSerialNo", + "byChannelControllerID", "byChannelControllerLampID", + "byChannelControllerIRAdaptorID", + "byChannelControllerIREmitterID", "byRes"); + } + } + + + public static class NET_DVR_ACS_EVENT_CFG extends Structure { + public int dwSize; + public int dwMajor; + public int dwMinor; + public NET_DVR_TIME struTime; + public byte sNetUser[] = new byte[16]; + public NET_DVR_IPADDR struRemoteHostAddr; + public NET_DVR_ACS_EVENT_DETAIL struAcsEventInfo; + public int dwPicDataLen; + public Pointer pPicData; + public byte byRes[] = new byte[64]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "dwMajor", "dwMinor", "struTime", + "sNetUser", "struRemoteHostAddr", "struAcsEventInfo", + "dwPicDataLen", "pPicData", "byRes"); + } + public NET_DVR_ACS_EVENT_CFG(Pointer p) { + super(p); + } + } + public static class NET_DVR_CAPTURE_FACE_CFG extends Structure + { + public int dwSize; + public int dwFaceTemplate1Size; + public ByteByReference pFaceTemplate1Buffer; + public int dwFaceTemplate2Size; + public ByteByReference pFaceTemplate2Buffer; + public int dwFacePicSize; + public ByteByReference pFacePicBuffer; + public byte byFaceQuality1; + public byte byFaceQuality2; + public byte byCaptureProgress; + public byte byRes1; + public int dwInfraredFacePicSize; + public ByteByReference pInfraredFacePicBuffer; + public byte[] byRes = new byte[116]; + + public NET_DVR_CAPTURE_FACE_CFG(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwFaceTemplate1Size","pFaceTemplate1Buffer","dwFaceTemplate2Size", + "pFaceTemplate2Buffer","dwFacePicSize","pFacePicBuffer","byFaceQuality1", + "byFaceQuality2","byCaptureProgress","byRes1","dwInfraredFacePicSize", + "pInfraredFacePicBuffer","byRes"); + } + } + + //add by jiaoyy// + public static class NET_DVR_FACE_PARAM_CFG extends Structure { + public int dwSize; + public byte byCardNo[] = new byte[32]; + public int dwFaceLen; + public Pointer pFaceBuffer; + public byte byEnableCardReader[] = new byte[512]; + public byte byFaceID; + public byte byFaceDataType; + public byte byRes[] = new byte[126]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byCardNo", "dwFaceLen", + "pFaceBuffer", "byEnableCardReader", "byFaceID", + "byFaceDataType", "byRes"); + } + public NET_DVR_FACE_PARAM_CFG(Pointer p) { + super(p); + } + } + + /*add by jiaoyy*/ + public static class NET_DVR_CARD_CFG_SEND_DATA extends Structure { + public int dwSize; + public byte byCardNo[] = new byte[32]; + public int dwCardUserId; + public byte byRes[] = new byte[12]; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwSize", "byCardNo", "dwCardUserId", "byRes"); + } +// public NET_DVR_CARD_CFG_SEND_DATA(Pointer p) { +// super(p); +// } + } + public static class NET_DVR_ACS_EVENT_INFO extends Structure + { + public int dwSize; + public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; + public byte byCardType; + public byte byWhiteListNo; + public byte byReportChannel; + public byte byCardReaderKind; + public int dwCardReaderNo; + public int dwDoorNo; + public int dwVerifyNo; + public int dwAlarmInNo; + public int dwAlarmOutNo; + public int dwCaseSensorNo; + public int dwRs485No; + public int dwMultiCardGroupNo; + public short wAccessChannel; + public byte byDeviceNo; + public byte byDistractControlNo; + public int dwEmployeeNo; + public short wLocalControllerID; + public byte byInternetAccess; + public byte byType; + public byte[] byMACAddr = new byte[MACADDR_LEN]; + public byte bySwipeCardType; + public byte byMask; + public int dwSerialNo; + public byte byChannelControllerID; + public byte byChannelControllerLampID; + public byte byChannelControllerIRAdaptorID; + public byte byChannelControllerIREmitterID; + public byte[] byRes=new byte[4]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","byCardNo", "byCardType","byWhiteListNo", + "byReportChannel","byCardReaderKind", "dwCardReaderNo","dwDoorNo", + "dwVerifyNo","dwAlarmInNo", "dwAlarmOutNo","dwCaseSensorNo", + "dwRs485No","dwMultiCardGroupNo", "wAccessChannel","byDeviceNo", + "byDistractControlNo","dwEmployeeNo", "wLocalControllerID","byInternetAccess", + "byType","byMACAddr", "bySwipeCardType","byMask", + "dwSerialNo","byChannelControllerID", "byChannelControllerLampID","byChannelControllerIRAdaptorID", + "byChannelControllerIREmitterID","byRes"); + } + } + + public static class NET_DVR_ACS_EVENT_INFO_EXTEND extends Structure + { + public int dwFrontSerialNo; //事件流水号,为0无效(若该字段为0,平台根据dwSerialNo判断是否丢失事件;若该字段不为0,平台根据该字段和dwSerialNo字段共同判断是否丢失事件)(主要用于解决报警订阅后导致dwSerialNo不连续的情况) + public byte byUserType; //人员类型:0-无效,1-普通人(主人),2-来宾(访客),3-黑名单人,4-管理员 + public byte byCurrentVerifyMode; //读卡器当前验证方式:0-无效,1-休眠,2-刷卡+密码,3-刷卡,4-刷卡或密码,5-指纹,6-指纹+密码,7-指纹或刷卡,8-指纹+刷卡,9-指纹+刷卡+密码,10-人脸或指纹或刷卡或密码,11-人脸+指纹,12-人脸+密码,13-人脸+刷卡,14-人脸,15-工号+密码,16-指纹或密码,17-工号+指纹,18-工号+指纹+密码,19-人脸+指纹+刷卡,20-人脸+密码+指纹,21-工号+人脸,22-人脸或人脸+刷卡,23-指纹或人脸,24-刷卡或人脸或密码,25-刷卡或人脸,26-刷卡或人脸或指纹,27-刷卡或指纹或密码 + public byte byCurrentEvent; //是否为实时事件:0-无效,1-是(实时事件),2-否(离线事件) + public byte byPurePwdVerifyEnable; //设备是否支持纯密码认证, 0-不支持,1-支持 + public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)(对于设备来说,如果使用了工号(人员ID)字段,byEmployeeNo一定要传递,如果byEmployeeNo可转换为dwEmployeeNo,那么该字段也要传递;对于上层平台或客户端来说,优先解析byEmployeeNo字段,如该字段为空,再考虑解析dwEmployeeNo字段) + public byte byAttendanceStatus; //考勤状态:0-未定义,1-上班,2-下班,3-开始休息,4-结束休息,5-开始加班,6-结束加班 + public byte byStatusValue; //考勤状态值 + public byte[] byRes2 = new byte[2]; + public byte[] byUUID = new byte[NET_SDK_UUID_LEN]; //UUID(该字段仅在对接萤石平台过程中才会使用) + public byte[] byDeviceName = new byte[NET_DEV_NAME_LEN]; //设备序列号 + public byte[] byRes = new byte[24]; + + public NET_DVR_ACS_EVENT_INFO_EXTEND(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwFrontSerialNo","byUserType","byCurrentVerifyMode","byCurrentEvent", + "byPurePwdVerifyEnable","byEmployeeNo","byAttendanceStatus","byStatusValue", + "byRes2", "byUUID", "byDeviceName","byRes"); + } + } + + public static class NET_DVR_ACS_EVENT_INFO_EXTEND_V20 extends Structure + { + public byte byRemoteCheck; //是否需要远程核验(0-无效,1-不需要(默认),2-需要) + public byte byThermometryUnit; //测温单位(0-摄氏度(默认),1-华氏度,2-开尔文) + public byte byIsAbnomalTemperature; //人脸抓拍测温是否温度异常:1-是,0-否 + public byte byRes2; + public float fCurrTemperature; //人脸温度(精确到小数点后一位) + public NET_VCA_POINT struRegionCoordinates; //人脸温度坐标 + public int dwQRCodeInfoLen; //二维码信息长度,不为0是表示后面带数据 + public int dwVisibleLightDataLen; //热成像相机可见光图片长度,不为0是表示后面带数据 + public int dwThermalDataLen; //热成像图片长度,不为0是表示后面带数据 + public ByteByReference pQRCodeInfo; //二维码信息指针 + public ByteByReference pVisibleLightData; //热成像相机可见光图片指针 + public ByteByReference pThermalData; //热成像图片指针 + public byte[] byAttendanceLabel = new byte[64]; //考勤自定义名称 + public byte[] byRes = new byte[960]; + + public NET_DVR_ACS_EVENT_INFO_EXTEND_V20(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder(){ + return Arrays.asList("byRemoteCheck","byThermometryUnit","byIsAbnomalTemperature","byRes2", + "fCurrTemperature","struRegionCoordinates","dwQRCodeInfoLen","dwVisibleLightDataLen", + "dwThermalDataLen","pQRCodeInfo","pVisibleLightData", "pThermalData", "byAttendanceLabel","byRes"); + } + } + + public static class NET_DVR_ACS_ALARM_INFO extends Structure + { + public int dwSize; + public int dwMajor; + public int dwMinor; + public NET_DVR_TIME struTime=new NET_DVR_TIME(); + public byte[] sNetUser = new byte[16]; + public NET_DVR_IPADDR struRemoteHostAddr=new NET_DVR_IPADDR(); + public NET_DVR_ACS_EVENT_INFO struAcsEventInfo=new NET_DVR_ACS_EVENT_INFO(); + public int dwPicDataLen; + public ByteByReference pPicData; + public short wInductiveEventType; + public byte byPicTransType; + public byte byRes1; + public int dwIOTChannelNo; + public ByteByReference pAcsEventInfoExtend; + public byte byAcsEventInfoExtend; + public byte byTimeType; + public byte byRes2; + public byte byAcsEventInfoExtendV20; + public ByteByReference pAcsEventInfoExtendV20; + public byte[] byRes = new byte[4]; + + public NET_DVR_ACS_ALARM_INFO(Pointer p){ + super(p); + } + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwMajor", "dwMinor","struTime", + "sNetUser","struRemoteHostAddr", "struAcsEventInfo","dwPicDataLen", + "pPicData","wInductiveEventType", "byPicTransType","byRes1", + "dwIOTChannelNo","pAcsEventInfoExtend", "byAcsEventInfoExtend","byTimeType", + "byRes2","byAcsEventInfoExtendV20", "pAcsEventInfoExtendV20", "byRes"); + } + } + + public static class NET_DVR_PASSNUM_INFO_ALARM extends Structure + { + public int dwSize; + public int dwAccessChannel; + public NET_DVR_TIME_V30 struSwipeTime=new NET_DVR_TIME_V30(); + public byte[] byNetUser=new byte[16] ; + public NET_DVR_IPADDR struRemoteHostAddr=new NET_DVR_IPADDR(); + public int dwEntryTimes; + public int dwExitTimes; + public int dwTotalTimes; + public byte[] byRes=new byte[300]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwAccessChannel", "struSwipeTime","byNetUser", + "struRemoteHostAddr","dwEntryTimes", "dwExitTimes","dwTotalTimes", + "byRes"); + } + } + + public static class NET_DVR_JPEGPICTURE_WITH_APPENDDATA extends Structure + { + public int dwSize; + public int dwChannel; + public int dwJpegPicLen; + public Pointer pJpegPicBuff; + public int dwJpegPicWidth; + public int dwJpegPicHeight; + public int dwP2PDataLen; + public Pointer pP2PDataBuff; + public byte byIsFreezedata; + public byte[] byRes1 = new byte[3]; + public int dwVisiblePicLen; + public Pointer pVisiblePicBuff; + + public NET_VCA_RECT struThermalValidRect=new NET_VCA_RECT(); + public NET_VCA_RECT struVisibleValidRect=new NET_VCA_RECT(); + public byte[] byRes = new byte[208]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwChannel","dwJpegPicLen","pJpegPicBuff", + "dwJpegPicWidth","dwJpegPicHeight","dwP2PDataLen","pP2PDataBuff", + "byIsFreezedata","byRes1","dwVisiblePicLen","pVisiblePicBuff", + "struThermalValidRect","struVisibleValidRect","byRes"); + } + } + + public static class NET_DVR_ALARM_ISAPI_INFO extends Structure + { + public Pointer pAlarmData; // 报警数据 + public int dwAlarmDataLen; // 报警数据长度 + public byte byDataType; // 0-invalid,1-xml,2-json + public byte byPicturesNumber; // 图片数量 + public byte[] byRes = new byte[2]; + public Pointer pPicPackData; // 图片变长部分 + public byte[] byRes1 = new byte[32]; + + public NET_DVR_ALARM_ISAPI_INFO(Pointer p){ + super(p); + } + + @Override + protected List getFieldOrder(){ + return Arrays.asList("pAlarmData","dwAlarmDataLen","byDataType","byPicturesNumber","byRes","pPicPackData","byRes1"); + } + } + + public static class NET_DVR_ALARM_ISAPI_PICDATA extends Structure + { + public int dwPicLen; + public byte byPicType; + public byte[] byRes = new byte[3]; + public byte[] szFilename = new byte[256] ; + public Pointer pPicData; + + @Override + protected List getFieldOrder() { + return Arrays.asList("dwPicLen","byPicType","byRes","szFilename","pPicData"); + } + } + + public static class NET_DVR_SETUPALARM_PARAM_V50 extends Structure + { + public int dwSize; + public byte byLevel; //布防优先级,0-一等级(高),1-二等级(中),2-三等级(低) + public byte byAlarmInfoType; //上传报警信息类型(抓拍机支持),0-老报警信息(NET_DVR_PLATE_RESULT),1-新报警信息(NET_ITS_PLATE_RESULT)2012-9-28 + public byte byRetAlarmTypeV40; //0--返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO, 1--设备支持NET_DVR_ALARMINFO_V40则返回NET_DVR_ALARMINFO_V40,不支持则返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO + public byte byRetDevInfoVersion; //CVR上传报警信息回调结构体版本号 0-COMM_ALARM_DEVICE, 1-COMM_ALARM_DEVICE_V40 + public byte byRetVQDAlarmType; //VQD报警上传类型,0-上传报报警NET_DVR_VQD_DIAGNOSE_INFO,1-上传报警NET_DVR_VQD_ALARM + //1-表示人脸侦测报警扩展(INTER_FACE_DETECTION),0-表示原先支持结构(INTER_FACESNAP_RESULT) + public byte byFaceAlarmDetection; + //Bit0- 表示二级布防是否上传图片: 0-上传,1-不上传 + //Bit1- 表示开启数据上传确认机制;0-不开启,1-开启 + //Bit6- 表示雷达检测报警(eventType:radarDetection)是否开启实时上传;0-不开启,1-开启(用于web插件实时显示雷达目标轨迹) + public byte bySupport; + //断网续传类型 + //bit0-车牌检测(IPC) (0-不续传,1-续传) + //bit1-客流统计(IPC) (0-不续传,1-续传) + //bit2-热度图统计(IPC) (0-不续传,1-续传) + //bit3-人脸抓拍(IPC) (0-不续传,1-续传) + //bit4-人脸对比(IPC) (0-不续传,1-续传) + //bit5-JSON报警透传(IPC) (0-不续传,1-续传) + //bit6-热度图按人员停留时间统计数据上传事件(0-不续传,1-续传) + //bit7-热度图按人数统计数据上传事件的确认机制(0-不续传,1-续传) + public byte byBrokenNetHttp; + public short wTaskNo; //任务处理号 和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构 NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应) + public byte byDeployType; //布防类型:0-客户端布防,1-实时布防 + public byte bySubScription; //订阅,按位表示,未开启订阅不上报 //占位 + //Bit7-移动侦测人车分类是否传图;0-不传图(V30上报),1-传图(V40上报) + public byte[] byRes1 = new byte[2]; + public byte byAlarmTypeURL;//bit0-表示人脸抓拍报警上传(INTER_FACESNAP_RESULT);0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断,同时设备需要支持URL的相关服务,当前是”云存储“) + //bit1-表示EVENT_JSON中图片数据长传类型;0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断) + //bit2 - 人脸比对(报警类型为COMM_SNAP_MATCH_ALARM)中图片数据上传类型:0 - 二进制传输,1 - URL传输 + //bit3 - 行为分析(报警类型为COMM_ALARM_RULE)中图片数据上传类型:0 - 二进制传输,1 - URL传输,本字段设备是否支持,对应软硬件能力集中节点是否返回且为true + public byte byCustomCtrl;//Bit0- 表示支持副驾驶人脸子图上传: 0-不上传,1-上传 + public byte[] byRes4 = new byte[128]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","byLevel","byAlarmInfoType","byRetAlarmTypeV40", + "byRetDevInfoVersion","byRetVQDAlarmType","byFaceAlarmDetection","bySupport", + "byBrokenNetHttp","wTaskNo","byDeployType","bySubScription", + "byRes1","byAlarmTypeURL","byCustomCtrl","byRes4"); + } + } + + public static class NET_DVR_RECORDSCHED extends Structure + { + public NET_DVR_SCHEDTIME struRecordTime = new NET_DVR_SCHEDTIME(); + public byte byRecordType; //0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警, 5:命令触发, 6: 智能录像,10-PIR报警,11-无线报警,12-呼救报警,13-所有报警, + // 14-智能交通事件,15越界侦测,16区域入侵侦测,17音频异常侦测 + public byte[] reservedData = new byte[3]; + @Override + protected List getFieldOrder(){ + return Arrays.asList("struRecordTime","byRecordType","reservedData"); + } + } + + public static class NET_DVR_RECORDDAY extends Structure + { + public short wAllDayRecord;/* 是否全天录像 0-否 1-是*/ + public byte byRecordType;/* 录象类型 0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警 5:命令触发, 6: 智能录像, + 10-PIR报警,11-无线报警,12-呼救报警,13-移动|报警输入|PIR|无线报警|呼救报警,14-智能交通事件,15-越界侦测,16-区域入侵,17-声音异常, + 18-场景变更侦测,19-智能侦测(越界侦测|区域入侵|进入区域|离开区域|人脸识别),20-人脸侦测, 21-POS录像*/ + public byte reservedData; + @Override + protected List getFieldOrder(){ + return Arrays.asList("wAllDayRecord","byRecordType","reservedData"); + } + } + + public static class NET_DVR_RECORD_V30 extends Structure + { + public int dwSize; + public int dwRecord;//是否录像 0-否 1-是 + public NET_DVR_RECORDDAY[] struRecAllDay = (NET_DVR_RECORDDAY[]) new NET_DVR_RECORDDAY().toArray(7); + public byte[] chRecordSched = new byte[448]; + public int dwRecordTime;/* 录象延时长度 0-5秒, 1-10秒, 2-30秒, 3-1分钟, 4-2分钟, 5-5分钟, 6-10分钟*/ + public int dwPreRecordTime;/* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */ + public int dwRecorderDuration;/* 录像保存的最长时间 */ + public byte byRedundancyRec;/*是否冗余录像,重要数据双备份:0/1*/ + public byte byAudioRec;/*录像时复合流编码时是否记录音频数据:国外有此法规*/ + public byte byStreamType;// 0-主码流,1-子码流,2-主子码流同时 3-三码流 + public byte byPassbackRecord;// 0:不回传录像 1:回传录像 + public short wLockDuration;// 录像锁定时长,单位小时 0表示不锁定,0xffff表示永久锁定,录像段的时长大于锁定的持续时长的录像,将不会锁定 + public byte byRecordBackup;// 0:录像不存档 1:录像存档 + public byte bySVCLevel;//SVC抽帧类型:0-不抽,1-抽二分之一 2-抽四分之三 + public byte[] byReserve = new byte[4]; + + @Override + protected List getFieldOrder(){ + return Arrays.asList("dwSize","dwRecord","struRecAllDay","chRecordSched", + "dwRecordTime","dwPreRecordTime","dwRecorderDuration","byRedundancyRec", + "byAudioRec","byStreamType","byPassbackRecord","wLockDuration", + "byRecordBackup","bySVCLevel","byReserve"); + } + } + + + + boolean NET_DVR_Init(); + boolean NET_DVR_Cleanup(); + int NET_DVR_GetSDKVersion(); + int NET_DVR_GetLastError(); + int NET_DVR_Login_V40(Pointer pLoginInfo, Pointer lpDevice); + boolean NET_DVR_RestoreConfig(int lUserID); + boolean NET_DVR_ControlGateway(int lUserID, int lGatewayIndex, int dwStaic); + boolean NET_DVR_RemoteControl(int lUserID, int dwCommand, Pointer lpInBuffer, int dwInBufferSize); + boolean NET_DVR_Logout(int lUserID); + boolean NET_DVR_STDXMLConfig(int lUserID, NET_DVR_XML_CONFIG_INPUT lpInputParam, NET_DVR_XML_CONFIG_OUTPUT lpOutputParam); + boolean NET_DVR_GetDVRConfig(int lUserID, int dwCommand, int lChannel, Pointer lpOutBuffer, int dwOutBufferSize, IntByReference lpBytesReturned); + boolean NET_DVR_SetDVRConfig(int lUserID, int dwCommand, int lChannel, Pointer lpInBuffer, int dwInBufferSize); + boolean NET_DVR_GetDeviceConfig(int lUserID, int dwCommand, int dwCount, Pointer lpInBuffer, int dwInBufferSize, Pointer lpStatusList, Pointer lpOutBuffer, int dwOutBuggerSize); + boolean NET_DVR_SetDeviceConfig(int lUserID, int dwCommand, int dwCount, Pointer lpInBuffer, int dwInBufferSize, Pointer lpStatusList, Pointer lpInParamBuffer, int dwInParamBufferSize); + boolean NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, int dwPTZCommand, int dwStop, int dwSpeed); + boolean NET_DVR_ClientSetVideoEffect(int lRealHandle,int dwBrightValue,int dwContrastValue, int dwSaturationValue,int dwHueValue); + boolean NET_DVR_ClientGetVideoEffect(int lRealHandle,Pointer pBrightValue,Pointer pContrastValue, Pointer pSaturationValue,Pointer pHueValue); + + boolean NET_DVR_GetSTDConfig(int lUserID, int dwCommand, Pointer lpConfigParam); + boolean NET_DVR_SetSTDConfig(int lUserID, int dwCommand, Pointer lpConfigParam); + boolean NET_DVR_GetSTDAbility(int lUserID, int dwAbilityType, Pointer lpAbilityParam); + boolean NET_DVR_SetDVRMessageCallBack_V30(FMSGCallBack fMessageCallBack, Pointer pUser); + boolean NET_DVR_SetDVRMessageCallBack_V50(int iIndex, FMSGCallBack fMessageCallBack, Pointer pUser); + int NET_DVR_SetupAlarmChan_V30(int lUserID); + int NET_DVR_SetupAlarmChan_V41(int lUserID, Pointer lpSetupParam); + int NET_DVR_SetupAlarmChan_V50(int lUserID, Pointer lpSetupParam, Pointer pData, int dwDataLen); + boolean NET_DVR_CloseAlarmChan_V30(int lAlarmHandle); + int NET_DVR_StartRemoteConfig(int lUserID, int dwCommand, Pointer lpInBuffer, int dwInBufferLen, fRemoteConfigCallback cbStateCallback, Pointer pUserData); + boolean NET_DVR_SendRemoteConfig(int lHandle, int dwDataType, Pointer pSendBuf, int dwBufSize); + boolean NET_DVR_StopRemoteConfig(int lHandle); + int NET_DVR_MatrixStartPassiveDecode(int lUserID, int dwDecChanNum, Pointer lpPassiveMode); + boolean NET_DVR_MatrixSendData(int lPassiveHandle, Pointer pSendBuf, int dwBufSize); + boolean NET_DVR_MatrixStopPassiveDecode(int lPassiveHandle); + int NET_DVR_MatrixGetPassiveDecodeStatus(int lPassiveHandle); + boolean NET_DVR_MatrixGetDecChanCfg(int lUserID, int dwDecChan, Pointer lpInter); + boolean NET_DVR_MatrixSetDecChanCfg(int lUserID, int dwDecChan, Pointer lpInter); + int NET_DVR_UploadFile_V40(int lUserID, int dwUploadType, Pointer lpInBuffer, int dwInBufferLen, String sFileName, Pointer lpOutBuffer, int dwOutBufferLen); + int NET_DVR_UploadSend(int lUploadHandle, Pointer pstruSendParamIN, Pointer lpOutBuffer); + int NET_DVR_GetUploadState(int lUploadHandle, IntByReference pProgress); + boolean NET_DVR_GetUploadResult(int lUploadHandle, Pointer lpOutBuffer, int dwOutBufferSize); + boolean NET_DVR_UploadClose(int lUploadHandle); + boolean NET_DVR_SetAlarmHostOut(int lUserID,int lAlarmOutPort,int lAlarmOutStatic); + + int NET_DVR_CreateOpenEzvizUser(Pointer pLoginInfo, Pointer pDeviceInfo); + //int NET_DVR_CreateOpenEzvizUser(NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO pLoginInfo, NET_DVR_DEVICEINFO_V40 pDeviceInfo); + boolean NET_DVR_DeleteOpenEzvizUser(int iUserID); + + boolean NET_DVR_GetInputSignalList_V40(int lUserID, int dwDevNum, NET_DVR_INPUT_SIGNAL_LIST lpInputSignalList); + +// int NET_DVR_RealPlay_V40(int lUserID,NET_DVR_PREVIEWINFO lpPreviewInfo,FRealDataCallBack_V30 fRealDataCall,Pointer pUser ); +// boolean NET_DVR_StopRealPlay(int lRealHandle); + + boolean NET_DVR_OpenSound(int lRealHandle); + boolean NET_DVR_CloseSound(); + boolean NET_DVR_Volume(int lRealHandle, short wVolume); + + + public interface FMSGCallBack extends Callback { + public void invoke(int lCommand, NET_DVR_ALARMER pAlarmer, + Pointer pAlarmInfo, int dwBufLen, Pointer pUser); + } + + public interface fRemoteConfigCallback extends Callback { + public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, + Pointer pUserData); + } + + public interface FLoginResultCallBack extends Callback{ + public int invoke(int lUserID, int dwResult, NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser); + } + + int NET_DVR_FindPicture(int lUserID, Pointer pFindParam); + int NET_DVR_FindNextPicture_V40(int lFindHandle, Pointer lpFindData); + boolean NET_DVR_CloseFindPicture(int lFindHandle); + boolean NET_DVR_GetPicture_V30(int lUserID, Pointer sDVRFileName, Pointer sSavedFileBuf, int dwBufLen, IntByReference lpdwRetLen); + +// public interface FRealDataCallBack_V30 extends Callback{ +// public void invoke(int lRealHandle, int dwDataType, +// ByteByReference pBuffer, int dwBufSize, Pointer pUser); +// } + + int NET_DVR_GetRealPlayerIndex(int lRealHandle); + int NET_DVR_GetPlayBackPlayerIndex(int lPlayHandle); + + boolean NET_DVR_SetCapturePictureMode(int dwCaptureMode); + boolean NET_DVR_CapturePictureBlock(int iRealHandle, String sPicFileName, int dwTimeOut); + boolean NET_DVR_CapturePicture(int iRealHandle, String sPicFileName); + boolean NET_DVR_PlayBackCaptureFile(int lPlayHandle, String sFileName); + + boolean NET_DVR_SaveRealData_V30(int lRealHandle, int dwTransType, String sFileName); + + boolean NET_DVR_GetDeviceStatus(int lUserID, int dwCommand, int dwCount, Pointer lpInBuffer, int dwInBufferSize, Pointer lpStatusList, Pointer lpOutBuffer, int dwOutBufferSize); + int NET_DVR_StartDownload(int lUserID, int dwDownloadType, Pointer lpInBuffer, int dwInBufferSize, String sFileName); + int NET_DVR_GetDownloadState(int lUploadHandle, IntByReference pProgress); + boolean NET_DVR_StopDownload(int lHandle); + + boolean NET_DVR_SetSDKLocalCfg(int enumType, Pointer lpInBuff); + + boolean NET_DVR_SetLogToFile(int nLogLevel, String strLogDir, boolean bAutoDel); + + boolean NET_DVR_MatrixGetSubSystemInfo_V40(int lUserID, NET_DVR_ALLSUBSYSTEMINFO_V40 netDvrAllsubsysteminfoV40); + + boolean NET_DVR_ManualSnap(int lUserID, Pointer lpInter,Pointer lpOuter); + + boolean NET_DVR_PlayBackControl_V40(int lPlayHandle, int dwControlCode, Pointer lpInBuffer,int dwInLen,Pointer lpOutBuffer,Pointer lpOutLen); + + boolean NET_DVR_GetPicture_V50(int lUserID, Pointer lpPicParam); + + int NET_DVR_StartListen_V30(Pointer sLocalIP,short wLocalPort, FMSGCallBack DataCallback, Pointer pUserData); + + boolean NET_DVR_StopListen_V30(int lListenHandle); + + boolean NET_DVR_CaptureJPEGPicture_WithAppendData(int lUserID, int lChannel, Pointer JpegWithAppend); +} diff --git a/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKJNAInstance.java b/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKJNAInstance.java new file mode 100644 index 0000000..c8003df --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/hcnetsdk/jna/HCNetSDKJNAInstance.java @@ -0,0 +1,25 @@ +package com.hcnetsdk.jna; + +import com.sun.jna.Native; + +public enum HCNetSDKJNAInstance +{ + CLASS; + private static HCNetSDKByJNA netSdk = null; + /** + * get the instance of HCNetSDK + * @return the instance of HCNetSDK + */ + public static HCNetSDKByJNA getInstance() + { + if (null == netSdk) + { + synchronized (HCNetSDKByJNA.class) + { + netSdk = (HCNetSDKByJNA) Native.loadLibrary("hcnetsdk", + HCNetSDKByJNA.class); + } + } + return netSdk; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhScInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhScInfo.java new file mode 100755 index 0000000..5014536 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhScInfo.java @@ -0,0 +1,94 @@ +package com.rehome.scbaxj.DBModel; + +/** + * 安建环上传信息 + */ + +public class AjhScInfo { + + private String SCNR;//检查结果 是,否 + private String JCSJ;//时间 + private String BZID;//班组ID + private String JCR;//检查人 + private String JHID;//计划ID + private String YSID;// + private String MS;//描述 + private boolean CHECKED;//是否已检 + private String SMFX;//扫码方式 + + public boolean isCHECKED() { + return CHECKED; + } + + public String getSMFX() { + return SMFX; + } + + public void setSMFX(String SMFX) { + this.SMFX = SMFX; + } + + public String getSCNR() { + return SCNR; + } + + public void setSCNR(String SCNR) { + this.SCNR = SCNR; + } + + public String getJCSJ() { + return JCSJ; + } + + public void setJCSJ(String JCSJ) { + this.JCSJ = JCSJ; + } + + public String getBZID() { + return BZID; + } + + public void setBZID(String BZID) { + this.BZID = BZID; + } + + public String getJCR() { + return JCR; + } + + public void setJCR(String JCR) { + this.JCR = JCR; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getYSID() { + return YSID; + } + + public void setYSID(String YSID) { + this.YSID = YSID; + } + + public String getMS() { + return MS; + } + + public void setMS(String MS) { + this.MS = MS; + } + + public boolean getCHECKED() { + return CHECKED; + } + + public void setCHECKED(boolean CHECKED) { + this.CHECKED = CHECKED; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhjh.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhjh.java new file mode 100755 index 0000000..e15641a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhjh.java @@ -0,0 +1,65 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/7. + */ + +public class Ajhjh extends DataSupport { + + private boolean checked; + private boolean download; + private String JHID; + private String JHMC; + private String DQSJ; + private String DJJHID; + + public String getDJJHID() { + return DJJHID; + } + + public void setDJJHID(String DJJHID) { + this.DJJHID = DJJHID; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isDownload() { + return download; + } + + public void setDownload(boolean download) { + this.download = download; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getDQSJ() { + return DQSJ; + } + + public void setDQSJ(String DQSJ) { + this.DQSJ = DQSJ; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhList.java new file mode 100755 index 0000000..55df4af --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhList.java @@ -0,0 +1,52 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 安健环计划 + */ + +public class AjhjhList extends DataSupport { + + /** + * Rows : [{"JHID":"AJH00000000001","JHMC":"XCJ228","DQSJ":"2016-11-09"}] + * Total : 1 + */ + + private int id; + + private int Total; + /** + * JHID : AJH00000000001 + * JHMC : XCJ228 + * DQSJ : 2016-11-09 + */ + + private List Rows; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhxzrwList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhxzrwList.java new file mode 100755 index 0000000..394549e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/AjhjhxzrwList.java @@ -0,0 +1,65 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by gzw on 2016/11/7. + */ + +public class AjhjhxzrwList implements Parcelable { + + private int Total; + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.Total); + dest.writeList(this.Rows); + } + + public AjhjhxzrwList() { + } + + protected AjhjhxzrwList(Parcel in) { + this.Total = in.readInt(); + this.Rows = new ArrayList(); + in.readList(this.Rows, Ajhxzrwqylist.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public AjhjhxzrwList createFromParcel(Parcel source) { + return new AjhjhxzrwList(source); + } + + @Override + public AjhjhxzrwList[] newArray(int size) { + return new AjhjhxzrwList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxcjs.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxcjs.java new file mode 100755 index 0000000..ee1f2ed --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxcjs.java @@ -0,0 +1,56 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/9. + */ + +public class Ajhxcjs extends DataSupport { + + private String jhid; + private String areacode; + private String jsr; + private String file; + private String bz; + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getAreacode() { + return areacode; + } + + public void setAreacode(String areacode) { + this.areacode = areacode; + } + + public String getJsr() { + return jsr; + } + + public void setJsr(String jsr) { + this.jsr = jsr; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqy.java new file mode 100755 index 0000000..908490e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqy.java @@ -0,0 +1,229 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/7. + */ + +public class Ajhxzrwqy extends DataSupport implements Parcelable { + + private String YSID; + private String JHID; + private String BZMC; + private String JHMC; + private String JCNY; + private String NFCBH; + private String BQBM; + private String AREACODE; + private String AREANAME; + private String XCZQ; + private AjhjhxzrwList list; + private boolean checked; + private String MS; + private String SCRN;//是或者否 + private boolean SFHG;//是否合格 + private String DATE;//时间 + private boolean SMFX;//扫描方式,0 NFC 1 一维码二维码 + + public boolean isSMFX() { + return SMFX; + } + + public void setSMFX(boolean SMFX) { + this.SMFX = SMFX; + } + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public String getXCZQ() { + return XCZQ; + } + + public void setXCZQ(String XCZQ) { + this.XCZQ = XCZQ; + } + + public String getAREANAME() { + return AREANAME; + } + + public void setAREANAME(String AREANAME) { + this.AREANAME = AREANAME; + } + + public boolean isSFHG() { + return SFHG; + } + + public void setSFHG(boolean SFHG) { + this.SFHG = SFHG; + } + + public String getMS() { + return MS; + } + + public void setMS(String MS) { + this.MS = MS; + } + + public String getSCRN() { + return SCRN; + } + + public void setSCRN(String SCRN) { + this.SCRN = SCRN; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public AjhjhxzrwList getList() { + return list; + } + + public void setList(AjhjhxzrwList list) { + this.list = list; + } + + public String getYSID() { + return YSID; + } + + public void setYSID(String YSID) { + this.YSID = YSID; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getBZMC() { + return BZMC; + } + + public void setBZMC(String BZMC) { + this.BZMC = BZMC; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getJCNY() { + return JCNY; + } + + public void setJCNY(String JCNY) { + this.JCNY = JCNY; + } + + public String getNFCBH() { + return NFCBH; + } + + public void setNFCBH(String NFCBH) { + this.NFCBH = NFCBH; + } + + public String getBQBM() { + return BQBM; + } + + public void setBQBM(String BQBM) { + this.BQBM = BQBM; + } + + + public Ajhxzrwqy() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.YSID); + dest.writeString(this.JHID); + dest.writeString(this.BZMC); + dest.writeString(this.JHMC); + dest.writeString(this.JCNY); + dest.writeString(this.NFCBH); + dest.writeString(this.BQBM); + dest.writeString(this.AREACODE); + dest.writeString(this.AREANAME); + dest.writeString(this.XCZQ); + dest.writeParcelable(this.list, flags); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeString(this.MS); + dest.writeString(this.SCRN); + dest.writeByte(this.SFHG ? (byte) 1 : (byte) 0); + dest.writeString(this.DATE); + dest.writeByte(this.SMFX ? (byte) 1 : (byte) 0); + } + + protected Ajhxzrwqy(Parcel in) { + this.YSID = in.readString(); + this.JHID = in.readString(); + this.BZMC = in.readString(); + this.JHMC = in.readString(); + this.JCNY = in.readString(); + this.NFCBH = in.readString(); + this.BQBM = in.readString(); + this.AREACODE = in.readString(); + this.AREANAME = in.readString(); + this.XCZQ = in.readString(); + this.list = in.readParcelable(AjhjhxzrwList.class.getClassLoader()); + this.checked = in.readByte() != 0; + this.MS = in.readString(); + this.SCRN = in.readString(); + this.SFHG = in.readByte() != 0; + this.DATE = in.readString(); + this.SMFX = in.readByte() != 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public Ajhxzrwqy createFromParcel(Parcel source) { + return new Ajhxzrwqy(source); + } + + @Override + public Ajhxzrwqy[] newArray(int size) { + return new Ajhxzrwqy[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqylist.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqylist.java new file mode 100755 index 0000000..5520930 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Ajhxzrwqylist.java @@ -0,0 +1,33 @@ +package com.rehome.scbaxj.DBModel; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +/** + * Created by gzw on 2016/11/7. + */ + +public class Ajhxzrwqylist { + + public AjhjhxzrwList getListl() { + return listl; + } + + public void setListl(AjhjhxzrwList listl) { + this.listl = listl; + } + + private AjhjhxzrwList listl; + + @SerializedName("区域分组") + private List Ajhxzrwqys; + + public List getAjhxzrwqys() { + return Ajhxzrwqys; + } + + public void setAjhxzrwqys(List Ajhxzrwqys) { + this.Ajhxzrwqys = Ajhxzrwqys; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/BaRoute.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/BaRoute.java new file mode 100644 index 0000000..0eaeaf5 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/BaRoute.java @@ -0,0 +1,29 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Create By HuangWenFei + * 创建日期:2023-04-23 15:04 + * 描述:保安路线 + */ +public class BaRoute extends DataSupport { + private String lxid; + private String name; + + public String getLxid() { + return lxid; + } + + public void setLxid(String lxid) { + this.lxid = lxid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DataBaseYhpc.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DataBaseYhpc.java new file mode 100644 index 0000000..a87ad39 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DataBaseYhpc.java @@ -0,0 +1,91 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +public class DataBaseYhpc extends DataSupport { + + private String WTQY;//问题区域(必填) + private String WTMS;//问题描述(必填) + private String LRSJ;//录入时间 + private String FXLB;//风险类别(选填) + private String YHDJ;//隐患等级(选填) + private String ZRBM;//责任部门(选填) + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + + public String getWTQY() { + return WTQY; + } + + public void setWTQY(String WTQY) { + this.WTQY = WTQY; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getFXLB() { + return FXLB; + } + + public void setFXLB(String FXLB) { + this.FXLB = FXLB; + } + + public String getYHDJ() { + return YHDJ; + } + + public void setYHDJ(String YHDJ) { + this.YHDJ = YHDJ; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Djjh.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Djjh.java new file mode 100755 index 0000000..0b1fc04 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Djjh.java @@ -0,0 +1,101 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * 点检计划 + */ + +public class Djjh extends DataSupport { + + private int id; + private String GWID; + private String GWMC; + private String GWDS; + private String GWLX; + private String GWBS; + private String SC_ET; + private boolean checked;//0:未选中,1:已选中 + private int download;//0:未下载,1:已经下载 + private DjjhList djjhList; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getGWMC() { + return GWMC; + } + + public void setGWMC(String GWMC) { + this.GWMC = GWMC; + } + + public String getGWDS() { + return GWDS; + } + + public void setGWDS(String GWDS) { + this.GWDS = GWDS; + } + + public String getGWLX() { + return GWLX; + } + + public void setGWLX(String GWLX) { + this.GWLX = GWLX; + } + + public String getGWBS() { + return GWBS; + } + + public void setGWBS(String GWBS) { + this.GWBS = GWBS; + } + + public String getSC_ET() { + return SC_ET; + } + + public void setSC_ET(String SC_ET) { + this.SC_ET = SC_ET; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public DjjhList getDjjhList() { + return djjhList; + } + + public void setDjjhList(DjjhList djjhList) { + this.djjhList = djjhList; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhList.java new file mode 100755 index 0000000..e4d4b9a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhList.java @@ -0,0 +1,50 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * 点检计划列表 + */ + +public class DjjhList extends DataSupport { + + private int id; + private String state; + private String msg; + private List data = new ArrayList(); + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwList.java new file mode 100755 index 0000000..e39b1b4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwList.java @@ -0,0 +1,92 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 点检计划任务列表 + */ + +public class DjjhRwList extends DataSupport implements Parcelable { + + private String JHID; + + private boolean deleted; + + private int Total; + + private List Rows; + + + + + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.JHID); + dest.writeInt(this.Total); + dest.writeTypedList(this.Rows); + } + + public DjjhRwList() { + } + + protected DjjhRwList(Parcel in) { + this.JHID = in.readString(); + this.Total = in.readInt(); + this.Rows = in.createTypedArrayList(DjjhRwQyList.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DjjhRwList createFromParcel(Parcel source) { + return new DjjhRwList(source); + } + + @Override + public DjjhRwList[] newArray(int size) { + return new DjjhRwList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQy.java new file mode 100755 index 0000000..d4b8cbc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQy.java @@ -0,0 +1,496 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * 点检计划任务区域 + */ + +public class DjjhRwQy extends DataSupport implements Parcelable { + + private int id; + private DjjhRwQyList djjhRwQyList; + private String POINTNUM; + private String JHID; + private String JHMC; + private String NFCBH; + private String BQBM; + private String JHLX; + private String POINTNAME; + private String MEAAREA; + private String AREACODE; + private String SBMC; + private String SBBH; + private String BJMC; + private String BJBH; + private String MEAMETHOD; + private String JCLB; + private String JCBZ; + private String LRLX; + private String LRNR; + private String ASSETNUM;//设备编号 + private String UNITOFMEASURE; + private String DESCRIPTION; + private String LOWERWARNING; + private String UPPERWARNING; + private String LOWERACTION; + private String UPPERACTION; + private String MEAPOS; + private String MEASTATUS; + private String MEASTANDARD; + private boolean checked;//是否已经检查 + private String CJJG; + private String fxnr; + private boolean uploaded; + private boolean deleted;//true 已删除,false 未删除 + private String JHDW; + private boolean SMFX;//扫描方式,0 NFC 1 一维码二维码 + private boolean SBZT = true;// + private String DATE;//保存时间 + private boolean BYZT;//备用状态 + private String SCID; + + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getBJMC() { + return BJMC; + } + + public void setBJMC(String BJMC) { + this.BJMC = BJMC; + } + + public String getBJBH() { + return BJBH; + } + + public void setBJBH(String BJBH) { + this.BJBH = BJBH; + } + + public String getLRLX() { + return LRLX; + } + + public void setLRLX(String LRLX) { + this.LRLX = LRLX; + } + + public String getLRNR() { + return LRNR; + } + + public void setLRNR(String LRNR) { + this.LRNR = LRNR; + } + + + public String getJCLB() { + return JCLB; + } + + public void setJCLB(String JCLB) { + this.JCLB = JCLB; + } + + public String getJCBZ() { + return JCBZ; + } + + public void setJCBZ(String JCBZ) { + this.JCBZ = JCBZ; + } + + public boolean isBYZT() { + return BYZT; + } + + public void setBYZT(boolean BYZT) { + this.BYZT = BYZT; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public boolean isSBZT() { + return SBZT; + } + + public void setSBZT(boolean SBZT) { + this.SBZT = SBZT; + } + + public String getASSETNUM() { + return ASSETNUM; + } + + public void setASSETNUM(String ASSETNUM) { + this.ASSETNUM = ASSETNUM; + } + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getUNITOFMEASURE() { + return UNITOFMEASURE; + } + + public void setUNITOFMEASURE(String UNITOFMEASURE) { + this.UNITOFMEASURE = UNITOFMEASURE; + } + + public boolean isSMFX() { + return SMFX; + } + + public void setSMFX(boolean SMFX) { + this.SMFX = SMFX; + } + + public String getJHDW() { + return JHDW; + } + + public void setJHDW(String JHDW) { + this.JHDW = JHDW; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public DjjhRwQyList getDjjhRwQyList() { + return djjhRwQyList; + } + + public void setDjjhRwQyList(DjjhRwQyList djjhRwQyList) { + this.djjhRwQyList = djjhRwQyList; + } + + public String getPOINTNUM() { + return POINTNUM; + } + + public void setPOINTNUM(String POINTNUM) { + this.POINTNUM = POINTNUM; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getNFCBH() { + return NFCBH; + } + + public void setNFCBH(String NFCBH) { + this.NFCBH = NFCBH; + } + + public String getBQBM() { + return BQBM; + } + + public void setBQBM(String BQBM) { + this.BQBM = BQBM; + } + + public String getJHLX() { + return JHLX; + } + + public void setJHLX(String JHLX) { + this.JHLX = JHLX; + } + + public String getPOINTNAME() { + return POINTNAME; + } + + public void setPOINTNAME(String POINTNAME) { + this.POINTNAME = POINTNAME; + } + + public String getMEAAREA() { + return MEAAREA; + } + + public void setMEAAREA(String MEAAREA) { + this.MEAAREA = MEAAREA; + } + + public String getMEAMETHOD() { + return MEAMETHOD; + } + + public void setMEAMETHOD(String MEAMETHOD) { + this.MEAMETHOD = MEAMETHOD; + } + + public String getDESCRIPTION() { + return DESCRIPTION; + } + + public void setDESCRIPTION(String DESCRIPTION) { + this.DESCRIPTION = DESCRIPTION; + } + + public String getLOWERWARNING() { + return LOWERWARNING; + } + + public void setLOWERWARNING(String LOWERWARNING) { + this.LOWERWARNING = LOWERWARNING; + } + + public String getUPPERWARNING() { + return UPPERWARNING; + } + + public void setUPPERWARNING(String UPPERWARNING) { + this.UPPERWARNING = UPPERWARNING; + } + + public String getLOWERACTION() { + return LOWERACTION; + } + + public void setLOWERACTION(String LOWERACTION) { + this.LOWERACTION = LOWERACTION; + } + + public String getUPPERACTION() { + return UPPERACTION; + } + + public void setUPPERACTION(String UPPERACTION) { + this.UPPERACTION = UPPERACTION; + } + + public String getMEAPOS() { + return MEAPOS; + } + + public void setMEAPOS(String MEAPOS) { + this.MEAPOS = MEAPOS; + } + + public String getMEASTATUS() { + return MEASTATUS; + } + + public void setMEASTATUS(String MEASTATUS) { + this.MEASTATUS = MEASTATUS; + } + + public String getMEASTANDARD() { + return MEASTANDARD; + } + + public void setMEASTANDARD(String MEASTANDARD) { + this.MEASTANDARD = MEASTANDARD; + } + + public String getSCID() { + return SCID; + } + + public void setSCID(String SCID) { + this.SCID = SCID; + } + + public DjjhRwQy() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeParcelable(this.djjhRwQyList, flags); + dest.writeString(this.POINTNUM); + dest.writeString(this.JHID); + dest.writeString(this.JHMC); + dest.writeString(this.NFCBH); + dest.writeString(this.BQBM); + dest.writeString(this.JHLX); + dest.writeString(this.POINTNAME); + dest.writeString(this.MEAAREA); + dest.writeString(this.MEAMETHOD); + dest.writeString(this.DESCRIPTION); + dest.writeString(this.LOWERWARNING); + dest.writeString(this.UPPERWARNING); + dest.writeString(this.LOWERACTION); + dest.writeString(this.UPPERACTION); + dest.writeString(this.UNITOFMEASURE); + dest.writeString(this.MEAPOS); + dest.writeString(this.MEASTATUS); + dest.writeString(this.MEASTANDARD); + dest.writeString(this.SBMC); + dest.writeString(this.SBBH); + dest.writeString(this.BJMC); + dest.writeString(this.BJBH); + dest.writeString(this.JCLB); + dest.writeString(this.JCBZ); + dest.writeString(this.LRLX); + dest.writeString(this.LRNR); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeString(this.CJJG); + dest.writeString(this.fxnr); + dest.writeByte(this.uploaded ? (byte) 1 : (byte) 0); + dest.writeByte(this.deleted ? (byte) 1 : (byte) 0); + dest.writeString(this.JHDW); + dest.writeByte(this.SMFX ? (byte) 1 : (byte) 0); + dest.writeString(this.AREACODE); + dest.writeString(this.ASSETNUM); + dest.writeByte(this.SBZT ? (byte) 1 : (byte) 0); + dest.writeString(this.DATE); + dest.writeByte(this.BYZT ? (byte) 1 : (byte) 0); + dest.writeString(this.SCID); + + + } + + protected DjjhRwQy(Parcel in) { + this.id = in.readInt(); + this.djjhRwQyList = in.readParcelable(DjjhRwQyList.class.getClassLoader()); + this.POINTNUM = in.readString(); + this.JHID = in.readString(); + this.JHMC = in.readString(); + this.NFCBH = in.readString(); + this.BQBM = in.readString(); + this.JHLX = in.readString(); + this.POINTNAME = in.readString(); + this.MEAAREA = in.readString(); + this.MEAMETHOD = in.readString(); + this.DESCRIPTION = in.readString(); + this.LOWERWARNING = in.readString(); + this.UPPERWARNING = in.readString(); + this.LOWERACTION = in.readString(); + this.UPPERACTION = in.readString(); + this.UNITOFMEASURE = in.readString(); + this.MEAPOS = in.readString(); + this.MEASTATUS = in.readString(); + this.MEASTANDARD = in.readString(); + this.SBMC = in.readString(); + this.SBBH = in.readString(); + this.BJMC = in.readString(); + this.BJBH = in.readString(); + this.JCLB = in.readString(); + this.JCBZ = in.readString(); + this.LRLX = in.readString(); + this.LRNR = in.readString(); + this.checked = in.readByte() != 0; + this.CJJG = in.readString(); + this.fxnr = in.readString(); + this.uploaded = in.readByte() != 0; + this.deleted = in.readByte() != 0; + this.JHDW = in.readString(); + this.SMFX = in.readByte() != 0; + this.AREACODE = in.readString(); + this.ASSETNUM = in.readString(); + this.SBZT = in.readByte() != 0; + this.DATE = in.readString(); + this.BYZT = in.readByte() != 0; + this.SCID = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DjjhRwQy createFromParcel(Parcel source) { + return new DjjhRwQy(source); + } + + @Override + public DjjhRwQy[] newArray(int size) { + return new DjjhRwQy[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQyList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQyList.java new file mode 100755 index 0000000..8321dbf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DjjhRwQyList.java @@ -0,0 +1,97 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.google.gson.annotations.SerializedName; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 点检计划任务区域列表 + */ + + +public class DjjhRwQyList extends DataSupport implements Parcelable { + + private String qymc;//区域名称 + + private String JHID;//计划id + + private List DjjhRqqys; + + private DjjhRwList djjhRwList; + + + + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + @SerializedName("区域分组") + + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public DjjhRwList getDjjhRwList() { + return djjhRwList; + } + + public void setDjjhRwList(DjjhRwList djjhRwList) { + this.djjhRwList = djjhRwList; + } + + public List getDjjhRqqys() { + return DjjhRqqys; + } + + public void setDjjhRqqys(List DjjhRqqys) { + this.DjjhRqqys = DjjhRqqys; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.qymc); + dest.writeParcelable(this.djjhRwList, flags); + dest.writeTypedList(this.DjjhRqqys); + } + + public DjjhRwQyList() { + } + + protected DjjhRwQyList(Parcel in) { + this.qymc = in.readString(); + this.djjhRwList = in.readParcelable(DjjhRwList.class.getClassLoader()); + this.DjjhRqqys = in.createTypedArrayList(DjjhRwQy.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DjjhRwQyList createFromParcel(Parcel source) { + return new DjjhRwQyList(source); + } + + @Override + public DjjhRwQyList[] newArray(int size) { + return new DjjhRwQyList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Dqgz.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Dqgz.java new file mode 100644 index 0000000..534bfeb --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Dqgz.java @@ -0,0 +1,346 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by huangwenfei on 2021/12/09. + */ + +public class Dqgz extends DataSupport implements Parcelable { + private int id; + private String RWID; + private String RWZT; + private String RWZTMC; + private String RWLX; + private String RWLXMC; + private String RWRQ; + private String RWBC; + private String ZXBZ; + private String ZX_ZY; + private String ZX_ZYMC; + private String ZX_JZ; + private String ZX_JZMC; + private String ZX_QYID; + private String ZX_QYMC; + private String ZX_MC; + private String ZX_NR; + private String ZX_LRFS; + private String ZX_LRNR; + private String ZX_CBLX; + private String MKBS; + private String username; + private String SCNR; + private String SCBZ; + private boolean checked;//0:未选中,1:已选中 + private int download;//0:未下载,1:已经下载 + private boolean isWorkChecked;//已检/未检 + private String DATE;//保存时间 + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getRWZT() { + return RWZT; + } + + public void setRWZT(String RWZT) { + this.RWZT = RWZT; + } + + public String getRWZTMC() { + return RWZTMC; + } + + public void setRWZTMC(String RWZTMC) { + this.RWZTMC = RWZTMC; + } + + public String getRWLX() { + return RWLX; + } + + public void setRWLX(String RWLX) { + this.RWLX = RWLX; + } + + public String getRWLXMC() { + return RWLXMC; + } + + public void setRWLXMC(String RWLXMC) { + this.RWLXMC = RWLXMC; + } + + public String getRWRQ() { + return RWRQ; + } + + public void setRWRQ(String RWRQ) { + this.RWRQ = RWRQ; + } + + public String getRWBC() { + return RWBC; + } + + public void setRWBC(String RWBC) { + this.RWBC = RWBC; + } + + public String getZXBZ() { + return ZXBZ; + } + + public void setZXBZ(String ZXBZ) { + this.ZXBZ = ZXBZ; + } + + public String getZX_ZY() { + return ZX_ZY; + } + + public void setZX_ZY(String ZX_ZY) { + this.ZX_ZY = ZX_ZY; + } + + public String getZX_ZYMC() { + return ZX_ZYMC; + } + + public void setZX_ZYMC(String ZX_ZYMC) { + this.ZX_ZYMC = ZX_ZYMC; + } + + public String getZX_JZ() { + return ZX_JZ; + } + + public void setZX_JZ(String ZX_JZ) { + this.ZX_JZ = ZX_JZ; + } + + public String getZX_JZMC() { + return ZX_JZMC; + } + + public void setZX_JZMC(String ZX_JZMC) { + this.ZX_JZMC = ZX_JZMC; + } + + public String getZX_QYID() { + return ZX_QYID; + } + + public void setZX_QYID(String ZX_QYID) { + this.ZX_QYID = ZX_QYID; + } + + public String getZX_QYMC() { + return ZX_QYMC; + } + + public void setZX_QYMC(String ZX_QYMC) { + this.ZX_QYMC = ZX_QYMC; + } + + public String getZX_MC() { + return ZX_MC; + } + + public void setZX_MC(String ZX_MC) { + this.ZX_MC = ZX_MC; + } + + public String getZX_NR() { + return ZX_NR; + } + + public void setZX_NR(String ZX_NR) { + this.ZX_NR = ZX_NR; + } + + public String getZX_LRFS() { + return ZX_LRFS; + } + + public void setZX_LRFS(String ZX_LRFS) { + this.ZX_LRFS = ZX_LRFS; + } + + public String getZX_LRNR() { + return ZX_LRNR; + } + + public void setZX_LRNR(String ZX_LRNR) { + this.ZX_LRNR = ZX_LRNR; + } + + public String getZX_CBLX() { + return ZX_CBLX; + } + + public void setZX_CBLX(String ZX_CBLX) { + this.ZX_CBLX = ZX_CBLX; + } + + public String getMKBS() { + return MKBS; + } + + public void setMKBS(String MKBS) { + this.MKBS = MKBS; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public boolean isWorkChecked() { + return isWorkChecked; + } + + public void setWorkChecked(boolean workChecked) { + isWorkChecked = workChecked; + } + + public String getSCNR() { + return SCNR; + } + + public void setSCNR(String SCNR) { + this.SCNR = SCNR; + } + + public String getSCBZ() { + return SCBZ; + } + + public void setSCBZ(String SCBZ) { + this.SCBZ = SCBZ; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.RWID); + dest.writeString(this.RWZT); + dest.writeString(this.RWZTMC); + dest.writeString(this.RWLX); + dest.writeString(this.RWLXMC); + dest.writeString(this.RWRQ); + dest.writeString(this.RWBC); + dest.writeString(this.ZXBZ); + dest.writeString(this.ZX_ZY); + dest.writeString(this.ZX_ZYMC); + dest.writeString(this.ZX_JZ); + dest.writeString(this.ZX_JZMC); + dest.writeString(this.ZX_QYID); + dest.writeString(this.ZX_QYMC); + dest.writeString(this.ZX_MC); + dest.writeString(this.ZX_NR); + dest.writeString(this.ZX_LRFS); + dest.writeString(this.ZX_LRNR); + dest.writeString(this.ZX_CBLX); + dest.writeString(this.MKBS); + dest.writeString(this.username); + dest.writeString(this.SCNR); + dest.writeString(this.SCBZ); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeInt(this.download); + dest.writeByte(this.isWorkChecked ? (byte) 1 : (byte) 0); + dest.writeString(this.DATE); + } + + public Dqgz(){ + } + protected Dqgz(Parcel in) { + this.id = in.readInt(); + this.RWID = in.readString(); + this.RWZT = in.readString(); + this.RWZTMC = in.readString(); + this.RWLX = in.readString(); + this.RWLXMC = in.readString(); + this.RWRQ = in.readString(); + this.RWBC = in.readString(); + this.ZXBZ = in.readString(); + this.ZX_ZY = in.readString(); + this.ZX_ZYMC = in.readString(); + this.ZX_JZ = in.readString(); + this.ZX_JZMC = in.readString(); + this.ZX_QYID = in.readString(); + this.ZX_QYMC = in.readString(); + this.ZX_MC = in.readString(); + this.ZX_NR = in.readString(); + this.ZX_LRFS = in.readString(); + this.ZX_LRNR = in.readString(); + this.ZX_CBLX = in.readString(); + this.MKBS = in.readString(); + this.username = in.readString(); + this.SCNR = in.readString(); + this.SCBZ = in.readString(); + this.download = in.readInt(); + this.checked = in.readByte() != 0; + this.isWorkChecked = in.readByte() != 0; + this.DATE = in.readString(); + } + public static final Creator CREATOR = new Creator() { + @Override + public Dqgz createFromParcel(Parcel source) { + return new Dqgz(source); + } + + @Override + public Dqgz[] newArray(int size) { + return new Dqgz[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DqgzList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DqgzList.java new file mode 100644 index 0000000..5d0f0f1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/DqgzList.java @@ -0,0 +1,47 @@ +package com.rehome.scbaxj.DBModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by huangwenfei on 2021/12/09. + */ + +public class DqgzList { + private int id; + private String state; + private String msg; + private List data = new ArrayList<>(); + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Gwzyxcqrnr.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Gwzyxcqrnr.java new file mode 100755 index 0000000..c2f73ff --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Gwzyxcqrnr.java @@ -0,0 +1,63 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/2/3. + */ + +public class Gwzyxcqrnr extends DataSupport { + + private int mPositionID; + + private String GDID; + + private String QRID; + + private String QRNR; + + private String QRSJ; + + public String getGDID() { + return GDID; + } + + public void setGDID(String GDID) { + this.GDID = GDID; + } + + public int getmPositionID() { + return mPositionID; + } + + public void setmPositionID(int mPositionID) { + this.mPositionID = mPositionID; + } + + public String getQRID() { + return QRID; + } + + public void setQRID(String QRID) { + this.QRID = QRID; + } + + public String getQRNR() { + return QRNR; + } + + public void setQRNR(String QRNR) { + this.QRNR = QRNR; + } + + public String getQRSJ() { + return QRSJ; + } + + public void setQRSJ(String QRSJ) { + this.QRSJ = QRSJ; + } + + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyXcjsInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyXcjsInfo.java new file mode 100755 index 0000000..5d4e564 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyXcjsInfo.java @@ -0,0 +1,83 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/22. + */ + +public class LyXcjsInfo extends DataSupport { + + private int id; + private String ms; + private String jhid; + private String xfid; + private String djr; + private String path; + private String filename; + private boolean uploaded; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getXfid() { + return xfid; + } + + public void setXfid(String xfid) { + this.xfid = xfid; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMs() { + return ms; + } + + public void setMs(String ms) { + this.ms = ms; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getDjr() { + return djr; + } + + public void setDjr(String djr) { + this.djr = djr; + } + + public String getFilename() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyYhpcInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyYhpcInfo.java new file mode 100755 index 0000000..cf00a8a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyYhpcInfo.java @@ -0,0 +1,56 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/1. + */ + +public class LyYhpcInfo extends DataSupport { + + private String NR;//内容 + private String WT;//问题 + private String AREACODE;//区域编号 + private String FXR;//发现人 + private String FXSJ;//发现时间 + + public String getNR() { + return NR; + } + + public void setNR(String NR) { + this.NR = NR; + } + + public String getWT() { + return WT; + } + + public void setWT(String WT) { + this.WT = WT; + } + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getFXR() { + return FXR; + } + + public void setFXR(String FXR) { + this.FXR = FXR; + } + + public String getFXSJ() { + return FXSJ; + } + + public void setFXSJ(String FXSJ) { + this.FXSJ = FXSJ; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXm.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXm.java new file mode 100755 index 0000000..da81b98 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXm.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/12. + */ + +public class LyxcXm extends DataSupport { + + /** + * xmid : 78cb0bb2df5548ea9ab0fda3d4220e4a + * ssid : 4a68a4e25eea4b23bd17c11131485e0b + * jhid : 20161103192018 + * typename : 是否完好 + * type1 : 是 + * type2 : 否 + */ + + private String xmid; + private String ssid; + private String jhid; + private String typename; + private String type1; + private String type2; + + public String getXmid() { + return xmid; + } + + public void setXmid(String xmid) { + this.xmid = xmid; + } + + public String getSsid() { + return ssid; + } + + public void setSsid(String ssid) { + this.ssid = ssid; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getTypename() { + return typename; + } + + public void setTypename(String typename) { + this.typename = typename; + } + + public String getType1() { + return type1; + } + + public void setType1(String type1) { + this.type1 = type1; + } + + public String getType2() { + return type2; + } + + public void setType2(String type2) { + this.type2 = type2; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmJg.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmJg.java new file mode 100755 index 0000000..ad31738 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmJg.java @@ -0,0 +1,92 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/12. + */ + +public class LyxcXmJg extends DataSupport { + + /** + * xmid : 78cb0bb2df5548ea9ab0fda3d4220e4a + * ssid : 4a68a4e25eea4b23bd17c11131485e0b + * jhid : 20161103192018 + * typename : 是否完好 + * type1 : 是 + * type2 : 否 + */ + + private String xmid; + private String ssid; + private String jhid; + private String typename; + private String type1; + private String type2; + private String qyid; + private boolean jg; + + public String getQyid() { + return qyid; + } + + public void setQyid(String qyid) { + this.qyid = qyid; + } + + public boolean isJg() { + return jg; + } + + public void setJg(boolean jg) { + this.jg = jg; + } + + public String getXmid() { + return xmid; + } + + public void setXmid(String xmid) { + this.xmid = xmid; + } + + public String getSsid() { + return ssid; + } + + public void setSsid(String ssid) { + this.ssid = ssid; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getTypename() { + return typename; + } + + public void setTypename(String typename) { + this.typename = typename; + } + + public String getType1() { + return type1; + } + + public void setType1(String type1) { + this.type1 = type1; + } + + public String getType2() { + return type2; + } + + public void setType2(String type2) { + this.type2 = type2; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmList.java new file mode 100755 index 0000000..eb35fa8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcXmList.java @@ -0,0 +1,36 @@ +package com.rehome.scbaxj.DBModel; + +import java.util.List; + +/** + * Created by gzw on 2016/11/12. + */ + +public class LyxcXmList { + + + /** + * Rows : [{"xmid":"78cb0bb2df5548ea9ab0fda3d4220e4a","ssid":"4a68a4e25eea4b23bd17c11131485e0b","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"},{"xmid":"ebd90304b3f14156adbf71fc00123e85","ssid":"28dbda78ceb94c809f014635227951b5","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"},{"xmid":"2d76e717394c456e924029b0e5ee290b","ssid":"9cc7e7c905ee4ab69e2b3da729494b84","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"},{"xmid":"af90e99c237d498d8ca34b4ecb2921e5","ssid":"b9046a62f25e422db0583b8b38369fad","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"},{"xmid":"0381dab762aa4751b165d2f385a4b907","ssid":"1d619e47b2a14e508bdfb5ce66f8a019","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"},{"xmid":"3debf515f3704af7925d2b49ef572a9c","ssid":"f0d823228a194796bfafdd685da15336","jhid":"20161103192018","typename":"是否有漏水","type1":"是","type2":"否"},{"xmid":"fc5ff06fb8c14e9ab4c31dca6e66e5f8","ssid":"d47cc191a913403aae4c3ba41e313b9f","jhid":"20161103192018","typename":"是否有掉灰","type1":"是","type2":"否"},{"xmid":"6918731a58474be186a77ba3e97168c9","ssid":"01a13ca9a4c14a3a971c61bcf75b6a28","jhid":"20161103192018","typename":"是否正常","type1":"是","type2":"否"},{"xmid":"2a0879f795be4dd69bb776b0c0da7dcd","ssid":"65fd15e7a85842dd8d2f535171fd36b3","jhid":"20161103192018","typename":"是否正常","type1":"是","type2":"否"},{"xmid":"e9692c642e2a457f9b954314c373e1b6","ssid":"d533905e89ed4ab0af7db27f39b8e2cc","jhid":"20161103192018","typename":"是否完好","type1":"是","type2":"否"}] + * Total : 10 + */ + + private String Total; + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcqyList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcqyList.java new file mode 100755 index 0000000..680e988 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/LyxcqyList.java @@ -0,0 +1,50 @@ +package com.rehome.scbaxj.DBModel; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +/** + * Created by gzw on 2016/11/12. + */ + +public class LyxcqyList { + + + /** + * Rows : [{"区域分组":[{"BH":"5","XMNAME":"楼梯、走廊瓷砖","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"e9692c642e2a457f9b954314c373e1b6","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"排水系统","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"2a0879f795be4dd69bb776b0c0da7dcd","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"卫生间卫浴设备","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"6918731a58474be186a77ba3e97168c9","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"墙面","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"fc5ff06fb8c14e9ab4c31dca6e66e5f8","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"建筑物","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"3debf515f3704af7925d2b49ef572a9c","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"瓷砖","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"0381dab762aa4751b165d2f385a4b907","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"天花","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"af90e99c237d498d8ca34b4ecb2921e5","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"窗户及玻璃、窗帘","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"2d76e717394c456e924029b0e5ee290b","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"5","XMNAME":"门及门框","QYNAME":"大仓库","TXMBH":"5","QYNFC":"5","XMID":"ebd90304b3f14156adbf71fc00123e85","QYID":"2f90396dd8324dda835c5439f241e994","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"}]},{"区域分组":[{"BH":"8","XMNAME":"窗户及玻璃、窗帘","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"2d76e717394c456e924029b0e5ee290b","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"门及门框","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"ebd90304b3f14156adbf71fc00123e85","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"楼梯、走廊瓷砖","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"e9692c642e2a457f9b954314c373e1b6","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"排水系统","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"2a0879f795be4dd69bb776b0c0da7dcd","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"卫生间卫浴设备","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"6918731a58474be186a77ba3e97168c9","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"墙面","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"fc5ff06fb8c14e9ab4c31dca6e66e5f8","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"建筑物","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"3debf515f3704af7925d2b49ef572a9c","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"瓷砖","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"0381dab762aa4751b165d2f385a4b907","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"8","XMNAME":"天花","QYNAME":"扒机检修间","TXMBH":"8","QYNFC":"8","XMID":"af90e99c237d498d8ca34b4ecb2921e5","QYID":"f7539875c44b4613a037978fc66f736e","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"}]},{"区域分组":[{"BH":"6","XMNAME":"楼梯、走廊瓷砖","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"e9692c642e2a457f9b954314c373e1b6","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"排水系统","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"2a0879f795be4dd69bb776b0c0da7dcd","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"卫生间卫浴设备","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"6918731a58474be186a77ba3e97168c9","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"墙面","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"fc5ff06fb8c14e9ab4c31dca6e66e5f8","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"建筑物","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"3debf515f3704af7925d2b49ef572a9c","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"瓷砖","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"0381dab762aa4751b165d2f385a4b907","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"天花","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"af90e99c237d498d8ca34b4ecb2921e5","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"窗户及玻璃、窗帘","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"2d76e717394c456e924029b0e5ee290b","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"6","XMNAME":"门及门框","QYNAME":"除盐控制室","TXMBH":"6","QYNFC":"6","XMID":"ebd90304b3f14156adbf71fc00123e85","QYID":"4a033d646c9a4a46949d52c0380a6f32","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"}]},{"区域分组":[{"BH":"4","XMNAME":"楼梯、走廊瓷砖","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"e9692c642e2a457f9b954314c373e1b6","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"排水系统","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"2a0879f795be4dd69bb776b0c0da7dcd","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"卫生间卫浴设备","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"6918731a58474be186a77ba3e97168c9","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"墙面","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"fc5ff06fb8c14e9ab4c31dca6e66e5f8","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"建筑物","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"3debf515f3704af7925d2b49ef572a9c","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"瓷砖","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"0381dab762aa4751b165d2f385a4b907","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"天花","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"af90e99c237d498d8ca34b4ecb2921e5","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"窗户及玻璃、窗帘","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"2d76e717394c456e924029b0e5ee290b","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"},{"BH":"4","XMNAME":"门及门框","QYNAME":"电控楼","TXMBH":"4","QYNFC":"4","XMID":"ebd90304b3f14156adbf71fc00123e85","QYID":"4910a771647f4d978ea99804ef9f6986","JHID":"20161103192018","NEXTTIME":"2016/11/15 0:00:00"}]}] + * Total : 36 + */ + + private int Total; + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + @SerializedName("区域分组") + private List lyxcrwqys; + + public List getLyxcrwqys() { + return lyxcrwqys; + } + + public void setLyxcrwqys(List lyxcrwqys) { + this.lyxcrwqys = lyxcrwqys; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Lyxcrwqy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Lyxcrwqy.java new file mode 100755 index 0000000..42c790f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Lyxcrwqy.java @@ -0,0 +1,159 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/12. + */ + +public class Lyxcrwqy extends DataSupport { + + /** + * BH : 5 + * XMNAME : 楼梯、走廊瓷砖 + * QYNAME : 大仓库 + * TXMBH : 5 + * QYNFC : 5 + * XMID : e9692c642e2a457f9b954314c373e1b6 + * QYID : 2f90396dd8324dda835c5439f241e994 + * JHID : 20161103192018 + * NEXTTIME : 2016/11/15 0:00:00 + */ + + private String BH; + private String XMNAME; + private String QYNAME; + private String TXMBH; + private String QYNFC; + private String XMID; + private String QYID; + private String JHID; + private String NEXTTIME; + private String ISZC;// 1表示正常 0表示不正常, 不正常就生成缺陷工单 + private String CJJG;//备注 + private String CJSJ;//日期 + private boolean checked; + private String CJR;//采集人 + private String SMFX;//扫描方式 + + public String getSMFX() { + return SMFX; + } + + public void setSMFX(String SMFX) { + this.SMFX = SMFX; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public String getCJR() { + return CJR; + } + + public void setCJR(String CJR) { + this.CJR = CJR; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public String getCJSJ() { + return CJSJ; + } + + public void setCJSJ(String CJSJ) { + this.CJSJ = CJSJ; + } + + public String getISZC() { + return ISZC; + } + + public void setISZC(String ISZC) { + this.ISZC = ISZC; + } + + + public String getBH() { + return BH; + } + + public void setBH(String BH) { + this.BH = BH; + } + + public String getXMNAME() { + return XMNAME; + } + + public void setXMNAME(String XMNAME) { + this.XMNAME = XMNAME; + } + + public String getQYNAME() { + return QYNAME; + } + + public void setQYNAME(String QYNAME) { + this.QYNAME = QYNAME; + } + + public String getTXMBH() { + return TXMBH; + } + + public void setTXMBH(String TXMBH) { + this.TXMBH = TXMBH; + } + + public String getQYNFC() { + return QYNFC; + } + + public void setQYNFC(String QYNFC) { + this.QYNFC = QYNFC; + } + + public String getXMID() { + return XMID; + } + + public void setXMID(String XMID) { + this.XMID = XMID; + } + + public String getQYID() { + return QYID; + } + + public void setQYID(String QYID) { + this.QYID = QYID; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getNEXTTIME() { + return NEXTTIME; + } + + public void setNEXTTIME(String NEXTTIME) { + this.NEXTTIME = NEXTTIME; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Othersbsave.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Othersbsave.java new file mode 100755 index 0000000..805b43c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Othersbsave.java @@ -0,0 +1,102 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/1/8. + */ + +public class Othersbsave extends DataSupport { + + private String JHID;//计划ID(必填) + private String WTQY;//问题区域(必填) + private String WTMS;//问题描述(必填) + private String LRSJ;//录入时间 + private String FXLB;//风险类别(选填) + private String YHDJ;//隐患等级(选填) + private String ZRBM;//责任部门(选填) + + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getWTQY() { + return WTQY; + } + + public void setWTQY(String WTQY) { + this.WTQY = WTQY; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getFXLB() { + return FXLB; + } + + public void setFXLB(String FXLB) { + this.FXLB = FXLB; + } + + public String getYHDJ() { + return YHDJ; + } + + public void setYHDJ(String YHDJ) { + this.YHDJ = YHDJ; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Profession.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Profession.java new file mode 100644 index 0000000..d0ea066 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Profession.java @@ -0,0 +1,31 @@ +package com.rehome.scbaxj.DBModel; + + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2021/11/18 + */ + +public class Profession extends DataSupport { + + private String zyid; + private String zymc; + + public String getZyid() { + return zyid; + } + + public void setZyid(String zyid) { + this.zyid = zyid; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ProfessionList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ProfessionList.java new file mode 100644 index 0000000..7027e9c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ProfessionList.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.DBModel; + + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2021/11/18 + */ + +public class ProfessionList { + + private String state; + private String msg; + private List data = new ArrayList<>(); + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYAQFXDATABean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYAQFXDATABean.java new file mode 100755 index 0000000..df86cce --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYAQFXDATABean.java @@ -0,0 +1,138 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by Johnny_Chen + * on 2018/3/1. + */ + +public class QYAQFXDATABean extends DataSupport implements Parcelable { + /** + * AQFXID : D3F75475F4D14A25BCBC1C798ED38368 + * FXLX : 安全风险测试 + * FXMS : 风险描述 + * FHCS : 防护措施 + */ + + private long id; + private String AQFXID; + private String FXLX; + private String FXMS; + private String FHCS; + private XDJJHXZDataBean xdjjhxzDataBean; + private String QYEWM; + private String QYNFC; + + + public QYAQFXDATABean() { + } + + protected QYAQFXDATABean(Parcel in) { + AQFXID = in.readString(); + FXLX = in.readString(); + FXMS = in.readString(); + FHCS = in.readString(); + QYEWM = in.readString(); + QYNFC = in.readString(); + + } + + public static final Creator CREATOR = new Creator() { + @Override + public QYAQFXDATABean createFromParcel(Parcel in) { + return new QYAQFXDATABean(in); + } + + @Override + public QYAQFXDATABean[] newArray(int size) { + return new QYAQFXDATABean[size]; + } + }; + + public void setId(long id) { + this.id = id; + } + + public XDJJHXZDataBean getXdjjhxzDataBean() { + return xdjjhxzDataBean; + } + + public void setXdjjhxzDataBean(XDJJHXZDataBean xdjjhxzDataBean) { + this.xdjjhxzDataBean = xdjjhxzDataBean; + } + + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getAQFXID() { + return AQFXID; + } + + public void setAQFXID(String AQFXID) { + this.AQFXID = AQFXID; + } + + public String getFXLX() { + return FXLX; + } + + public void setFXLX(String FXLX) { + this.FXLX = FXLX; + } + + public String getFXMS() { + return FXMS; + } + + public void setFXMS(String FXMS) { + this.FXMS = FXMS; + } + + public String getFHCS() { + return FHCS; + } + + public void setFHCS(String FHCS) { + this.FHCS = FHCS; + } + + public String getQYEWM() { + return QYEWM; + } + + public void setQYEWM(String QYEWM) { + this.QYEWM = QYEWM; + } + + public String getQYNFC() { + return QYNFC; + } + + public void setQYNFC(String QYNFC) { + this.QYNFC = QYNFC; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(AQFXID); + dest.writeString(FXLX); + dest.writeString(FXMS); + dest.writeString(FHCS); + dest.writeString(QYEWM); + dest.writeString(QYNFC); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYDDATABean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYDDATABean.java new file mode 100755 index 0000000..29ade25 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QYDDATABean.java @@ -0,0 +1,395 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by Johnny_Chen + * on 2018/2/28. + */ + +public class QYDDATABean extends DataSupport implements Parcelable { + + private long id; + private String SCID; + private String SBMC; + private String SBID; + private String BJMC; + private String DID; + private String DMC; + private String BZZ; + private String SJMC; + private String SJDW; + private String JCFS; + private String LRFS; + private String LRMRZ; + private String DJ_ST; + private String DJ_ET; + private String DJNR; + private XDJJHXZDataBean xdjjhxzDataBean; + private boolean checked;//是否已经检查 + private boolean uploaded;//是否上传 + private boolean deleted;//true 已删除,false 未删除 + private boolean SMFX;//扫描方式,0 NFC 1 一维码二维码 + private String CJJG; + private String FXNR; + private String DATE;//保存时间 + private String GWMC; + private String GWID; + private String QYBH; + private String QYEWM; + private String QYNFC; + private String SBMCSTATE;//设备状态 + private String SBMCSTATEVALUE;//设备状态值 + private String second;//是否曾经用过NFC和二维码进入过区域 + + public QYDDATABean() { + } + + + protected QYDDATABean(Parcel in) { + SCID = in.readString(); + SBMC = in.readString(); + SBID = in.readString(); + BJMC = in.readString(); + DID = in.readString(); + DMC = in.readString(); + BZZ = in.readString(); + SJMC = in.readString(); + SJDW = in.readString(); + JCFS = in.readString(); + LRFS = in.readString(); + LRMRZ = in.readString(); + DJ_ST = in.readString(); + DJ_ET = in.readString(); + DJNR = in.readString(); + FXNR = in.readString(); + checked = in.readByte() != 0; + uploaded = in.readByte() != 0; + deleted = in.readByte() != 0; + SMFX = in.readByte() != 0; + CJJG = in.readString(); + DATE = in.readString(); + GWMC = in.readString(); + GWID = in.readString(); + QYBH = in.readString(); + QYEWM = in.readString(); + QYNFC = in.readString(); + SBMCSTATE = in.readString(); + SBMCSTATEVALUE = in.readString(); + second = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QYDDATABean createFromParcel(Parcel in) { + return new QYDDATABean(in); + } + + @Override + public QYDDATABean[] newArray(int size) { + return new QYDDATABean[size]; + } + }; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public XDJJHXZDataBean getXdjjhxzDataBean() { + return xdjjhxzDataBean; + } + + public void setXdjjhxzDataBean(XDJJHXZDataBean xdjjhxzDataBean) { + this.xdjjhxzDataBean = xdjjhxzDataBean; + } + + public void setId(int id) { + this.id = id; + } + + public String getSCID() { + return SCID; + } + + public void setSCID(String SCID) { + this.SCID = SCID; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getSBID() { + return SBID; + } + + public void setSBID(String SBID) { + this.SBID = SBID; + } + + public String getBJMC() { + return BJMC; + } + + public void setBJMC(String BJMC) { + this.BJMC = BJMC; + } + + public String getDID() { + return DID; + } + + public void setDID(String DID) { + this.DID = DID; + } + + public String getDMC() { + return DMC; + } + + public String getSecond() { + return second; + } + + public void setSecond(String second) { + this.second = second; + } + + public void setDMC(String DMC) { + this.DMC = DMC; + } + + public String getBZZ() { + return BZZ; + } + + public void setBZZ(String BZZ) { + this.BZZ = BZZ; + } + + public String getSJMC() { + return SJMC; + } + + public void setSJMC(String SJMC) { + this.SJMC = SJMC; + } + + public String getSJDW() { + return SJDW; + } + + public void setSJDW(String SJDW) { + this.SJDW = SJDW; + } + + public String getJCFS() { + return JCFS; + } + + public void setJCFS(String JCFS) { + this.JCFS = JCFS; + } + + public String getLRFS() { + return LRFS; + } + + public void setLRFS(String LRFS) { + this.LRFS = LRFS; + } + + public String getLRMRZ() { + return LRMRZ; + } + + public void setLRMRZ(String LRMRZ) { + this.LRMRZ = LRMRZ; + } + + public String getDJ_ST() { + return DJ_ST; + } + + public void setDJ_ST(String DJ_ST) { + this.DJ_ST = DJ_ST; + } + + public String getFXNR() { + return FXNR; + } + + public void setFXNR(String FXNR) { + this.FXNR = FXNR; + } + + public String getDJNR() { + return DJNR; + } + + public void setDJNR(String DJNR) { + this.DJNR = DJNR; + } + + public String getDJ_ET() { + return DJ_ET; + } + + public void setDJ_ET(String DJ_ET) { + this.DJ_ET = DJ_ET; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public boolean isSMFX() { + return SMFX; + } + + public void setSMFX(boolean SMFX) { + this.SMFX = SMFX; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public String getGWMC() { + return GWMC; + } + + public void setGWMC(String GWMC) { + this.GWMC = GWMC; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getQYBH() { + return QYBH; + } + + public void setQYBH(String QYBH) { + this.QYBH = QYBH; + } + + public String getQYEWM() { + return QYEWM; + } + + public void setQYEWM(String QYEWM) { + this.QYEWM = QYEWM; + } + + public String getQYNFC() { + return QYNFC; + } + + public void setQYNFC(String QYNFC) { + this.QYNFC = QYNFC; + } + + public String getSBMCSTATE() { + return SBMCSTATE; + } + + public void setSBMCSTATE(String SBMCSTATE) { + this.SBMCSTATE = SBMCSTATE; + } + + public String getSBMCSTATEVALUE() { + return SBMCSTATEVALUE; + } + + public void setSBMCSTATEVALUE(String SBMCSTATEVALUE) { + this.SBMCSTATEVALUE = SBMCSTATEVALUE; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(SCID); + dest.writeString(SBMC); + dest.writeString(SBID); + dest.writeString(BJMC); + dest.writeString(DID); + dest.writeString(DMC); + dest.writeString(BZZ); + dest.writeString(SJMC); + dest.writeString(SJDW); + dest.writeString(JCFS); + dest.writeString(LRFS); + dest.writeString(LRMRZ); + dest.writeString(DJ_ST); + dest.writeString(DJ_ET); + dest.writeString(DJNR); + dest.writeString(FXNR); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeByte(this.uploaded ? (byte) 1 : (byte) 0); + dest.writeByte(this.deleted ? (byte) 1 : (byte) 0); + dest.writeByte(this.SMFX ? (byte) 1 : (byte) 0); + dest.writeString(CJJG); + dest.writeString(DATE); + dest.writeString(GWMC); + dest.writeString(GWID); + dest.writeString(QYBH); + dest.writeString(QYEWM); + dest.writeString(QYNFC); + dest.writeString(SBMCSTATE); + dest.writeString(SBMCSTATEVALUE); + dest.writeString(second); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QxgdInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QxgdInfo.java new file mode 100755 index 0000000..7e38db4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QxgdInfo.java @@ -0,0 +1,47 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/22. + */ + +public class QxgdInfo extends DataSupport { + + private String qxms; + private String zyid; + private String bgr; + private String date; + + public String getQxms() { + return qxms; + } + + public void setQxms(String qxms) { + this.qxms = qxms; + } + + public String getZyid() { + return zyid; + } + + public void setZyid(String zyid) { + this.zyid = zyid; + } + + public String getBgr() { + return bgr; + } + + public void setBgr(String bgr) { + this.bgr = bgr; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Qy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Qy.java new file mode 100755 index 0000000..479cd81 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Qy.java @@ -0,0 +1,47 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/11. + */ + +public class Qy extends DataSupport { + + private String AREACODE; + private String AREANAME; + private String BQBM; + private String TXM; + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getAREANAME() { + return AREANAME; + } + + public void setAREANAME(String AREANAME) { + this.AREANAME = AREANAME; + } + + public String getBQBM() { + return BQBM; + } + + public void setBQBM(String BQBM) { + this.BQBM = BQBM; + } + + public String getTXM() { + return TXM; + } + + public void setTXM(String TXM) { + this.TXM = TXM; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QyList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QyList.java new file mode 100755 index 0000000..965dd66 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/QyList.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.DBModel; + +import java.util.List; + +/** + * Created by gzw on 2016/11/11. + */ + +public class QyList { + + + /** + * Rows : [{"AREACODE":"HX02","AREANAME":"1、2号机组废水处理区域","BQBM":"BQ2234","TXM":"TM2233"},{"AREACODE":"CH07","AREANAME":"1、2号机组灰控室","BQBM":"123456","TXM":"654321"},{"AREACODE":"HX05","AREANAME":"1、2号机组公用循环水加药系统区域","BQBM":"3332135","TXM":"55656132"},{"AREACODE":"CH05","AREANAME":"1、2号炉灰库区域","BQBM":"12345","TXM":"111222"},{"AREACODE":"CH06","AREANAME":"1、2号炉输送风机及气化风机区域","BQBM":"33333333333","TXM":"444444"},{"AREACODE":"GL08","AREANAME":"1号炉0米层区域","BQBM":"555555555","TXM":"666666"},{"AREACODE":"CH04","AREANAME":"1号炉电除尘区域","BQBM":"8885567","TXM":"888888"},{"AREACODE":"QT06","AREANAME":"机械车间","BQBM":"","TXM":""},{"AREACODE":"TS05","AREANAME":"1号机组脱硫吸收塔GGH层区域","BQBM":"","TXM":""},{"AREACODE":"TS08","AREANAME":"1、2号机组脱硫废水楼区域","BQBM":"","TXM":""},{"AREACODE":"HC10","AREANAME":"灰场堆料机B区域","BQBM":"","TXM":""},{"AREACODE":"MT07","AREANAME":"4号卸船机","BQBM":"","TXM":""},{"AREACODE":"RL229","AREANAME":"TT5除尘区域","BQBM":"","TXM":""},{"AREACODE":"GL26","AREANAME":"2号炉电梯5楼区域","BQBM":"","TXM":""},{"AREACODE":"MT02","AREANAME":"煤码头区域","BQBM":"","TXM":""},{"AREACODE":"RL226","AREANAME":"C9A皮带区域","BQBM":"","TXM":""},{"AREACODE":"HX04","AREANAME":"全厂公用制氢站区域","BQBM":"","TXM":""},{"AREACODE":"RL232","AREANAME":"TT7电气房区域","BQBM":"","TXM":""},{"AREACODE":"MT06","AREANAME":"C1B皮带机","BQBM":"","TXM":""},{"AREACODE":"QT04","AREANAME":"行政楼生产楼区域","BQBM":"","TXM":""},{"AREACODE":"RL233","AREANAME":"TT8除尘区域","BQBM":"","TXM":""},{"AREACODE":"HX03","AREANAME":"1号、2号机汽水取样区域","BQBM":"","TXM":""},{"AREACODE":"RL217","AREANAME":"C6A/B碎煤机区域","BQBM":"","TXM":""},{"AREACODE":"RL234","AREANAME":"煤场喷淋泵房及沉淀池区域 ","BQBM":"","TXM":""},{"AREACODE":"RL221","AREANAME":"C7A皮带区域","BQBM":"","TXM":""},{"AREACODE":"GL06","AREANAME":"1号炉电梯1楼区域","BQBM":"","TXM":""},{"AREACODE":"RL205","AREANAME":"2号堆取料机区域","BQBM":"","TXM":""},{"AREACODE":"TS09","AREANAME":"2号机组脱硫露天0米区域","BQBM":"","TXM":""},{"AREACODE":"TS12","AREANAME":"2号机组脱硫吸收塔GGH层区域","BQBM":"","TXM":""},{"AREACODE":"RL37","AREANAME":"2A取样收集站区域","BQBM":"","TXM":""},{"AREACODE":"RL228","AREANAME":"TT4除尘区域","BQBM":"","TXM":""},{"AREACODE":"GL11","AREANAME":"2号炉电梯4楼区域","BQBM":"","TXM":""},{"AREACODE":"RL113","AREANAME":"煤控PLC房区域","BQBM":"","TXM":""},{"AREACODE":"GL10","AREANAME":"1号炉电梯5楼区域","BQBM":"","TXM":""},{"AREACODE":"HC01","AREANAME":"灰场管式皮带A头部区域","BQBM":"","TXM":""},{"AREACODE":"RL202","AREANAME":"1号污水井区域","BQBM":"","TXM":""},{"AREACODE":"MT04","AREANAME":"1号卸船机","BQBM":"","TXM":""},{"AREACODE":"HC06","AREANAME":"灰场管式皮带B4号炉段区域","BQBM":"","TXM":""},{"AREACODE":"RL106","AREANAME":"煤控电气房区域","BQBM":"","TXM":""},{"AREACODE":"GL15","AREANAME":"2号炉电梯7楼区域","BQBM":"","TXM":""},{"AREACODE":"RL222","AREANAME":"C7B皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL211","AREANAME":"C3A皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL92","AREANAME":"C8A/B取样收集站区域","BQBM":"","TXM":""},{"AREACODE":"HC03","AREANAME":"灰场管式皮带A3号炉段区域","BQBM":"","TXM":""},{"AREACODE":"JK03","AREANAME":"1、2号机组集控楼3楼","BQBM":"","TXM":""},{"AREACODE":"MT08","AREANAME":"3号卸船机","BQBM":"","TXM":""},{"AREACODE":"RL224","AREANAME":"C8A皮带区域","BQBM":"","TXM":""},{"AREACODE":"GL23","AREANAME":"2号炉电梯2楼区域","BQBM":"","TXM":""},{"AREACODE":"GL18","AREANAME":"2号炉电梯6楼区域","BQBM":"","TXM":""},{"AREACODE":"QJ13","AREANAME":"1号机组汽机房0米层区域","BQBM":"","TXM":""},{"AREACODE":"QJ12","AREANAME":"2号机组汽机房6米层区域","BQBM":"","TXM":""},{"AREACODE":"CH02","AREANAME":"1号炉底灰皮带区域","BQBM":"","TXM":""},{"AREACODE":"HC09","AREANAME":"灰场堆料机A区域","BQBM":"","TXM":""},{"AREACODE":"GL01","AREANAME":"2号炉电梯10楼区域","BQBM":"","TXM":""},{"AREACODE":"GL09","AREANAME":"1号炉南侧区域","BQBM":"","TXM":""},{"AREACODE":"RL218","AREANAME":"C6A/B振动筛区域","BQBM":"","TXM":""},{"AREACODE":"DQ06","AREANAME":"2号主变、厂高变区域","BQBM":"","TXM":""},{"AREACODE":"GL13","AREANAME":"2号炉0米层区域","BQBM":"","TXM":""},{"AREACODE":"CH10","AREANAME":"2号炉脱水仓区域","BQBM":"","TXM":""},{"AREACODE":"RL215","AREANAME":"C5A皮带区域","BQBM":"","TXM":""},{"AREACODE":"QJ03","AREANAME":"2号机组汽机房除氧器区域","BQBM":"","TXM":""},{"AREACODE":"QT05","AREANAME":"油库区域","BQBM":"","TXM":""},{"AREACODE":"RL208","AREANAME":"3号污水井区域","BQBM":"","TXM":""},{"AREACODE":"HC02","AREANAME":"灰场管式皮带B头部区域","BQBM":"","TXM":""},{"AREACODE":"CH03","AREANAME":"1号炉脱水仓区域","BQBM":"","TXM":""},{"AREACODE":"QJ14","AREANAME":"2号机组汽机房0米层区域","BQBM":"","TXM":""},{"AREACODE":"RL223","AREANAME":"C8A/B取样区域","BQBM":"","TXM":""},{"AREACODE":"TS07","AREANAME":"2号机组脱硫循环泵泵房","BQBM":"","TXM":""},{"AREACODE":"CH08","AREANAME":"1、2号机组烟囱区域","BQBM":"","TXM":""},{"AREACODE":"TS03","AREANAME":"1、2号机组脱硫电控楼3楼","BQBM":"","TXM":""},{"AREACODE":"HC08","AREANAME":"灰场管式皮带B中段区域","BQBM":"","TXM":""},{"AREACODE":"CH09","AREANAME":"灰场区域","BQBM":"","TXM":""},{"AREACODE":"GL02","AREANAME":"1号炉电梯2楼区域","BQBM":"","TXM":""},{"AREACODE":"GL20","AREANAME":"1号炉电梯6楼区域","BQBM":"","TXM":""},{"AREACODE":"MT05","AREANAME":"C1A皮带机","BQBM":"","TXM":""},{"AREACODE":"DQ03","AREANAME":"1、2号启备变区域","BQBM":"","TXM":""},{"AREACODE":"QJ02","AREANAME":"2号机组汽机房13米层区域","BQBM":"","TXM":""},{"AREACODE":"RL90","AREANAME":"TT7电气房区域","BQBM":"","TXM":""},{"AREACODE":"MT01","AREANAME":"2号卸船机","BQBM":"","TXM":""},{"AREACODE":"RL225","AREANAME":"C8B皮带区域","BQBM":"","TXM":""},{"AREACODE":"GL12","AREANAME":"1号炉电梯10楼区域","BQBM":"","TXM":""},{"AREACODE":"TS06","AREANAME":"1、2号机组脱硫工艺楼区域","BQBM":"","TXM":""},{"AREACODE":"GL03","AREANAME":"2号炉北侧区域","BQBM":"","TXM":""},{"AREACODE":"RL209","AREANAME":"C2A皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL210","AREANAME":"C2B皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL204","AREANAME":"2B取样区域","BQBM":"","TXM":""},{"AREACODE":"CH01","AREANAME":"2号炉电除尘区域","BQBM":"","TXM":""},{"AREACODE":"RL207","AREANAME":"2号污水井区域","BQBM":"","TXM":""},{"AREACODE":"GL19","AREANAME":"2号炉电梯8楼区域","BQBM":"","TXM":""},{"AREACODE":"HC04","AREANAME":"灰场管式皮带B3号炉段区域","BQBM":"","TXM":""},{"AREACODE":"RL214","AREANAME":"C4B皮带区域","BQBM":"","TXM":""},{"AREACODE":"TS11","AREANAME":"1、2号机组脱硫电控楼","BQBM":"","TXM":""},{"AREACODE":"RL212","AREANAME":"C3B皮带区域","BQBM":"","TXM":""},{"AREACODE":"QJ11","AREANAME":"1、2机组循环水区域","BQBM":"","TXM":""},{"AREACODE":"RL108","AREANAME":"码头电气房区域","BQBM":"","TXM":""},{"AREACODE":"RL230","AREANAME":"TT6除尘区域","BQBM":"","TXM":""},{"AREACODE":"GL16","AREANAME":"2号炉引风机区域","BQBM":"","TXM":""},{"AREACODE":"RL235","AREANAME":"煤控电气房及PLC房区域","BQBM":"","TXM":""},{"AREACODE":"QJ08","AREANAME":"1号机组闭式冷却水区域","BQBM":"","TXM":""},{"AREACODE":"RL227","AREANAME":"C9B皮带区域","BQBM":"","TXM":""},{"AREACODE":"QJ05","AREANAME":"2号机组闭式冷却水区域","BQBM":"","TXM":""},{"AREACODE":"RL216","AREANAME":"C5B皮带区域","BQBM":"","TXM":""},{"AREACODE":"GL25","AREANAME":"2号炉电梯1楼区域","BQBM":"","TXM":""},{"AREACODE":"QT08","AREANAME":"消防保卫楼","BQBM":"","TXM":""},{"AREACODE":"RL219","AREANAME":"C6A皮带区域","BQBM":"","TXM":""},{"AREACODE":"DQ05","AREANAME":"电气车间","BQBM":"","TXM":""},{"AREACODE":"RL231","AREANAME":"TT7除尘区域","BQBM":"","TXM":""},{"AREACODE":"RL203","AREANAME":"2A取样区域","BQBM":"","TXM":""},{"AREACODE":"GL22","AREANAME":"1号炉电梯8楼区域","BQBM":"","TXM":""},{"AREACODE":"HX06","AREANAME":"全厂公用除盐水、生活水区域","BQBM":"","TXM":""},{"AREACODE":"QJ04","AREANAME":"1号机组汽机房除氧器区域","BQBM":"","TXM":""},{"AREACODE":"CH11","AREANAME":"2号炉底灰皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL200","AREANAME":"1号堆取料机区域","BQBM":"","TXM":""},{"AREACODE":"HC07","AREANAME":"灰场管式皮带A中段区域","BQBM":"","TXM":""},{"AREACODE":"RL201","AREANAME":"1号炉原煤仓除尘区域","BQBM":"","TXM":""},{"AREACODE":"QJ01","AREANAME":"1、2号机组汽机房0米层中间区域","BQBM":"","TXM":""},{"AREACODE":"GL05","AREANAME":"1号炉电梯4楼区域","BQBM":"","TXM":""},{"AREACODE":"DQ04","AREANAME":"1号主变、厂高变区域","BQBM":"","TXM":""},{"AREACODE":"QT03","AREANAME":"仓库","BQBM":"","TXM":""},{"AREACODE":"QJ06","AREANAME":"1号机组汽机房13米层区域","BQBM":"","TXM":""},{"AREACODE":"DQ02","AREANAME":"220KV GIS区域","BQBM":"","TXM":""},{"AREACODE":"GL14","AREANAME":"1号炉电梯7楼区域","BQBM":"","TXM":""},{"AREACODE":"HX01","AREANAME":"全厂公用生水预处理区域及消防水泵房","BQBM":"","TXM":""},{"AREACODE":"RL213","AREANAME":"C4A皮带区域","BQBM":"","TXM":""},{"AREACODE":"RL220","AREANAME":"C6B皮带区域","BQBM":"","TXM":""},{"AREACODE":"TS04","AREANAME":"1号机组脱硫循环泵泵房","BQBM":"","TXM":""},{"AREACODE":"JK01","AREANAME":"1、2号机组集控楼1楼","BQBM":"","TXM":""},{"AREACODE":"JK04","AREANAME":"1、2号机组集控楼2楼","BQBM":"","TXM":""},{"AREACODE":"JK02","AREANAME":"1、2号机组集控楼5楼","BQBM":"","TXM":""},{"AREACODE":"RL206","AREANAME":"2号炉原煤仓除尘区域","BQBM":"","TXM":""},{"AREACODE":"QJ10","AREANAME":"1号机组汽机房6米层区域","BQBM":"","TXM":""},{"AREACODE":"RL39","AREANAME":"2B取样收集站区域","BQBM":"","TXM":""},{"AREACODE":"TS01","AREANAME":"1号机组脱硫露天0米区域","BQBM":"","TXM":""},{"AREACODE":"DQ01","AREANAME":"220KV网控楼","BQBM":"","TXM":""},{"AREACODE":"GL21","AREANAME":"1号炉电梯3楼区域","BQBM":"","TXM":""},{"AREACODE":"MT03","AREANAME":"油码头区域","BQBM":"","TXM":""},{"AREACODE":"GL17","AREANAME":"1号炉引风机区域","BQBM":"","TXM":""},{"AREACODE":"GL24","AREANAME":"2号炉电梯3楼区域","BQBM":"","TXM":""},{"AREACODE":"RL236","AREANAME":"码头电气房区域","BQBM":"","TXM":""},{"AREACODE":"HC05","AREANAME":"灰场管式皮带A4号炉段区域","BQBM":"","TXM":""},{"AREACODE":"JK05","AREANAME":"1、2号机组集控楼4楼","BQBM":"","TXM":""}] + * Total : 141 + */ + + private int Total; + /** + * AREACODE : HX02 + * AREANAME : 1、2号机组废水处理区域 + * BQBM : BQ2234 + * TXM : TM2233 + */ + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/UploadLocation.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/UploadLocation.java new file mode 100644 index 0000000..8c1a6bf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/UploadLocation.java @@ -0,0 +1,41 @@ +package com.rehome.scbaxj.DBModel; + + +import org.litepal.crud.DataSupport; + +/** + * Created by huangwenfei on 2022/03/04 + */ + +public class UploadLocation extends DataSupport { + + private String nfcbm; + + private String username; + + private String djsj; + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadaqjcsave.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadaqjcsave.java new file mode 100755 index 0000000..72256dc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadaqjcsave.java @@ -0,0 +1,101 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/1/8. + */ + +public class Uploadaqjcsave extends DataSupport { + + private String JHID;//计划ID(必填) + private String WTQY;//问题区域(必填) + private String WTMS;//问题描述(必填) + private String LRSJ;//录入时间 + private String FXLB;//风险类别(选填) + private String YHDJ;//隐患等级(选填) + private String ZRBM;//责任部门(选填) + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getWTQY() { + return WTQY; + } + + public void setWTQY(String WTQY) { + this.WTQY = WTQY; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getFXLB() { + return FXLB; + } + + public void setFXLB(String FXLB) { + this.FXLB = FXLB; + } + + public String getYHDJ() { + return YHDJ; + } + + public void setYHDJ(String YHDJ) { + this.YHDJ = YHDJ; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadsblcsave.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadsblcsave.java new file mode 100755 index 0000000..46100b0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadsblcsave.java @@ -0,0 +1,105 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2017/12/23. + */ + +public class Uploadsblcsave extends DataSupport { + + private String JHID;//计划ID(必填) + private String LCSB;//联查设备(必填) + private String WTMS;//问题描述(必填) + private String LRSJ;//录入时间 + private String ZGYJ;//整改意见(选填) + private String ZGBM;//整改部门(选填) + private String ZGZRR;//整改责任人(选填) + + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getLCSB() { + return LCSB; + } + + public void setLCSB(String LCSB) { + this.LCSB = LCSB; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getZGYJ() { + return ZGYJ; + } + + public void setZGYJ(String ZGYJ) { + this.ZGYJ = ZGYJ; + } + + public String getZGBM() { + return ZGBM; + } + + public void setZGBM(String ZGBM) { + this.ZGBM = ZGBM; + } + + public String getZGZRR() { + return ZGZRR; + } + + public void setZGZRR(String ZGZRR) { + this.ZGZRR = ZGZRR; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzdcsrw.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzdcsrw.java new file mode 100755 index 0000000..54f830f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzdcsrw.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/1/24. + */ + +public class Uploadzdcsrw extends DataSupport { + + + private String ZXID;//执行ID(必填) + private String QYBH;//区域编号 + private String WTMS;//问题描述 + private String LUSJ;//录入时间 + private String FXLB;//风险类别 + private String ZRBM;//责任部门 + private String YHDJ;//隐患等级 + + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + + public String getZXID() { + return ZXID; + } + + public void setZXID(String ZXID) { + this.ZXID = ZXID; + } + + public String getQYBH() { + return QYBH; + } + + public void setQYBH(String QYBH) { + this.QYBH = QYBH; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getLUSJ() { + return LUSJ; + } + + public void setLUSJ(String LUSJ) { + this.LUSJ = LUSJ; + } + + public String getFXLB() { + return FXLB; + } + + public void setFXLB(String FXLB) { + this.FXLB = FXLB; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getYHDJ() { + return YHDJ; + } + + public void setYHDJ(String YHDJ) { + this.YHDJ = YHDJ; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + + + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzgjg.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzgjg.java new file mode 100755 index 0000000..f977ad3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzgjg.java @@ -0,0 +1,75 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2017/12/27. + */ + +public class Uploadzgjg extends DataSupport { + + private String JHID;//计划ID(必填) + private String RWID;//任务ID(必填) + private String ZGJG;//整改结果(必填) + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + private String LRSJ;//录入时间 + + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getZGJG() { + return ZGJG; + } + + public void setZGJG(String ZGJG) { + this.ZGJG = ZGJG; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzjcszg.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzjcszg.java new file mode 100755 index 0000000..23bb7b9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Uploadzjcszg.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/1/25. + */ + +public class Uploadzjcszg extends DataSupport { + + private String RWID;//任务ID(必填) + private String ZXID;//执行ID(必填) + private String ZGJG;//整改结果(必填) + private String LRSJ;//录入时间 + private String photopatglist;//图片集合 + private boolean checked;//0:未选中,1:已选中 + private boolean uploaded; + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getZXID() { + return ZXID; + } + + public void setZXID(String ZXID) { + this.ZXID = ZXID; + } + + public String getZGJG() { + return ZGJG; + } + + public void setZGJG(String ZGJG) { + this.ZGJG = ZGJG; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbList.java new file mode 100755 index 0000000..0a99db4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbList.java @@ -0,0 +1,100 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbList extends DataSupport implements Parcelable { + private long id; + private String bagid; + private String title; + private String keywords; + private Listzjd; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getBagid() { + return bagid; + } + + public void setBagid(String bagid) { + this.bagid = bagid; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public List getZjd() { + return zjd; + } + + public void setZjd(List zjd) { + this.zjd = zjd; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.bagid); + dest.writeString(this.title); + dest.writeString(this.keywords); + dest.writeList(this.zjd); + } + + public WjbList() { + } + + protected WjbList(Parcel in) { + this.id = in.readLong(); + this.bagid = in.readString(); + this.title = in.readString(); + this.keywords = in.readString(); + this.zjd = new ArrayList(); + in.readList(this.zjd, WjbzjdList.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public WjbList createFromParcel(Parcel source) { + return new WjbList(source); + } + + @Override + public WjbList[] newArray(int size) { + return new WjbList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbStateList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbStateList.java new file mode 100755 index 0000000..2b2ecc7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbStateList.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbStateList implements Parcelable { + private int state; + private String msg; + private Listdata; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.state); + dest.writeString(this.msg); + dest.writeTypedList(this.data); + } + + public WjbStateList() { + } + + protected WjbStateList(Parcel in) { + this.state = in.readInt(); + this.msg = in.readString(); + this.data = in.createTypedArrayList(WjbList.CREATOR); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public WjbStateList createFromParcel(Parcel source) { + return new WjbStateList(source); + } + + @Override + public WjbStateList[] newArray(int size) { + return new WjbStateList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbjxitemList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbjxitemList.java new file mode 100755 index 0000000..56c90dc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbjxitemList.java @@ -0,0 +1,106 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbjxitemList extends DataSupport implements Parcelable { + private long id; + private String xhid; + private String zjid; + private String bagid; + private String itemname; + private WjbzjdList wjbList; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getXhid() { + return xhid; + } + + public void setXhid(String xhid) { + this.xhid = xhid; + } + + public String getZjid() { + return zjid; + } + + public void setZjid(String zjid) { + this.zjid = zjid; + } + + public String getBagid() { + return bagid; + } + + public void setBagid(String bagid) { + this.bagid = bagid; + } + + public String getItemname() { + return itemname; + } + + public void setItemname(String itemname) { + this.itemname = itemname; + } + + public WjbzjdList getWjbList() { + return wjbList; + } + + public void setWjbList(WjbzjdList wjbList) { + this.wjbList = wjbList; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.xhid); + dest.writeString(this.zjid); + dest.writeString(this.bagid); + dest.writeString(this.itemname); + dest.writeParcelable(this.wjbList, flags); + } + + public WjbjxitemList() { + } + + protected WjbjxitemList(Parcel in) { + this.id = in.readLong(); + this.xhid = in.readString(); + this.zjid = in.readString(); + this.bagid = in.readString(); + this.itemname = in.readString(); + this.wjbList = in.readParcelable(WjbzjdList.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public WjbjxitemList createFromParcel(Parcel source) { + return new WjbjxitemList(source); + } + + @Override + public WjbjxitemList[] newArray(int size) { + return new WjbjxitemList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwList.java new file mode 100755 index 0000000..e759e66 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwList.java @@ -0,0 +1,91 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbrwList extends DataSupport implements Parcelable { + + private int id; + private String state; + private String msg; + private List data = new ArrayList<>(); + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.state); + dest.writeString(this.msg); + dest.writeList(this.data); + } + + public WjbrwList() { + } + + protected WjbrwList(Parcel in) { + this.id = in.readInt(); + this.state = in.readString(); + this.msg = in.readString(); + this.data = new ArrayList(); + in.readList(this.data, WjbrwinfoList.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public WjbrwList createFromParcel(Parcel source) { + return new WjbrwList(source); + } + + @Override + public WjbrwList[] newArray(int size) { + return new WjbrwList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwinfoList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwinfoList.java new file mode 100755 index 0000000..613557f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbrwinfoList.java @@ -0,0 +1,119 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbrwinfoList extends DataSupport implements Parcelable { + + private int id; + private String JHTITLE; + private String FILEBAGTITLE; + private String FILEBAGID; + private boolean checked;//0:未选中,1:已选中 + private int download;//0:未下载,1:已经下载 + private WjbrwList wjbrwList; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJHTITLE() { + return JHTITLE; + } + + public void setJHTITLE(String JHTITLE) { + this.JHTITLE = JHTITLE; + } + + public String getFILEBAGTITLE() { + return FILEBAGTITLE; + } + + public void setFILEBAGTITLE(String FILEBAGTITLE) { + this.FILEBAGTITLE = FILEBAGTITLE; + } + + public String getFILEBAGID() { + return FILEBAGID; + } + + public void setFILEBAGID(String FILEBAGID) { + this.FILEBAGID = FILEBAGID; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public WjbrwList getWjbrwList() { + return wjbrwList; + } + + public void setWjbrwList(WjbrwList wjbrwList) { + this.wjbrwList = wjbrwList; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.JHTITLE); + dest.writeString(this.FILEBAGTITLE); + dest.writeString(this.FILEBAGID); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeInt(this.download); + dest.writeParcelable(this.wjbrwList, flags); + } + + public WjbrwinfoList() { + } + + protected WjbrwinfoList(Parcel in) { + this.id = in.readInt(); + this.JHTITLE = in.readString(); + this.FILEBAGTITLE = in.readString(); + this.FILEBAGID = in.readString(); + this.checked = in.readByte() != 0; + this.download = in.readInt(); + this.wjbrwList = in.readParcelable(WjbrwList.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public WjbrwinfoList createFromParcel(Parcel source) { + return new WjbrwinfoList(source); + } + + @Override + public WjbrwinfoList[] newArray(int size) { + return new WjbrwinfoList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbzjdList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbzjdList.java new file mode 100755 index 0000000..703aaca --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/WjbzjdList.java @@ -0,0 +1,111 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/7/27. + */ + +public class WjbzjdList extends DataSupport implements Parcelable { + + private long id; + private String zjid; + private String bagid; + private String name; + private WjbList wjbList; + private List jxitem; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getZjid() { + return zjid; + } + + public void setZjid(String zjid) { + this.zjid = zjid; + } + + public String getBagid() { + return bagid; + } + + public void setBagid(String bagid) { + this.bagid = bagid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public WjbList getWjbList() { + return wjbList; + } + + public void setWjbList(WjbList wjbList) { + this.wjbList = wjbList; + } + + public List getJxitem() { + return jxitem; + } + + public void setJxitem(List jxitem) { + this.jxitem = jxitem; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.zjid); + dest.writeString(this.bagid); + dest.writeString(this.name); + dest.writeParcelable(this.wjbList, flags); + dest.writeList(this.jxitem); + } + + public WjbzjdList() { + } + + protected WjbzjdList(Parcel in) { + this.id = in.readLong(); + this.zjid = in.readString(); + this.bagid = in.readString(); + this.name = in.readString(); + this.wjbList = in.readParcelable(WjbList.class.getClassLoader()); + this.jxitem = new ArrayList(); + in.readList(this.jxitem, WjbjxitemList.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public WjbzjdList createFromParcel(Parcel source) { + return new WjbzjdList(source); + } + + @Override + public WjbzjdList[] newArray(int size) { + return new WjbzjdList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZBean.java new file mode 100755 index 0000000..fa32e03 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZBean.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by ruihong on 2018/2/26. + */ + +public class XDJJHXZBean extends DataSupport implements Parcelable { + + private int state; + private String msg; + private List data; + + protected XDJJHXZBean(Parcel in) { + state = in.readInt(); + msg = in.readString(); + data = in.createTypedArrayList(XDJJHXZDataBean.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XDJJHXZBean createFromParcel(Parcel in) { + return new XDJJHXZBean(in); + } + + @Override + public XDJJHXZBean[] newArray(int size) { + return new XDJJHXZBean[size]; + } + }; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(state); + dest.writeString(msg); + dest.writeTypedList(data); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZDataBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZDataBean.java new file mode 100755 index 0000000..172d9bf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XDJJHXZDataBean.java @@ -0,0 +1,200 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Johnny_Chen + * on 2018/2/28. + */ + +public class XDJJHXZDataBean extends DataSupport implements Parcelable { + + private long id; + private String GWID; + private String QYBH; + private String QYMC; + private String QYEWM; + private String QYEWMZT; + private String QYNFC; + private String QYNFCZT; + private List QYD_DATA = new ArrayList<>(); + private List QYAQFX_DATA = new ArrayList<>(); + private int SN; //自定义序号 + private String GWMC; + private String countPercent; //已检/总数 + private boolean isChecked; + + + public String getCountPercent() { + return countPercent; + } + + public void setCountPercent(String countPercent) { + this.countPercent = countPercent; + } + + public boolean isChecked() { + return isChecked; + } + + public void setChecked(boolean checked) { + isChecked = checked; + } + + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getSN() { + return SN; + } + + public void setSN(int SN) { + this.SN = SN; + } + + public XDJJHXZDataBean() { + } + + protected XDJJHXZDataBean(Parcel in) { + QYBH = in.readString(); + QYMC = in.readString(); + QYEWM = in.readString(); + QYEWMZT = in.readString(); + GWID = in.readString(); + QYNFC = in.readString(); + QYNFCZT = in.readString(); + QYD_DATA = in.createTypedArrayList(QYDDATABean.CREATOR); + QYAQFX_DATA = in.createTypedArrayList(QYAQFXDATABean.CREATOR); + SN = in.readInt(); + isChecked = in.readByte() != 0; + countPercent = in.readString(); + GWMC = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XDJJHXZDataBean createFromParcel(Parcel in) { + return new XDJJHXZDataBean(in); + } + + @Override + public XDJJHXZDataBean[] newArray(int size) { + return new XDJJHXZDataBean[size]; + } + }; + + public String getQYBH() { + return QYBH; + } + + public void setQYBH(String QYBH) { + this.QYBH = QYBH; + } + + public String getQYMC() { + return QYMC; + } + + public void setQYMC(String QYMC) { + this.QYMC = QYMC; + } + + public String getQYEWM() { + return QYEWM; + } + + public void setQYEWM(String QYEWM) { + this.QYEWM = QYEWM; + } + + public String getQYEWMZT() { + return QYEWMZT; + } + + public void setQYEWMZT(String QYEWMZT) { + this.QYEWMZT = QYEWMZT; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getQYNFC() { + return QYNFC; + } + + public void setQYNFC(String QYNFC) { + this.QYNFC = QYNFC; + } + + public String getQYNFCZT() { + return QYNFCZT; + } + + public void setQYNFCZT(String QYNFCZT) { + this.QYNFCZT = QYNFCZT; + } + + public List getQYD_DATA() { + return QYD_DATA; + } + + public void setQYD_DATA(List QYD_DATA) { + this.QYD_DATA = QYD_DATA; + } + + public List getQYAQFX_DATA() { + return QYAQFX_DATA; + } + + public void setQYAQFX_DATA(List QYAQFX_DATA) { + this.QYAQFX_DATA = QYAQFX_DATA; + } + + + public String getGWMC() { + return GWMC; + } + + public void setGWMC(String GWMC) { + this.GWMC = GWMC; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(QYBH); + dest.writeString(QYMC); + dest.writeString(QYEWM); + dest.writeString(QYEWMZT); + dest.writeString(GWID); + dest.writeString(QYNFC); + dest.writeString(QYNFCZT); + dest.writeTypedList(QYD_DATA); + dest.writeTypedList(QYAQFX_DATA); + dest.writeInt(SN); + dest.writeByte(this.isChecked ? (byte) 1 : (byte) 0); + dest.writeString(countPercent); + dest.writeString(GWMC); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHDataBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHDataBean.java new file mode 100755 index 0000000..5af770a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHDataBean.java @@ -0,0 +1,585 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by Johnny_Chen + * on 2018/2/28. + */ + +public class XSJJHDataBean extends DataSupport implements Parcelable { + + + private long id; + private String scid; + private String dbh; + private String dlxbh; + private String qybh; + private String dlxmc; + private String sbid; + private String sb; + private String sbmc; + private String zymc; + private String dw; + private String dz; + private String gz; + private String zczt; + private String bsyl; + private String bqyl; + private String xcnr; + private String cbsz; + private String djsj; + private String zcmc; + private String cbr; + private String fxnr; + private String smfs; + private String dpx; + private String sisData; + private String LRFS; + private String MRNR; + private String TYJCZT;//停用检测状态[未用] + private String CBLX;//抄表类型(W:温度,Z:振动) + private XSJJHXZDataBean xsjjhxzDataBean; + private boolean checked;//是否已经检查 + private boolean uploaded;//是否上传 + private boolean deleted;//true 已删除,false 未删除 + private String mk;//模块 + private String username; + private String jhmc; + private String photos;//图片集合 + private String xjnr; + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public String getTYJCZT() { + return TYJCZT; + } + + public void setTYJCZT(String TYJCZT) { + this.TYJCZT = TYJCZT; + } + + public String getCBLX() { + return CBLX; + } + + public void setCBLX(String CBLX) { + this.CBLX = CBLX; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + private String DATE;//保存时间 + private String zxid; + + private String SBMCSTATE;//设备状态 + private String SBMCSTATEVALUE;//设备状态值 + + + private String CJJG; //采集结果 + private String BJMC;//部件名称 + + private String nfcbm; + private String txm; + private String txm_zt; + + private String TJXJZT; + private String second; + + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getDbh() { + return dbh; + } + + public void setDbh(String dbh) { + this.dbh = dbh; + } + + public String getDlxbh() { + return dlxbh; + } + + public void setDlxbh(String dlxbh) { + this.dlxbh = dlxbh; + } + + public String getDlxmc() { + return dlxmc; + } + + public void setDlxmc(String dlxmc) { + this.dlxmc = dlxmc; + } + + public String getSb() { + return sb; + } + + public void setSb(String sb) { + this.sb = sb; + } + + public String getSbmc() { + return sbmc; + } + + public void setSbmc(String sbmc) { + this.sbmc = sbmc; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + + public String getDw() { + return dw; + } + + public void setDw(String dw) { + this.dw = dw; + } + + public String getDz() { + return dz; + } + + public void setDz(String dz) { + this.dz = dz; + } + + public String getGz() { + return gz; + } + + public void setGz(String gz) { + this.gz = gz; + } + + public String getZczt() { + return zczt; + } + + public void setZczt(String zczt) { + this.zczt = zczt; + } + + public String getBsyl() { + return bsyl; + } + + public void setBsyl(String bsyl) { + this.bsyl = bsyl; + } + + public String getBqyl() { + return bqyl; + } + + public void setBqyl(String bqyl) { + this.bqyl = bqyl; + } + + public String getXcnr() { + return xcnr; + } + + public void setXcnr(String xcnr) { + this.xcnr = xcnr; + } + + public String getCbsz() { + return cbsz; + } + + public void setCbsz(String cbsz) { + this.cbsz = cbsz; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getZcmc() { + return zcmc; + } + + public void setZcmc(String zcmc) { + this.zcmc = zcmc; + } + + public String getCbr() { + return cbr; + } + + public void setCbr(String cbr) { + this.cbr = cbr; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public String getSmfs() { + return smfs; + } + + public void setSmfs(String smfs) { + this.smfs = smfs; + } + + public String getDpx() { + return dpx; + } + + public void setDpx(String dpx) { + this.dpx = dpx; + } + + public String getSisData() { + return sisData; + } + + public void setSisData(String sisData) { + this.sisData = sisData; + } + + public String getLRFS() { + return LRFS; + } + + public void setLRFS(String LRFS) { + this.LRFS = LRFS; + } + + public String getMRNR() { + return MRNR; + } + + public void setMRNR(String MRNR) { + this.MRNR = MRNR; + } + + public String getTxm_zt() { + return txm_zt; + } + + public void setTxm_zt(String txm_zt) { + this.txm_zt = txm_zt; + } + + public XSJJHXZDataBean getXsjjhxzDataBean() { + return xsjjhxzDataBean; + } + + public void setXsjjhxzDataBean(XSJJHXZDataBean xsjjhxzDataBean) { + this.xsjjhxzDataBean = xsjjhxzDataBean; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public String getMk() { + return mk; + } + + public void setMk(String mk) { + this.mk = mk; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getSBMCSTATE() { + return SBMCSTATE; + } + + public void setSBMCSTATE(String SBMCSTATE) { + this.SBMCSTATE = SBMCSTATE; + } + + public String getSBMCSTATEVALUE() { + return SBMCSTATEVALUE; + } + + public void setSBMCSTATEVALUE(String SBMCSTATEVALUE) { + this.SBMCSTATEVALUE = SBMCSTATEVALUE; + } + + public String getSbid() { + return sbid; + } + + public void setSbid(String sbid) { + this.sbid = sbid; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public String getBJMC() { + return BJMC; + } + + public void setBJMC(String BJMC) { + this.BJMC = BJMC; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getTxm() { + return txm; + } + + public void setTxm(String txm) { + this.txm = txm; + } + + public String getTJXJZT() { + return TJXJZT; + } + + public void setTJXJZT(String TJXJZT) { + this.TJXJZT = TJXJZT; + } + + public String getSecond() { + return second; + } + + public void setSecond(String second) { + this.second = second; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getXjnr() { + return xjnr; + } + + public void setXjnr(String xjnr) { + this.xjnr = xjnr; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.scid); + dest.writeString(this.dbh); + dest.writeString(this.dlxbh); + dest.writeString(this.dlxmc); + dest.writeString(this.sbid); + dest.writeString(this.sb); + dest.writeString(this.sbmc); + dest.writeString(this.zymc); + dest.writeString(this.dw); + dest.writeString(this.dz); + dest.writeString(this.gz); + dest.writeString(this.zczt); + dest.writeString(this.bsyl); + dest.writeString(this.bqyl); + dest.writeString(this.xcnr); + dest.writeString(this.cbsz); + dest.writeString(this.djsj); + dest.writeString(this.zcmc); + dest.writeString(this.cbr); + dest.writeString(this.fxnr); + dest.writeString(this.smfs); + dest.writeString(this.dpx); + dest.writeString(this.sisData); + dest.writeString(this.LRFS); + dest.writeString(this.MRNR); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeByte(this.uploaded ? (byte) 1 : (byte) 0); + dest.writeByte(this.deleted ? (byte) 1 : (byte) 0); + dest.writeString(this.DATE); + dest.writeString(this.zxid); + dest.writeString(this.SBMCSTATE); + dest.writeString(this.SBMCSTATEVALUE); + dest.writeString(this.CJJG); + dest.writeString(this.BJMC); + dest.writeString(this.nfcbm); + dest.writeString(this.txm); + dest.writeString(this.TJXJZT); + dest.writeString(this.second); + dest.writeString(this.TYJCZT); + dest.writeString(this.CBLX); + dest.writeString(this.mk); + dest.writeString(this.username); + dest.writeString(this.txm_zt); + dest.writeString(this.jhmc); + dest.writeString(this.photos); + dest.writeString(this.xjnr); + } + + public XSJJHDataBean() { + } + + protected XSJJHDataBean(Parcel in) { + this.id = in.readLong(); + this.scid = in.readString(); + this.dbh = in.readString(); + this.dlxbh = in.readString(); + this.dlxmc = in.readString(); + this.sbid = in.readString(); + this.sb = in.readString(); + this.sbmc = in.readString(); + this.zymc = in.readString(); + this.dw = in.readString(); + this.dz = in.readString(); + this.gz = in.readString(); + this.zczt = in.readString(); + this.bsyl = in.readString(); + this.bqyl = in.readString(); + this.xcnr = in.readString(); + this.cbsz = in.readString(); + this.djsj = in.readString(); + this.zcmc = in.readString(); + this.cbr = in.readString(); + this.fxnr = in.readString(); + this.smfs = in.readString(); + this.dpx = in.readString(); + this.sisData = in.readString(); + this.LRFS = in.readString(); + this.MRNR = in.readString(); + this.checked = in.readByte() != 0; + this.uploaded = in.readByte() != 0; + this.deleted = in.readByte() != 0; + this.DATE = in.readString(); + this.zxid = in.readString(); + this.SBMCSTATE = in.readString(); + this.SBMCSTATEVALUE = in.readString(); + this.CJJG = in.readString(); + this.BJMC = in.readString(); + this.nfcbm = in.readString(); + this.txm = in.readString(); + this.TJXJZT = in.readString(); + this.second = in.readString(); + this.TYJCZT = in.readString(); + this.CBLX = in.readString(); + this.mk = in.readString(); + this.username = in.readString(); + this.txm_zt = in.readString(); + this.jhmc = in.readString(); + this.photos = in.readString(); + this.xjnr = in.readString(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public XSJJHDataBean createFromParcel(Parcel source) { + return new XSJJHDataBean(source); + } + + @Override + public XSJJHDataBean[] newArray(int size) { + return new XSJJHDataBean[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZBean.java new file mode 100755 index 0000000..d139264 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZBean.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by ruihong on 2018/2/26. + */ + +public class XSJJHXZBean extends DataSupport implements Parcelable { + + private int state; + private String msg; + private List data; + + protected XSJJHXZBean(Parcel in) { + state = in.readInt(); + msg = in.readString(); + data = in.createTypedArrayList(XSJJHXZDataBean.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XSJJHXZBean createFromParcel(Parcel in) { + return new XSJJHXZBean(in); + } + + @Override + public XSJJHXZBean[] newArray(int size) { + return new XSJJHXZBean[size]; + } + }; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(state); + dest.writeString(msg); + dest.writeTypedList(data); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZDataBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZDataBean.java new file mode 100755 index 0000000..378c7fa --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XSJJHXZDataBean.java @@ -0,0 +1,388 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Johnny_Chen + * on 2018/2/28. + */ + +public class XSJJHXZDataBean extends DataSupport implements Parcelable { + + + private int id; + private String zxid; + private String scid; + private String qybh; + private String qymc; + private String nfcbm; + private String txm; + private String nfcbm_zt; + private String txm_zt; + private String tjxjzt; + + private String sczt; + private String scsj; + private String smfs; + private String fxnr; + private List data= new ArrayList(); // 关系:对多 + private int SN; //自定义序号 + private boolean isChecked;//燃料,运行已检 + private boolean isBAChecked;//保安已检 + private String countPercent; //已检/总数 + private String sbmc; + private String SBMCSTATE;//设备状态 + private String SBMCSTATEVALUE;//设备状态值 + private String second;//是否曾经用过NFC和二维码进入过区域 + private String mk; + private String xjnr; + private String DATE;//保存时间 + private String username; + private String djsj; + private String jhmc; + private String photos;//图片集合 + private String cbsz; + + + + + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + public String getNfcbm_zt() { + return nfcbm_zt; + } + + public void setNfcbm_zt(String nfcbm_zt) { + this.nfcbm_zt = nfcbm_zt; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getTxm_zt() { + return txm_zt; + } + + public void setTxm_zt(String txm_zt) { + this.txm_zt = txm_zt; + } + + public String getTjxjzt() { + return tjxjzt; + } + + public void setTjxjzt(String tjxjzt) { + this.tjxjzt = tjxjzt; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getSmfs() { + return smfs; + } + + public void setSmfs(String smfs) { + this.smfs = smfs; + } + + public String getTxm() { + return txm; + } + + public void setTxm(String txm) { + this.txm = txm; + } + + public String getSczt() { + return sczt; + } + + public void setSczt(String sczt) { + this.sczt = sczt; + } + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public int getSN() { + return SN; + } + + public void setSN(int SN) { + this.SN = SN; + } + + public boolean isChecked() { + return isChecked; + } + + public void setChecked(boolean checked) { + isChecked = checked; + } + + public boolean isBAChecked() { + return isBAChecked; + } + + public void setBAChecked(boolean BAChecked) { + isBAChecked = BAChecked; + } + + public String getXjnr() { + return xjnr; + } + + public void setXjnr(String xjnr) { + this.xjnr = xjnr; + } + + public String getCountPercent() { + return countPercent; + } + + public void setCountPercent(String countPercent) { + this.countPercent = countPercent; + } + + public String getSbmc() { + return sbmc; + } + + public void setSbmc(String sbmc) { + this.sbmc = sbmc; + } + + public String getSBMCSTATE() { + return SBMCSTATE; + } + + public void setSBMCSTATE(String SBMCSTATE) { + this.SBMCSTATE = SBMCSTATE; + } + + public String getSBMCSTATEVALUE() { + return SBMCSTATEVALUE; + } + + public void setSBMCSTATEVALUE(String SBMCSTATEVALUE) { + this.SBMCSTATEVALUE = SBMCSTATEVALUE; + } + + public String getSecond() { + return second; + } + + public void setSecond(String second) { + this.second = second; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public String getMk() { + return mk; + } + + public void setMk(String mk) { + this.mk = mk; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getCbsz() { + return cbsz; + } + + public void setCbsz(String cbsz) { + this.cbsz = cbsz; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.zxid); + dest.writeString(this.qybh); + dest.writeString(this.qymc); + dest.writeString(this.nfcbm); + dest.writeString(this.txm); + dest.writeString(this.sczt); + dest.writeString(this.scsj); + dest.writeString(this.fxnr); + dest.writeTypedList(this.data); + dest.writeInt(this.SN); + dest.writeByte(this.isChecked ? (byte) 1 : (byte) 0); + dest.writeByte(this.isBAChecked ? (byte) 1 : (byte) 0); + dest.writeString(this.countPercent); + dest.writeString(this.sbmc); + dest.writeString(this.SBMCSTATE); + dest.writeString(this.SBMCSTATEVALUE); + dest.writeString(this.second); + dest.writeString(this.nfcbm_zt); + dest.writeString(this.txm_zt); + dest.writeString(this.tjxjzt); + dest.writeString(this.mk); + dest.writeString(this.xjnr); + dest.writeString(this.scid); + dest.writeString(this.DATE); + dest.writeString(this.username); + dest.writeString(this.smfs); + dest.writeString(this.djsj); + dest.writeString(this.jhmc); + dest.writeString(this.photos); + dest.writeString(this.cbsz); + } + + public XSJJHXZDataBean() { + } + + protected XSJJHXZDataBean(Parcel in) { + this.zxid = in.readString(); + this.qybh = in.readString(); + this.qymc = in.readString(); + this.nfcbm = in.readString(); + this.txm = in.readString(); + this.sczt = in.readString(); + this.scsj = in.readString(); + this.fxnr = in.readString(); + this.data = in.createTypedArrayList(XSJJHDataBean.CREATOR); + this.SN = in.readInt(); + this.isChecked = in.readByte() != 0; + this.isBAChecked = in.readByte() != 0; + this.countPercent = in.readString(); + this.sbmc = in.readString(); + this.SBMCSTATE = in.readString(); + this.SBMCSTATEVALUE = in.readString(); + this.second = in.readString(); + this.nfcbm_zt = in.readString(); + this.txm_zt = in.readString(); + this.tjxjzt = in.readString(); + this.mk = in.readString(); + this.xjnr = in.readString(); + this.scid = in.readString(); + this.DATE = in.readString(); + this.username = in.readString(); + this.smfs = in.readString(); + this.djsj = in.readString(); + this.jhmc = in.readString(); + this.photos = in.readString(); + this.cbsz = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XSJJHXZDataBean createFromParcel(Parcel source) { + return new XSJJHXZDataBean(source); + } + + @Override + public XSJJHXZDataBean[] newArray(int size) { + return new XSJJHXZDataBean[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XcjsInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XcjsInfo.java new file mode 100755 index 0000000..45bd6c6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XcjsInfo.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/22. + */ + +public class XcjsInfo extends DataSupport { + + private int id; + private String ms; + private String jhid; + private String pointnum; + private String djr; + private String filename; + private boolean uploaded; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMs() { + return ms; + } + + public void setMs(String ms) { + this.ms = ms; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getPointnum() { + return pointnum; + } + + public void setPointnum(String pointnum) { + this.pointnum = pointnum; + } + + public String getDjr() { + return djr; + } + + public void setDjr(String djr) { + this.djr = djr; + } + + public String getFilename() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqy.java new file mode 100755 index 0000000..791e960 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqy.java @@ -0,0 +1,191 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/11/5. + */ + +public class XfBaxcRwqy extends DataSupport implements Parcelable { + + private int id; + private String jhid; + private String xgid; + private String xgtype; + private String bh; + private String qyname; + private String qynfc; + private String qywz; + private XfBaxcRwqyList xfBaxcRwqyList; + private boolean checked; + private String txmbh; + private String smfx = "";//检查方式 + private String cjsj;//采集时间 + private String cjr;//采集人 + + public String getCjsj() { + return cjsj; + } + + public void setCjsj(String cjsj) { + this.cjsj = cjsj; + } + + public String getCjr() { + return cjr; + } + + public void setCjr(String cjr) { + this.cjr = cjr; + } + + public String getSmfx() { + return smfx; + } + + public void setSmfx(String smfx) { + this.smfx = smfx; + } + + public String getTxmbh() { + return txmbh; + } + + public void setTxmbh(String txmbh) { + this.txmbh = txmbh; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public XfBaxcRwqyList getXfBaxcRwqyList() { + return xfBaxcRwqyList; + } + + public void setXfBaxcRwqyList(XfBaxcRwqyList xfBaxcRwqyList) { + this.xfBaxcRwqyList = xfBaxcRwqyList; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getXgid() { + return xgid; + } + + public void setXgid(String xgid) { + this.xgid = xgid; + } + + public String getXgtype() { + return xgtype; + } + + public void setXgtype(String xgtype) { + this.xgtype = xgtype; + } + + public String getBh() { + return bh; + } + + public void setBh(String bh) { + this.bh = bh; + } + + public String getQyname() { + return qyname; + } + + public void setQyname(String qyname) { + this.qyname = qyname; + } + + public String getQynfc() { + return qynfc; + } + + public void setQynfc(String qynfc) { + this.qynfc = qynfc; + } + + public String getQywz() { + return qywz; + } + + public void setQywz(String qywz) { + this.qywz = qywz; + } + + public XfBaxcRwqy() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.jhid); + dest.writeString(this.xgid); + dest.writeString(this.xgtype); + dest.writeString(this.bh); + dest.writeString(this.qyname); + dest.writeString(this.qynfc); + dest.writeString(this.qywz); + dest.writeParcelable(this.xfBaxcRwqyList, flags); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeString(this.txmbh); + dest.writeString(this.smfx); + } + + protected XfBaxcRwqy(Parcel in) { + this.id = in.readInt(); + this.jhid = in.readString(); + this.xgid = in.readString(); + this.xgtype = in.readString(); + this.bh = in.readString(); + this.qyname = in.readString(); + this.qynfc = in.readString(); + this.qywz = in.readString(); + this.xfBaxcRwqyList = in.readParcelable(XfBaxcRwqyList.class.getClassLoader()); + this.checked = in.readByte() != 0; + this.txmbh = in.readString(); + this.smfx = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XfBaxcRwqy createFromParcel(Parcel source) { + return new XfBaxcRwqy(source); + } + + @Override + public XfBaxcRwqy[] newArray(int size) { + return new XfBaxcRwqy[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqyList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqyList.java new file mode 100755 index 0000000..f6e1a08 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfBaxcRwqyList.java @@ -0,0 +1,105 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 保安巡查任务区域 + */ + +public class XfBaxcRwqyList extends DataSupport implements Parcelable { + + + /** + * Rows : [{"jhid":"20161013090900","xgid":"f90f5fd3dedc4b4aa7a60c5b00295157","xgtype":"2","bh":"BH1","qyname":"1号点","qynfc":"3344NFC","qywz":"1号门岗"},{"jhid":"20161013090900","xgid":"7dcca569747d42e3883df3787cc4fb24","xgtype":"1","bh":"BHA001","qyname":"1号点","qynfc":"BHA001NFC","qywz":"行政楼1楼"},{"jhid":"20161013090900","xgid":"703b5509fca54beb9be2343d80b91918","xgtype":"1","bh":"A002","qyname":"2号点","qynfc":"A002DF","qywz":"TT4东侧治安监控点"}] + * Total : 3 + */ + + private int id; + + private String jhid; + + private String Total; + /** + * jhid : 20161013090900 + * xgid : f90f5fd3dedc4b4aa7a60c5b00295157 + * xgtype : 2 + * bh : BH1 + * qyname : 1号点 + * qynfc : 3344NFC + * qywz : 1号门岗 + */ + + private List Rows; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.jhid); + dest.writeString(this.Total); + dest.writeTypedList(this.Rows); + } + + public XfBaxcRwqyList() { + } + + protected XfBaxcRwqyList(Parcel in) { + this.id = in.readInt(); + this.jhid = in.readString(); + this.Total = in.readString(); + this.Rows = in.createTypedArrayList(XfBaxcRwqy.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XfBaxcRwqyList createFromParcel(Parcel source) { + return new XfBaxcRwqyList(source); + } + + @Override + public XfBaxcRwqyList[] newArray(int size) { + return new XfBaxcRwqyList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjh.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjh.java new file mode 100755 index 0000000..970ff53 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjh.java @@ -0,0 +1,101 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfDjjh extends DataSupport { + + private int id; + private String jhid; + private String jhmc; + private String xdjzq; + private String khzq; + private String nexttime; + private boolean checked;//是否选择 + private int download; + private XfDjjhList xfDjjhList; + private String xctypes;//1:消防 2:保安 3:楼宇 + + public String getXctypes() { + return xctypes; + } + + public void setXctypes(String xctypes) { + this.xctypes = xctypes; + } + + public XfDjjhList getXfDjjhList() { + return xfDjjhList; + } + + public void setXfDjjhList(XfDjjhList xfDjjhList) { + this.xfDjjhList = xfDjjhList; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getXdjzq() { + return xdjzq; + } + + public void setXdjzq(String xdjzq) { + this.xdjzq = xdjzq; + } + + public String getKhzq() { + return khzq; + } + + public void setKhzq(String khzq) { + this.khzq = khzq; + } + + public String getNexttime() { + return nexttime; + } + + public void setNexttime(String nexttime) { + this.nexttime = nexttime; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhList.java new file mode 100755 index 0000000..061f3fd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhList.java @@ -0,0 +1,54 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 消防点检计划列表 + */ + +public class XfDjjhList extends DataSupport { + + private int id; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + /** + * Rows : [{"id":"20161019184614","jhmc":"消防计划2","xdjzq":"10","khzq":"7","nexttime":"2016/10/19 0:00:00"},{"id":"20161014165348","jhmc":"消防巡查计划10月15号开始","xdjzq":"10","khzq":"7","nexttime":"2016/10/15 0:00:00"}] + * Total : 2 + */ + + private String Total; + /** + * id : 20161019184614 + * jhmc : 消防计划2 + * xdjzq : 10 + * khzq : 7 + * nexttime : 2016/10/19 0:00:00 + */ + + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwList.java new file mode 100755 index 0000000..22173a8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwList.java @@ -0,0 +1,93 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfDjjhRwList extends DataSupport implements Parcelable { + + + /** + * Rows : [{"区域分组":[{"BH":"1","XFTYPE":"2","XFWZ":"TT1一层","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"8544fa6528c04c2c889fd03ad3776689","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"2","XFTYPE":"2","XFWZ":"TT1二层","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"1ee542a998c248db8cfa76e90dbfc8db","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"3","XFTYPE":"2","XFWZ":"TT1三层","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"fa3e06f4a7fe4678918b25fd0cd89885","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"38","XFTYPE":"3","XFWZ":"TT1一层北面","XFNAME":"防火门安全出口灯","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"TT1","XMID":"1b179cac1cff41b4a4e9aa26f934660c","XFID":"07bc3be9b11c40c88130216690d3b97a","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"1","SL2":"1","BZXQ":"单"},{"BH":"38","XFTYPE":"3","XFWZ":"TT1三层北面","XFNAME":"防火门安全出口灯","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"TT1","XMID":"1b179cac1cff41b4a4e9aa26f934660c","XFID":"eb0e804742c845d8837b7219a040aa43","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"2","SL2":"","BZXQ":"单"},{"BH":"38","XFTYPE":"3","XFWZ":"TT1三层南面楼梯口","XFNAME":"防火门安全出口灯","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"TT1","XMID":"1b179cac1cff41b4a4e9aa26f934660c","XFID":"a6c604bbb8b94e5bb081662e4de86fd9","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"1","BZXQ":""},{"BH":"38","XFTYPE":"3","XFWZ":"TT1二层北面","XFNAME":"防火门安全出口灯","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"TT1","XMID":"1b179cac1cff41b4a4e9aa26f934660c","XFID":"b8132310000446219acb96d0848bea69","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"1","SL2":"1","BZXQ":"单"},{"BH":"4","XFTYPE":"2","XFWZ":"输煤系统C1A皮带","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"416f01f0841b46bfbfdad57be647d955","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"5","XFTYPE":"2","XFWZ":"输煤系统C1A皮带","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"0c033535710645c4ba6c22315705e4a5","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"6","XFTYPE":"2","XFWZ":"输煤系统C1B皮带","XFNAME":"消防栓","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"配水枪1支、水带1盘","XMID":"a0349df3eca44c7d8eafe39469bdddae","XFID":"31020a569ca0447f82807137ffd9ea3c","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG058","XFTYPE":"1","XFWZ":"四号卸煤机驾驶室","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"2KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"03644aa0219e4afaaedc7bccd1da12e5","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG061","XFTYPE":"1","XFWZ":"一号卸煤机驾驶室","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"2KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"63527182f85f4c6b929b5591410ed8b0","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG063","XFTYPE":"1","XFWZ":"三号卸煤机变压器房门口","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4瓶 4KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"a23465a7737245a0963b12163eebf393","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG064","XFTYPE":"1","XFWZ":"三号卸煤机驾驶室","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"2KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"3bc50b00acd14332b80c4377ce3df146","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG106","XFTYPE":"1","XFWZ":"三号卸煤机变压器房门口","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4瓶 4KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"4c4c70ed2c114048b22112c294062e9a","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG112","XFTYPE":"1","XFWZ":"二号卸煤机变压器房门口","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4瓶 4KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"7bda9f5abb7f483e82773d351771e53f","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG120","XFTYPE":"1","XFWZ":"四号卸煤机变压器房门口","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4瓶 4KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"9f4f685060504b989838a9bbe1e1bc49","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG125","XFTYPE":"1","XFWZ":"一号卸煤机变压器房门口","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4瓶 4KG干粉","XMID":"e202262940b147a3997abd76473a7646","XFID":"8651eb5cdbc045e4a6dd9db0828fb5e6","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""},{"BH":"AG173","XFTYPE":"1","XFWZ":"TT2一层","XFNAME":"灭火器材","QYNAME":"TT1转运塔、卸船机、C1A(B)输煤皮带","XHNUM":"4KG干粉3KGCO2","XMID":"e202262940b147a3997abd76473a7646","XFID":"933011da673e49c5b63ae7498d5a36e3","QYID":"d660b42aa743451194a04c5f69862622","JHID":"20161014163244","NEXTTIME":"2016/10/18 0:00:00","SL1":"","SL2":"","BZXQ":""}]},{"区域分组":[]}] + * Total : 19 + */ + + private int id; + private int Total; + private String jhid; + private List Rows; + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeInt(this.Total); + dest.writeString(this.jhid); + dest.writeTypedList(this.Rows); + } + + public XfDjjhRwList() { + } + + protected XfDjjhRwList(Parcel in) { + this.id = in.readInt(); + this.Total = in.readInt(); + this.jhid = in.readString(); + this.Rows = in.createTypedArrayList(XfDjjhRwqyList.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XfDjjhRwList createFromParcel(Parcel source) { + return new XfDjjhRwList(source); + } + + @Override + public XfDjjhRwList[] newArray(int size) { + return new XfDjjhRwList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqy.java new file mode 100755 index 0000000..c1b9512 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqy.java @@ -0,0 +1,299 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfDjjhRwqy extends DataSupport implements Parcelable { + + private int id; + private String BH; + private String XFTYPE; + private String XFWZ; + private String XFNAME; + private String QYNAME; + private String XHNUM; + private String XMID; + private String XFID; + private String QYID; + private String JHID; + private String NEXTTIME; + private String SL1; + private String SL2; + private String BZXQ; + private XfDjjhRwqyList xfDjjhRwqyList; + private boolean checked; + private String CJJG; + private String iszc;//0不正常,1正常 + private String TXMBH; + private String QYNFC; + private String CJR; + private String CJSJ; + private String SMFX; + + public String getSMFX() { + return SMFX; + } + + public void setSMFX(String SMFX) { + this.SMFX = SMFX; + } + + public String getCJSJ() { + return CJSJ; + } + + public void setCJSJ(String CJSJ) { + this.CJSJ = CJSJ; + } + + public String getCJR() { + return CJR; + } + + public void setCJR(String CJR) { + this.CJR = CJR; + } + + public String getTXMBH() { + return TXMBH; + } + + public void setTXMBH(String TXMBH) { + this.TXMBH = TXMBH; + } + + public String getQYNFC() { + return QYNFC; + } + + public void setQYNFC(String QYNFC) { + this.QYNFC = QYNFC; + } + + public String getIszc() { + return iszc; + } + + public void setIszc(String iszc) { + this.iszc = iszc; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public XfDjjhRwqyList getXfDjjhRwqyList() { + return xfDjjhRwqyList; + } + + public void setXfDjjhRwqyList(XfDjjhRwqyList xfDjjhRwqyList) { + this.xfDjjhRwqyList = xfDjjhRwqyList; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getBH() { + return BH; + } + + public void setBH(String BH) { + this.BH = BH; + } + + public String getXFTYPE() { + return XFTYPE; + } + + public void setXFTYPE(String XFTYPE) { + this.XFTYPE = XFTYPE; + } + + public String getXFWZ() { + return XFWZ; + } + + public void setXFWZ(String XFWZ) { + this.XFWZ = XFWZ; + } + + public String getXFNAME() { + return XFNAME; + } + + public void setXFNAME(String XFNAME) { + this.XFNAME = XFNAME; + } + + public String getQYNAME() { + return QYNAME; + } + + public void setQYNAME(String QYNAME) { + this.QYNAME = QYNAME; + } + + public String getXHNUM() { + return XHNUM; + } + + public void setXHNUM(String XHNUM) { + this.XHNUM = XHNUM; + } + + public String getXMID() { + return XMID; + } + + public void setXMID(String XMID) { + this.XMID = XMID; + } + + public String getXFID() { + return XFID; + } + + public void setXFID(String XFID) { + this.XFID = XFID; + } + + public String getQYID() { + return QYID; + } + + public void setQYID(String QYID) { + this.QYID = QYID; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getNEXTTIME() { + return NEXTTIME; + } + + public void setNEXTTIME(String NEXTTIME) { + this.NEXTTIME = NEXTTIME; + } + + public String getSL1() { + return SL1; + } + + public void setSL1(String SL1) { + this.SL1 = SL1; + } + + public String getSL2() { + return SL2; + } + + public void setSL2(String SL2) { + this.SL2 = SL2; + } + + public String getBZXQ() { + return BZXQ; + } + + public void setBZXQ(String BZXQ) { + this.BZXQ = BZXQ; + } + + public XfDjjhRwqy() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.BH); + dest.writeString(this.XFTYPE); + dest.writeString(this.XFWZ); + dest.writeString(this.XFNAME); + dest.writeString(this.QYNAME); + dest.writeString(this.XHNUM); + dest.writeString(this.XMID); + dest.writeString(this.XFID); + dest.writeString(this.QYID); + dest.writeString(this.JHID); + dest.writeString(this.NEXTTIME); + dest.writeString(this.SL1); + dest.writeString(this.SL2); + dest.writeString(this.BZXQ); + dest.writeParcelable(this.xfDjjhRwqyList, flags); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeString(this.CJJG); + dest.writeString(this.iszc); + dest.writeString(this.TXMBH); + dest.writeString(this.QYNFC); + } + + protected XfDjjhRwqy(Parcel in) { + this.id = in.readInt(); + this.BH = in.readString(); + this.XFTYPE = in.readString(); + this.XFWZ = in.readString(); + this.XFNAME = in.readString(); + this.QYNAME = in.readString(); + this.XHNUM = in.readString(); + this.XMID = in.readString(); + this.XFID = in.readString(); + this.QYID = in.readString(); + this.JHID = in.readString(); + this.NEXTTIME = in.readString(); + this.SL1 = in.readString(); + this.SL2 = in.readString(); + this.BZXQ = in.readString(); + this.xfDjjhRwqyList = in.readParcelable(XfDjjhRwqyList.class.getClassLoader()); + this.checked = in.readByte() != 0; + this.CJJG = in.readString(); + this.iszc = in.readString(); + this.TXMBH = in.readString(); + this.QYNFC = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XfDjjhRwqy createFromParcel(Parcel source) { + return new XfDjjhRwqy(source); + } + + @Override + public XfDjjhRwqy[] newArray(int size) { + return new XfDjjhRwqy[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqyList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqyList.java new file mode 100755 index 0000000..6686639 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfDjjhRwqyList.java @@ -0,0 +1,81 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.google.gson.annotations.SerializedName; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfDjjhRwqyList extends DataSupport implements Parcelable { + + private String qyname; + + private XfDjjhRwList xfDjjhRwList; + + public XfDjjhRwList getXfDjjhRwList() { + return xfDjjhRwList; + } + + public void setXfDjjhRwList(XfDjjhRwList xfDjjhRwList) { + this.xfDjjhRwList = xfDjjhRwList; + } + + public String getQyname() { + return qyname; + } + + public void setQyname(String qyname) { + this.qyname = qyname; + } + + @SerializedName("区域分组") + private List xfdjjhrwqy; + + public List getXfdjjhrwqy() { + return xfdjjhrwqy; + } + + public void setXfdjjhrwqy(List xfdjjhrwqy) { + this.xfdjjhrwqy = xfdjjhrwqy; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.qyname); + dest.writeParcelable(this.xfDjjhRwList, flags); + dest.writeTypedList(this.xfdjjhrwqy); + } + + public XfDjjhRwqyList() { + } + + protected XfDjjhRwqyList(Parcel in) { + this.qyname = in.readString(); + this.xfDjjhRwList = in.readParcelable(XfDjjhRwList.class.getClassLoader()); + this.xfdjjhrwqy = in.createTypedArrayList(XfDjjhRwqy.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XfDjjhRwqyList createFromParcel(Parcel source) { + return new XfDjjhRwqyList(source); + } + + @Override + public XfDjjhRwqyList[] newArray(int size) { + return new XfDjjhRwqyList[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcjsInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcjsInfo.java new file mode 100755 index 0000000..44ede1d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcjsInfo.java @@ -0,0 +1,83 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/22. + */ + +public class XfXcjsInfo extends DataSupport { + + private int id; + private String ms; + private String jhid; + private String xfid; + private String djr; + private String path; + private String filename; + private boolean uploaded; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getXfid() { + return xfid; + } + + public void setXfid(String xfid) { + this.xfid = xfid; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMs() { + return ms; + } + + public void setMs(String ms) { + this.ms = ms; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getDjr() { + return djr; + } + + public void setDjr(String djr) { + this.djr = djr; + } + + public String getFilename() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + public boolean isUploaded() { + return uploaded; + } + + public void setUploaded(boolean uploaded) { + this.uploaded = uploaded; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqc.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqc.java new file mode 100755 index 0000000..f1fea29 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqc.java @@ -0,0 +1,110 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfXcmhqc extends DataSupport { + + private int id; + private String bh; + private String xftype; + private String xhnum; + private String xmid; + private String xfid; + private String qyid; + private String jhid; + private String nexttime; + private String scrq; + private String yxrq; + + public String getScrq() { + return scrq; + } + + public void setScrq(String scrq) { + this.scrq = scrq; + } + + public String getYxrq() { + return yxrq; + } + + public void setYxrq(String yxrq) { + this.yxrq = yxrq; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getBh() { + return bh; + } + + public void setBh(String bh) { + this.bh = bh; + } + + public String getXftype() { + return xftype; + } + + public void setXftype(String xftype) { + this.xftype = xftype; + } + + public String getXhnum() { + return xhnum; + } + + public void setXhnum(String xhnum) { + this.xhnum = xhnum; + } + + public String getXmid() { + return xmid; + } + + public void setXmid(String xmid) { + this.xmid = xmid; + } + + public String getXfid() { + return xfid; + } + + public void setXfid(String xfid) { + this.xfid = xfid; + } + + public String getQyid() { + return qyid; + } + + public void setQyid(String qyid) { + this.qyid = qyid; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getNexttime() { + return nexttime; + } + + public void setNexttime(String nexttime) { + this.nexttime = nexttime; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqcList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqcList.java new file mode 100755 index 0000000..527e18e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcmhqcList.java @@ -0,0 +1,58 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * 消防巡查灭火器材列表 + */ + +public class XfXcmhqcList extends DataSupport { + + private int id; + + /** + * Rows : [{"bh":"AG120","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"9f4f685060504b989838a9bbe1e1bc49","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG120","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"9f4f685060504b989838a9bbe1e1bc49","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG120","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"9f4f685060504b989838a9bbe1e1bc49","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG058","xftype":"1","xhnum":"2KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"03644aa0219e4afaaedc7bccd1da12e5","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG058","xftype":"1","xhnum":"2KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"03644aa0219e4afaaedc7bccd1da12e5","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG058","xftype":"1","xhnum":"2KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"03644aa0219e4afaaedc7bccd1da12e5","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG173","xftype":"1","xhnum":"4KG干粉3KGCO2","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"933011da673e49c5b63ae7498d5a36e3","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG173","xftype":"1","xhnum":"4KG干粉3KGCO2","xmid":"e202262940b147a3997abd76473a7646","xfid":"933011da673e49c5b63ae7498d5a36e3","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG173","xftype":"1","xhnum":"4KG干粉3KGCO2","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"933011da673e49c5b63ae7498d5a36e3","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG061","xftype":"1","xhnum":"2KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"63527182f85f4c6b929b5591410ed8b0","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG061","xftype":"1","xhnum":"2KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"63527182f85f4c6b929b5591410ed8b0","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG061","xftype":"1","xhnum":"2KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"63527182f85f4c6b929b5591410ed8b0","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG112","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"7bda9f5abb7f483e82773d351771e53f","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG112","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"7bda9f5abb7f483e82773d351771e53f","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG112","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"7bda9f5abb7f483e82773d351771e53f","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG063","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"a23465a7737245a0963b12163eebf393","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG063","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"a23465a7737245a0963b12163eebf393","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG063","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"a23465a7737245a0963b12163eebf393","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG106","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"4c4c70ed2c114048b22112c294062e9a","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG106","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"4c4c70ed2c114048b22112c294062e9a","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG106","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"4c4c70ed2c114048b22112c294062e9a","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG064","xftype":"1","xhnum":"2KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"3bc50b00acd14332b80c4377ce3df146","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG064","xftype":"1","xhnum":"2KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"3bc50b00acd14332b80c4377ce3df146","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG064","xftype":"1","xhnum":"2KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"3bc50b00acd14332b80c4377ce3df146","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG125","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"1b179cac1cff41b4a4e9aa26f934660c","xfid":"8651eb5cdbc045e4a6dd9db0828fb5e6","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG125","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"e202262940b147a3997abd76473a7646","xfid":"8651eb5cdbc045e4a6dd9db0828fb5e6","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"},{"bh":"AG125","xftype":"1","xhnum":"4瓶 4KG干粉","xmid":"a0349df3eca44c7d8eafe39469bdddae","xfid":"8651eb5cdbc045e4a6dd9db0828fb5e6","qyid":"d660b42aa743451194a04c5f69862622","jhid":"20161014163244","nexttime":"2016/10/18 0:00:00"}] + * Total : 27 + */ + + private String Total; + /** + * bh : AG120 + * xftype : 1 + * xhnum : 4瓶 4KG干粉 + * xmid : 1b179cac1cff41b4a4e9aa26f934660c + * xfid : 9f4f685060504b989838a9bbe1e1bc49 + * qyid : d660b42aa743451194a04c5f69862622 + * jhid : 20161014163244 + * nexttime : 2016/10/18 0:00:00 + */ + + private List Rows; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxm.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxm.java new file mode 100755 index 0000000..be532ef --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxm.java @@ -0,0 +1,83 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfXcxm extends DataSupport { + + private int id; + private String xmid; + private String ssid; + private String xftype; + private String typename; + private String type1; + private String type2; + private String jhid; + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getXmid() { + return xmid; + } + + public void setXmid(String xmid) { + this.xmid = xmid; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getSsid() { + return ssid; + } + + public void setSsid(String ssid) { + this.ssid = ssid; + } + + public String getXftype() { + return xftype; + } + + public void setXftype(String xftype) { + this.xftype = xftype; + } + + public String getTypename() { + return typename; + } + + public void setTypename(String typename) { + this.typename = typename; + } + + public String getType1() { + return type1; + } + + public void setType1(String type1) { + this.type1 = type1; + } + + public String getType2() { + return type2; + } + + public void setType2(String type2) { + this.type2 = type2; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmList.java new file mode 100755 index 0000000..8ffd47e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmList.java @@ -0,0 +1,47 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfXcxmList extends DataSupport { + + + /** + * Rows : [{"xmid":"e202262940b147a3997abd76473a7646","id":"dbfcee97c583464cb28d9f1d1e19b393","xftype":"1","typename":"结果","type1":"正常","type2":"不正常"},{"xmid":"a0349df3eca44c7d8eafe39469bdddae","id":"f111c59a845342bdbce9f9dc0909d696","xftype":"2","typename":"结果","type1":"正常","type2":"不正常"},{"xmid":"1b179cac1cff41b4a4e9aa26f934660c","id":"ae4e5bb311c2498293593482e2aaf0eb","xftype":"3","typename":"门","type1":"正常","type2":"不正常"},{"xmid":"a0349df3eca44c7d8eafe39469bdddae","id":"8f8073765dfd466187a0ddc625e0172f","xftype":"2","typename":"结果2","type1":"正常2","type2":"不正常2"},{"xmid":"1b179cac1cff41b4a4e9aa26f934660c","id":"70fc834605994822bde12b34d7c97d58","xftype":"3","typename":"灯","type1":"正常","type2":"不正常"}] + * Total : 5 + */ + + private String Total; + /** + * xmid : e202262940b147a3997abd76473a7646 + * id : dbfcee97c583464cb28d9f1d1e19b393 + * xftype : 1 + * typename : 结果 + * type1 : 正常 + * type2 : 不正常 + */ + + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmjg.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmjg.java new file mode 100755 index 0000000..affefb7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XfXcxmjg.java @@ -0,0 +1,101 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/21. + */ + +public class XfXcxmjg extends DataSupport { + + private int id; + private String xfid; + private String xmid; + private String ssid; + private String xftype; + private String typename; + private String type1; + private String type2; + private String jhid; + private boolean jg; + + public String getXfid() { + return xfid; + } + + public void setXfid(String xfid) { + this.xfid = xfid; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public boolean isJg() { + return jg; + } + + public void setJg(boolean jg) { + this.jg = jg; + } + + public String getXmid() { + return xmid; + } + + public void setXmid(String xmid) { + this.xmid = xmid; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getSsid() { + return ssid; + } + + public void setSsid(String ssid) { + this.ssid = ssid; + } + + public String getXftype() { + return xftype; + } + + public void setXftype(String xftype) { + this.xftype = xftype; + } + + public String getTypename() { + return typename; + } + + public void setTypename(String typename) { + this.typename = typename; + } + + public String getType1() { + return type1; + } + + public void setType1(String type1) { + this.type1 = type1; + } + + public String getType2() { + return type2; + } + + public void setType2(String type2) { + this.type2 = type2; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjjh.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjjh.java new file mode 100755 index 0000000..3e2351b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjjh.java @@ -0,0 +1,222 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/3/29. + */ + +public class Xjjh extends DataSupport { + private int id; + private String jhid; + private String zxid; + private String jhmc; + private String jhlx; + private String jhzq; + private String st; + private String et; + private String wczt; + //总轮次[新增] + private String lc_z; + //当前轮次[新增] + private String lc_d; + private String ljds; + private String jhds; + private String zc; + //值次名称 + private String zc_name; + private String iswsc; + private boolean checked;//0:未选中,1:已选中 + private int download;//0:未下载,1:已经下载 + private String countPercent; //已检/总数 + private XjjhList xjjhList; + private String mk; + private String zyid; + private String username; + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + + public String getCountPercent() { + return countPercent; + } + + public void setCountPercent(String countPercent) { + this.countPercent = countPercent; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getJhlx() { + return jhlx; + } + + public void setJhlx(String jhlx) { + this.jhlx = jhlx; + } + + public String getJhzq() { + return jhzq; + } + + public void setJhzq(String jhzq) { + this.jhzq = jhzq; + } + + public String getSt() { + return st; + } + + public void setSt(String st) { + this.st = st; + } + + public String getEt() { + return et; + } + + public void setEt(String et) { + this.et = et; + } + + public String getWczt() { + return wczt; + } + + public void setWczt(String wczt) { + this.wczt = wczt; + } + + public String getLc_z() { + return lc_z; + } + + public void setLc_z(String lc_z) { + this.lc_z = lc_z; + } + + public String getLc_d() { + return lc_d; + } + + public void setLc_d(String lc_d) { + this.lc_d = lc_d; + } + + public String getLjds() { + return ljds; + } + + public void setLjds(String ljds) { + this.ljds = ljds; + } + + public String getJhds() { + return jhds; + } + + public void setJhds(String jhds) { + this.jhds = jhds; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getZc_name() { + return zc_name; + } + + public void setZc_name(String zc_name) { + this.zc_name = zc_name; + } + + public String getIswsc() { + return iswsc; + } + + public void setIswsc(String iswsc) { + this.iswsc = iswsc; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public XjjhList getXjjhList() { + return xjjhList; + } + + public void setXjjhList(XjjhList xjjhList) { + this.xjjhList = xjjhList; + } + + public String getMk() { + return mk; + } + + public void setMk(String mk) { + this.mk = mk; + } + + public String getZyid() { + return zyid; + } + + public void setZyid(String zyid) { + this.zyid = zyid; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjjhList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjjhList.java new file mode 100755 index 0000000..fa5b64d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjjhList.java @@ -0,0 +1,52 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/3/29. + */ + +public class XjjhList extends DataSupport { + + private int id; + private String state; + private String msg; + private List data = new ArrayList<>(); + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjzjrw.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjzjrw.java new file mode 100755 index 0000000..2421344 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Xjzjrw.java @@ -0,0 +1,177 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/7/21. + */ + +public class Xjzjrw extends DataSupport { + + + private int id; + private String classid; + private String title; + private String name; + private String isaudit; + private String auditname; + private String nextatuser; + private String prouserid; + private String prousername; + private String addtime; + private String rwid; + private String sbnum; + private String iswc; + private String wjbmc; + private String zjtime; + + + + private boolean checked;//0:未选中,1:已选中 + private int download;//0:未下载,1:已经下载 + private XjzjrwList xjzjrwList; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getClassid() { + return classid; + } + + public void setClassid(String classid) { + this.classid = classid; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIsaudit() { + return isaudit; + } + + public void setIsaudit(String isaudit) { + this.isaudit = isaudit; + } + + public String getAuditname() { + return auditname; + } + + public void setAuditname(String auditname) { + this.auditname = auditname; + } + + public String getNextatuser() { + return nextatuser; + } + + public void setNextatuser(String nextatuser) { + this.nextatuser = nextatuser; + } + + public String getProuserid() { + return prouserid; + } + + public void setProuserid(String prouserid) { + this.prouserid = prouserid; + } + + public String getProusername() { + return prousername; + } + + public void setProusername(String prousername) { + this.prousername = prousername; + } + + public String getAddtime() { + return addtime; + } + + public void setAddtime(String addtime) { + this.addtime = addtime; + } + + public String getRwid() { + return rwid; + } + + public void setRwid(String rwid) { + this.rwid = rwid; + } + + public String getSbnum() { + return sbnum; + } + + public void setSbnum(String sbnum) { + this.sbnum = sbnum; + } + + public String getIswc() { + return iswc; + } + + public void setIswc(String iswc) { + this.iswc = iswc; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public int getDownload() { + return download; + } + + public void setDownload(int download) { + this.download = download; + } + + public XjzjrwList getXjzjrwList() { + return xjzjrwList; + } + + public void setXjzjrwList(XjzjrwList xjzjrwList) { + this.xjzjrwList = xjzjrwList; + } + + public String getWjbmc() { + return wjbmc; + } + + public void setWjbmc(String wjbmc) { + this.wjbmc = wjbmc; + } + + public String getZjtime() { + return zjtime; + } + + public void setZjtime(String zjtime) { + this.zjtime = zjtime; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjzjrwList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjzjrwList.java new file mode 100755 index 0000000..fe32251 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XjzjrwList.java @@ -0,0 +1,49 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/7/21. + */ + +public class XjzjrwList extends DataSupport { + private int id; + private String state; + private String msg; + private List data = new ArrayList<>(); + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJh.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJh.java new file mode 100755 index 0000000..3644ab8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJh.java @@ -0,0 +1,103 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/11. + */ + +public class XwaqgcJh extends DataSupport { + + /** + * JHID : GCJH00000000001 + * GCRY : 210041 + * AREANAME : 油码头区域 + * AREACODE : MT03 + * WCZT : + * ST : 2016-11-08 19:41:49 + * DQSJ : 2016-11-15 19:11:49 + */ + + private String JHID; + private String GCRY; + private String AREANAME; + private String AREACODE; + private String WCZT; + private String ST; + private String DQSJ; + private String JHMC; + private boolean checked; + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getGCRY() { + return GCRY; + } + + public void setGCRY(String GCRY) { + this.GCRY = GCRY; + } + + public String getAREANAME() { + return AREANAME; + } + + public void setAREANAME(String AREANAME) { + this.AREANAME = AREANAME; + } + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getWCZT() { + return WCZT; + } + + public void setWCZT(String WCZT) { + this.WCZT = WCZT; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getDQSJ() { + return DQSJ; + } + + public void setDQSJ(String DQSJ) { + this.DQSJ = DQSJ; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJhList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJhList.java new file mode 100755 index 0000000..0b9de0b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJhList.java @@ -0,0 +1,35 @@ +package com.rehome.scbaxj.DBModel; + +import java.util.List; + +/** + * Created by gzw on 2016/11/12. + */ + +public class XwaqgcJhList { + + + /** + * Rows : [{"区域分组":[{"JHID":"GCJH00000000001","GCRY":"210041","AREANAME":"油码头区域","AREACODE":"MT03","WCZT":"","ST":"2016-11-08 19:41:49","DQSJ":"2016-11-15 19:11:49"}]}] + * Total : 1 + */ + + private int Total; + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJs.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJs.java new file mode 100755 index 0000000..35c1175 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcJs.java @@ -0,0 +1,92 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/10. + */ + +public class XwaqgcJs extends DataSupport { + + private String jhid; + private String jsr; + private String areacode; + private String xwzt; + private String kndz; + private String jzcs; + private String itemid; + private String path; + private String xwjljsid; + + public String getXwjljsid() { + return xwjljsid; + } + + public void setXwjljsid(String xwjljsid) { + this.xwjljsid = xwjljsid; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getItemid() { + return itemid; + } + + public void setItemid(String itemid) { + this.itemid = itemid; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getJsr() { + return jsr; + } + + public void setJsr(String jsr) { + this.jsr = jsr; + } + + public String getAreacode() { + return areacode; + } + + public void setAreacode(String areacode) { + this.areacode = areacode; + } + + public String getXwzt() { + return xwzt; + } + + public void setXwzt(String xwzt) { + this.xwzt = xwzt; + } + + public String getKndz() { + return kndz; + } + + public void setKndz(String kndz) { + this.kndz = kndz; + } + + public String getJzcs() { + return jzcs; + } + + public void setJzcs(String jzcs) { + this.jzcs = jzcs; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcSc.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcSc.java new file mode 100755 index 0000000..43679e5 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/XwaqgcSc.java @@ -0,0 +1,193 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/8. + */ + +public class XwaqgcSc extends DataSupport implements Parcelable { + + private String GZDD;//: "1号炉0米层区域", + private String CBS;// "承包商2", + private String BGCR;//: "李四", + private String BT;// "1.员工的反应", + private String XBT;//"观察到人员的异常反应", + private String NR;//"调整个人防护装备、遮掩/离开", + private String JCSJ;//":"2016-11-08 21:04", + private String JCR;//":"180021", + private String JHID;//":"GCJH00000000001" + private String SMFX;//扫描条码" "NFC标签" + private String GZP;//工作票 + private String GZNR;//工作内容 + private String GCID;//观察ID,以时间作为ID + private String XWJLJSID;//记录ID + + public String getXWJLJSID() { + return XWJLJSID; + } + + public void setXWJLJSID(String XWJLJSID) { + this.XWJLJSID = XWJLJSID; + } + + public String getGCID() { + return GCID; + } + + public void setGCID(String GCID) { + this.GCID = GCID; + } + + public String getGZP() { + return GZP; + } + + public void setGZP(String GZP) { + this.GZP = GZP; + } + + public String getGZNR() { + return GZNR; + } + + public void setGZNR(String GZNR) { + this.GZNR = GZNR; + } + + public String getSMFX() { + return SMFX; + } + + public void setSMFX(String SMFX) { + this.SMFX = SMFX; + } + + public String getGZDD() { + return GZDD; + } + + public void setGZDD(String GZDD) { + this.GZDD = GZDD; + } + + public String getCBS() { + return CBS; + } + + public void setCBS(String CBS) { + this.CBS = CBS; + } + + public String getBGCR() { + return BGCR; + } + + public void setBGCR(String BGCR) { + this.BGCR = BGCR; + } + + public String getBT() { + return BT; + } + + public void setBT(String BT) { + this.BT = BT; + } + + public String getXBT() { + return XBT; + } + + public void setXBT(String XBT) { + this.XBT = XBT; + } + + public String getNR() { + return NR; + } + + public void setNR(String NR) { + this.NR = NR; + } + + public String getJCSJ() { + return JCSJ; + } + + public void setJCSJ(String JCSJ) { + this.JCSJ = JCSJ; + } + + public String getJCR() { + return JCR; + } + + public void setJCR(String JCR) { + this.JCR = JCR; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public XwaqgcSc() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.GZDD); + dest.writeString(this.CBS); + dest.writeString(this.BGCR); + dest.writeString(this.BT); + dest.writeString(this.XBT); + dest.writeString(this.NR); + dest.writeString(this.JCSJ); + dest.writeString(this.JCR); + dest.writeString(this.JHID); + dest.writeString(this.SMFX); + dest.writeString(this.GZP); + dest.writeString(this.GZNR); + dest.writeString(this.GCID); + dest.writeString(this.XWJLJSID); + } + + protected XwaqgcSc(Parcel in) { + this.GZDD = in.readString(); + this.CBS = in.readString(); + this.BGCR = in.readString(); + this.BT = in.readString(); + this.XBT = in.readString(); + this.NR = in.readString(); + this.JCSJ = in.readString(); + this.JCR = in.readString(); + this.JHID = in.readString(); + this.SMFX = in.readString(); + this.GZP = in.readString(); + this.GZNR = in.readString(); + this.GCID = in.readString(); + this.XWJLJSID = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + public XwaqgcSc createFromParcel(Parcel source) { + return new XwaqgcSc(source); + } + + public XwaqgcSc[] newArray(int size) { + return new XwaqgcSc[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/YhpcInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/YhpcInfo.java new file mode 100755 index 0000000..9debc65 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/YhpcInfo.java @@ -0,0 +1,65 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by gzw on 2016/11/1. + */ + +public class YhpcInfo extends DataSupport { + + private String NR;//内容 + private String WT;//问题 + private String AREACODE;//区域编号 + private String FXR;//发现人 + private String FXSJ;//发现时间 + private String GUID; + + public String getGUID() { + return GUID; + } + + public void setGUID(String GUID) { + this.GUID = GUID; + } + + public String getNR() { + return NR; + } + + public void setNR(String NR) { + this.NR = NR; + } + + public String getWT() { + return WT; + } + + public void setWT(String WT) { + this.WT = WT; + } + + public String getAREACODE() { + return AREACODE; + } + + public void setAREACODE(String AREACODE) { + this.AREACODE = AREACODE; + } + + public String getFXR() { + return FXR; + } + + public void setFXR(String FXR) { + this.FXR = FXR; + } + + public String getFXSJ() { + return FXSJ; + } + + public void setFXSJ(String FXSJ) { + this.FXSJ = FXSJ; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Yhpctp.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Yhpctp.java new file mode 100755 index 0000000..cf3ab19 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Yhpctp.java @@ -0,0 +1,29 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by JACKYGUO on 2016/12/22. + */ + +public class Yhpctp extends DataSupport{ + + private String guid; + private String path; + + public String getGuid() { + return guid; + } + + public void setGuid(String guid) { + this.guid = guid; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdata.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdata.java new file mode 100755 index 0000000..c66f02b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdata.java @@ -0,0 +1,255 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/24. + */ + +public class Zjrwdata extends DataSupport implements Parcelable { + + + private long id; + private String title; + private String bagid; + private String khid; + private String filecode; + private String name; + private String prouserid; + private String prousername; + private String type; + private String iswc; + private String wcintro; + private String rwid; + private String fid; + private List sbwclist; + private int SN; //自定义序号 + private boolean isChecked; + private String countPercent; //已检/总数 + +// 下面是上传图片所需的字段 + private String photopatglist;//图片集合 + private String lrsj;//录入时间 + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBagid() { + return bagid; + } + + public void setBagid(String bagid) { + this.bagid = bagid; + } + + public String getKhid() { + return khid; + } + + public void setKhid(String khid) { + this.khid = khid; + } + + public String getFilecode() { + return filecode; + } + + public void setFilecode(String filecode) { + this.filecode = filecode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getProuserid() { + return prouserid; + } + + public void setProuserid(String prouserid) { + this.prouserid = prouserid; + } + + public String getProusername() { + return prousername; + } + + public void setProusername(String prousername) { + this.prousername = prousername; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getIswc() { + return iswc; + } + + public void setIswc(String iswc) { + this.iswc = iswc; + } + + public String getWcintro() { + return wcintro; + } + + public void setWcintro(String wcintro) { + this.wcintro = wcintro; + } + + public String getRwid() { + return rwid; + } + + public void setRwid(String rwid) { + this.rwid = rwid; + } + + public String getFid() { + return fid; + } + + public void setFid(String fid) { + this.fid = fid; + } + + public List getSbwclist() { + return sbwclist; + } + + public void setSbwclist(List sbwclist) { + this.sbwclist = sbwclist; + } + + public int getSN() { + return SN; + } + + public void setSN(int SN) { + this.SN = SN; + } + + public boolean isChecked() { + return isChecked; + } + + public void setChecked(boolean checked) { + isChecked = checked; + } + + public String getCountPercent() { + return countPercent; + } + + public void setCountPercent(String countPercent) { + this.countPercent = countPercent; + } + + public String getPhotopatglist() { + return photopatglist; + } + + public void setPhotopatglist(String photopatglist) { + this.photopatglist = photopatglist; + } + + public String getLrsj() { + return lrsj; + } + + public void setLrsj(String lrsj) { + this.lrsj = lrsj; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.title); + dest.writeString(this.bagid); + dest.writeString(this.khid); + dest.writeString(this.filecode); + dest.writeString(this.name); + dest.writeString(this.prouserid); + dest.writeString(this.prousername); + dest.writeString(this.type); + dest.writeString(this.iswc); + dest.writeString(this.wcintro); + dest.writeString(this.rwid); + dest.writeString(this.fid); + dest.writeTypedList(this.sbwclist); + dest.writeInt(this.SN); + dest.writeByte(this.isChecked ? (byte) 1 : (byte) 0); + dest.writeString(this.countPercent); + dest.writeString(this.photopatglist); + dest.writeString(this.lrsj); + } + + public Zjrwdata() { + } + + protected Zjrwdata(Parcel in) { + this.id = in.readLong(); + this.title = in.readString(); + this.bagid = in.readString(); + this.khid = in.readString(); + this.filecode = in.readString(); + this.name = in.readString(); + this.prouserid = in.readString(); + this.prousername = in.readString(); + this.type = in.readString(); + this.iswc = in.readString(); + this.wcintro = in.readString(); + this.rwid = in.readString(); + this.fid = in.readString(); + this.sbwclist = in.createTypedArrayList(Zjrwdatainfo.CREATOR); + this.SN = in.readInt(); + this.isChecked = in.readByte() != 0; + this.countPercent = in.readString(); + this.photopatglist = in.readString(); + this.lrsj = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public Zjrwdata createFromParcel(Parcel source) { + return new Zjrwdata(source); + } + + @Override + public Zjrwdata[] newArray(int size) { + return new Zjrwdata[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdatainfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdatainfo.java new file mode 100755 index 0000000..53ab30d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwdatainfo.java @@ -0,0 +1,286 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +/** + * Created by ruihong on 2018/7/24. + */ + +public class Zjrwdatainfo extends DataSupport implements Parcelable { + + private long id; + private String fid; + private String sbname; + private String sbid; + private String isbhg; + private String exceptname; + private String iswc; + private String khid; + private String srcid; + private String filecode; + private String wcname; + private String jgid; + private String rwid; + private Zjrwdata zjrwdata; + private boolean checked;//是否已经检查 + private String CJJG; + private String DATE;//保存时间 + private String ISYC;//是否异常 + private String ISRBFX;//是否让步放行 + private String BZ;//应达到的标准 + private String JSSP;//应达到的技术水平 + private String RBYY; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getFid() { + return fid; + } + + public void setFid(String fid) { + this.fid = fid; + } + + public String getSbname() { + return sbname; + } + + public void setSbname(String sbname) { + this.sbname = sbname; + } + + public String getSbid() { + return sbid; + } + + public void setSbid(String sbid) { + this.sbid = sbid; + } + + public String getIsbhg() { + return isbhg; + } + + public void setIsbhg(String isbhg) { + this.isbhg = isbhg; + } + + public String getExceptname() { + return exceptname; + } + + public void setExceptname(String exceptname) { + this.exceptname = exceptname; + } + + public String getIswc() { + return iswc; + } + + public void setIswc(String iswc) { + this.iswc = iswc; + } + + public String getKhid() { + return khid; + } + + public void setKhid(String khid) { + this.khid = khid; + } + + public String getSrcid() { + return srcid; + } + + public void setSrcid(String srcid) { + this.srcid = srcid; + } + + public String getFilecode() { + return filecode; + } + + public void setFilecode(String filecode) { + this.filecode = filecode; + } + + public String getWcname() { + return wcname; + } + + public void setWcname(String wcname) { + this.wcname = wcname; + } + + public String getJgid() { + return jgid; + } + + public void setJgid(String jgid) { + this.jgid = jgid; + } + + public String getRwid() { + return rwid; + } + + public void setRwid(String rwid) { + this.rwid = rwid; + } + + public Zjrwdata getZjrwdata() { + return zjrwdata; + } + + public void setZjrwdata(Zjrwdata zjrwdata) { + this.zjrwdata = zjrwdata; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public String getCJJG() { + return CJJG; + } + + public void setCJJG(String CJJG) { + this.CJJG = CJJG; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + + public String getISYC() { + return ISYC; + } + + public void setISYC(String ISYC) { + this.ISYC = ISYC; + } + + public String getISRBFX() { + return ISRBFX; + } + + public void setISRBFX(String ISRBFX) { + this.ISRBFX = ISRBFX; + } + + public String getBZ() { + return BZ; + } + + public void setBZ(String BZ) { + this.BZ = BZ; + } + + public String getJSSP() { + return JSSP; + } + + public void setJSSP(String JSSP) { + this.JSSP = JSSP; + } + + public String getRBYY() { + return RBYY; + } + + public void setRBYY(String RBYY) { + this.RBYY = RBYY; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.fid); + dest.writeString(this.sbname); + dest.writeString(this.sbid); + dest.writeString(this.isbhg); + dest.writeString(this.exceptname); + dest.writeString(this.iswc); + dest.writeString(this.khid); + dest.writeString(this.srcid); + dest.writeString(this.filecode); + dest.writeString(this.wcname); + dest.writeString(this.jgid); + dest.writeString(this.rwid); + dest.writeParcelable(this.zjrwdata, flags); + dest.writeByte(this.checked ? (byte) 1 : (byte) 0); + dest.writeString(this.CJJG); + dest.writeString(this.DATE); + dest.writeString(this.ISYC); + dest.writeString(this.ISRBFX); + dest.writeString(this.BZ); + dest.writeString(this.JSSP); + dest.writeString(this.RBYY); + } + + public Zjrwdatainfo() { + } + + protected Zjrwdatainfo(Parcel in) { + this.id = in.readLong(); + this.fid = in.readString(); + this.sbname = in.readString(); + this.sbid = in.readString(); + this.isbhg = in.readString(); + this.exceptname = in.readString(); + this.iswc = in.readString(); + this.khid = in.readString(); + this.srcid = in.readString(); + this.filecode = in.readString(); + this.wcname = in.readString(); + this.jgid = in.readString(); + this.rwid = in.readString(); + this.zjrwdata = in.readParcelable(Zjrwdata.class.getClassLoader()); + this.checked = in.readByte() != 0; + this.CJJG = in.readString(); + this.DATE = in.readString(); + this.ISYC = in.readString(); + this.ISRBFX = in.readString(); + this.BZ = in.readString(); + this.JSSP = in.readString(); + this.RBYY = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public Zjrwdatainfo createFromParcel(Parcel source) { + return new Zjrwdatainfo(source); + } + + @Override + public Zjrwdatainfo[] newArray(int size) { + return new Zjrwdatainfo[size]; + } + }; +} + + + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwst.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwst.java new file mode 100755 index 0000000..0e4958f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zjrwst.java @@ -0,0 +1,78 @@ +package com.rehome.scbaxj.DBModel; + +import android.os.Parcel; +import android.os.Parcelable; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/7/24. + */ + +public class Zjrwst extends DataSupport implements Parcelable { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.state); + dest.writeString(this.msg); + dest.writeList(this.data); + } + + public Zjrwst() { + } + + protected Zjrwst(Parcel in) { + this.state = in.readInt(); + this.msg = in.readString(); + this.data = new ArrayList(); + data = in.createTypedArrayList(Zjrwdata.CREATOR); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Zjrwst createFromParcel(Parcel source) { + return new Zjrwst(source); + } + + @Override + public Zjrwst[] newArray(int size) { + return new Zjrwst[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zy.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zy.java new file mode 100755 index 0000000..2df9344 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/Zy.java @@ -0,0 +1,39 @@ +package com.rehome.scbaxj.DBModel; + +import org.litepal.crud.DataSupport; + +/** + * Created by Administrator on 2016/10/29. + */ + +public class Zy extends DataSupport{ + + private int id; + private String ZYID; + private String VALUE; + private String XXMS; + + public String getZYID() { + return ZYID; + } + + public void setZYID(String ZYID) { + this.ZYID = ZYID; + } + + public String getVALUE() { + return VALUE; + } + + public void setVALUE(String VALUE) { + this.VALUE = VALUE; + } + + public String getXXMS() { + return XXMS; + } + + public void setXXMS(String XXMS) { + this.XXMS = XXMS; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ZyInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ZyInfo.java new file mode 100755 index 0000000..2aec22a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/DBModel/ZyInfo.java @@ -0,0 +1,41 @@ +package com.rehome.scbaxj.DBModel; + +import java.util.List; + +/** + * Created by Administrator on 2016/10/29. + */ + +public class ZyInfo { + + + /** + * Rows : [{"ID":"2086","VALUE":"MIS","XXMS":"信息中心"},{"ID":"2083","VALUE":"电气","XXMS":"电气分部"},{"ID":"2079","VALUE":"辅助维护","XXMS":"设备部管理室"},{"ID":"2070","VALUE":"工程机械","XXMS":"燃料推扒班"},{"ID":"2080","VALUE":"环化","XXMS":"环化分部"},{"ID":"2084","VALUE":"机械","XXMS":"机械分部"},{"ID":"2076","VALUE":"码头","XXMS":"码头分部"},{"ID":"2075","VALUE":"其他","XXMS":"其他"},{"ID":"2085","VALUE":"燃料","XXMS":"燃料点检班"},{"ID":"2082","VALUE":"热控","XXMS":"热控分部"},{"ID":"2088","VALUE":"生技","XXMS":"生技分部"},{"ID":"2081","VALUE":"输煤","XXMS":"输煤分部"},{"ID":"2074","VALUE":"土建","XXMS":"土建专业"},{"ID":"2087","VALUE":"运行","XXMS":"运行部"},{"ID":"2071","VALUE":"运行A值","XXMS":"运行A值"},{"ID":"2072","VALUE":"运行B值","XXMS":"运行B值"},{"ID":"2073","VALUE":"运行C值","XXMS":"运行C值"},{"ID":"2078","VALUE":"运行D值","XXMS":"运行D值"},{"ID":"2077","VALUE":"运行E值","XXMS":"运行E值"}] + * Total : 19 + */ + + private int Total; + /** + * ID : 2086 + * VALUE : MIS + * XXMS : 信息中心 + */ + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/DragListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/DragListener.java new file mode 100644 index 0000000..cd7e637 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/DragListener.java @@ -0,0 +1,22 @@ +package com.rehome.scbaxj.Listener; + +/** + * @author:luck + * @date:2020-01-13 17:00 + * @describe:拖拽监听事件 + */ +public interface DragListener { + /** + * 是否将 item拖动到删除处,根据状态改变颜色 + * + * @param isDelete + */ + void deleteState(boolean isDelete); + + /** + * 是否于拖拽状态 + * + * @param start + */ + void dragState(boolean isStart); +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/FullyGridLayoutManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/FullyGridLayoutManager.java new file mode 100644 index 0000000..07247d8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/FullyGridLayoutManager.java @@ -0,0 +1,105 @@ +package com.rehome.scbaxj.Listener; + + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +/** + * author:luck + * project:PictureSelector + * package:com.luck.picture.ui + * email:893855882@qq.com + * data:16/12/31 + */ + +public class FullyGridLayoutManager extends GridLayoutManager { + public FullyGridLayoutManager(Context context, int spanCount) { + super(context, spanCount); + } + + public FullyGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) { + super(context, spanCount, orientation, reverseLayout); + } + + private int[] mMeasuredDimension = new int[2]; + + @Override + public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) { + final int widthMode = View.MeasureSpec.getMode(widthSpec); + final int heightMode = View.MeasureSpec.getMode(heightSpec); + final int widthSize = View.MeasureSpec.getSize(widthSpec); + final int heightSize = View.MeasureSpec.getSize(heightSpec); + + int width = 0; + int height = 0; + int count = getItemCount(); + int span = getSpanCount(); + for (int i = 0; i < count; i++) { + measureScrapChild(recycler, i, + View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), + mMeasuredDimension); + + if (getOrientation() == HORIZONTAL) { + if (i % span == 0) { + width = width + mMeasuredDimension[0]; + } + if (i == 0) { + height = mMeasuredDimension[1]; + } + } else { + if (i % span == 0) { + height = height + mMeasuredDimension[1]; + } + if (i == 0) { + width = mMeasuredDimension[0]; + } + } + } + + switch (widthMode) { + case View.MeasureSpec.EXACTLY: + width = widthSize; + case View.MeasureSpec.AT_MOST: + case View.MeasureSpec.UNSPECIFIED: + } + + switch (heightMode) { + case View.MeasureSpec.EXACTLY: + height = heightSize; + case View.MeasureSpec.AT_MOST: + case View.MeasureSpec.UNSPECIFIED: + } + + setMeasuredDimension(width, height); + } + + final RecyclerView.State mState = new RecyclerView.State(); + + private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, + int heightSpec, int[] measuredDimension) { + int itemCount = mState.getItemCount(); + if (position < itemCount) { + try { + View view = recycler.getViewForPosition(0); + if (view != null) { + RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams(); + int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec, + getPaddingLeft() + getPaddingRight(), p.width); + int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec, + getPaddingTop() + getPaddingBottom(), p.height); + view.measure(childWidthSpec, childHeightSpec); + measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin; + measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin; + recycler.recycleView(view); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/GlideEngine.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/GlideEngine.java new file mode 100644 index 0000000..71b6aaf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/GlideEngine.java @@ -0,0 +1,119 @@ +package com.rehome.scbaxj.Listener; + + +/** + * Create By HuangWenFei + * 创建日期:2023-01-09 14:08 + * 描述: + */ + +import android.content.Context; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.CenterCrop; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.utils.ActivityCompatHelper; +import com.rehome.scbaxj.R; + + +/** + * @author:luck + * @date:2019-11-13 17:02 + * @describe:Glide加载引擎 + */ +public class GlideEngine implements ImageEngine { + + /** + * 加载图片 + * + * @param context 上下文 + * @param url 资源url + * @param imageView 图片承载控件 + */ + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .into(imageView); + } + + @Override + public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView); + } + + /** + * 加载相册目录封面 + * + * @param context 上下文 + * @param url 图片路径 + * @param imageView 承载图片ImageView + */ + @Override + public void loadAlbumCover(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(new CenterCrop(), new RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + + /** + * 加载图片列表图片 + * + * @param context 上下文 + * @param url 图片路径 + * @param imageView 承载图片ImageView + */ + @Override + public void loadGridImage(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .override(200, 200) + .centerCrop() + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + @Override + public void pauseRequests(Context context) { + Glide.with(context).pauseRequests(); + } + + @Override + public void resumeRequests(Context context) { + Glide.with(context).resumeRequests(); + } + + private GlideEngine() { + } + + private static final class InstanceHolder { + static final GlideEngine instance = new GlideEngine(); + } + + public static GlideEngine createGlideEngine() { + return InstanceHolder.instance; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/ImageLoaderUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/ImageLoaderUtils.java new file mode 100644 index 0000000..54c601a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/ImageLoaderUtils.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.Listener; + + +/** + * Create By HuangWenFei + * 创建日期:2023-01-09 16:53 + * 描述: + */ + +import android.app.Activity; +import android.content.Context; +import android.content.ContextWrapper; + +/** + * @author:luck + * @date:2021/7/14 3:15 PM + * @describe:ImageLoaderUtils + */ +public class ImageLoaderUtils { + + public static boolean assertValidRequest(Context context) { + if (context instanceof Activity) { + Activity activity = (Activity) context; + return !isDestroy(activity); + } else if (context instanceof ContextWrapper){ + ContextWrapper contextWrapper = (ContextWrapper) context; + if (contextWrapper.getBaseContext() instanceof Activity){ + Activity activity = (Activity) contextWrapper.getBaseContext(); + return !isDestroy(activity); + } + } + return true; + } + + private static boolean isDestroy(Activity activity) { + if (activity == null) { + return true; + } + return activity.isFinishing() || activity.isDestroyed(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemClickListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemClickListener.java new file mode 100644 index 0000000..fdc125e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemClickListener.java @@ -0,0 +1,12 @@ +package com.rehome.scbaxj.Listener; + +import android.view.View; + +/** + * @author:luck + * @date:2020-01-13 17:57 + * @describe:点击事件 + */ +public interface OnItemClickListener { + void onItemClick(int position, View v); +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemLongClickListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemLongClickListener.java new file mode 100644 index 0000000..b7cec6c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/Listener/OnItemLongClickListener.java @@ -0,0 +1,26 @@ +package com.rehome.scbaxj.Listener; + +//import android.view.View; +// +//import androidx.recyclerview.widget.RecyclerView; +// +///** +// * @author:luck +// * @date:2020-01-13 17:58 +// * @describe:长按事件 +// */ +//public interface OnItemLongClickListener { +// void onItemLongClick(RecyclerView.ViewHolder holder, int position, View v); +//} +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +/** + * @author:luck + * @date:2020-01-13 17:58 + * @describe:长按事件 + */ +public interface OnItemLongClickListener { + void onItemLongClick(RecyclerView.ViewHolder holder, int position, View v); +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/MyApplication.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/MyApplication.java new file mode 100755 index 0000000..c7a2456 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/MyApplication.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj; + +import android.content.Context; +import com.xuexiang.xui.XUI; +import com.yolanda.nohttp.NoHttp; +import com.zhy.autolayout.config.AutoLayoutConifg; +import org.litepal.LitePalApplication; +import androidx.multidex.MultiDex; + +public class MyApplication extends LitePalApplication{ + public static Context context = null; + + @Override + public void onCreate() { + super.onCreate(); + XUI.init(this); + NoHttp.initialize(this); + NoHttp.setDefaultConnectTimeout(5 * 1000); + NoHttp.setDefaultReadTimeout(60 * 1000); + AutoLayoutConifg.getInstance().useDeviceSize(); + } + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckTemperatureActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckTemperatureActivity.java new file mode 100644 index 0000000..aed029c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckTemperatureActivity.java @@ -0,0 +1,323 @@ +package com.rehome.scbaxj.activity; + + +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AuditDialog; +import com.rehome.scbaxj.weight.EditDialog; +import com.google.gson.Gson; +import com.rinsun.mtdriver.MTnativeInterface; +import com.rehome.scbaxj.base.BaseActivity3; + +import org.litepal.crud.DataSupport; + +import java.text.SimpleDateFormat; +import java.util.Date; + + +public class CheckTemperatureActivity extends BaseActivity3 { + + EditText etRealValue; + EditText noticeValue; + Button btnSubmit; + TextView checkTip; + TextView standerTip; + + + private String temperatureValue; + //public static final int RESULT_SUCCESS = 1; + private String checkType; + //是否可编辑 + private boolean isEdit = false; + private String username; + private String smfs; + + //频谱用到的变量///////////////////////////// + private double edit16LA; + private double edit16LV; + private double edit16LD; + private double edit16HA; + private double edit16HV; + private double edit16HD; + + private double[] ppsour; + private int ppfreq; // <1280,5120,12800> + private int pplen; // 1024, 4096, 8192 + /////////////////////////////////////////////// + + MTnativeInterface mt= MTnativeInterface.getInstance();//获取传感器调用接口 + Intent intentTemplate; + //页面传过来的数据 + XSJJHDataBean xSJJHDataBean; + + @Override + public int getLayoutId() { + return R.layout.activity_check_temperature; + } + + @Override + public void initView() { + username = (String) SPUtils.get(context, Contans.USERID, ""); + etRealValue = findViewById(R.id.et_realValue); + noticeValue = findViewById(R.id.et_noticeValue); + btnSubmit = findViewById(R.id.btn_submit); + checkTip = findViewById(R.id.tv_checkTip); + standerTip = findViewById(R.id.tv_standerTip); + + Bundle bundle = CheckTemperatureActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + if(isEdit){ + initToolbar("测温", "开始测量", new View.OnClickListener() { + @Override + public void onClick(View v) { + demo();//测量 + } + }); + etRealValue.setEnabled(true); + }else{ + initToolbar("测温", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + btnSubmit.setVisibility(View.GONE); + } + } + + noticeValue.setKeyListener(null); + intentTemplate = getIntent(); + //String checkTipStr = intentTemplate.getStringExtra("checkTip"); + String standerTipStr = intentTemplate.getStringExtra("standerTip"); + checkType = intentTemplate.getStringExtra("checkType"); +// if(checkTipStr!=null){ +// checkTip.setText(checkTipStr); +// } + if(standerTipStr!=null){ + standerTip.setText(standerTipStr); + } + //回调函数(自动返回数据)。CMDtype:数据类型,参数说明见“说明文档.txt” + mt.setOnReceiveListener(new MTnativeInterface.OnReceiveListener() { + @Override + public void onShowMessage(byte[] recBuff,int CMDtype, int tag) { + /* 根据CMDtype区分数据类型,普通测量值/频谱数据/配置数据。如果10秒没读到数据会返回超时提示并关闭电源 */ + System.out.println("-------------"); + System.out.println(new String(recBuff)+"/"+CMDtype+"/"+tag); + + //收到普通测量值 + updateUI(new String(recBuff));//可直接显示数据 + + //收到频谱采集部分 + //recBuff 原始数据数组,CMDtype 返回数据类型,tag 数据长度 + System.out.println((recBuff.length)+"/"+CMDtype+"/"+tag); + } + }); + btnSubmit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + temperatureValue = etRealValue.getText().toString(); + if(temperatureValue.equals("")){ + showToast("实际值不能为空"); + }else{ + AuditDialog auditDialog = new AuditDialog(context, "确定要保存数据吗?", new AuditDialog.AuditDialogListener() { + @Override + public void confirm() { + if (isEdit) { + if(!etRealValue.getText().toString().trim().equals("")){ + ContentValues values = new ContentValues(); + values.put("smfs", smfs); + values.put("checked", true); + values.put("CJJG", temperatureValue); + values.put("DATE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + DataSupport.updateAll(XSJJHDataBean.class, values, "scid = ? and username = ? ",xSJJHDataBean.getScid(),username); + Intent intent = new Intent(Contans.ACTION_YULONE); + intent.putExtra(Contans.KEY_NAME, temperatureValue); + intent.putExtra(Contans.SCID, xSJJHDataBean.getScid()); + //发送广播 + sendBroadcast(intent); + } + } + + Intent intent = new Intent(); + intent.putExtra("value", temperatureValue); + intent.putExtra("checkType", checkType); + setResult(RESULT_OK, intent); + finish(); + } + + @Override + public void cancel() { + + } + }); + auditDialog.show(); + } + } + }); + noticeValue.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + //Toast.makeText(context, "onLongClick", Toast.LENGTH_SHORT).show(); + EditDialog editDialog = new EditDialog(context); + editDialog.setMessage(noticeValue.getText().toString().trim()); + editDialog.setYesOnclickListener("确定", new EditDialog.onYesOnclickListener() { + @Override + public void onYesClick(String phone) { + if (!TextUtils.isEmpty(phone)) { + noticeValue.setText(phone); + } + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.setNoOnclickListener("取消", new EditDialog.onNoOnclickListener() { + @Override + public void onNoClick() { + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.show(); + return false; + } + }); + } + + @Override + public void initData() { + Bundle bundle = CheckTemperatureActivity.this.getIntent().getExtras(); + if (bundle != null) { + smfs = bundle.getString("smfs"); + xSJJHDataBean = bundle.getParcelable("xSJJHDataBean"); + Gson gson=new Gson(); + Log.i("app",gson.toJson(xSJJHDataBean)); + if(xSJJHDataBean.getSb()!=null){ + checkTip.setText(xSJJHDataBean.getSb()); + } + if(xSJJHDataBean.getBJMC()!=null){ + standerTip.setText(xSJJHDataBean.getBJMC()); + } + if(xSJJHDataBean.getCJJG()!=null){ + etRealValue.setText(xSJJHDataBean.getCJJG()); + } + } + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onPause() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onPause(); + } + + public void demo(){ + /*========读卡示例,参数说明见“说明文档.txt”============================================================*/ + //mt.RFIDopen(MTnativeInterface.CARD_14443);//开启电源。(不可与振动同时打开,它们共用硬件资源) + //mt.RFIDread(-1,""); + + + /*======转速示例============================================================================================*/ + //mt.RPMopen();//开启电源。 + + /*=====测温示例,参数说明见“说明文档.txt”=================================================================*/ + mt.IRTopen(MTnativeInterface.TEMP_25);//开启电源。 + mt.IRTread(95); + + /*=======测振示例,参数说明见“说明文档.txt”================================================================*/ +// mt.VIBopen();//开启电源。 +// //振动值测量。(振动值测量和频谱采集同时只能使用其中一个) +// mt.VIBread(MTnativeInterface.CMD_VIBD_R,0); + + //频谱采集测量。 + // mt.VIBset(MTnativeInterface.CMD_ALL_W,"RK");//频谱采集前,必须读取一次"频谱参数",频谱计算过程要用到 +// Button but = (Button) findViewById(R.id.button1); +// but.setText("频谱采集"); +// but.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// ppfreq=1280;//可选频率 1280 5120 12800 +// pplen=1024;//对应返回数据长度1024, 4096, 8192 +// ppsour = new double[pplen]; +// //开始频谱采集,参数CMDtype采样类型有三个可选CMD_VIBA_P加速度、CMD_VIBD_P位移、CMD_VIBV_P速度。参数level采样频率有三个可选 1280 5120 12800 +// //mt.VIBread(MTnativeInterface.CMD_VIBA_P,ppfreq); +// //执行下面代码可停止频谱采集 +// //mt.VIBread(0,0); +// } +// }); +// Button btnSecond = (Button) findViewById(R.id.button2); +// btnSecond.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// +// } +// }); + } + + private double getRK(int type){ + double res=0.0; + switch(type) { + case MTnativeInterface.CMD_VIBA_P: + res = edit16LA; + case MTnativeInterface.CMD_VIBV_P: + res=edit16LV; + case MTnativeInterface.CMD_VIBD_P: + res=edit16LD; + } + return res; + } + + public void updateUI(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if(info!=null){ + if(etRealValue!=null){ + etRealValue.setText(info); + } + } + } + }); + } + + @Override + protected void onDestroy() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onDestroy(); + } +} + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckVibrationActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckVibrationActivity.java new file mode 100644 index 0000000..fca3b06 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CheckVibrationActivity.java @@ -0,0 +1,351 @@ +package com.rehome.scbaxj.activity; + + + +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AuditDialog; +import com.rehome.scbaxj.weight.EditDialog; +import com.google.gson.Gson; +import com.rinsun.mtdriver.MTnativeInterface; +import org.litepal.crud.DataSupport; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class CheckVibrationActivity extends BaseActivity3 { + + TextView etRealTitle; + EditText etRealValue; + EditText noticeValue; + Button btnSubmit; + TextView checkTip; + TextView standerTip; + RadioGroup rgLevel; + RadioGroup rgType; + + + + private String vibrationValue; + public static final int RESULT_SUCCESS = 1; + private String checkType; + int checkVibrationType = MTnativeInterface.CMD_VIBD_R; + int level = 0; + // 振动位移单位 mm + //振动速度单位 mm/s + //振动加速度单位 mm/(s^2) + //String measure = "mm"; + //是否可编辑 + private boolean isEdit = false; + //页面传过来的数据 + XSJJHDataBean xSJJHDataBean; + + //频谱用到的变量///////////////////////////// + private double edit16LA; + private double edit16LV; + private double edit16LD; + private double edit16HA; + private double edit16HV; + private double edit16HD; + + private double[] ppsour; + private int ppfreq; // <1280,5120,12800> + private int pplen; // 1024, 4096, 8192 + /////////////////////////////////////////////// + + MTnativeInterface mt= MTnativeInterface.getInstance();//获取传感器调用接口 + Intent intentTemplate; + private String username; + private String smfs; + + + @Override + public int getLayoutId() { + return R.layout.activity_check_vibration; + } + + @Override + public void initView() { + username = (String) SPUtils.get(context, Contans.USERID, ""); + etRealTitle = findViewById(R.id.tv_realTitle); + etRealValue = findViewById(R.id.et_realValue); + noticeValue = findViewById(R.id.et_noticeValue); + btnSubmit = findViewById(R.id.btn_submit); + checkTip = findViewById(R.id.tv_checkTip); + standerTip = findViewById(R.id.tv_standerTip); + rgLevel = findViewById(R.id.rgLevel); + rgType = findViewById(R.id.rgType); + + + + + Bundle bundle = CheckVibrationActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + if(isEdit){ + etRealValue.setEnabled(true); + initToolbar("测振", "开始测量", new View.OnClickListener() { + @Override + public void onClick(View v) { + //测量 + demo(); + } + }); + }else{ + initToolbar("测振", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + btnSubmit.setVisibility(View.GONE); + } + } + + noticeValue.setKeyListener(null); + intentTemplate = getIntent(); + String checkTipStr = intentTemplate.getStringExtra("checkTip"); + String standerTipStr = intentTemplate.getStringExtra("standerTip"); + checkType = intentTemplate.getStringExtra("checkType"); + if(checkTipStr!=null){ + checkTip.setText(checkTipStr); + } + if(standerTipStr!=null){ + standerTip.setText(standerTipStr); + } + //回调函数(自动返回数据)。CMDtype:数据类型,参数说明见“说明文档.txt” + mt.setOnReceiveListener(new MTnativeInterface.OnReceiveListener() { + @Override + public void onShowMessage(byte[] recBuff,int CMDtype, int tag) { + /* 根据CMDtype区分数据类型,普通测量值/频谱数据/配置数据。如果10秒没读到数据会返回超时提示并关闭电源 */ + System.out.println("-------------"); + System.out.println(new String(recBuff)+"/"+CMDtype+"/"+tag); + + if(CMDtype==MTnativeInterface.CMD_VIBA_R){ + if(recBuff!=null){ + String recv = new String(recBuff); + String cut = " "; + String[] newStr = recv.split(cut); // 分割成数组 + updateUI(newStr[0]);//可直接显示数据 + } + }else{ + //收到普通测量值 + updateUI(new String(recBuff));//可直接显示数据 + } + + //收到频谱采集部分 + //recBuff 原始数据数组,CMDtype 返回数据类型,tag 数据长度 + System.out.println((recBuff.length)+"/"+CMDtype+"/"+tag); + } + }); + btnSubmit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + vibrationValue = etRealValue.getText().toString().trim(); + if(vibrationValue.equals("")){ + showToast("实际值不能为空"); + }else{ + AuditDialog auditDialog = new AuditDialog(context, "确定要保存数据吗?", new AuditDialog.AuditDialogListener() { + @Override + public void confirm() { + + if (isEdit) { + if(!etRealValue.getText().toString().trim().equals("")){ + ContentValues values = new ContentValues(); + values.put("smfs", smfs); + values.put("checked", true); + values.put("CJJG", vibrationValue); + values.put("DATE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + DataSupport.updateAll(XSJJHDataBean.class, values, "scid = ? and username = ?",xSJJHDataBean.getScid(),username); + Intent intent = new Intent(Contans.ACTION_YULONE); + intent.putExtra(Contans.KEY_NAME, vibrationValue); + intent.putExtra(Contans.SCID, xSJJHDataBean.getScid()); + //发送广播 + sendBroadcast(intent); + } + } + Intent intent = new Intent(); + intent.putExtra("value", vibrationValue); + intent.putExtra("checkType", checkType); + setResult(RESULT_OK, intent); + finish(); + } + + @Override + public void cancel() { + + } + }); + auditDialog.show(); + } + } + }); + rgLevel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (i){ + case R.id.rb1: + level = 0; + if(isEdit){ + demo();//测量 + } + break; + case R.id.rb2: + level = 1; + if(isEdit){ + demo();//测量 + } + break; + } + } + }); + rgType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (i){ + case R.id.rb3: + checkVibrationType = MTnativeInterface.CMD_VIBD_R; + etRealTitle.setText("实际值(mm):"); + if(isEdit){ + demo();//测量 + } + break; + case R.id.rb4: + checkVibrationType = MTnativeInterface.CMD_VIBV_R; + etRealTitle.setText("实际值(mm/s):"); + if(isEdit){ + demo();//测量 + } + break; + case R.id.rb5: + checkVibrationType = MTnativeInterface.CMD_VIBA_R; + etRealTitle.setText("实际值(mm/(s^2)):"); + if(isEdit){ + demo();//测量 + } + break; + } + } + }); + noticeValue.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + //Toast.makeText(context, "onLongClick", Toast.LENGTH_SHORT).show(); + EditDialog editDialog = new EditDialog(context); + editDialog.setMessage(noticeValue.getText().toString().trim()); + editDialog.setYesOnclickListener("确定", new EditDialog.onYesOnclickListener() { + @Override + public void onYesClick(String phone) { + if (!TextUtils.isEmpty(phone)) { + noticeValue.setText(phone); + } + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.setNoOnclickListener("取消", new EditDialog.onNoOnclickListener() { + @Override + public void onNoClick() { + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.show(); + return false; + } + }); + } + + @Override + public void initData() { + Bundle bundle = CheckVibrationActivity.this.getIntent().getExtras(); + if (bundle != null) { + smfs = bundle.getString("smfs"); + xSJJHDataBean = bundle.getParcelable("xSJJHDataBean"); + Gson gson=new Gson(); + Log.i("app",gson.toJson(xSJJHDataBean)); + if(xSJJHDataBean.getSb()!=null){ + checkTip.setText(xSJJHDataBean.getSb()); + } + if(xSJJHDataBean.getBJMC()!=null){ + standerTip.setText(xSJJHDataBean.getBJMC()); + } + if(xSJJHDataBean.getCJJG()!=null){ + etRealValue.setText(xSJJHDataBean.getCJJG()); + } + } + } + + @Override + protected void onResume() { + //demo();//测量 + super.onResume(); + } + + @Override + protected void onPause() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onPause(); + } + + public void demo(){ + /*=======测振示例,参数说明见“说明文档.txt”================================================================*/ + mt.VIBopen();//开启电源。 + //振动值测量。(振动值测量和频谱采集同时只能使用其中一个) + //读振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBA_R 振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBD_R 振动位移 + //CMD_VIBA_R 振动速度 + mt.VIBread(checkVibrationType,level); + } + + public void updateUI(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if(info!=null){ + if(etRealValue!=null){ + etRealValue.setText(info); + } + } + } + }); + } + + @Override + protected void onDestroy() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onDestroy(); + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/ContactFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/ContactFragment.java new file mode 100755 index 0000000..2c9dec7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/ContactFragment.java @@ -0,0 +1,208 @@ +package com.rehome.scbaxj.activity; + +import android.content.Intent; +import android.net.Uri; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.widget.AbsListView; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.ContactAdapter; +import com.rehome.scbaxj.base.BaseCallBack; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.ContactListBean; +import com.rehome.scbaxj.utils.ContactDatas; +import com.rehome.scbaxj.utils.HttpUtils; +import com.rehome.scbaxj.weight.ClearEditText; +import com.rehome.scbaxj.weight.ListDialog; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Response; + + +/** + * 通讯录 + */ + +public class ContactFragment extends BaseFragment { + + private static ContactFragment instance = null; + ListView lv; + ClearEditText etSearch; + TextView tvDeptName; + + private ContactAdapter adapter; + + public List datas; + private List initDatas; + + public static ContactFragment getInstance() { + if (instance == null) { + instance = new ContactFragment(); + } + return instance; + } + + @Override + public int getContentViewId() { + return R.layout.fragment_contact; + } + + @Override + public void onDetach() { + super.onDetach(); + instance = null; + } + + @Override + protected void initView() { + lv = view.findViewById(R.id.lv); + etSearch = view.findViewById(R.id.et_search); + tvDeptName = view.findViewById(R.id.tv_dept_name); + } + + + @Override + public void initData() { + + datas = new ArrayList<>(); + initDatas = new ArrayList<>(); + +// getDatas(); + + etSearch.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + filterData(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + + private void filterData(String str) { + List filters = new ArrayList<>(); + + if (initDatas.size() != 0) { + + if (TextUtils.isEmpty(str)) { + filters.addAll(initDatas); + } else { + for (ContactListBean.RowsBean.OrderlistBean bean : initDatas) { + if (bean.getName().contains(str) || + bean.getAddress_tel().contains(str) || + bean.getTelephone().contains(str) || bean.getGroupName().contains(str)) { + + filters.add(bean); + } + } + } + datas.clear(); + datas.addAll(filters); + adapter.notifyDataSetChanged(); + } + } + + public void getDatas() { + + HttpUtils.getApi().getContactList().enqueue(new BaseCallBack(getContext()) { + @Override + public void onSuccess(Call call, Response response) { + + datas.clear(); + initDatas.clear(); + + ContactListBean bean = response.body(); + if (bean != null) { + datas.addAll(ContactDatas.getContanctList(response.body())); + initDatas.addAll(ContactDatas.getContanctList(response.body())); + if (datas.size() != 0) { + setAdapter(); + tvDeptName.setVisibility(View.VISIBLE); + } + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + }); + } + + private void setAdapter() { + + if (adapter == null) { + adapter = new ContactAdapter(getContext(), datas); + + lv.setAdapter(adapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + String telephone = datas.get(position).getTelephone(); + String address_tel = datas.get(position).getAddress_tel(); + List list = new ArrayList(); + if (!TextUtils.isEmpty(telephone)) { + list.add(telephone); + } + if (!TextUtils.isEmpty(address_tel)) { + String[] tels = address_tel.split(","); + for (String tel : tels) { + list.add(tel); + } + } + + if (list.size() != 0) { + ListDialog dialog = new ListDialog(getContext(), list, new ListDialog.ListDialogListener() { + @Override + public void selectText(String text, int position) { + Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + text)); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + + }); + dialog.setTvTitle("选择要拨打的电话"); + dialog.show(); + } else { + showToast("没有该联系人电话"); + } + } + }); + + lv.setOnScrollListener(new AbsListView.OnScrollListener() { + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (datas.size() != 0) { + ContactListBean.RowsBean.OrderlistBean itme = datas.get(firstVisibleItem); + tvDeptName.setText(itme.getGroupName()); + } + } + }); + + } else { + adapter.notifyDataSetChanged(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CustomDialogActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CustomDialogActivity.java new file mode 100644 index 0000000..0774018 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/CustomDialogActivity.java @@ -0,0 +1,158 @@ +package com.rehome.scbaxj.activity; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.view.View; +import android.view.Window; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rinsun.mtdriver.MTnativeInterface; + +public class CustomDialogActivity extends Activity { + private TextView title; + private TextView msg; + private TextView btnStart; + private TextView btnClose; + + MTnativeInterface mt = MTnativeInterface.getInstance();//获取传感器调用接口 + String type = "7"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //必须在调用setContentView()之前调用requestWindowFeature() + //requestWindowFeature(Window.FEATURE_LEFT_ICON);//要标题栏显示图标 + //全屏操作,一定要放在加载根view之前 + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT); + setContentView(R.layout.dialog_activity); + initView(); + initData(); + } + + private void initView(){ + title = findViewById(R.id.tv_title); + msg = findViewById(R.id.tv_msg); + btnClose = findViewById(R.id.dialog_commit); + btnStart = findViewById(R.id.dialog_cancel); + btnStart.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(type.equals("7")){ + startCheckTemp(); + } + if(type.equals("11")){ + startCheckVibration(); + } + } + }); + btnClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + finish(); + } + }); + + //回调函数(自动返回数据)。CMDtype:数据类型,参数说明见“说明文档.txt” + mt.setOnReceiveListener(new MTnativeInterface.OnReceiveListener() { + @Override + public void onShowMessage(byte[] recBuff, int CMDtype, int tag) { + /* 根据CMDtype区分数据类型,普通测量值/频谱数据/配置数据。如果10秒没读到数据会返回超时提示并关闭电源 */ + System.out.println("-------------"); + System.out.println(new String(recBuff) + "/" + CMDtype + "/" + tag); + if (CMDtype == MTnativeInterface.CMD_VIBD_R) { + //收到普通测量值 + updateUIByVibration(new String(recBuff));//可直接显示数据 + } + if (CMDtype == MTnativeInterface.CMD_TEMP_R) { + //收到普通测量值 + updateUIByTemp(new String(recBuff));//可直接显示数据 + } + } + }); + } + private void initData() { + Intent intent = getIntent(); + type = intent.getStringExtra("type"); + if(type.equals("7")){ + title.setText("测温" + "(℃)"); + } + if(type.equals("11")){ + title.setText("测振" + "(mm)"); + } + } + public void startCheckTemp() { + /*=====测温示例,参数说明见“说明文档.txt”=================================================================*/ + mt.IRTopen(MTnativeInterface.TEMP_25);//开启电源。 + mt.IRTread(95); + } + + public void startCheckVibration() { + /*=======测振示例,参数说明见“说明文档.txt”================================================================*/ + mt.VIBopen();//开启电源。 + //振动值测量。(振动值测量和频谱采集同时只能使用其中一个) + //读振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBA_R 振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBD_R 振动位移 + //CMD_VIBA_R 振动速度 + mt.VIBread(MTnativeInterface.CMD_VIBD_R, 0); + } + @Override + protected void onPause() { + super.onPause(); + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + } + + @Override + protected void onResume() { + super.onResume(); + if(type.equals("7")){ + title.setText("测温" + "(℃)"); + } + if(type.equals("11")){ + title.setText("测振" + "(mm)"); + } + } + @Override + public void onDestroy() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onDestroy(); + } + public void updateUIByTemp(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (info != null) { + msg.setText(info); + } + } + }); + } + + public void updateUIByVibration(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (info != null) { + msg.setText(info); + } + } + }); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/LoginActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/LoginActivity.kt new file mode 100644 index 0000000..6e4ae4e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/LoginActivity.kt @@ -0,0 +1,393 @@ +package com.rehome.scbaxj.activity + + +import android.annotation.SuppressLint +import android.content.Intent +import android.content.pm.PackageInfo +import android.content.pm.PackageManager +import android.graphics.Color +import android.os.Build +import android.os.Looper +import android.provider.Settings +import android.text.TextUtils +import android.util.Log +import android.view.KeyEvent +import com.android.volley.toolbox.StringRequest +import com.android.volley.toolbox.Volley +import com.azhon.appupdate.listener.OnButtonClickListener +import com.azhon.appupdate.listener.OnDownloadListener +import com.azhon.appupdate.manager.DownloadManager +import com.google.gson.Gson +import com.rehome.scbaxj.R +import com.rehome.scbaxj.base.BaseActivityAutoToolbarViewBinding +import com.rehome.scbaxj.bean.ApkUpdateBean +import com.rehome.scbaxj.bean.PhoneInfo +import com.rehome.scbaxj.bean.UserInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityLoginBinding +import com.rehome.scbaxj.utils.* +import com.tencent.bugly.crashreport.CrashReport +import com.yanzhenjie.permission.AndPermission +import com.yanzhenjie.permission.runtime.Permission +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Response +import java.io.File +import java.text.SimpleDateFormat +import java.util.* +import kotlin.system.exitProcess + + +class LoginActivity : BaseActivityAutoToolbarViewBinding() { + + private lateinit var UserID: String + private lateinit var UserPwd: String + private var exitTime: Long = 0 + + private var manager: DownloadManager? = null + + override fun getViewBinding() = ActivityLoginBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + @SuppressLint("SetTextI18n") + override fun initView() { + + setPermission() //设置权限 + binding.tvVersion.text = "版本V" + getVersionName() + StatusBarUtil.transparencyBar(this) //设置透明状态栏 + UserID = SPUtils.get(this, Contans.USERID, "") as String + UserPwd = SPUtils.get(this, Contans.USERPWD, "") as String + val save = SPUtils.get(this, "save", true) as Boolean + +// Log.i("app", UserID) +// Log.i("app", UserPwd) +// Log.i("app", save.toString()) + binding.savePwUser.isChecked = save + binding.etUse.setText(UserID) + if (save) { + binding.etPwd.setText(UserPwd) + } + +// binding.etUse.setText("BA001") +// binding.etPwd.setText("BA001") + +// binding.etUse.setText("XF001") +// binding.etPwd.setText("XF001") + +// binding.etUse.setText("FK001") +// binding.etPwd.setText("FK001") +// binding.etUse.setText("200644") +// binding.etPwd.setText("200644") + } + + override fun initData() { + CrashReport.putUserData(context, "UserName", UserID) + onclick() + val hasLogin = SPUtils.get(this, Contans.HASLOGIN, false) as Boolean + if (hasLogin) { + //检查最后登录时间,如果超过10天就不自动跳转到首页,需要重新登录 + if (checkLogin()) { + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + finish() + } + } else { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + checkUpdateApk() + } + } + } + + + private fun getVersionName(): String? { + val pm = packageManager + try { + val packageInfo = pm.getPackageInfoCompat(packageName) + return packageInfo.versionName + } catch (e: Exception) { + e.printStackTrace() + } + return null + } + + private fun PackageManager.getPackageInfoCompat( + packageName: String, + flags: Int = 0 + ): PackageInfo = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong())) + } else { + @Suppress("DEPRECATION") getPackageInfo(packageName, flags) + } + + private fun onclick() { + binding.btnLogin.setOnClickListener { + if (isLogin()) { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + onlineLogin() + } else { + offlineLogin() + //showToast("无wifi网络") + } + } + } + } + + private fun isLogin(): Boolean { + var result: Boolean = true; + if (TextUtils.isEmpty(binding.etUse.text.toString().trim())) { + showToast("用户名不能为空") + result = false + } else if (TextUtils.isEmpty(binding.etPwd.text.toString().trim())) { + showToast("密码不能为空") + result = false + } + return result + } + + @SuppressLint("SimpleDateFormat") + private fun checkLogin(): Boolean { + val lastLoginDate = SPUtils.get(this, Contans.LASTLOGINDATE, "") as String + //Log.i("app",lastLoginDate); + //lastLoginDate="2022年02月18日"; + //Log.i("app",lastLoginDate); + if (!TextUtils.isEmpty(lastLoginDate)) { + try { + //格式化日期的对象(转化成习惯的时间格式) + val sdFormat = SimpleDateFormat("yyyy年MM月dd日") + val date = sdFormat.parse(lastLoginDate) + val calendarOne = Calendar.getInstance() + if (date != null) { + calendarOne.time = date + } + if (!Calendar.getInstance().after(calendarOne)) { + return true + } + } catch (ignored: java.lang.Exception) { + } + } + return false + } + + private fun setPermission() { + AndPermission.with(this).runtime().permission( + Permission.READ_PHONE_STATE, + //Permission.WRITE_EXTERNAL_STORAGE, + //Permission.ACCESS_COARSE_LOCATION, + //Permission.READ_EXTERNAL_STORAGE, + //Permission.CAMERA + ).onGranted { data: List? -> }.onDenied { data: List? -> } + .start() + } + + private fun checkUpdateApk() { + val queue = Volley.newRequestQueue(this) + val url = Contans.IP + Contans.CHECK_UPDATA_APK + //Log.i("app", url) + + val stringRequest = StringRequest(url, + { response -> + //Log.i("app", isMainThread().toString()) + //Log.i("app", response!!) + val gson = Gson() + val apkUpdateBean: ApkUpdateBean = + gson.fromJson(response, ApkUpdateBean::class.java) + if (apkUpdateBean.total.equals("1")) { + val rowsBean: ApkUpdateBean.RowsBean = apkUpdateBean.rows[0] + val appURL: String = rowsBean.apkurl + val appVersionName: String = rowsBean.versionname + val versioncode: String = rowsBean.versioncode + val appDesc: String = rowsBean.appdesc + if (appVersionName != getVersionName()) { + downloadAndInstall(appURL, appVersionName, appDesc, versioncode) + } + } + }, + { error -> + Log.e("app", error.message, error) + Log.e("app", "调用自动更新接口,获取数据失败") + } + ) + queue.add(stringRequest) + } + + private fun downloadAndInstall( + downloadURL: String, + versionName: String, + description: String, + versionCode: String + ) { + manager = DownloadManager.Builder(this).run { + apkUrl(downloadURL) + apkName("沙C保安巡更.apk") + smallIcon(R.mipmap.logo1) + showNewerToast(true) + apkVersionCode(versionCode.toInt()) + apkVersionName(versionName) + apkDescription(description) + enableLog(true) + jumpInstallPage(true) + dialogButtonColor(Color.parseColor("#FF8247")) + dialogProgressBarColor(Color.parseColor("#FF8247")) + dialogButtonTextColor(Color.WHITE) + showNotification(true) + showBgdToast(true) + forcedUpgrade(true) + .onDownloadListener(object : OnDownloadListener { + override fun start() {} + override fun downloading(max: Int, progress: Int) {} + override fun done(apk: File) {} + override fun cancel() {} + override fun error(e: Throwable) {} + }).onButtonClickListener(object : OnButtonClickListener { + override fun onButtonClick(i: Int) {} + }) + build() + } + manager?.download() + } + + private fun isMainThread(): Boolean { + return Looper.getMainLooper().thread === Thread.currentThread() + } + + override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { + if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) { + if (System.currentTimeMillis() - exitTime > 2000) { + showToast("再按一次退出程序") + exitTime = System.currentTimeMillis() + } else { + NohttpUtils.getInstance().cancelAll() + ControllerActivity.getAppManager().finishAllActivity() + finish() + exitProcess(0) + } + return true + } + return super.onKeyDown(keyCode, event) + } + + private fun getPhoneInfo(): String { + val imei: String = Settings.System.getString(contentResolver, Settings.Secure.ANDROID_ID) + val model = Build.MODEL //手机型号 + val sysVersion = Build.VERSION.RELEASE //系统版本 + val info = PhoneInfo() + info.total = 1 + val list: MutableList = ArrayList() + val userInfo = PhoneInfo.UserInfo() + userInfo.imeinum = imei + userInfo.sysversion = sysVersion + userInfo.phonemodel = model + userInfo.phonenum = "" + userInfo.username = UiUtlis.getText(binding.etUse) + userInfo.password = UiUtlis.getText(binding.etPwd) + list.add(userInfo) + info.rows = list + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + + private val callback: HttpListener = object : HttpListener { + + @SuppressLint("SimpleDateFormat") + override fun onSucceed(what: Int, response: Response?) { + val json = response?.get() + val userInfo = GsonUtils.GsonToBean(json, UserInfo::class.java) + Log.i("app", Gson().toJson(userInfo)); + if (userInfo != null) { + val user = userInfo.rows[0] + val status = user.status + val username = user.usernames + when (status) { + "0" -> showToast("用户名或密码错误") + "1" -> { + SPUtils.put(context, "save", binding.savePwUser.isChecked) + SPUtils.put(context, Contans.USERID, binding.etUse.text.toString().trim()) + SPUtils.put(context, Contans.HASLOGIN, true) + SPUtils.put(context, Contans.USERPWD, binding.etPwd.text.toString().trim()) + SPUtils.put(context, Contans.USERNAME, username) + SPUtils.put(context, Contans.BZBH, if (user.bzbh == null) "" else user.bzbh) + SPUtils.put(context, Contans.BZMC, if (user.bzmc == null) "" else user.bzmc) + SPUtils.put( + context, + Contans.PERMISSIONSRESULT, + if (user.permissionsResult == null) "" else user.permissionsResult + ) + SPUtils.put(context, Contans.ZY, if (user.zy == null) "" else user.zy) + SPUtils.remove(context, Contans.NFCBM) + //格式化日期的对象(转化成习惯的时间格式) + val sdFormat = SimpleDateFormat("yyyy年MM月dd日") + //静态方法getInstance()使用默认时区和语言环境获得一个日历。 + val calendar = Calendar.getInstance() + //输出当前系统时间; + //System.out.println("当前系统时间: "+sdFormat.format(calendar.getTime())); + //add()增加日期,以天为单位(Calendar封装了很多静态的操作时间的单位) + //增加10天,负数则为减少天数 + calendar.add(Calendar.DATE, 10) + //输出增加10天后的时间; + //System.out.println("增加10天后的时间: "+sdFormat.format(calendar.getTime())); + //输出时间为2020年的第100天 + val date = sdFormat.parse(sdFormat.format(calendar.time)) + val calendarOne = Calendar.getInstance() + calendarOne.time = date + SPUtils.put( + context, + Contans.LASTLOGINDATE, + sdFormat.format(calendarOne.time) + ) + //System.out.println("加10天后的日期: "+sdFormat.format(calendarOne.getTime())); + //System.out.println("登录已失效: "+String.valueOf(Calendar.getInstance().after(calendarOne))); + val intent = Intent() + intent.setClass(context, MainActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + finish() + } + "2" -> showToast("登录异常...") + "3" -> showToast("未激活或未授权...") + "4" -> showToast("禁止登陆...") + } + } else { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + } + + private fun onlineLogin() { + val json: String = getPhoneInfo() + val url = Contans.IP + Contans.LOGIN + Log.i("app", url) + val request = NoHttp.createStringRequest(Contans.IP + Contans.LOGIN, RequestMethod.POST) + request.setDefineRequestBodyForJson(json) + NohttpUtils.getInstance().add(this, 0, request, callback, true, true, "登录中...") + } + + private fun offlineLogin() { + if (TextUtils.isEmpty(UserID)) { + showToast("首次登录请连接厂内WIFI") + } else { + if (UserID != binding.etUse.text.toString()) { + showToast("当前登录用户与上一次登录成功的用户不一致,请连接到wifi网络后再登录") + } else { + if (!TextUtils.isEmpty(UserPwd) && UserPwd == binding.etPwd.text.toString().trim() + ) { + SPUtils.put(context, "save", binding.savePwUser.isChecked) + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + finish() + } else { + showToast("用户名或密码错误") + } + } + } + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainActivity.kt new file mode 100644 index 0000000..8644b5e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainActivity.kt @@ -0,0 +1,1039 @@ +package com.rehome.scbaxj.activity + +import android.Manifest +import android.content.ComponentName +import android.content.Intent +import android.content.ServiceConnection +import android.content.pm.PackageInfo +import android.content.pm.PackageManager +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Build +import android.os.IBinder +import android.text.TextUtils +import android.util.Log +import android.view.KeyEvent +import android.view.View +import android.view.WindowManager +import android.widget.AdapterView +import android.widget.Toast +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import com.android.volley.toolbox.StringRequest +import com.android.volley.toolbox.Volley +import com.azhon.appupdate.listener.OnButtonClickListener +import com.azhon.appupdate.listener.OnDownloadListener +import com.azhon.appupdate.manager.DownloadManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.luck.picture.lib.entity.LocalMedia +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.R +import com.rehome.scbaxj.activity.hc.Model.DBDevice +import com.rehome.scbaxj.activity.hc.PreviewCamaraBySurfaceViewActivity +import com.rehome.scbaxj.activity.regular.RegularActivity +import com.rehome.scbaxj.activity.sbxj.BamjActivity +import com.rehome.scbaxj.activity.sbxj.XscbglActivity +import com.rehome.scbaxj.activity.xfxj.VisitFkAuditActivity +import com.rehome.scbaxj.activity.xfxj.XfmjActivity +import com.rehome.scbaxj.adapter.GridViewAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.bean.* +import com.rehome.scbaxj.bleUtil.BluetoothLeService +import com.rehome.scbaxj.bleUtil.BluetoothLeService.LocalBinder +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityMainBinding +import com.rehome.scbaxj.utils.* +import com.rehome.scbaxj.weight.AuditDialog +import com.rehome.scbaxj.weight.toastviewbymyself +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.OnResponseListener +import com.yolanda.nohttp.rest.RequestQueue +import com.yolanda.nohttp.rest.Response +import org.java_websocket.client.WebSocketClient +import org.java_websocket.drafts.Draft_6455 +import org.java_websocket.handshake.ServerHandshake +import org.litepal.crud.DataSupport +import java.io.File +import java.net.URI +import java.util.* + + +/** + * Create By HuangWenFei + * 创建日期:2023-02-06 16:24 + * 描述: + */ +class MainActivity : BaseActivityOaToolbarViewBinding() { + private val beanList: MutableList = mutableListOf() + private val str: MutableList = mutableListOf() + private val imageId: MutableList = mutableListOf() + private val colors: MutableList = mutableListOf() + + private lateinit var adapter: GridViewAdapter + private var flashUtil: FlashUtil? = null + private val CAMERA_REQUEST_CODE = 3 //请求码 + private var exitTime: Long = 0 + private var mBluetoothLeService: BluetoothLeService? = null + private var mWebSocketClient: WebSocketClient? = null + private var manager: DownloadManager? = null + + //定时器 + private var timer: Timer? = null + private lateinit var username: String + private lateinit var queueNoHttp: RequestQueue + var needUploadPhotoCount = 0 + var uploadPhotoSuccessCount = 0 + + private lateinit var m_dbDev: DBDevice + + override fun getViewBinding() = ActivityMainBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + username = SPUtils.get(context, Contans.USERID, "") as String + queueNoHttp = NoHttp.newRequestQueue(1) + m_dbDev = DBDevice.getInstance(this) + //initJavaWebSocket() + initTimer() + flashUtil = FlashUtil() + mToolbar.setBackgroundColor(Color.parseColor("#00000000")) + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) //设置透明状态栏 + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) //设置透明导航栏 + StatusBarUtil.transparencyBar(this) //设置透明状态栏 + binding.btnLogout.setOnClickListener(View.OnClickListener { + val auditDialog = + AuditDialog(context, "确定要退出登录吗?", object : AuditDialog.AuditDialogListener { + override fun confirm() { + SPUtils.put(context, Contans.HASLOGIN, false) + val intent = Intent(context, LoginActivity::class.java) + startActivity(intent) + finish() + } + + override fun cancel() {} + }) + auditDialog.show() + }) + } + + override fun initData() { + checkUpdateApk() + val permissionsResult: MutableList = this.getPermissionsResult() + Log.i("app", "---------") + Log.i("app", Gson().toJson(permissionsResult)) + var isApp_YXXJ = false + var isApp_RLXJ = false + for (permissions in permissionsResult) { + if (permissions == "App_YXXJ") { + str.add("运行巡检") + imageId.add(R.mipmap.icon6) + colors.add(R.drawable.radius_e3) + isApp_YXXJ = true + } + if (permissions == "App_RLXJ") { + str.add("燃料巡检") + imageId.add(R.mipmap.icon10) + colors.add(R.drawable.radius_b2) + isApp_RLXJ = true + } + if (permissions == "App_BAXJ") { + str.add("保安巡检") + imageId.add(R.mipmap.icon8) + colors.add(R.drawable.radius_e2) + str.add("保安免检管理") + imageId.add(R.mipmap.icon3) + colors.add(R.drawable.radius_b1) + } + if (permissions == "App_XFXJ") { + str.add("消防巡检") + imageId.add(R.mipmap.icon10) + colors.add(R.drawable.radius_d1) + str.add("消防免检管理") + imageId.add(R.mipmap.icon3) + colors.add(R.drawable.radius_a3) + } + if (permissions == "App_FKSH") { + str.add("访客审核") + imageId.add(R.mipmap.icon13) + colors.add(R.drawable.radius_b1) + }else{ + str.add("读取NFC") + imageId.add(R.mipmap.icon3) + colors.add(R.drawable.radius_a4) + } + } + str.add("摄像头预览") + imageId.add(R.mipmap.icon3) + colors.add(R.drawable.radius_a4) + + + + setAdapter() + val gattServiceIntent = Intent(this, BluetoothLeService::class.java) + bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE) + val usernames = SPUtils.get(this, Contans.USERNAME, "") as String + binding.tvLoginUser.text = "登录用户:$usernames" + } + + private fun initJavaWebSocket() { + val uri = URI.create("ws://192.168.2.18:8086/chat/android") + mWebSocketClient = object : WebSocketClient(uri, Draft_6455()) { + override fun onOpen(handshakedata: ServerHandshake) { + Log.e("JWebSocketClient", "==连接成功==") + } + + override fun onMessage(message: String) { + Log.i("JWebSocketClient", "onMessage:$message") + } + + override fun onClose(code: Int, reason: String, remote: Boolean) { + Log.i( + "JWebSocketClient", + "==WebSocket关闭=== code:\$code===== reason: \$reason==== wasClean: \$remote" + ) + } + + override fun onError(ex: Exception) { + Log.i("JWebSocketClient", "==连接失败==") + } + } + try { + mWebSocketClient?.connectBlocking() + if (mWebSocketClient?.isOpen == true) { + mWebSocketClient?.send("你好,websocket 发出的消息") + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun initTimer() { + try { + timer = Timer() + timer?.schedule(object : TimerTask() { + override fun run() { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //检查服务器连接状态 + checkServerConnectStatus() + if (mWebSocketClient?.isClosed == true) { + mWebSocketClient?.reconnect(); + } else { + if (mWebSocketClient?.isOpen == true) { + mWebSocketClient?.send("你好,websocket 发出的消息"); + } + } + } else { + Log.i("app", "无网络") + } + } + }, 30000, 30000) + // 设定指定的时间time,此处为10000毫秒 + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + override fun onResume() { + super.onResume() + if (timer == null) { + try { + timer = Timer() + timer?.schedule(object : TimerTask() { + override fun run() { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //检查服务器连接状态 + checkServerConnectStatus() + if (mWebSocketClient?.isClosed == true) { + mWebSocketClient?.reconnect(); + } else { + if (mWebSocketClient?.isOpen == true) { + mWebSocketClient?.send("你好,websocket 发出的消息"); + } + } + } else { + Log.i("app", "无网络") + } + } + }, 30000, 30000) + // 设定指定的时间time,此处为10000毫秒 + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + } + + private fun checkPermission() { + /** + * 检测 设备是否支持闪光灯 + */ + if (!packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) { + showToast("设备没有闪光灯,无法开启手电筒") + return + } + //动态权限申请 + if (ContextCompat.checkSelfPermission( + this, + Manifest.permission.CAMERA + ) != PackageManager.PERMISSION_GRANTED + ) { + //权限请求 + ActivityCompat.requestPermissions( + this, + arrayOf(Manifest.permission.CAMERA), + CAMERA_REQUEST_CODE + ) + } else { + flashUtil?.toggle(this) + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (CAMERA_REQUEST_CODE == requestCode) { + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + flashUtil?.toggle(this) + } else { + //权限拒绝 + Toast.makeText(this, "权限拒绝,无法打开闪光灯,请手动设置开启APP访问摄像头权限", Toast.LENGTH_SHORT).show() + } + } + } + + private fun setAdapter() { + beanList.addAll(getGridViewData(false)) + binding.gv.selector = ColorDrawable(Color.TRANSPARENT) + adapter = GridViewAdapter(this, beanList, ArrayList(), true) + binding.gv.adapter = adapter + binding.gv.onItemClickListener = + AdapterView.OnItemClickListener { parent: AdapterView<*>?, view: View, position: Int, id: Long -> + val holder = view.tag as GridViewAdapter.ViewHolder + val iconText = holder.tv.text as String + if (iconText == "运行巡检") { + val intentTemp = Intent(context, XscbglActivity::class.java) + intentTemp.putExtra("type", "YX") + startActivity(intentTemp) + } else if (iconText == "燃料巡检") { + val intentTemp = Intent(context, XscbglActivity::class.java) + intentTemp.putExtra("type", "RL") + startActivity(intentTemp) + } else if (iconText == "运行定期") { + val intentTemp = Intent(context, RegularActivity::class.java) + intentTemp.putExtra("type", "YX") + startActivity(intentTemp) + } else if (iconText == "燃料定期") { + val intentTemp = Intent(context, RegularActivity::class.java) + intentTemp.putExtra("type", "RL") + startActivity(intentTemp) + } else if (iconText == "读取NFC") { + startActivity(NfcinfoKotlinActivity::class.java) + //startActivity(NfcTestActivity.class); + } else if (iconText == "测温") { + val intentTemp = + Intent(context, CustomDialogActivity::class.java) + intentTemp.putExtra("type", "7") + startActivity(intentTemp) + } else if (iconText == "测振") { + val intentVibration = + Intent(context, CustomDialogActivity::class.java) + intentVibration.putExtra("type", "11") + startActivity(intentVibration) + } else if (iconText == "保安巡检") { + val intentTemp = Intent(context, XscbglActivity::class.java) + intentTemp.putExtra("type", "BA") + startActivity(intentTemp) + }else if (iconText == "保安免检管理") { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + val intentTemp = Intent(context, BamjActivity::class.java) + intentTemp.putExtra("type", "BA") + startActivity(intentTemp) + } else { + Log.i("app", "无网络") + showToast("没有连接到wifi,当前功能需要依赖网络环境,请检查网络连接") + } + }else if (iconText == "消防巡检") { + val intentTemp = Intent(context, XscbglActivity::class.java) + intentTemp.putExtra("type", "XF") + startActivity(intentTemp) + }else if (iconText == "消防免检管理") { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + val intentTemp = Intent(context, XfmjActivity::class.java) + intentTemp.putExtra("type", "XF") + startActivity(intentTemp) + } else { + Log.i("app", "无网络") + showToast("没有连接到wifi,当前功能需要依赖网络环境,请检查网络连接") + } + }else if (iconText == "访客审核") { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //val intentTemp = Intent(context, VisitAuditActivity::class.java) + val intentTemp = Intent(context, VisitFkAuditActivity::class.java) + intentTemp.putExtra("type", "FKSH") + startActivity(intentTemp) + } else { + Log.i("app", "无网络") + showToast("没有连接到wifi,当前功能需要依赖网络环境,请检查网络连接") + } + } else if (iconText == "手电筒") { + checkPermission() + } else if (iconText == "摄像头预览") { + val intentTemp = Intent(context, PreviewCamaraBySurfaceViewActivity::class.java) + intentTemp.putExtra("type", "FKSH") + startActivity(intentTemp) + } + } + } + + private fun getPermissionsResult(): MutableList { + val item: MutableList = mutableListOf() + val result = SPUtils.get(context, Contans.PERMISSIONSRESULT, "") as String + item.addAll(stringToList(result)) + return item + } + + private fun stringToList(strs: String): MutableList { + val str = strs.split(";".toRegex()).toTypedArray() + val item: MutableList = mutableListOf() + item.addAll(str) + return item + } + + private fun getGridViewData(isTask: Boolean): List { + val datas: MutableList = mutableListOf() + for (i in str.indices) { + val bean = GridViewBean() + bean.title = str[i] + bean.backgroup = colors[i] + bean.imageid = imageId[i] + bean.isShow = false + if (i == 4) { + bean.isShow = isTask + } + datas.add(bean) + } + return datas + } + + override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { + if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) { + if (System.currentTimeMillis() - exitTime > 2000) { + toastviewbymyself.makeText(context, "再按一次退出程序", Toast.LENGTH_LONG).show() + exitTime = System.currentTimeMillis() + } else { + finish() + System.exit(0) + AppManager.getAppManager().AppExit(this) + } + return true + } + return super.onKeyDown(keyCode, event) + } + + private val mServiceConnection: ServiceConnection = object : ServiceConnection { + override fun onServiceConnected(componentName: ComponentName, service: IBinder) { + mBluetoothLeService = (service as LocalBinder).service + } + + override fun onServiceDisconnected(componentName: ComponentName) { + mBluetoothLeService = null + } + } + + // @Override + // protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + // super.onActivityResult(requestCode, resultCode, data); + // if (resultCode == RESULT_OK) { + // String temperatureValue = data.getStringExtra("value"); + // if (temperatureValue != null) { + // //先判断是哪个页面返回过来的 + // switch (requestCode) { + // case REQUEST_CHECK_TEMPERATURE: + // //测温 + // //成功了 + // Toast.makeText(MainActivityJava.this, temperatureValue, Toast.LENGTH_SHORT).show(); + // break; + // case REQUEST_CHECK_VIBRATION: + // //测振 + // //成功了 + // Toast.makeText(MainActivityJava.this, temperatureValue, Toast.LENGTH_SHORT).show(); + // break; + // } + // } + // } + // } + override fun onDestroy() { + // 主动关闭通道 + if (mWebSocketClient != null) { + mWebSocketClient?.close() + mWebSocketClient = null + } + if (timer != null) { + timer?.cancel() + } + if (mBluetoothLeService != null) { + mBluetoothLeService?.disconnect() + mBluetoothLeService?.close() + unbindService(mServiceConnection) + } + flashUtil?.finishFlashUtils() + val intent = Intent(this, BluetoothLeService::class.java) + stopService(intent) + super.onDestroy() + } + + private fun checkUpdateApk() { + val queue = Volley.newRequestQueue(this) + val url = Contans.IP + Contans.CHECK_UPDATA_APK + //Log.i("app", url) + val stringRequest = StringRequest(url, + { response -> + //Log.i("app", response) + val gson = Gson() + val apkUpdateBean: ApkUpdateBean = + gson.fromJson(response, ApkUpdateBean::class.java) + if (apkUpdateBean.total.equals("1")) { + val rowsBean: ApkUpdateBean.RowsBean = apkUpdateBean.rows[0] + val appURL: String = rowsBean.apkurl + val appVersionName: String = rowsBean.versionname + val versioncode: String = rowsBean.versioncode + val appDesc: String = rowsBean.appdesc + if (appVersionName != getVersionName()) { + downloadAndInstall(appURL, appVersionName, appDesc, versioncode) + } + } + }, + { error -> + Log.e("app", error.message, error) + Log.e("app", "调用自动更新接口,获取数据失败") + } + ) + queue.add(stringRequest) + } + + private fun getVersionName(): String? { + val pm = packageManager + try { + val packageInfo = pm.getPackageInfoCompat(packageName) + return packageInfo.versionName + } catch (e: Exception) { + e.printStackTrace() + } + return null + } + + private fun PackageManager.getPackageInfoCompat( + packageName: String, + flags: Int = 0 + ): PackageInfo = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong())) + } else { + @Suppress("DEPRECATION") getPackageInfo(packageName, flags) + } + + private fun downloadAndInstall( + downloadURL: String, + versionName: String, + description: String, + versionCode: String + ) { + manager = DownloadManager.Builder(this).run { + apkUrl(downloadURL) + apkName("沙C保安巡更.apk") + smallIcon(R.mipmap.logo1) + showNewerToast(true) + apkVersionCode(versionCode.toInt()) + apkVersionName(versionName) + apkDescription(description) + enableLog(true) + jumpInstallPage(true) + dialogButtonColor(Color.parseColor("#FF8247")) + dialogProgressBarColor(Color.parseColor("#FF8247")) + dialogButtonTextColor(Color.WHITE) + showNotification(true) + showBgdToast(true) + forcedUpgrade(true) + .onDownloadListener(object : OnDownloadListener { + override fun start() {} + override fun downloading(max: Int, progress: Int) {} + override fun done(apk: File) {} + override fun cancel() {} + override fun error(e: Throwable) {} + }).onButtonClickListener(object : OnButtonClickListener { + override fun onButtonClick(i: Int) {} + }) + build() + } + manager?.download() + } + + //检查服务器连接状态 + private fun checkServerConnectStatus() { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.SERVER_CONNECT_CHECK, RequestMethod.GET) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, BmBean::class.java) + if (bean != null && bean.state == 1) { + //保安自动上传 + checkCanUpLoadXj() + //消防自动上传 + checkCanUpLoadXf() + } + } + + override fun onFailed(what: Int, response: Response?) { + } + }) + } + + //检查保安是否有计划已巡检完 + private fun checkCanUpLoadXj() { + needUploadPhotoCount = 0 + uploadPhotoSuccessCount = 0 + val dbxjjh: MutableList = ArrayList() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", "BA", username) + .find( + Xjjh::class.java + ) + ) + val dbxjjhCanUpload: MutableList = ArrayList() + val qydDataListCanUpload: MutableList = ArrayList() + val qydDataListNeedUploadPhoto: MutableList = ArrayList() + for (i in dbxjjh.indices) { + val xjjh = dbxjjh[i] + val qydDataList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHXZDataBean::class.java + ) + if (qydDataList != null && qydDataList.size > 0) { + val countQydData = qydDataList.size + var countQydChecked = 0 + for (itemQyd in qydDataList) { + //已检 + if (itemQyd.isBAChecked) { + countQydChecked++ + } + } + if (countQydData == countQydChecked) { + dbxjjhCanUpload.add(xjjh) + qydDataListCanUpload.addAll(qydDataList) + } + } + } + if (dbxjjhCanUpload.size > 0) { + Log.i("app", "可上传") + for (itemQyd in qydDataListCanUpload) { + //有图片需要上传 + if (!TextUtils.isEmpty(itemQyd.photos)) { + needUploadPhotoCount++ + qydDataListNeedUploadPhoto.add(itemQyd) + } + } + //有图片需要上传 + if (qydDataListNeedUploadPhoto.size > 0) { + //上传有图片的区域 + for (itemQyd in qydDataListNeedUploadPhoto) { + uploadPhotoXj(itemQyd, dbxjjhCanUpload) + } + } else { + //不需要上传图片,直接上传数据 + uploadXj(dbxjjhCanUpload) + } + } else { + Log.i("app", "不可上传") + } + } + + //保安上传照片 + private fun uploadPhotoXj(itemQyd: XSJJHXZDataBean, dbxjjhCanUpload: List) { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.BA_UPLOAD_PHOTO_URL, RequestMethod.POST) + request.add("Action", "BAXJ") + request.add("SCID", itemQyd.scid) + val gson = Gson() + val mDataTemp = gson.fromJson>( + itemQyd.photos, + object : TypeToken?>() {}.type + ) + for (localMedia in mDataTemp) { + Log.i("app", Gson().toJson(localMedia)) + if(localMedia.compressPath!=null){ + request.add("file", File(localMedia.compressPath)) + }else{ + if(localMedia.sandboxPath!=null){ + request.add("file", File(localMedia.sandboxPath)) + } + } + } + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, BmBean::class.java) + if (bean != null && bean.state == 1) { + uploadPhotoSuccessCount++ + if (uploadPhotoSuccessCount == needUploadPhotoCount) { + Log.i("app", "图片上传完成") + uploadXj(dbxjjhCanUpload) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + } + }) + } + + //上传保安巡检计划 + private fun uploadXj(dbxjjhCanUpload: List) { + for (xjjh in dbxjjhCanUpload) { + val scxjjhbean = ScxjjhBean() + scxjjhbean.action = "BA_XJGL_RWSC_SET" + scxjjhbean.qzwc = 0 + scxjjhbean.zxid = xjjh.zxid + val xsjjhdatabeanList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHXZDataBean::class.java + ) + val datalist: MutableList = ArrayList() + for (j in xsjjhdatabeanList.indices) { + val datas = ScxjjhBean.data() + datas.scid = xsjjhdatabeanList[j].scid + datas.dbh = xsjjhdatabeanList[j].qybh + if (xsjjhdatabeanList[j].isBAChecked) { + if(TextUtils.isEmpty(xsjjhdatabeanList[j].cbsz)){ + datas.cbsz = "正常" + }else{ + datas.cbsz = xsjjhdatabeanList[j].cbsz + } + } else { + datas.cbsz = "" + } + if (xsjjhdatabeanList[j].date == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].date + } + datas.zcmc = SPUtils.get(context, Contans.BZBH, "") as String + datas.cbr = SPUtils.get(context, Contans.USERID, "") as String + if (xsjjhdatabeanList[j].fxnr == null) { + datas.fxnr = "" + } else { + datas.fxnr = xsjjhdatabeanList[j].fxnr + } + if (xsjjhdatabeanList[j].smfs != null) { + datas.smfx = xsjjhdatabeanList[j].smfs + } else { + datas.smfx = "" + } + if (xsjjhdatabeanList[j].djsj == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].djsj + } + datalist.add(datas) + } + scxjjhbean.data = datalist + val json = GsonUtils.GsonString(scxjjhbean) + val request = NoHttp.createStringRequest( + Contans.IP + Contans.XSCB_PLAN_BA_UPLOAD, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + queueNoHttp.add(2, request, object : OnResponseListener { + override fun onStart(what: Int) { + + } + + override fun onSucceed(what: Int, response: Response?) { + val gson = Gson() + val result = response?.get() + if (result != null) { + Log.i("app", gson.toJson(result)) + } + val info = GsonUtils.GsonToBean(result, StatusInfo2::class.java) + if (info != null) { + try { + if (what == 2) { + if (info.state == 1) { + //成功 + showToast("上传数据成功") + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + sendBroadcast(intent) + } else { + showToast("上传数据失败") + } + } + } catch (e: java.lang.Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + + } + }) + } + } + + //检查消防是否有计划已巡检完 + private fun checkCanUpLoadXf() { + needUploadPhotoCount = 0 + uploadPhotoSuccessCount = 0 + val dbxjjh: MutableList = ArrayList() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", "XF", username) + .find( + Xjjh::class.java + ) + ) + val dbxjjhCanUpload: MutableList = ArrayList() + val qydDataListCanUpload: MutableList = ArrayList() + val qydDataListNeedUploadPhoto: MutableList = ArrayList() + for (i in dbxjjh.indices) { + val xjjh = dbxjjh[i] + val qydDataList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHDataBean::class.java + ) + if (qydDataList != null && qydDataList.size > 0) { + val countQydData = qydDataList.size + var countQydChecked = 0 + for (itemQyd in qydDataList) { + //已检 + if (itemQyd.isChecked) { + countQydChecked++ + } + } + if (countQydData == countQydChecked) { + dbxjjhCanUpload.add(xjjh) + qydDataListCanUpload.addAll(qydDataList) + } + } + } + if (dbxjjhCanUpload.size > 0) { + Log.i("app", "可上传") + for (itemQyd in qydDataListCanUpload) { + //有图片需要上传 + if (!TextUtils.isEmpty(itemQyd.photos)) { + needUploadPhotoCount++ + qydDataListNeedUploadPhoto.add(itemQyd) + } + } + //有图片需要上传 + if (qydDataListNeedUploadPhoto.size > 0) { + //上传有图片的区域 + for (itemQyd in qydDataListNeedUploadPhoto) { + uploadPhotoXf(itemQyd, dbxjjhCanUpload) + } + } else { + //不需要上传图片,直接上传数据 + uploadXf(dbxjjhCanUpload) + } + } else { + Log.i("app", "不可上传") + } + } + + //消防上传照片 + private fun uploadPhotoXf(itemQyd: XSJJHDataBean, dbxjjhCanUpload: List) { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.XF_UPLOAD_PHOTO_URL, RequestMethod.POST) + request.add("Action", "XFXJ") + request.add("SCID", itemQyd.scid) + val gson = Gson() + val mDataTemp = gson.fromJson>( + itemQyd.photos, + object : TypeToken?>() {}.type + ) + for (localMedia in mDataTemp) { + Log.i("app", Gson().toJson(localMedia)) + if(localMedia.compressPath!=null){ + request.add("file", File(localMedia.compressPath)) + }else{ + if(localMedia.sandboxPath!=null){ + request.add("file", File(localMedia.sandboxPath)) + } + } + } + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, BmBean::class.java) + if (bean != null && bean.state == 1) { + uploadPhotoSuccessCount++ + if (uploadPhotoSuccessCount == needUploadPhotoCount) { + Log.i("app", "图片上传完成") + uploadXf(dbxjjhCanUpload) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + } + }) + } + + //上传消防巡检计划 + private fun uploadXf(dbxjjhCanUpload: List) { + for (xjjh in dbxjjhCanUpload) { + val scxjjhbean = ScxjjhBean() + scxjjhbean.action = "XF_XJGL_RWSC_SET" + scxjjhbean.qzwc = 0 + scxjjhbean.zxid = xjjh.zxid + val xsjjhdatabeanList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHDataBean::class.java + ) + val datalist: MutableList = mutableListOf() + for (j in xsjjhdatabeanList.indices) { + val datas = ScxjjhBean.data() + datas.scid = xsjjhdatabeanList[j].scid + if (xsjjhdatabeanList[j].dbh != null) { + datas.dbh = xsjjhdatabeanList[j].dbh + } else { + datas.dbh = "" + } + if (xsjjhdatabeanList[j].cjjg == null) { + datas.cbsz = "" + } else { + datas.cbsz = xsjjhdatabeanList[j].cjjg + } + if (xsjjhdatabeanList[j].date == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].date + } + if (xsjjhdatabeanList[j].smfs != null) { + datas.smfx = xsjjhdatabeanList[j].smfs + } else { + datas.smfx = "" + } + if (xsjjhdatabeanList[j].fxnr != null) { + datas.fxnr = xsjjhdatabeanList[j].fxnr + } else { + datas.fxnr = "" + } + datas.zcmc = SPUtils.get(context, Contans.BZBH, "") as String + datas.cbr = SPUtils.get(context, Contans.USERID, "") as String + datalist.add(datas) + } + scxjjhbean.data = datalist + val json = GsonUtils.GsonString(scxjjhbean) + val url = Contans.IP + Contans.XF_PLAN_BA_UPLOAD + Log.i("app",url) + Log.i("app",json) + val request = NoHttp.createStringRequest( + url, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + queueNoHttp.add(3, request, object : OnResponseListener { + override fun onStart(what: Int) { + + } + + override fun onSucceed(what: Int, response: Response?) { + val gson = Gson() + val result = response?.get() + if (result != null) { + Log.i("app", gson.toJson(result)) + } + val info = GsonUtils.GsonToBean(result, StatusInfo2::class.java) + if (info != null) { + try { + if (what == 3) { + if (info.state == 1) { + //成功 + showToast("上传数据成功") + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + sendBroadcast(intent) + } else { + showToast("上传数据失败") + } + } + } catch (e: java.lang.Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + + } + }) + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainFragment.java new file mode 100755 index 0000000..48d1250 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MainFragment.java @@ -0,0 +1,171 @@ +package com.rehome.scbaxj.activity; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.sbxdj.MainSbxdjglActivity; +import com.rehome.scbaxj.adapter.GridViewAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.BasicDataBean; +import com.rehome.scbaxj.bean.GridViewBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.service.PushService; +import com.rehome.scbaxj.utils.AutoToolbar; +import com.rehome.scbaxj.utils.SPUtils; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/4/2. + */ + +public class MainFragment extends BaseFragment { + + private static MainFragment instance = null; + AutoToolbar toolbar; + GridView gv; + private List beanList = new ArrayList<>(); + private GridViewAdapter adapter; + private boolean isTask = false;//是否有任务 + private String[] str = {"点检",}; + private int[] imageId = {R.mipmap.icon8}; + private int[] colors = {R.drawable.radius_a1}; + + private List item; + private List dialogDatas; + private List zys; + + public static MainFragment getInstance() { + if (instance == null) { + instance = new MainFragment(); + } + return instance; + } + + @Override + public int getContentViewId() { + return R.layout.fragment_main; + } + + @Override + protected void initView() { + gv = view.findViewById(R.id.gv); + toolbar = view.findViewById(R.id.toolbar); + } + + public void initData() { + + + zys = new ArrayList<>(); + dialogDatas = new ArrayList<>(); + item = new ArrayList<>(); + item.addAll(PermissionsResult()); + checkPush(); + + beanList.clear(); + beanList.addAll(getGridViewData(isTask)); + + gv.setSelector(new ColorDrawable(Color.TRANSPARENT)); + adapter = new GridViewAdapter(getActivity(), beanList, item, true); + gv.setAdapter(adapter); + + gv.setOnItemClickListener((parent, view, position, id) -> { + Intent intent; + switch (position) { + case 0: + intent = new Intent(getActivity(), MainSbxdjglActivity.class); + startActivity(intent); + break; + case 1: + } + }); + + } + + + + private List PermissionsResult() { + + List item = new ArrayList<>(); + + + try { + String result = (String) SPUtils.get(context, Contans.PERMISSIONSRESULT, ""); + + if (!result.isEmpty()) { + String[] results = result.split(";"); + item.add(0); + item.add(1); + item.add(2); + item.add(3); + item.add(4); + + } + } catch (Exception e) { + } + return item; + } + + + /** + * @param isTask 是否有行为安全观察任务 + * @return + */ + private List getGridViewData(boolean isTask) { + + List datas = new ArrayList<>(); + for (int i = 0; i < str.length; i++) { + GridViewBean bean = new GridViewBean(); + bean.setTitle(str[i]); + bean.setBackgroup(colors[i]); + bean.setImageid(imageId[i]); + bean.setShow(false); + datas.add(bean); + } + + return datas; + } + + //检查系统是否有任务推送 + private void checkPush() { + + int[] whats = new int[]{1, 0, 0, 0, 0}; + for (int i = 0; i < item.size(); i++) { + if (item.get(i) == 0) { + //点检 + whats[0] = 1; + } + } + + Intent intent = new Intent(getActivity(), PushService.class); + Bundle bundle = new Bundle(); + bundle.putIntArray("what", whats); + intent.putExtras(bundle); + getActivity().startService(intent); + + } + + /** + * 广播接收器 + */ + public class MsgReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + + isTask = intent.getBooleanExtra("isTask", false); + beanList.clear(); + beanList.addAll(getGridViewData(isTask)); + adapter.notifyDataSetChanged(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MineFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MineFragment.java new file mode 100755 index 0000000..a7d533e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/MineFragment.java @@ -0,0 +1,58 @@ +package com.rehome.scbaxj.activity; + +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.Intent; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + +/** + * 我的 + */ +public class MineFragment extends BaseFragment { + + private static MineFragment instance = null; + TextView wechat; + TextView tvWechat; + TextView tvName; + TextView tvMinedb; + TextView tvMinedbNum; + + public static MineFragment getInstance() { + if (instance == null) { + instance = new MineFragment(); + } + return instance; + } + + @Override + public int getContentViewId() { + return R.layout.fragment_mine; + } + + @Override + protected void initView() { + wechat = view.findViewById(R.id.wechat); + tvWechat = view.findViewById(R.id.tv_wechat); + tvName = view.findViewById(R.id.tv_name); + tvMinedb = view.findViewById(R.id.tv_minedb); + tvMinedbNum = view.findViewById(R.id.tv_minedb_num); + } + + @Override + public void initData() { + wechat.setOnClickListener(v -> { + try { + Intent intent = new Intent(Intent.ACTION_MAIN); + ComponentName cmp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setComponent(cmp); + startActivity(intent); + } catch (ActivityNotFoundException e) { + showToast("请安装微信"); + } + }); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/NfcinfoKotlinActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/NfcinfoKotlinActivity.kt new file mode 100644 index 0000000..ce0c869 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/NfcinfoKotlinActivity.kt @@ -0,0 +1,25 @@ +package com.rehome.scbaxj.activity + +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.databinding.ActivityNfcinfoKotlinBinding + +class NfcinfoKotlinActivity : BaseActivityOaToolbarViewBinding() { + + override fun getViewBinding() = ActivityNfcinfoKotlinBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("NFC信息", "", { finish() }, {}) + //初始化NFC + initNFC() + } + + override fun initData() { + + } + + override fun handleNfc(result: String) { + binding.tvNfc.text = result ?: "" + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/QxgdActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/QxgdActivity.java new file mode 100644 index 0000000..e94b63f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/QxgdActivity.java @@ -0,0 +1,326 @@ +package com.rehome.scbaxj.activity; + +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.base.BaseCallBack; +import com.rehome.scbaxj.bean.JzBean; +import com.rehome.scbaxj.bean.QXGDResultBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.DateTimePickDialog; +import com.rehome.scbaxj.weight.InputLayout; +import com.rehome.scbaxj.weight.ListDialog; +import com.xuexiang.xui.widget.edittext.MultiLineEditText; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import retrofit2.Call; +import retrofit2.Response; + +public class QxgdActivity extends BaseActivity3 { + + InputLayout ilFxr; + InputLayout ilFxsj; + InputLayout ilFxrbm; + InputLayout ilJz; + InputLayout ilZy; + InputLayout ilQxlx; + InputLayout ilQxdj; + MultiLineEditText etQxms; + InputLayout ilFzbm; + + private List JzDatas; + private List JzDialogDatas; + private List ZYDatas; + private List ZYDialogDatas; + private List LXDatas; + private List LXDialogDatas; + private List QXDJDatas; + private List QXDJDialogDatas; + private List GDAPDatas; + private List GDAPDialogDatas; + private String JZValue, ZYValue, LXvalue, QXDJValue, GDAPValue; + + @Override + public int getLayoutId() { + return R.layout.activity_qxgd; + } + + @Override + public void initView() { + initToolbar("缺陷工单提交(对接Maximo)", "提交", new View.OnClickListener() { + @Override + public void onClick(View v) { + if (TextUtils.isEmpty(ilFxsj.getContent())) { + showToast("请输入时间"); + } else if (TextUtils.isEmpty(ilJz.getContent())) { + showToast("请选择机组"); + } else if (TextUtils.isEmpty(ilZy.getContent())) { + showToast("请选择专业"); + } else if (TextUtils.isEmpty(ilQxlx.getContent())) { + showToast("请选择缺陷类型"); + } else if (TextUtils.isEmpty(ilQxdj.getContent())) { + showToast("请选择缺陷等级"); + } else if (TextUtils.isEmpty(etQxms.getContentText())) { + showToast("请填写缺陷描述"); + } else if (TextUtils.isEmpty(ilFzbm.getContent())) { + showToast("请选择负责部门"); + } else { + UploadDatas(); + } + } + }); + ilFxr = findViewById(R.id.il_fxr); + ilFxsj = findViewById(R.id.il_fxsj); + ilFxrbm = findViewById(R.id.il_fxrbm); + ilJz = findViewById(R.id.il_jz); + ilZy = findViewById(R.id.il_zy); + ilQxlx = findViewById(R.id.il_qxlx); + ilQxdj = findViewById(R.id.il_qxdj); + etQxms = findViewById(R.id.et_qxms); + ilFzbm = findViewById(R.id.il_fzbm); + } + + @Override + public void initData() { + JzDatas = new ArrayList<>(); + JzDialogDatas = new ArrayList<>(); + ZYDatas = new ArrayList<>(); + ZYDialogDatas = new ArrayList<>(); + LXDatas = new ArrayList<>(); + LXDialogDatas = new ArrayList<>(); + QXDJDatas = new ArrayList<>(); + QXDJDialogDatas = new ArrayList<>(); + GDAPDatas = new ArrayList<>(); + GDAPDialogDatas = new ArrayList<>(); + GETJZ(); + GETZY(); + GETLX(); + GETQXDJ(); + GETGDAP(); + ilFxr.setContent((String) SPUtils.get(context, Contans.USERNAME, "")); + ilFxrbm.setContent((String) SPUtils.get(context, Contans.BZMC, "")); + ilFxsj.setOnClickListener(v -> { + ilFxsj.setContent(""); + DateTimePickDialog dialog = new DateTimePickDialog(context, (outPutDate, outPutDate1, outPutDate2, outPutDateTime3) -> ilFxsj.setContent(outPutDate)); + dialog.show(); + }); + ilJz.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, JzDialogDatas, (time, position) -> { + JZValue = JzDatas.get(position).getValue(); + ilJz.setContent(JzDatas.get(position).getDescription()); + }); + dialog.show(); + }); + ilZy.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, ZYDialogDatas, (time, position) -> { + ZYValue = ZYDatas.get(position).getValue(); + ilZy.setContent(ZYDatas.get(position).getDescription()); + }); + dialog.show(); + }); + ilQxlx.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, LXDialogDatas, (time, position) -> { + LXvalue = LXDatas.get(position).getValue(); + ilQxlx.setContent(LXDatas.get(position).getDescription()); + }); + dialog.show(); + }); + ilQxdj.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, QXDJDialogDatas, (time, position) -> { + QXDJValue = QXDJDatas.get(position).getValue(); + ilQxdj.setContent(QXDJDatas.get(position).getDescription()); + }); + dialog.show(); + }); + ilFzbm.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, GDAPDialogDatas, (time, position) -> { + GDAPValue = GDAPDatas.get(position).getValue(); + ilFzbm.setContent(GDAPDatas.get(position).getDescription()); + }); + dialog.show(); + }); + } + + + private void GETJZ() { + HttpUtils.GETMAXIMOIP().GetJzList().enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + JzBean bean1 = response.body(); + if (bean1 != null) { + JzDatas.clear(); + JzDatas.addAll(bean1.getResult()); + initJZdatas(); + + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + }); + } + + private void GETZY() { + + HttpUtils.GETMAXIMOIP().GetZyList().enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + JzBean bean = response.body(); + if (bean != null) { + ZYDatas.clear(); + ZYDatas.addAll(bean.getResult()); + initZYdatas(); + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + + }); + + } + + private void GETLX() { + + HttpUtils.GETMAXIMOIP().GetLxist().enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + JzBean bean = response.body(); + if (bean != null) { + LXDatas.clear(); + LXDatas.addAll(bean.getResult()); + initLXdatas(); + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + + }); + + } + + private void GETQXDJ() { + + HttpUtils.GETMAXIMOIP().GetQXDJist().enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + JzBean bean = response.body(); + if (bean != null) { + QXDJDatas.clear(); + QXDJDatas.addAll(bean.getResult()); + initQXDJdatas(); + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + + }); + } + + private void GETGDAP() { + + HttpUtils.GETMAXIMOIP().GetGDAPist().enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + JzBean bean = response.body(); + if (bean != null) { + GDAPDatas.clear(); + GDAPDatas.addAll(bean.getResult()); + initGDAPdatas(); + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + + }); + } + + private void initJZdatas() { + for (JzBean.ResultBean bean : JzDatas) { + JzDialogDatas.add(bean.getDescription()); + } + } + + private void initZYdatas() { + for (JzBean.ResultBean bean : ZYDatas) { + ZYDialogDatas.add(bean.getDescription()); + } + } + + private void initLXdatas() { + for (JzBean.ResultBean bean : LXDatas) { + LXDialogDatas.add(bean.getDescription()); + } + } + + private void initQXDJdatas() { + for (JzBean.ResultBean bean : QXDJDatas) { + QXDJDialogDatas.add(bean.getDescription()); + } + } + + private void initGDAPdatas() { + for (JzBean.ResultBean bean : GDAPDatas) { + GDAPDialogDatas.add(bean.getDescription()); + } + } + + private void UploadDatas() { + + HttpUtils.GETMAXIMOIP().UploadQXgd(GetInfo()).enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + QXGDResultBean bean = response.body(); + if (bean != null) { + if (bean.getStatus().equals("1")) { + showToast("提交成功,请到Maximo系统查看"); + finish(); + } + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + }); + + } + + private String GetInfo() { + String json = ""; + Map map = new HashMap(); + map.put("description", etQxms.getContentText()); + map.put("unit", JZValue); + map.put("profession", ZYValue); + map.put("bugtype", LXvalue); + map.put("buglevel", QXDJValue); + map.put("reportedby", (String) SPUtils.get(context, Contans.USERID, "")); + map.put("bugdept", GDAPValue); + json = GsonUtils.GsonString(map); + return json; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/TabMainActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/TabMainActivity.java new file mode 100755 index 0000000..20efcbe --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/TabMainActivity.java @@ -0,0 +1,142 @@ +package com.rehome.scbaxj.activity; + +import android.graphics.Color; +import android.widget.RadioButton; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.AutoToolbar; +import com.rehome.scbaxj.utils.CanBanScrollViewPager; +import com.rehome.scbaxj.weight.AutoRadioGroup; +import java.util.ArrayList; +import java.util.List; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentPagerAdapter; +import androidx.viewpager.widget.ViewPager; + +/** + * Created by ruihong on 2018/4/2. + */ + +public class TabMainActivity extends BaseActivity { + + CanBanScrollViewPager vp; + RadioButton rbHome; + RadioButton rbContact; + RadioButton rbMine; + AutoRadioGroup rg; + AutoToolbar toolbar; + + private List fragments = new ArrayList<>(); + private FragmentPagerAdapter adapter; +// BadgeView badgeView_me; + + @Override + public int getContentViewID() { + return R.layout.activity_tabmain; + } + + @Override + protected void initView() { + + vp = findViewById(R.id.vp); + rbHome = findViewById(R.id.rb_home); + rbContact = findViewById(R.id.rb_contact); + rbMine = findViewById(R.id.rb_mine); + rg = findViewById(R.id.rg); + toolbar = findViewById(R.id.toolbar); + + fragments.add(MainFragment.getInstance()); + fragments.add(ContactFragment.getInstance()); + fragments.add(MineFragment.getInstance()); + + + adapter = new FragmentPagerAdapter(getSupportFragmentManager()) { + @Override + public Fragment getItem(int position) { + return fragments.get(position); + } + + @Override + public int getCount() { + return fragments.size(); + } + }; + + + vp.setAdapter(adapter); + vp.setOffscreenPageLimit(3); + vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + + initTextColor(); + + switch (position) { + case 0: + title.setText("管理"); + vp.setCurrentItem(0, false); + rbHome.setTextColor(Color.parseColor("#0099ff")); + rbHome.setChecked(true); + break; + case 1: + title.setText("通讯录"); + vp.setCurrentItem(1, false); + rbContact.setTextColor(Color.parseColor("#0099ff")); + rbContact.setChecked(true); + break; + case 2: + title.setText("我的"); + vp.setCurrentItem(2, false); + rbMine.setTextColor(Color.parseColor("#0099ff")); + rbMine.setChecked(true); + break; + } + + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + + rg.setBackgroundColor(getResources().getColor(R.color.white)); + + rg.setOnCheckedChangeListener((radioGroup, i) -> { + initTextColor(); + switch (i) { + case R.id.rb_home: + title.setText("运行"); + vp.setCurrentItem(0, false); + rbHome.setTextColor(Color.parseColor("#0099ff")); + break; + case R.id.rb_contact: + title.setText("通讯录"); + vp.setCurrentItem(1, false); + rbContact.setTextColor(Color.parseColor("#0099ff")); + break; + case R.id.rb_mine: + title.setText("我的"); + vp.setCurrentItem(2, false); + rbMine.setTextColor(Color.parseColor("#0099ff")); + break; + } + }); + } + private void initTextColor() { + rbHome.setTextColor(Color.parseColor("#abadbb")); + rbContact.setTextColor(Color.parseColor("#abadbb")); + rbMine.setTextColor(Color.parseColor("#abadbb")); + } + + public void initData() { + title.setText("首页"); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/UserChangeActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/UserChangeActivity.java new file mode 100644 index 0000000..d38c82a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/UserChangeActivity.java @@ -0,0 +1,142 @@ +package com.rehome.scbaxj.activity; + + +import android.annotation.SuppressLint; +import android.os.Build; +import android.provider.Settings; +import android.telephony.TelephonyManager; +import android.view.View; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.PhoneInfo; +import com.rehome.scbaxj.bean.UserInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.UiUtlis; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.util.ArrayList; +import java.util.List; + +public class UserChangeActivity extends BaseActivity3 { + + TextView tvNfc; + + @Override + public int getLayoutId() { + return R.layout.activity_user_change; + } + + @Override + public void initView() { + initToolbar("用户切换", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + tvNfc = findViewById(R.id.tv_nfc); + initNFC(); + } + + @Override + public void initData() { + + } + + + @Override + public void handleNfc(String result) { + super.handleNfc(result); + tvNfc.setText(result); + } + + private void NfcOnlineLogin() { + String json = getPhoneInfo(); + Request request = NoHttp.createStringRequest(Contans.IP + Contans.LOGIN, RequestMethod.POST); + request.setDefineRequestBodyForJson(json); + NohttpUtils.getInstance().add(UserChangeActivity.this, 0, request, callback, true, true, "登录中..."); + } + @SuppressLint("MissingPermission") + public String getPhoneInfo() { + String imei; + TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); + if (Build.VERSION.SDK_INT < 29) { + imei = manager.getDeviceId();//IMEI + } else { + imei = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID); + } + String model = Build.MODEL;//手机型号 + String sysVersion = Build.VERSION.RELEASE;//系统版本 + String phonenum = manager.getLine1Number();//手机号码 + if (phonenum == null) { + phonenum = ""; + } + PhoneInfo info = new PhoneInfo(); + info.setTotal(1); + List list = new ArrayList<>(); + PhoneInfo.UserInfo userInfo = new PhoneInfo.UserInfo(); + userInfo.setImeinum(imei); + userInfo.setSysversion(sysVersion); + userInfo.setPhonemodel(model); + if (phonenum.equals("")) { + } else { + userInfo.setPhonenum(phonenum.substring(3)); + } + userInfo.setUsername("用户名"); + userInfo.setPassword("密码s"); + list.add(userInfo); + info.setRows(list); + String json = GsonUtils.GsonString(info); + return json; + } + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + String json = response.get(); + UserInfo userInfo = GsonUtils.GsonToBean(json, UserInfo.class); + if (userInfo != null) { + UserInfo.User user = userInfo.getRows().get(0); + String status = user.getStatus(); + String username = user.getUsernames(); + switch (status) { + case "0": + showToast("用户名或密码错误"); + break; + case "1": +// SPUtils.put(context, "save", savePwUser.isChecked()); +// SPUtils.put(context, Contans.USERID, etUse.getText().toString()); +// SPUtils.put(context, Contans.USERPWD, etPwd.getText().toString()); +// SPUtils.put(context, Contans.USERNAME, username); +// SPUtils.put(context, Contans.BZBH, user.getBzbh() == null ? "" : user.getBzbh()); +// SPUtils.put(context, Contans.BZMC, user.getBzmc() == null ? "" : user.getBzmc()); +// SPUtils.put(context, Contans.PERMISSIONSRESULT, user.getPermissionsResult() == null ? "" : user.getPermissionsResult()); +// Intent intent = new Intent(context, MainActivityJava.class); +// startActivity(intent); +// finish(); + break; + case "2": + showToast("登录异常..."); + break; + case "3": + showToast("未激活或未授权..."); + break; + case "4": + showToast("禁止登陆..."); + break; + } + } else { + showToast(UiUtlis.getString(context, R.string.data_error)); + } + } + + @Override + public void onFailed(int what, Response response) { + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/CommonMethod.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/CommonMethod.java new file mode 100644 index 0000000..77583c6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/CommonMethod.java @@ -0,0 +1,39 @@ +package com.rehome.scbaxj.activity.hc.Control; + +public class CommonMethod { + public static byte[] string2ASCII(String s,int length) + { + if (s == null || "".equals(s)) + { + return null; + } + + char[] chars = s.toCharArray(); + byte[] asciiArray = new byte[length]; + + for (int i = 0; i < length; i++) + { + if (i < chars.length) + { + asciiArray[i] = char2ASCII(chars[i]); + } + else + { + asciiArray[i] = char2ASCII('\0'); + } + } + return asciiArray; + } + + public static byte char2ASCII(char c) + { + return (byte)c; + } + + public static String toValidString(String s) + { + String[] sIP = new String[2]; + sIP = s.split("\0", 2); + return sIP[0]; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevAlarmGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevAlarmGuider.java new file mode 100644 index 0000000..b81e0a4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevAlarmGuider.java @@ -0,0 +1,143 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import com.hikvision.netsdk.AlarmCallBack_V30; +import com.hikvision.netsdk.*; +import com.hikvision.netsdk.NET_DVR_BASE_ALARM; +import com.hcnetsdk.jna.HCNetSDKByJNA; +import com.hcnetsdk.jna.HCNetSDKJNAInstance; +import com.sun.jna.Pointer; + +import java.io.Serializable; +import java.lang.String; + +public class DevAlarmGuider implements Serializable { + public class CGReturn{ + public byte[] time=new byte[32]; + public byte[] ip=new byte[128]; + public int command=0; + public int result=0; + } + + CGReturn ret=new CGReturn(); + public int iAlarmHandle=-1; + private static AlarmCallBack_V30 AlarmCbf = null; + private static void processAlarmData(int lCommand, NET_DVR_ALARMER Alarmer, NET_DVR_BASE_ALARM AlarmInfo) + { + String sIP = new String(Alarmer.sDeviceIP); + System.out.println("recv alarm from:" + sIP); + + +// if(lCommand == HCNetSDK.COMM_ITS_PLATE_RESULT) +// { +// +// NET_ITS_PLATE_RESULT strAlarmInfo = (NET_ITS_PLATE_RESULT)AlarmInfo; +// System.out.println("recv Its Plate Result:" + strAlarmInfo.dwCustomIllegalType); +// //ret.time=strAlarmInfo.struPicInfo[0].byAbsTime; +// } +// else if (lCommand == HCNetSDK.COMM_ALARM) +// { +// NET_DVR_ALARMINFO struAlarmInfo = (NET_DVR_ALARMINFO)AlarmInfo; +// +// } + } + + public CGReturn Test_SetupAlarm_jni(int iUserID) + { + //甯冮槻 + NET_DVR_SETUPALARM_PARAM struSetupAlarmParam = new NET_DVR_SETUPALARM_PARAM(); + struSetupAlarmParam.byAlarmInfoType = 1; + struSetupAlarmParam.byLevel = 1; + iAlarmHandle = HCNetSDK.getInstance().NET_DVR_SetupAlarmChan_V41(iUserID, struSetupAlarmParam); + if (-1 == iAlarmHandle) + { + ret.result=0; + System.out.println("NET_DVR_SetupAlarmChan_V41 failed!" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.result=1; + System.out.println("NET_DVR_SetupAlarmChan_V41 succeed!"); + } + ret.command=12368; + return ret; + } + + public CGReturn Test_SetupAlarm_V41_jna(int iUserID) + { + //甯冮槻 + HCNetSDKByJNA.NET_DVR_SETUPALARM_PARAM struSetupAlarmParam = new HCNetSDKByJNA.NET_DVR_SETUPALARM_PARAM(); + struSetupAlarmParam.byAlarmInfoType = 1; + struSetupAlarmParam.byLevel = 1; + iAlarmHandle = HCNetSDKJNAInstance.getInstance().NET_DVR_SetupAlarmChan_V41(iUserID, struSetupAlarmParam.getPointer()); + if (-1 == iAlarmHandle) + { + ret.result=0; + System.out.println("NET_DVR_SetupAlarmChan_V41 failed!" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.result=1; + System.out.println("NET_DVR_SetupAlarmChan_V41 succeed!"); + } + ret.command=12368; + return ret; + } + + public CGReturn Test_SetupAlarm_V50_jna(int iUserID) + { + //甯冮槻 + HCNetSDKByJNA.NET_DVR_SETUPALARM_PARAM_V50 struSetupAlarmParam_V50 = new HCNetSDKByJNA.NET_DVR_SETUPALARM_PARAM_V50(); + struSetupAlarmParam_V50.dwSize = struSetupAlarmParam_V50.size(); + struSetupAlarmParam_V50.byAlarmInfoType = 1; + struSetupAlarmParam_V50.byRetAlarmTypeV40 = 1; + struSetupAlarmParam_V50.byRetDevInfoVersion = 1; + struSetupAlarmParam_V50.byRetVQDAlarmType = 1; + struSetupAlarmParam_V50.byFaceAlarmDetection = 1; + struSetupAlarmParam_V50.bySupport = 4; + struSetupAlarmParam_V50.byLevel = 1; + iAlarmHandle = HCNetSDKJNAInstance.getInstance().NET_DVR_SetupAlarmChan_V50(iUserID, struSetupAlarmParam_V50.getPointer(), Pointer.NULL, 0); + if (-1 == iAlarmHandle) + { + ret.result=0; + System.out.println("NET_DVR_SetupAlarmChan_V50 failed!" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.result=1; + System.out.println("NET_DVR_SetupAlarmChan_V50 succeed!"); + } + ret.command=12368; + return ret; + } + + public CGReturn Test_CloseAlarm_jni(int iAlarmHandle) + { + if(!HCNetSDK.getInstance().NET_DVR_CloseAlarmChan_V30(iAlarmHandle)) + { + ret.result=0; + System.out.println("NET_DVR_CloseAlarmChan_V30 failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.result=1; + System.out.println("NET_DVR_CloseAlarmChan_V30 succeed!"); + } + return ret; + } + + public CGReturn Test_CloseAlarm_jna(int iAlarmHandle) + { + if(!HCNetSDKJNAInstance.getInstance().NET_DVR_CloseAlarmChan_V30(iAlarmHandle)) + { + ret.result=0; + System.out.println("NET_DVR_CloseAlarmChan_V30 failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.result=1; + System.out.println("NET_DVR_CloseAlarmChan_V30 succeed!"); + } + return ret; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevConfigGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevConfigGuider.java new file mode 100644 index 0000000..c522ea7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevConfigGuider.java @@ -0,0 +1,4136 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import java.io.File; +import java.io.Serializable; + +import android.util.Log; + +import com.hcnetsdk.jna.HCNetSDKByJNA; +import com.hcnetsdk.jna.HCNetSDKJNAInstance; +import com.hikvision.netsdk.*; +import com.sun.jna.ptr.IntByReference; + +public class DevConfigGuider implements Serializable { + + public class CGReturn{ + public int status_1=0; + public int status_2=0; + public int status_3=0; + } + + /***************************************ScreenTest********************************************************/ + /*case 0*/ + public CGReturn test_ControlScreen_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_SCREEN_CONTROL_V41 struCtrlControl_V41 = new NET_DVR_SCREEN_CONTROL_V41(); + struCtrlControl_V41.byProtocol = 1; + struCtrlControl_V41.bySerialNo = 1; + struCtrlControl_V41.byWallNo = 1; + struCtrlControl_V41.dwCommand = 1; + struCtrlControl_V41.struControlParam.byInputSourceType = 0; + struCtrlControl_V41.struControlParam.byColorType = 1; + struCtrlControl_V41.struControlParam.byColorScale = 1; + struCtrlControl_V41.struControlParam.byPosition = 1; + struCtrlControl_V41.struControlParam.byPositionScale = 1; + struCtrlControl_V41.struRect.dwHeight = 1920; + struCtrlControl_V41.struRect.dwWidth = 100; + struCtrlControl_V41.struRect.dwXCoordinate =0; + struCtrlControl_V41.struRect.dwYCoordinate = 0; + if(HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID,HCNetSDK.getInstance().NET_DVR_CONTROL_SCREEN,struCtrlControl_V41)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_CONTROL_SCREEN success!"); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_CONTROL_SCREEN fail,error code = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 1*/ + public CGReturn test_SignalList_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_INPUT_SIGNAL_LIST struList = new NET_DVR_INPUT_SIGNAL_LIST(); + if(HCNetSDK.getInstance().NET_DVR_GetInputSignalList_V40(iUserID, 0, struList)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GetInputSignalList_V40 success!"+struList.dwInputSignalNums); + String string = new String(struList.struSignalList[0].sGroupName); + for(int i=0;i<32;i++) + { + System.out.print(struList.struSignalList[0].sGroupName[i]); + } + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GetInputSignalList_V40 fail,error code = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 2*/ + public CGReturn test_FileInfo_jni(int iUserID){ + NET_DVR_COND_INT condInt = new NET_DVR_COND_INT(); + NET_DVR_SCREEN_FILE_INFO screenFileInfo = new NET_DVR_SCREEN_FILE_INFO(); + + condInt.iValue = 4; + + CGReturn ret=new CGReturn(); + + if (!HCNetSDK.getInstance().NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_SCREEN_FILEINFO, condInt, null, screenFileInfo)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_SCREEN_FILEINFO" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + //return false; + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + String filename = new String(screenFileInfo.byFileName); + Log.i("[NetSDKSimpleDemo]","java out filename:"+filename); + //Log.i("[NetSDKSimpleDemo]","Filename;"); + for(int i=0;i<256;i++) + { + Log.i("[NetSDKSimpleDemo]"," java fileName:"+screenFileInfo.byFileName[i]); + } + Log.i("[NetSDKSimpleDemo]","type:"+screenFileInfo.byFileType); + Log.i("[NetSDKSimpleDemo]","byPictureFormat:"+screenFileInfo.byPictureFormat); + } + if (!HCNetSDK.getInstance().NET_DVR_SetSTDConfig(iUserID, HCNetSDK.NET_DVR_SET_SCREEN_FILEINFO, condInt, screenFileInfo, null)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_SCREEN_FILEINFO" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + //return false; + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_SCREEN_FILEINFO success"); + } + return ret; + } + + /*case 3*/ + public CGReturn test_SerialAbility_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + byte lpInBuf [] = new byte[1024]; + String str = ""; + for(int i=0;i"+ + "1v410.17.132.1138000admin"+ + "123452"; + + struInput.lpInBuffer = strInputString.getBytes(); + //struInput.lpInBuffer = null; + + NET_DVR_XML_CONFIG_OUTPUT struOutput = new NET_DVR_XML_CONFIG_OUTPUT(); + //struOutput.lpOutBuffer = null; + if(HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID,struInput,struOutput)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_STDXMLConfig success"); + Log.i("[NetSDKSimpleDemo]","dwReturnXMLSize="+struOutput.dwReturnedXMLSize); + + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_STDXMLConfig fail,error code = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + String string = new String(struOutput.lpStatusBuffer); + System.out.println("-------------StatusBuffer-------------"); + System.out.println(string); + System.out.println("--------------StatusBuffer-------------"); + return ret; + } + + /*case 5*/ + public CGReturn test_PlayingPlan_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + INT_PTR lpOutPtr = new INT_PTR(); + if(HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.getInstance().NET_DVR_GET_PLAYING_PLAN, 1, lpOutPtr)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_PLAYING_PLAN success"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_PLAYING_PLAN fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 6*/ + public CGReturn test_CtrlPlan_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_CONTROL_PARAM struCtrlParam = new NET_DVR_CONTROL_PARAM(); + struCtrlParam.byIndex = 1; + struCtrlParam.dwControlParam = 2; + struCtrlParam.sDeviceID[0]='a'; + struCtrlParam.sDeviceID[1]='b'; + if(HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.getInstance().NET_DVR_CTRL_PLAN, struCtrlParam)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_CTRL_PLAN success"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_CTRL_PLAN fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 7*/ + public CGReturn test_Plan_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_PLAN_CFG struPlanCfg= new NET_DVR_PLAN_CFG(); + struPlanCfg.byValid = 1; + struPlanCfg.byWallNo = 1; + struPlanCfg.byWorkMode = 1; + struPlanCfg.byPlanName[0]='a'; + struPlanCfg.byPlanName[1]='b'; + struPlanCfg.byPlanName[2]='c'; + NET_DVR_TIME_EX struTimeEx = new NET_DVR_TIME_EX(); + struTimeEx.wYear = 2015; + struTimeEx.byMonth = 10; + struTimeEx.byDay = 17; + struTimeEx.byHour =7; + struTimeEx.byMinute = 30; + struTimeEx.bySecond =1; + struPlanCfg.struTime = struTimeEx; + NET_DVR_CYCLE_TIME []pCycleTime = new NET_DVR_CYCLE_TIME[7]; + for(int i=0;i<7;i++) + { + pCycleTime[i]=new NET_DVR_CYCLE_TIME(); + pCycleTime[i].byValid = 1; + pCycleTime[i].struTime = struTimeEx; + } + struPlanCfg.dwWorkCount = 3; + struPlanCfg.struTimeCycle = pCycleTime; + NET_DVR_PLAN_INFO []lpPlanInfo = new NET_DVR_PLAN_INFO[32]; + for(int i=0;i<32;i++) + { + lpPlanInfo[i] = new NET_DVR_PLAN_INFO(); + lpPlanInfo[i].byValid = 1; + lpPlanInfo[i].byType = 1; + lpPlanInfo[i].wLayoutNo =1; + lpPlanInfo[i].byScreenStyle =1; + lpPlanInfo[i].dwDelayTime = 20; + } + + struPlanCfg.strPlanEntry = lpPlanInfo; + if(HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_PLAN, 1,struPlanCfg)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_PLAN success"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_PLAN fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 8*/ + public CGReturn test_VWParam_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwCount = 1 ; + NET_DVR_VIDEO_WALL_INFO [] pstruWallInfo = new NET_DVR_VIDEO_WALL_INFO[1]; + pstruWallInfo[0]= new NET_DVR_VIDEO_WALL_INFO(); + //pstruWallInfo[0].dwWindowNo = 0x01010001; + pstruWallInfo[0].dwWindowNo = 1<<24; + pstruWallInfo[0].dwSceneNo = 1; + NET_DVR_WALLSCENECFG []lpOut1 = new NET_DVR_WALLSCENECFG[1]; + for(int i=0;i<1;i++) + { + lpOut1[i]= new NET_DVR_WALLSCENECFG(); + } + int []arrStatus1 = new int[1]; + INT_PTR intPtr1 = new INT_PTR(); + + if(HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_VW_SCENE_PARAM, dwCount, arrStatus1,pstruWallInfo,lpOut1,intPtr1)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_VW_SCENE_PARAM success"); + Log.i("[NetSDKSimpleDemo]","intPtr.iValue="+intPtr1.iValue); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_VW_SCENE_PARAM fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + dwCount = 1; + int[] arrStatus = new int[1]; + + if(HCNetSDK.getInstance().NET_DVR_SetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_VW_SCENE_PARAM, dwCount,pstruWallInfo, arrStatus,lpOut1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_VW_SCENE_PARAM success"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_VW_SCENE_PARAM fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + int videoWallNo = 1; + int sceneNo = 1; + NET_DVR_VIDEO_WALL_INFO[] wallInfo = new NET_DVR_VIDEO_WALL_INFO[1]; + wallInfo[0] = new NET_DVR_VIDEO_WALL_INFO(); + wallInfo[0].dwWindowNo = videoWallNo << 24; + wallInfo[0].dwSceneNo = sceneNo; + + int[] status = new int[1]; + status[0]=0; + + NET_DVR_WALLSCENECFG[] sceneCfgArray = new NET_DVR_WALLSCENECFG[1]; + sceneCfgArray[0] = new NET_DVR_WALLSCENECFG(); + + INT_PTR outLenPtr = new INT_PTR(); + + if (!HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.NET_DVR_GET_VW_SCENE_PARAM, 1, + status, wallInfo, sceneCfgArray, outLenPtr)) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_VW_SCENE_PARAM fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + //return ; + } + else { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_VW_SCENE_PARAM success"); + + } + return ret; + } + + /*case 9*/ + public CGReturn test_CurrentScene_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_VIDEO_WALL_INFO struWallInfo1 = new NET_DVR_VIDEO_WALL_INFO(); + struWallInfo1.dwWindowNo = 0x01000001; + struWallInfo1.dwSceneNo = 1; + INT_PTR lpOut = new INT_PTR(); + if(HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID,HCNetSDK.NET_DVR_GET_CURRENT_SCENE,struWallInfo1,lpOut)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_CURRENT_SCENE success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_CURRENT_SCENE fail,error code="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 10*/ + public CGReturn test_SceneControl_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_SCENE_CONTROL_INFO struCtrlInfo = new NET_DVR_SCENE_CONTROL_INFO(); + NET_DVR_VIDEO_WALL_INFO struWallInfo = new NET_DVR_VIDEO_WALL_INFO(); + struWallInfo.dwWindowNo = 0x01000001; + struWallInfo.dwSceneNo = 1; + struCtrlInfo.struVideoWallInfo = struWallInfo; + struCtrlInfo.dwCmd = 2; + if(HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.getInstance().NET_DVR_SCENE_CONTROL, struCtrlInfo)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SCENE_CONTROL success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SCENE_CONTROL fail,error code="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 11*/ + public CGReturn test_DecChanEnable_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwDecChanNum = 0x01010001; + INT_PTR lpEnable = new INT_PTR(); + lpEnable.iValue = 1; + + if(HCNetSDK.getInstance().NET_DVR_MatrixGetDecChanEnable(iUserID,dwDecChanNum,lpEnable)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","lpEnalbe="+lpEnable.iValue); + Log.i("[NetSDKSimpleDemo]","NET_DVR_MatrixGetDecChanEnable success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_MatrixGetDecChanEnable fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + lpEnable.iValue = 1; + if(HCNetSDK.getInstance().NET_DVR_MaxtrixSetDecChanEnable(iUserID,dwDecChanNum,lpEnable.iValue)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_MaxtrixSetDecChanEnable success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_MaxtrixSetDecChanEnable fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 12*/ + public CGReturn test_SwitchWin_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + INT_PTR lpWallNo = new INT_PTR(); + lpWallNo.iValue = 0x01010001; + + if(HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID,HCNetSDK.getInstance().NET_DVR_SWITCH_WIN_TOP,lpWallNo)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SWITCH_WIN_TOP success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SWITCH_WIN_TOP fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + if(HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID,HCNetSDK.getInstance().NET_DVR_SWITCH_WIN_BOTTOM,lpWallNo)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SWITCH_WIN_BOTTOM success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SWITCH_WIN_BOTTOM fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 13*/ + public CGReturn test_WallInParam_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int iChannel = 0x01010001; + NET_DVR_WALLWINPARAM struWallParam = new NET_DVR_WALLWINPARAM(); + if(HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_WALLWINPARAM_GET, iChannel, struWallParam)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_WALLWINPARAM_GET success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_WALLWINPARAM_GET fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + struWallParam.byWinMode = 4; + if(HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.getInstance().NET_DVR_WALLWINPARAM_SET,iChannel,struWallParam)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_WALLWINPARAM_SET success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_WALLWINPARAM_SET fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 14*/ + public CGReturn test_CloseAll_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + INT_PTR lpNum = new INT_PTR(); + lpNum.iValue = 0x01000001; + boolean bRet = HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID,HCNetSDK.getInstance().NET_DVR_VIDEOWALLWINDOW_CLOSEALL,lpNum); + if(bRet) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_VIDEOWALLWINDOW_CLOSEALL success!"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_VIDEOWALLWINDOW_CLOSEALL fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 15*/ + public CGReturn test_Position_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwCount = 0xffffffff; + COND_INT_PTR [] arrWallNo = new COND_INT_PTR[1]; + arrWallNo[0] = new COND_INT_PTR(); + arrWallNo[0].iValue=0x01000001; + + int [] arrStatus = new int[64]; + NET_DVR_VIDEOWALLWINDOWPOSITION [] arrV= new NET_DVR_VIDEOWALLWINDOWPOSITION[64]; + for(int i=0;i<64;i++) + { + arrV[i]=new NET_DVR_VIDEOWALLWINDOWPOSITION(); + } + + int [] arrOut = new int[64]; + INT_PTR nRet = new INT_PTR(); + + boolean bRet = HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_VIDEOWALLWINDOWPOSITION,dwCount, null, arrWallNo, arrV,nRet); + if(bRet) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_VIDEOWALLWINDOWPOSITION success!"); + Log.i("[NetSDKSimpleDemo]","nRet ="+nRet.iValue); + System.out.println("arrV[0].byWndOperateMode="+arrV[0].byWndOperateMode); + System.out.println("arrV[0].struRect="+arrV[0].struRect.dwHeight+","+arrV[0].struRect.dwWidth+","+arrV[0].struRect.dwXCoordinate+","+arrV[0].struRect.dwYCoordinate); + System.out.println("arrV[0].struResolution="+arrV[0].struResolution.dwHeight+","+arrV[0].struResolution.dwWidth+","+arrV[0].struResolution.dwXCoordinate+","+arrV[0].struResolution.dwYCoordinate); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_VIDEOWALLWINDOWPOSITION fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + + dwCount = 1; + arrV[0].byEnable = 0; + arrV[0].byWndOperateMode = 1; + arrV[0].struResolution.dwHeight = 2000; + arrV[0].struResolution.dwWidth =2000; + arrV[0].struResolution.dwXCoordinate=1; + arrV[0].struResolution.dwYCoordinate = 1; + bRet = HCNetSDK.getInstance().NET_DVR_SetDeviceConfigEx(iUserID, HCNetSDK.getInstance().NET_DVR_SET_VIDEOWALLWINDOWPOSITION, dwCount, arrWallNo, arrV, arrStatus, 0,arrOut); + if(bRet) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_VIDEOWALLWINDOWPOSITION success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_VIDEOWALLWINDOWPOSITION fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 16*/ + public CGReturn test_DisplayPosition_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwCount = 1; + COND_INT_PTR [] arrWallNo = new COND_INT_PTR[1]; + arrWallNo[0] = new COND_INT_PTR(); + arrWallNo[0].iValue=0x01010001; + + int [] arrStatus = new int[1]; + NET_DVR_VIDEOWALLDISPLAYPOSITION [] arrV= new NET_DVR_VIDEOWALLDISPLAYPOSITION[1]; + for(int i=0;i<1;i++) + { + arrV[i]=new NET_DVR_VIDEOWALLDISPLAYPOSITION(); + } + + int [] arrOut = new int[1]; + INT_PTR nRet = new INT_PTR(); + boolean bRet = HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_VIDEOWALLDISPLAYPOSITION,dwCount, arrStatus, arrWallNo, arrV,nRet); + if(bRet) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_VIDEOWALLDISPLAYPOSITION success!"); + Log.i("[NetSDKSimpleDemo]","nRet="+nRet.iValue); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_VIDEOWALLDISPLAYPOSITION fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + + dwCount = 1; + + //閻犱礁澧介悿鍡涙偨娴e喚娼掑褎鐟ч悰銉╁矗閿濆懎妫橀柡渚婃嫹 + bRet = HCNetSDK.getInstance().NET_DVR_SetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_VIDEOWALLDISPLAYPOSITION, dwCount,arrWallNo, arrStatus,arrV); + if(bRet) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_VIDEOWALLDISPLAYPOSITION success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_VIDEOWALLDISPLAYPOSITION fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 17*/ + public CGReturn test_WallOutput_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwCount = 1; + Log.i("[NetSDKSimpleDemo]","dwCount ="+dwCount); + COND_INT_PTR [] arrWallNo = new COND_INT_PTR[2]; + arrWallNo[0] = new COND_INT_PTR(); + arrWallNo[0].iValue=0x01080001; + arrWallNo[1] = new COND_INT_PTR(); + arrWallNo[1].iValue=0x01080002; + + int [] arrStatus = new int[2]; + NET_DVR_WALLOUTPUTPARAM [] arrV= new NET_DVR_WALLOUTPUTPARAM[2]; + for(int i=0;i<2;i++) + { + arrV[i]=new NET_DVR_WALLOUTPUTPARAM(); + } + + int [] arrOut = new int[2]; + INT_PTR nRet = new INT_PTR(); + boolean bRet = HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_WALLOUTPUT_GET,dwCount, arrStatus, arrWallNo, arrV,nRet); + if(bRet) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_WALLOUTPUT_GET success!"); + Log.i("[NetSDKSimpleDemo]","nRet="+nRet.iValue); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_WALLOUTPUT_GET fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + + bRet = HCNetSDK.getInstance().NET_DVR_SetDeviceConfig(iUserID, HCNetSDK.getInstance().NET_DVR_WALLOUTPUT_SET, dwCount,arrWallNo, arrStatus,arrV); + if(bRet) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_WALLOUTPUT_SET success!"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_WALLOUTPUT_SET fail,error code ="+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 18*/ + public CGReturn test_PlanList_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int dwDevNum = 0; + NET_DVR_PLAN_LIST planList = new NET_DVR_PLAN_LIST(); + + boolean bRet = HCNetSDK.getInstance().NET_DVR_GetPlanList(iUserID, dwDevNum,planList); + if(bRet) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GetPlanList success!"); + Log.i("[NetSDKSimpleDemo]","planList.dwPlanNums="+planList.dwPlanNums); + for(int i=0;i"; + for(int i=0;i11122\r\n"); + //byte[] byOutput1 = new byte[100*1024]; + //byOutput1 = strInBuffer.getBytes(); + struInput.lpInBuffer = strInBuffer.getBytes(); + //struInput.dwInBufferSize = struInput.lpInBuffer.length; + struInput.dwInBufferSize = strInBuffer.length(); +// struOuput.lpOutBuffer = null; +// struOuput.dwOutBufferSize = 0; + if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_STDXMLConfig(PUT) faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_STDXMLConfig(PUT) Success!:"); + } + return ret; + } + + + + /****************************************ManageTest******************************************************/ + /*case0*/ + public CGReturn Test_SearchLog_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_TIME struStartTime = new NET_DVR_TIME(); + NET_DVR_TIME struEndTime = new NET_DVR_TIME(); + struStartTime.dwYear = 2014; + struStartTime.dwMonth = 11; + struStartTime.dwDay = 26; + struEndTime.dwYear = 2014; + struEndTime.dwMonth = 11; + struEndTime.dwDay = 27; + int nSearchHandle = (int)HCNetSDK.getInstance().NET_DVR_FindDVRLog_V30(iUserID, 0, 0, 0, struStartTime, struEndTime, false); + if(nSearchHandle >= 0) + { + NET_DVR_LOG_V30 struLog = new NET_DVR_LOG_V30(); + int nState = -1; + int nCount = 0; + while(true) + { + nState = (int)HCNetSDK.getInstance().NET_DVR_FindNextLog_V30((long)nSearchHandle, struLog); + if(nState != HCNetSDK.NET_DVR_FILE_SUCCESS && nState != HCNetSDK.NET_DVR_ISFINDING) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + break; + } + else if(nState == HCNetSDK.NET_DVR_FILE_SUCCESS) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + nCount++; + System.out.println("find log time:" + struLog.strLogTime.dwHour + "-" + struLog.strLogTime.dwMinute + "-" + struLog.strLogTime.dwSecond); + } + try + { + Thread.sleep(100); + } catch (InterruptedException e) + { + e.printStackTrace(); + } + } + HCNetSDK.getInstance().NET_DVR_FindLogClose_V30(nSearchHandle); + } + return ret; + } + + /*case1*/ + public CGReturn Test_ShutDown_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_ShutDownDVR(iUserID)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ShutDownDVR faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ShutDownDVR succ!"); + } + return ret; + } + + /*case2*/ + public CGReturn Test_RebootDVR_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_RebootDVR(iUserID)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_RebootDVR faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_RebootDVR succ!"); + } + return ret; + } + + /*case3*/ + public CGReturn Test_ClickKey_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_ClickKey(iUserID, NET_DVR_KEY_CODE.KEY_CODE_MENU)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ClickKey faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ClickKey succ!"); + } + return ret; + } + + /*case4*/ + public CGReturn Test_FormatDisk_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int lFormatHandle = HCNetSDK.getInstance().NET_DVR_FormatDisk(iUserID, 0); + if(lFormatHandle >= 0) + { + INT_PTR ptrCurrentDisk = new INT_PTR(); + INT_PTR ptrCurrentPos = new INT_PTR(); + INT_PTR ptrFormatStatic = new INT_PTR(); + ptrCurrentDisk.iValue = 0; + ptrCurrentPos.iValue = 0; + while(ptrFormatStatic.iValue == 0) + { + if(!HCNetSDK.getInstance().NET_DVR_GetFormatProgress(lFormatHandle, ptrCurrentDisk, ptrCurrentPos, ptrFormatStatic)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetFormatProgress failed with:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + break; + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetFormatProgress succ Disk:" + ptrCurrentDisk.iValue + " Pos:" + ptrCurrentPos.iValue + " Static:" + ptrFormatStatic.iValue); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + System.out.println("Get progress over Disk:" + ptrCurrentDisk.iValue + " Pos:" + ptrCurrentPos.iValue + " Static:" + ptrFormatStatic.iValue); + + if(!HCNetSDK.getInstance().NET_DVR_CloseFormatHandle(lFormatHandle)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_CloseFormatHandle failed with:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_FormatDisk failed with:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case5*/ + public CGReturn Test_Upgrade_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_SetNetworkEnvironment(0)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetNetworkEnvironment err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else{ + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + int nUpgradeHandle = HCNetSDK.getInstance().NET_DVR_Upgrade(iUserID, "/mnt/sdcard/digicap.dav"); + if(nUpgradeHandle == -1) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_Upgrade err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + int nProgress = 0; + int nState = 0; + INT_PTR ptrSubProgress = new INT_PTR(); + while(nProgress != -1 && nProgress != 100) + { + nProgress = HCNetSDK.getInstance().NET_DVR_GetUpgradeProgress(nUpgradeHandle); + System.out.println("NET_DVR_GetUpgradeProgress with:" + nProgress); + nState = HCNetSDK.getInstance().NET_DVR_GetUpgradeState(nUpgradeHandle); + System.out.println("NET_DVR_GetUpgradeState with:" + nState); + nState = HCNetSDK.getInstance().NET_DVR_GetUpgradeStep(nUpgradeHandle, ptrSubProgress); + System.out.println("NET_DVR_GetUpgradeStep with SubProgress:" + ptrSubProgress.iValue + " return value:" + nState); + + try { + Thread.sleep(1*1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + if(nProgress == -1) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetUpgradeProgress err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else{ + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + if(!HCNetSDK.getInstance().NET_DVR_CloseUpgradeHandle(nUpgradeHandle)) + { + System.out.println("NET_DVR_CloseUpgradeHandle err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + } + return ret; + } + + /*case6*/ + public CGReturn Test_ActivateDevice_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_ACTIVATECFG activateCfg = new NET_DVR_ACTIVATECFG(); + System.arraycopy("Abcd1234".getBytes(), 0, activateCfg.sPassword, 0, "Abcd1234".getBytes().length); + if(!HCNetSDK.getInstance().NET_DVR_ActivateDevice("10.10.35.16", 8000, activateCfg)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ActivateDevice failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ActivateDevice succ"); + } + return ret; + } + + /****************************************ConfigTest******************************************************/ + private final static String TAG = "ConfigTest"; + private final static INT_PTR ptrINT = new INT_PTR(); + + public static void Test_Time(int iUserID) + { + NET_DVR_TIME struTimeCfg = new NET_DVR_TIME(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_TIMECFG, 0, struTimeCfg)) + { + System.out.println("NET_DVR_GET_TIMECFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetErrorMsg(ptrINT)); + } + else + { + System.out.println("NET_DVR_GET_TIMECFG succ:" + struTimeCfg.ToString()); + } + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_TIMECFG, 0, struTimeCfg)) + { + System.out.println("NET_DVR_SET_TIMECFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetErrorMsg(ptrINT)); + } + else + { + System.out.println("NET_DVR_SET_TIMECFG succ:" + struTimeCfg.ToString()); + } + } + public static void Test_XMLAbility(int iUserID) + { +// NET_DVR_SDKLOCAL_CFG sdkCfg = new NET_DVR_SDKLOCAL_CFG(); +// HCNetSDK.getInstance().NET_DVR_GetSDKLocalConfig(sdkCfg); +// sdkCfg.byEnableAbilityParse = 1; +// HCNetSDK.getInstance().NET_DVR_SetSDKLocalConfig(sdkCfg); +// String strSDCard = Environment.getExternalStorageDirectory().getPath(); +// String path=(getApplicationContext()).getPackageResourcePath(); +// HCNetSDK.getInstance().NET_DVR_SetSimAbilityPath(path, strSDCard); + + byte[] arrayOutBuf = new byte[64*1024]; + INT_PTR intPtr = new INT_PTR(); + String strInput = new String("111"); + byte[] arrayInBuf = new byte[8*1024]; + arrayInBuf = strInput.getBytes(); + if(!HCNetSDK.getInstance().NET_DVR_GetXMLAbility(iUserID, HCNetSDK.DEVICE_ENCODE_ALL_ABILITY_V20,arrayInBuf, strInput.length(), arrayOutBuf, 64*1024, intPtr)) + { + System.out.println("get DEVICE_ENCODE_ALL_ABILITY_V20 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("get DEVICE_ENCODE_ALL_ABILITY_V20 succ!"); + } + } + public static void Test_PTZProtocol(int iUserID) + { + NET_DVR_PTZCFG struPtzCfg = new NET_DVR_PTZCFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetPTZProtocol(iUserID, struPtzCfg)) + { + System.out.println("NET_DVR_GetPTZProtocol faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GetPTZProtocol succ!"); + } + } + public static void Test_PresetName(int iUserID, int iChan) + { + NET_DVR_PRESET_NAME_ARRAY struPresetNameArray = new NET_DVR_PRESET_NAME_ARRAY(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PRESET_NAME, iChan, struPresetNameArray)) + { + System.out.println("NET_DVR_GET_PRESET_NAME faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_PRESET_NAME succ!"); + } + } + public static void Test_ShowString(int iUserID, int iChan) + { + NET_DVR_SHOWSTRING_V30 struShowString = new NET_DVR_SHOWSTRING_V30(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_SHOWSTRING_V30, iChan, struShowString)) + { + System.out.println("NET_DVR_GET_SHOWSTRING_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_SHOWSTRING_V30 succ!"); + } + + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_SHOWSTRING_V30, iChan, struShowString)) + { + System.out.println("NET_DVR_SET_SHOWSTRING_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_SHOWSTRING_V30 succ!"); + } + } + public static void Test_DigitalChannelState(int iUserID) + { + NET_DVR_DIGITAL_CHANNEL_STATE struChanState = new NET_DVR_DIGITAL_CHANNEL_STATE(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_DIGITAL_CHANNEL_STATE, 0, struChanState)) + { + System.out.println("NET_DVR_GET_DIGITAL_CHANNEL_STATE faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_DIGITAL_CHANNEL_STATE succ!"); + System.out.println("analog channel 1 and 2:" + (int)struChanState.byAnalogChanState[0] + "-" + (int)struChanState.byAnalogChanState[1] + + ",digital channel 1 and 2:" + (int)struChanState.byDigitalChanState[0] + "-" + (int)struChanState.byDigitalChanState[1]); + } + } + + public static void Test_DDNSPara(int iUserID) + { + NET_DVR_DDNSPARA_V30 struDDNS = new NET_DVR_DDNSPARA_V30(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_DDNSCFG_V30, 0, struDDNS)) + { + System.out.println("NET_DVR_GET_DDNSCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_DDNSCFG_V30 succ!"); + } + + struDDNS.struDDNS[4].sDomainName = CommonMethod.string2ASCII("111222333444", 64); + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_DDNSCFG_V30, 0, struDDNS)) + { + System.out.println("NET_DVR_SET_DDNSCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_DDNSCFG_V30 succ!"); + } + } + public static void Test_APInfoList(int iUserID) + { + NET_DVR_AP_INFO_LIST struAPInfoList = new NET_DVR_AP_INFO_LIST(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_AP_INFO_LIST, 0, struAPInfoList)) + { + System.out.println("NET_DVR_GET_AP_INFO_LIST faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_AP_INFO_LIST succ!"); + int i = 0; + for(i = 0; i < struAPInfoList.dwCount; i++) + { + System.out.println("AP[" + i + "]SSID:[" + new String(struAPInfoList.struApInfo[i].sSsid) + "]"); + } + } + } + public static void Test_WifiCfg(int iUserID) + { + NET_DVR_WIFI_CFG struWifiCfg = new NET_DVR_WIFI_CFG(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_WIFI_CFG, 0, struWifiCfg)) + { + System.out.println("NET_DVR_GET_WIFI_CFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_WIFI_CFG succ!"); + } + + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_WIFI_CFG, 0, struWifiCfg)) + { + System.out.println("NET_DVR_SET_WIFI_CFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_WIFI_CFG succ!"); + } + } + public static void Test_WifiStatus(int iUserID) + { + NET_DVR_WIFI_CONNECT_STATUS struStatus = new NET_DVR_WIFI_CONNECT_STATUS(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_WIFI_STATUS, 0, struStatus)) + { + System.out.println("NET_DVR_GET_WIFI_STATUS faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_WIFI_STATUS succ!"); + } + } + public static void Test_UpnpNatState(int iUserID) + { + NET_DVR_UPNP_NAT_STATE struUpnpNat = new NET_DVR_UPNP_NAT_STATE(); + if(!HCNetSDK.getInstance().NET_DVR_GetUpnpNatState(iUserID, struUpnpNat)) + { + System.out.println("NET_DVR_GetUpnpNatState faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GetUpnpNatState succ!"); + } + } + public static void Test_UserCfg(int iUserID) + { + NET_DVR_USER_V30 struUserCfg = new NET_DVR_USER_V30(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_USERCFG_V30, 0, struUserCfg)) + { + System.out.println("NET_DVR_GET_USERCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_USERCFG_V30 succ!" + new String(struUserCfg.struUser[0].sUserName)); + } + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_USERCFG_V30, 0, struUserCfg)) + { + System.out.println("NET_DVR_SET_USERCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_USERCFG_V30 succ!"); + } + } + + public static void Test_DeviceCfg(int iUserID) + { + NET_DVR_DEVICECFG struDeviceCfg = new NET_DVR_DEVICECFG(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_DEVICECFG, 0, struDeviceCfg)) + { + System.out.println("NET_DVR_GET_DEVICECFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_DEVICECFG succ!" ); + } + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_DEVICECFG, 0, struDeviceCfg)) + { + System.out.println("NET_DVR_SET_DEVICECFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetErrorMsg(ptrINT)); + } + else + { + System.out.println("NET_DVR_SET_DEVICECFG succ!" ); + } + + } + + public static void Test_DeviceCfg_V40(int iUserID) + { + NET_DVR_DEVICECFG_V40 struDeviceCfg = new NET_DVR_DEVICECFG_V40(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_DEVICECFG_V40, 0, struDeviceCfg)) + { + System.out.println("NET_DVR_GET_DEVICECFG_V40 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_DEVICECFG_V40 succ!" + new String(struDeviceCfg.byDevTypeName)); + } +// if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_DEVICECFG_V40, 0, struDeviceCfg)) +// { +// System.out.println("NET_DVR_SET_DEVICECFG_V40 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetErrorMsg(ptrINT)); +// } +// else +// { +// System.out.println("NET_DVR_SET_DEVICECFG_V40 succ:" + struDeviceCfg.byDevTypeName); +// } + + } + + public static void Test_ExceptionCfg_V40(int iUserID, int iChan) + { + NET_DVR_EXCEPTION_V40 struExceptionCfg = new NET_DVR_EXCEPTION_V40(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_EXCEPTIONCFG_V40, iChan, struExceptionCfg)) + { + System.out.println("NET_DVR_GET_EXCEPTIONCFG_V40 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_EXCEPTIONCFG_V40 succ! " ); + } + + } + + public static void Test_PicCfg(int iUserID, int iChan) + { + NET_DVR_PICCFG_V30 struPiccfg = new NET_DVR_PICCFG_V30(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PICCFG_V30, iChan, struPiccfg)) + { + System.out.println("NET_DVR_GET_PICCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_PICCFG_V30 succ!" + new String(struPiccfg.sChanName)); + } + for(int i = 0; i <= 14; i++) + { + for(int j = 0; j <= 21; j++) + { + struPiccfg.struMotion.byMotionScope[i][j] = 1; + } + } + struPiccfg.struMotion.byEnableHandleMotion = 0; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_PICCFG_V30, iChan, struPiccfg)) + { + System.out.println("NET_DVR_SET_PICCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_PICCFG_V30 succ!"); + } + } + public static void Test_ZeroChanCfg(int iUserID) + { + NET_DVR_ZEROCHANCFG struZeroChanCfg = new NET_DVR_ZEROCHANCFG(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_ZEROCHANCFG, 1, struZeroChanCfg)){ + System.out.println("NET_DVR_GET_ZEROCHANCFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + System.out.println("NET_DVR_GET_ZEROCHANCFG succ!"); + } + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_ZEROCHANCFG, 1, struZeroChanCfg)){ + System.out.println("NET_DVR_SET_ZEROCHANCFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + System.out.println("NET_DVR_SET_ZEROCHANCFG succ!"); + } + } + public static void Test_WorkState(int iUserID) + { + NET_DVR_WORKSTATE_V30 struWorkState = new NET_DVR_WORKSTATE_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRWorkState_V30(iUserID, struWorkState)) + { + System.out.println("NET_DVR_GetDVRWorkState_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GetDVRWorkState_V30 succ!"); + } + } + public static void Test_RecordCfg(int iUserID, int iChan) + { + //jni + NET_DVR_RECORD_V30 struRecordCfg = new NET_DVR_RECORD_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_RECORDCFG_V30, iChan, struRecordCfg)) + { + System.out.println("NET_DVR_GET_RECORDCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_RECORDCFG_V30 succ!"); + System.out.println("AudioRec: "+struRecordCfg.byAudioRec + " StreamType: " + struRecordCfg.byStreamType); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_RECORDCFG_V30, iChan, struRecordCfg)) + { + System.out.println("NET_DVR_SET_RECORDCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_SET_RECORDCFG_V30 succ!"); + } + + //jna +// HCNetSDKByJNA.NET_DVR_RECORD_V30 struRecordCfg = new HCNetSDKByJNA.NET_DVR_RECORD_V30(); +// struRecordCfg.dwSize = struRecordCfg.size(); +// IntByReference pInt = new IntByReference(0); +// if (!HCNetSDKJNAInstance.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDKByJNA.NET_DVR_GET_RECORDCFG_V30, iChan, struRecordCfg.getPointer(), struRecordCfg.size(), pInt)) +// { +// System.out.println("NET_DVR_GET_RECORDCFG_V30 faild!" + " err: " + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); +// }else +// { +// struRecordCfg.read(); +// System.out.println("NET_DVR_GET_RECORDCFG_V30 succ!"); +// } +// if(!HCNetSDKJNAInstance.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDKByJNA.NET_DVR_SET_RECORDCFG_V30,iChan,struRecordCfg.getPointer(),struRecordCfg.size())) +// { +// System.out.println("NET_DVR_SET_RECORDCFG_V30 faild!" + " err: " + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); +// } else +// { +// System.out.println("NET_DVR_SET_RECORDCFG_V30 succ!"); +// } + } + public static void Test_AuxAlarmCfg(int iUserID, int iChan) + { + NET_IPC_AUX_ALARMCFG struAuxAlarm = new NET_IPC_AUX_ALARMCFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_IPC_GET_AUX_ALARMCFG, iChan, struAuxAlarm)) + { + System.out.println("NET_IPC_GET_AUX_ALARMCFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_IPC_GET_AUX_ALARMCFG succ!"); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_IPC_SET_AUX_ALARMCFG, iChan, struAuxAlarm)) + { + System.out.println("NET_IPC_GET_AUX_ALARMCFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + System.out.println("NET_IPC_GET_AUX_ALARMCFG succ!"); + } + } + public static void Test_AlarminCfg(int iUserID) + { + NET_DVR_ALARMINCFG_V30 struAlarmIn = new NET_DVR_ALARMINCFG_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMINCFG_V30, 0, struAlarmIn)) + { + System.out.println("NET_DVR_GET_ALARMINCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_ALARMINCFG_V30 succ!"); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_ALARMINCFG_V30, 0, struAlarmIn)) + { + System.out.println("NET_DVR_SET_ALARMINCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_SET_ALARMINCFG_V30 succ!"); + } + } + public static void Test_AlarmOutCfg(int iUserID) + { + NET_DVR_ALARMOUTCFG_V30 struAlarmOut = new NET_DVR_ALARMOUTCFG_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMOUTCFG_V30, 0, struAlarmOut)) + { + System.out.println("NET_DVR_GET_ALARMOUTCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_ALARMOUTCFG_V30 succ!"); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_ALARMOUTCFG_V30, 0, struAlarmOut)) + { + System.out.println("NET_DVR_SET_ALARMOUTCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_SET_ALARMOUTCFG_V30 succ!"); + } + } + public static void Test_DecoderCfg(int iUserID) + { + NET_DVR_DECODERCFG_V30 struDecoderCfg = new NET_DVR_DECODERCFG_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_DECODERCFG_V30, 1, struDecoderCfg)) + { + System.out.println("NET_DVR_GET_DECODERCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_DECODERCFG_V30 succ!"); + } + struDecoderCfg.wDecoderAddress = 1; + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_DECODERCFG_V30, 1, struDecoderCfg)) + { + System.out.println("NET_DVR_SET_DECODERCFG_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_SET_DECODERCFG_V30 succ!"); + } + } + public static void Test_NTPPara(int iUserID) + { + NET_DVR_NTPPARA NtpPara = new NET_DVR_NTPPARA(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_NTPCFG, 0, NtpPara)) + { + System.out.println("get NtpPara faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("get NtpPara succ!"); + } + NtpPara.byEnableNTP = 1; + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_NTPCFG, 0, NtpPara)) + { + System.out.println("Set NtpPara faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("Set NtpPara succ!"); + } + } + public static void Test_IPAlarmOutCfg(int iUserID) + { + NET_DVR_IPALARMOUTCFG struIpAlarmOut = new NET_DVR_IPALARMOUTCFG(); + if(!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_IPALARMOUTCFG, 0, struIpAlarmOut)) + { + System.out.println("NET_DVR_GET_IPALARMOUTCFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_IPALARMOUTCFG succ!"); + } + } + public static void Test_IPParaCfg(int iUserID) + { + NET_DVR_IPPARACFG_V40 IpPara = new NET_DVR_IPPARACFG_V40(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, IpPara)) + { + System.out.println("NET_DVR_GET_IPPARACFG_V40 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_IPPARACFG_V40 succ!AChan:" + IpPara.dwAChanNum + ",DChan:" + IpPara.dwDChanNum); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_IPPARACFG_V40, 0, IpPara)) + { + System.out.println("NET_DVR_SET_IPPARACFG_V40 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_SET_IPPARACFG_V40 succ!"); + } + } + public static void Test_NetCfg(int iUserID) + { + NET_DVR_NETCFG_V30 NetCfg = new NET_DVR_NETCFG_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_NETCFG_V30, 0, NetCfg)) + { + System.out.println("get net cfg faied!"+ " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("get net cfg succ!"); + System.out.println("alarm host ip: " + new String(NetCfg.struAlarmHostIpAddr.sIpV4)); + System.out.println("Etherner host ip: " + new String(NetCfg.struEtherNet[0].struDVRIP.sIpV4)); + System.out.println("Etherner mask: " + new String(NetCfg.struEtherNet[0].struDVRIPMask.sIpV4)); + } + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_NETCFG_V30, 0 , NetCfg)) + { + System.out.println("Set net cfg faied!"+ " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("Set net cfg succ!"); + } + } + public static void Test_CompressionCfg(int iUserID, int iChan) + { + NET_DVR_COMPRESSIONCFG_V30 CompressionCfg = new NET_DVR_COMPRESSIONCFG_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, iChan, CompressionCfg)) + { + System.out.println("get CompressionCfg failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("get CompressionCfg succ! resolution: " + CompressionCfg.struNetPara.byResolution); + } + CompressionCfg.struNetPara.dwVideoFrameRate = 1; + if (!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID,HCNetSDK.NET_DVR_SET_COMPRESSCFG_V30, iChan, CompressionCfg)) + { + System.out.println("Set CompressionCfg failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("Set CompressionCfg succ!" ); + } + } + public static void Test_CompressCfgAud(int iUserID) + { + NET_DVR_COMPRESSION_AUDIO AudioCompress = new NET_DVR_COMPRESSION_AUDIO(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_COMPRESSCFG_AUD, 1, AudioCompress)) + { + System.out.println("get AudioCompress failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("get AudioCompress succ! type: " + AudioCompress.byAudioEncType); + } + } + public static void Test_AlarmOutStatus(int iUserID) + { + NET_DVR_ALARMOUTSTATUS_V30 AlarmOut = new NET_DVR_ALARMOUTSTATUS_V30(); + if (!HCNetSDK.getInstance().NET_DVR_SetAlarmOut(iUserID, 0x00ff, 1)) + { + System.out.println("Set alarm out failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("Set alarm out succ!"); + } + if (!HCNetSDK.getInstance().NET_DVR_GetAlarmOut_V30(iUserID, AlarmOut)) + { + System.out.println("Get alarm out failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("Get alarm out succ!"); + for (int i=0; i1"); + byte[] arrayInBuf = new byte[8*1024]; + arrayInBuf = strInput.getBytes(); + if(!HCNetSDK.getInstance().NET_DVR_GetXMLAbility(iUserID, HCNetSDK.FISHEYE_ABILITY,arrayInBuf, strInput.length(), arrayOutBuf, 64*1024, intPtr)) + { + System.out.println("get FISHEYE_ABILITY faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("get FISHEYE_ABILITY succ!"); + } + } + public static void Test_CAMERAPARAMCFG_EX(int iUserID, int iChan) + { + NET_DVR_CAMERAPARAMCFG_EX struCameraParamCfgEX = new NET_DVR_CAMERAPARAMCFG_EX(); + int i = 0; + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_CCDPARAMCFG_EX, iChan, struCameraParamCfgEX)) + { + System.out.println("NET_DVR_GET_CCDPARAMCFG_EX failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_CCDPARAMCFG_EX succ!"); + } + struCameraParamCfgEX.struVideoEffect.byBrightnessLevel = 39; + struCameraParamCfgEX.struVideoEffect.byContrastLevel = 80; + struCameraParamCfgEX.struVideoEffect.bySaturationLevel = 26; + struCameraParamCfgEX.struVideoEffect.bySharpnessLevel = 82; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_CCDPARAMCFG_EX, iChan, struCameraParamCfgEX)) + { + System.out.println("NET_DVR_SET_CCDPARAMCFG_EX!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_CCDPARAMCFG_EX succ"); + } + i = HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + public static void Test_WIRELESSDIAL_CFG(int iUserID) + { + NET_DVR_COND_INT struCardNo = new NET_DVR_COND_INT(); + struCardNo.iValue = 1; + NET_DVR_WIRELESSSERVER_FULLVERSION_CFG struWirelessDialCfg = new NET_DVR_WIRELESSSERVER_FULLVERSION_CFG(); + int i = 0; + if(!HCNetSDK.getInstance().NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG, struCardNo, null, struWirelessDialCfg)){ + System.out.println("NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + System.out.println("NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG succ!"); + } + i = HCNetSDK.getInstance().NET_DVR_GetLastError(); + if(!HCNetSDK.getInstance().NET_DVR_SetSTDConfig(iUserID, HCNetSDK.NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG, struCardNo, struWirelessDialCfg, null)){ + System.out.println("NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + System.out.println("NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG succ!"); + } + i = HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + public static void Test_PostRadar_Capabilities(int iUserID) + { + byte[] byAbility = new byte[1*1024*1024]; + INT_PTR iRetLen = new INT_PTR(); + iRetLen.iValue = 0; + int i = 0; + if (!HCNetSDK.getInstance().NET_DVR_GetSTDAbility(iUserID, HCNetSDK.NET_DVR_GET_POSTRADAR_CAPABILITIES, null, 0, byAbility, 1024*1024, iRetLen)) + { + System.out.println("NET_DVR_GET_POSTRADAR_CAPABILITIES" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_POSTRADAR_CAPABILITIES success"); + } + i = HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + + + public static void Test_Its_Overlap_Cfg_V50(int iUserID, int iChan) + { + /* + NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND struItsOverlapCfgCond = new NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND(); + struItsOverlapCfgCond.struStreamInfo.dwChannel = iChan; + struItsOverlapCfgCond.dwStreamType = 1; + NET_DVR_MULTI_STREAM_COMPRESSIONCFG struItsOverlapCfgV50 = new NET_DVR_MULTI_STREAM_COMPRESSIONCFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID,HCNetSDK.NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG, struItsOverlapCfgCond, struItsOverlapCfgV50)) + { + System.out.println("NET_ITS_GET_OVERLAP_CFG_V50 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_ITS_GET_OVERLAP_CFG_V50 succ: "); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDeviceConfig(iUserID, HCNetSDK.NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG, struItsOverlapCfgCond, struItsOverlapCfgV50)) + { + System.out.println("NET_ITS_SET_OVERLAP_CFG_V50 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_ITS_SET_OVERLAP_CFG_V50 succ"); + } + */ + } + public static void TextOSD(int iUserID, int iChan) + { + NET_VCA_FACESNAPCFG struPreviewDisplay = new NET_VCA_FACESNAPCFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_FACESNAPCFG, 1, struPreviewDisplay)) + { + System.out.println("NET_DVR_GET_FACESNAPCFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_FACESNAPCFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_FACESNAPCFG, 1, struPreviewDisplay)) + { + System.out.println("NET_DVR_SET_FACESNAPCFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_FACESNAPCFG succ"); + } + } + + public static void Test_EzvizCreate() + { + NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO struLoginInfo = new NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO(); + NET_DVR_DEVICEINFO_V30 struDeviceInfo = new NET_DVR_DEVICEINFO_V30(); + + String strInput = new String("open.ys7.com"); + byte[] byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sEzvizServerAddress, 0, byInput.length); + + struLoginInfo.wPort = 443; + + strInput = new String("at.8gebs2w79fiz3km4arwjec9i3kblmlpi-13ifmla84v-1j7webb-an1n5tl3w"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sAccessToken, 0, byInput.length); + + strInput = new String("ae1b9af9dcac4caeb88da6dbbf2dd8d5"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sAppID, 0, byInput.length); + + strInput = new String("78313dadecd92bd11623638d57aa5128"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sFeatureCode, 0, byInput.length); + + strInput = new String("https://open.ys7.com:443/api/device/transmission"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sUrl, 0, byInput.length); + + strInput = new String("201606271"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sDeviceID, 0, byInput.length); + + strInput = new String("0"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sClientType, 0, byInput.length); + + strInput = new String("UNKNOWN"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sNetType, 0, byInput.length); + + strInput = new String("5.0.1"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sOsVersion, 0, byInput.length); + + strInput = new String("v.5.1.5.30"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struLoginInfo.sSdkVersion, 0, byInput.length); + int iUserID = -1; +// int iUserID = HCNetSDK.getInstance().NET_DVR_CreateOpenEzvizUser(struLoginInfo, struDeviceInfo); + //if (-1 == iUserID) +// { +// System.out.println("NET_DVR_CreateEzvizUser" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); +// } +// else +// { +// System.out.println("NET_DVR_CreateEzvizUser success"); +// } +// +// NET_DVR_XML_CONFIG_INPUT struInput = new NET_DVR_XML_CONFIG_INPUT(); +// NET_DVR_XML_CONFIG_OUTPUT struOuput = new NET_DVR_XML_CONFIG_OUTPUT(); +// strInput = new String("GET /ISAPI/SecurityCP/AlarmControlByPhone\r\n"); +// byInput = strInput.getBytes(); +// System.arraycopy(byInput, 0, struInput.lpRequestUrl, 0, byInput.length); +// struInput.dwRequestUrlLen = byInput.length; +// struOuput.dwOutBufferSize = HCNetSDK.MAX_XML_CONFIG_LEN; +// struOuput.dwStatusSize = struOuput.dwOutBufferSize; +// if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) +// { +// System.out.println("NET_DVR_STDXMLConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); +// } +// else +// { +// System.out.println("NET_DVR_STDXMLConfig success"); +// } +// byte[] byOutput = new byte[struOuput.dwReturnedXMLSize]; +// System.arraycopy(struOuput.lpOutBuffer, 0, byOutput, 0, struOuput.dwReturnedXMLSize); +// System.out.println(new String(byOutput)); +// +// struInput = new NET_DVR_XML_CONFIG_INPUT(); +// struOuput = new NET_DVR_XML_CONFIG_OUTPUT(); +// +// strInput = new String("PUT /ISAPI/VideoIntercom/passwordAuthentication\r\n"); +// byInput = strInput.getBytes(); +// System.arraycopy(byInput, 0, struInput.lpRequestUrl, 0, byInput.length); +// struInput.dwRequestUrlLen = byInput.length; +// +// String strInBuffer = new String("\r\n123456\r\n\r\n"); +// byte[] byInBuffer = strInBuffer.getBytes(); +// System.arraycopy(byInBuffer, 0, struInput.lpInBuffer, 0, byInBuffer.length); +// struInput.dwInBufferSize = strInBuffer.length(); +// struOuput.dwOutBufferSize = HCNetSDK.MAX_XML_CONFIG_LEN; +// struOuput.dwStatusSize = struOuput.dwOutBufferSize; +// +// if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) +// { +// System.out.println("NET_DVR_STDXMLConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); +// } +// else +// { +// System.out.println("NET_DVR_STDXMLConfig success"); +// } + /* + NET_DVR_VIDEO_CALL_PARAM struTest1 = new NET_DVR_VIDEO_CALL_PARAM(); + //Set + struTest1.dwCmdType = 0; + struTest1.wUnitNumber = 2; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_CALL_SIGNAL, 1, struTest1)) + { + System.out.println("NET_DVR_SET_FACESNAPCFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_FACESNAPCFG succ"); + } + + NET_DVR_CONTROL_GATEWAY struTest2 = new NET_DVR_CONTROL_GATEWAY(); + //Set + struTest2.byCommand = 0; + struTest2.byControlType = 1; + String strTempString = new String("123456"); + byte[] byTemp = strTempString.getBytes(); + System.arraycopy(byTemp, 0, struTest2.byPassword, 0, byTemp.length); + if(!HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_REMOTECONTROL_GATEWAY, struTest2)) + { + System.out.println("NET_DVR_SET_FACESNAPCFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_FACESNAPCFG succ"); + }*/ + + NET_DVR_ALARMIN_PARAM struTest3 = new NET_DVR_ALARMIN_PARAM(); + //Set + struTest3.byAlarmType = 1; + struTest3.wDetectorType = 1; + struTest3.byType = 0; + String strName = new String("123456"); + byte[] byName = strName.getBytes(); + System.arraycopy(byName, 0, struTest3.byName, 0, byName.length); + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_ALARMIN_PARAM, 1, struTest3)) + { + System.out.println("NET_DVR_SET_ALARMIN_PARAM failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_ALARMIN_PARAM succ"); + } + + NET_DVR_MULTI_ALARMIN_COND struCond = new NET_DVR_MULTI_ALARMIN_COND(); + NET_DVR_ALARMIN_PARAM_LIST struList = new NET_DVR_ALARMIN_PARAM_LIST(); + + for (int k = 0; k < 64; k++) + { + struCond.iZoneNo[k] = -1; + } + for(int m = 0; m < 32; m++) + { + struCond.iZoneNo[m] = m; + } + + if (!HCNetSDK.getInstance().NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM_LIST, struCond, null, struList)) + { + System.out.println("NET_DVR_GetSTDConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GetSTDConfig success"); + } + + NET_DVR_CALL_STATUS struCallStatus = new NET_DVR_CALL_STATUS(); + if (!HCNetSDK.getInstance().NET_DVR_GetDeviceStatus(iUserID, HCNetSDK.NET_DVR_GET_CALL_STATUS, null, struCallStatus)) + { + System.out.println("NET_DVR_GET_CALL_STATUS failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_GET_CALL_STATUS succ"); + } + } + + public static void Test_EzvizXMLConfig(int iUserID) + { + NET_DVR_XML_CONFIG_INPUT struInput = new NET_DVR_XML_CONFIG_INPUT(); + NET_DVR_XML_CONFIG_OUTPUT struOuput = new NET_DVR_XML_CONFIG_OUTPUT(); + String strInput = new String("GET /ISAPI/SecurityCP/AlarmControlByPhone\r\n"); + byte[] byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struInput.lpRequestUrl, 0, byInput.length); + struInput.dwRequestUrlLen = byInput.length; + struOuput.dwOutBufferSize = HCNetSDK.MAX_XML_CONFIG_LEN; + struOuput.dwStatusSize = struOuput.dwOutBufferSize; + //struInput.lpRequestUrl = strInput.getBytes(); + //struInput.lpInBuffer = null; + if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) + { + System.out.println("NET_DVR_STDXMLConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_STDXMLConfig success"); + } + byte[] byOutput = new byte[struOuput.dwReturnedXMLSize]; + System.arraycopy(struOuput.lpOutBuffer, 0, byOutput, 0, struOuput.dwReturnedXMLSize); + System.out.println(new String(byOutput)); + + //Set + struInput = new NET_DVR_XML_CONFIG_INPUT(); + struOuput = new NET_DVR_XML_CONFIG_OUTPUT(); + strInput = new String("PUT /ISAPI/SecurityCP/AlarmControlByPhone\r\n"); + byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struInput.lpRequestUrl, 0, byInput.length); + struInput.dwRequestUrlLen = byInput.length; + String strInBuffer = new String("\r\ncloseAlarm\r\n\r\n"); + byte[] byInBuffer = strInBuffer.getBytes(); + System.arraycopy(byInBuffer, 0, struInput.lpInBuffer, 0, byInBuffer.length); + struInput.dwInBufferSize = strInBuffer.length(); + struOuput.dwOutBufferSize = HCNetSDK.MAX_XML_CONFIG_LEN; + struOuput.dwStatusSize = struOuput.dwOutBufferSize; + if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) + { + System.out.println("NET_DVR_STDXMLConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_STDXMLConfig success"); + //strOutput = new String(struOuput.lpStatusBuffer); + } + } + + public static void Test_EzvizServerDeviceInfo(int iUserID) + { + NET_DVR_SERVER_DEVICE_INFO struServerDeviceInfo = new NET_DVR_SERVER_DEVICE_INFO(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_SERVER_DEVICE_INFO, 0, struServerDeviceInfo)) + { + System.out.println("NET_DVR_GET_SERVER_DEVICE_INFO failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_SERVER_DEVICE_INFO succ" + "deviceNum: " + struServerDeviceInfo.dwDeviceNum); + } + + NET_DVR_CALLER_INFO struCallerInfo = new NET_DVR_CALLER_INFO(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_CALLER_INFO, 1, struCallerInfo)) + { + System.out.println("NET_DVR_GET_CALLER_INFO failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_CALLER_INFO succ" + "BuildingNo: " + struCallerInfo.wBuildingNo); + } + } + + public static void Test_EzvizAlarmInParamList(int iUserID) + { + NET_DVR_MULTI_ALARMIN_COND struCond = new NET_DVR_MULTI_ALARMIN_COND(); + for (int k = 0; k < 64; k++) + { + struCond.iZoneNo[k] = -1; + } + for(int m = 0; m < 32; m++) + { + struCond.iZoneNo[m] = m; + } + NET_DVR_ALARMIN_PARAM_LIST struAlarmInParam = new NET_DVR_ALARMIN_PARAM_LIST(); + + if(!HCNetSDK.getInstance().NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM_LIST, struCond, null, struAlarmInParam)) + { + System.out.println("NET_DVR_GET_ALARMIN_PARAM_LIST faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_ALARMIN_PARAM_LIST succ!" + "type: " + struAlarmInParam.struSingleAlarmInParam[0].byType); + } + } + + public static void Test_EzvizCallerInfo(int iUserID) + { + NET_DVR_CALLER_INFO struCallerInfo = new NET_DVR_CALLER_INFO(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_CALLER_INFO, 1, struCallerInfo)) + { + System.out.println("NET_DVR_GET_CALLER_INFO failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_CALLER_INFO succ" + "BuildingNo: " + struCallerInfo.wBuildingNo); + } + } + + public static void Test_EzvizRemoteGatway(int iUserID) + { + NET_DVR_CONTROL_GATEWAY struTest2 = new NET_DVR_CONTROL_GATEWAY(); + //Set + struTest2.byCommand = 0; + struTest2.byControlType = 1; + String strTempString = new String("123456"); + byte[] byTemp = strTempString.getBytes(); + System.arraycopy(byTemp, 0, struTest2.byPassword, 0, byTemp.length); + if(!HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_REMOTECONTROL_GATEWAY, struTest2)) + { + System.out.println("NET_DVR_REMOTECONTROL_GATEWAY failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_REMOTECONTROL_GATEWAY succ"); + } + } + + public static void Test_EzvizCallSignal(int iUserID) + { + NET_DVR_VIDEO_CALL_PARAM struTest1 = new NET_DVR_VIDEO_CALL_PARAM(); + //Set + struTest1.dwCmdType = 0; + struTest1.wUnitNumber = 2; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_CALL_SIGNAL, 1, struTest1)) + { + System.out.println("NET_DVR_SET_CALL_SIGNAL failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_CALL_SIGNAL succ"); + } + } + + public static void Test_EzvizPawdAuth(int iUserID) + { + NET_DVR_XML_CONFIG_INPUT struInput = new NET_DVR_XML_CONFIG_INPUT(); + NET_DVR_XML_CONFIG_OUTPUT struOuput = new NET_DVR_XML_CONFIG_OUTPUT(); + + String strInput = new String("PUT /ISAPI/VideoIntercom/passwordAuthentication\r\n"); + byte[] byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struInput.lpRequestUrl, 0, byInput.length); + struInput.dwRequestUrlLen = byInput.length; + + String strInBuffer = new String("\r\n123456\r\n\r\n"); + byte[] byInBuffer = strInBuffer.getBytes(); + System.arraycopy(byInBuffer, 0, struInput.lpInBuffer, 0, byInBuffer.length); + struInput.dwInBufferSize = strInBuffer.length(); + struOuput.dwOutBufferSize = HCNetSDK.MAX_XML_CONFIG_LEN; + struOuput.dwStatusSize = struOuput.dwOutBufferSize; + if (!HCNetSDK.getInstance().NET_DVR_STDXMLConfig(iUserID, struInput, struOuput)) + { + System.out.println("NET_DVR_STDXMLConfig PUT /ISAPI/VideoIntercom/passwordAuthentication" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_STDXMLConfig PUT /ISAPI/VideoIntercom/passwordAuthentication success"); + //strOutput = new String(struOuput.lpStatusBuffer); + } + } + + public static void TestAlarmHostMainStatus(int iUserID) + { + NET_DVR_ALARMHOST_MAIN_STATUS_V40 struStatus = new NET_DVR_ALARMHOST_MAIN_STATUS_V40(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40, 0, struStatus)) + { + System.out.println("NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 succ"); + } + } + + //mutli + public static void TestScreenConfig(int iUserID) + { +// NET_DVR_ALARMHOST_MAIN_STATUS_V40 struStatus = new NET_DVR_ALARMHOST_MAIN_STATUS_V40(); +// if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40, 0, struStatus)) +// { +// System.out.println("NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); +// }else +// { +// System.out.println("NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 succ"); +// } + } + + public static void TestMCUAbility(int iUserID) + { + byte lpInBuf [] = new byte[1024]; + byte lpOutBuf[] = new byte[100*1024*10]; + + INT_PTR iRetLen = new INT_PTR(); + //iRetLen.iValue = 0; + iRetLen.iValue = lpOutBuf.length; + if(HCNetSDK.getInstance().NET_DVR_GetSTDAbility(iUserID ,9152,null,0,lpOutBuf,100*1024*100,iRetLen)) + { + System.out.println("NET_DVR_GetSTDAbility Success!" ); + } + else + { + System.out.println("NET_DVR_GetSTDAbility Failed!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetErrorMsg(ptrINT)); + } + } + + public static void TextTrialMachine(int iUserID, int iChan) + { + /* + NET_DVR_AUDIO_ACTIVATION_CFG struAudioActivation = new NET_DVR_AUDIO_ACTIVATION_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_AUDIO_ACTIVATION_CFG, 1, struAudioActivation)) + { + System.out.println("NET_DVR_GET_AUDIO_ACTIVATION_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_AUDIO_ACTIVATION_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_AUDIO_ACTIVATION_CFG, 1, struAudioActivation)) + { + System.out.println("NET_DVR_SET_AUDIO_ACTIVATION_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_AUDIO_ACTIVATION_CFG succ"); + } + + NET_DVR_AUDIO_DIACRITICAL_CFG struAudioDiacriticl = new NET_DVR_AUDIO_DIACRITICAL_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_AUDIO_DIACRITICAL_CFG, 33, struAudioDiacriticl)) + { + System.out.println("NET_DVR_GET_AUDIO_DIACRITICAL_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_AUDIO_DIACRITICAL_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + struAudioDiacriticl.byEnable = 1; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_AUDIO_DIACRITICAL_CFG, 33, struAudioDiacriticl)) + { + System.out.println("NET_DVR_SET_AUDIO_DIACRITICAL_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_AUDIO_DIACRITICAL_CFG succ"); + } + + NET_DVR_AREA_MASK_CFG struAreaMask = new NET_DVR_AREA_MASK_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_AREA_MASK_CFG, 33, struAreaMask)) + { + System.out.println("NET_DVR_GET_AREA_MASK_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_AREA_MASK_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + struAreaMask.byEnable = 1; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_AREA_MASK_CFG, 33, struAreaMask)) + { + System.out.println("NET_DVR_SET_AREA_MASK_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_AREA_MASK_CFG succ"); + } + + NET_DVR_VOLUME_CFG struVolumeIn = new NET_DVR_VOLUME_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_AUDIOIN_VOLUME_CFG, 1, struVolumeIn)) + { + System.out.println("NET_DVR_GET_AUDIOIN_VOLUME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_AUDIOIN_VOLUME_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_AUDIOIN_VOLUME_CFG, 1, struVolumeIn)) + { + System.out.println("NET_DVR_SET_AUDIOIN_VOLUME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_AUDIOIN_VOLUME_CFG succ"); + } + + NET_DVR_VOLUME_CFG struVolumeOut = new NET_DVR_VOLUME_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_AUDIOOUT_VOLUME_CFG, 1, struVolumeOut)) + { + System.out.println("NET_DVR_GET_AUDIOOUT_VOLUME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_AUDIOOUT_VOLUME_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_AUDIOOUT_VOLUME_CFG, 1, struVolumeOut)) + { + System.out.println("NET_DVR_SET_AUDIOOUT_VOLUME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_AUDIOOUT_VOLUME_CFG succ"); + } + */ + NET_DVR_INFRARED_CMD_NAME_CFG struInfraredCmdName = new NET_DVR_INFRARED_CMD_NAME_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_INFRARED_CMD_NAME_CFG, 1, struInfraredCmdName)) + { + System.out.println("NET_DVR_GET_INFRARED_CMD_NAME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_INFRARED_CMD_NAME_CFG succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_INFRARED_CMD_NAME_CFG, 1, struInfraredCmdName)) + { + System.out.println("NET_DVR_SET_INFRARED_CMD_NAME_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_INFRARED_CMD_NAME_CFG succ"); + } + /* + + NET_DVR_USER_V30 struUserV30 = new NET_DVR_USER_V30(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_USERCFG_V30, 1, struUserV30)) + { + System.out.println("NET_DVR_GET_USERCFG_V30 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_USERCFG_V30 succ"); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + if(!HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_USERCFG_V30, 1, struUserV30)) + { + System.out.println("NET_DVR_SET_USERCFG_V30 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_USERCFG_V30 succ"); + } + + NET_DVR_TRIAL_SYSTEM_INFO struTrialSystemInfo = new NET_DVR_TRIAL_SYSTEM_INFO(); + if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.NET_DVR_GET_TRIAL_SYSTEM_CFG, 1, struTrialSystemInfo)) + { + System.out.println("NET_DVR_GET_TRIAL_SYSTEM_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_TRIAL_SYSTEM_CFG succ"); + } + + NET_DVR_INQUEST_ROOM struInquestRoom = new NET_DVR_INQUEST_ROOM(); + struInquestRoom.byRoomIndex = 1; + if (!HCNetSDK.getInstance().NET_DVR_InquestStartCDW_V30(iUserID, struInquestRoom, false)) + { + System.out.println("NET_DVR_InquestStartCDW_V30 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_InquestStartCDW_V30 succ"); + } + + if (!HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_INQUEST_PAUSE_CDW, struInquestRoom)) + { + System.out.println("NET_DVR_INQUEST_PAUSE_CDW" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_INQUEST_PAUSE_CDW success"); + } + + if (!HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_INQUEST_RESUME_CDW, struInquestRoom)) + { + System.out.println("NET_DVR_INQUEST_RESUME_CDW" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_INQUEST_RESUME_CDW success"); + } + + if (!HCNetSDK.getInstance().NET_DVR_InquestStopCDW_V30(iUserID, struInquestRoom, false)) + { + System.out.println("NET_DVR_InquestStopCDW_V30 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_InquestStopCDW_V30 succ"); + } + + + NET_DVR_INQUEST_PIP_STATUS_V40 struInquestPipStatus_V40 = new NET_DVR_INQUEST_PIP_STATUS_V40(); + if (!HCNetSDK.getInstance().NET_DVR_InquestGetPIPStatus_V40(iUserID, struInquestRoom, struInquestPipStatus_V40)) + { + System.out.println("NET_DVR_InquestGetPIPStatus_V40 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_InquestGetPIPStatus_V40 succ"); + } + if (!HCNetSDK.getInstance().NET_DVR_InquestSetPIPStatus_V40(iUserID, struInquestRoom, struInquestPipStatus_V40)) + { + System.out.println("NET_DVR_InquestSetPIPStatus_V40 failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_InquestSetPIPStatus_V40 succ"); + } + + NET_DVR_INFRARED_OUTPUT_CTRL_CFG struInfraredOutputCtrlCfg = new NET_DVR_INFRARED_OUTPUT_CTRL_CFG(); + struInfraredOutputCtrlCfg.byIRCmdIndex = 1; + struInfraredOutputCtrlCfg.byIROutPort = 1; + if (!HCNetSDK.getInstance().NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_INFRARED_OUTPUT_CONTROL, struInfraredOutputCtrlCfg)) + { + System.out.println("NET_DVR_INFRARED_OUTPUT_CONTROL" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_INFRARED_OUTPUT_CONTROL success"); + } + + + NET_DVR_PREVIEW_SWITCH_COND struPreviewSwitchCond = new NET_DVR_PREVIEW_SWITCH_COND(); + NET_DVR_PREVIEW_SWITCH_CFG struPreviewSwitchCfg= new NET_DVR_PREVIEW_SWITCH_CFG(); + struPreviewSwitchCond.byGroup = 0; + struPreviewSwitchCond.byVideoOutType = 1; + if (!HCNetSDK.getInstance().NET_DVR_GetDeviceConfig(iUserID, NET_DVR_DEVICE_CONFIG_COMMAND.NET_DVR_GET_PREVIEW_SWITCH_CFG, struPreviewSwitchCond, struPreviewSwitchCfg)) + { + System.out.println("NET_DVR_GET_PREVIEW_SWITCH_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_PREVIEW_SWITCH_CFG succ: "); + } + //Set + //struPreviewDisplay.byMountType = 2; + //struPreviewDisplay.byRealTimeOutput = 3; + for (int i = 0; i < HCNetSDK.MAX_WINDOW_V40; i++) + { + struPreviewSwitchCfg.wSwitchSeq[i] = 0xFFFF; + } + if(!HCNetSDK.getInstance().NET_DVR_SetDeviceConfig(iUserID, NET_DVR_DEVICE_CONFIG_COMMAND.NET_DVR_SET_PREVIEW_SWITCH_CFG, struPreviewSwitchCond, struPreviewSwitchCfg)) + { + System.out.println("NET_DVR_SET_PREVIEW_SWITCH_CFG failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("NET_DVR_SET_PREVIEW_SWITCH_CFG succ"); + } + */ + } + + public static void TestWIRELESSDIAL_CFG(int iUserID, int iChan) + { + NET_DVR_WIRELESSDIAL_CFG struWirelessDial = new NET_DVR_WIRELESSDIAL_CFG(); + NET_DVR_COND_INT condInt = new NET_DVR_COND_INT(); + condInt.iValue = 1; + +// struWirelessDial. + + String strInput = new String("鐤�"); + byte[] byInput = strInput.getBytes(); + System.arraycopy(byInput, 0, struWirelessDial.byUserName, 0, byInput.length); +// struWirelessDial.byUserName = "鐤�"; + + if (!HCNetSDK.getInstance().NET_DVR_SetSTDConfig(iUserID,HCNetSDK.NET_DVR_SET_WIRELESS_DIAL, condInt, struWirelessDial, null)) + { + System.out.println("NET_DVR_GET_WIRELESS_DIAL failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_WIRELESS_DIAL succ" + struWirelessDial.byUserName.toString()); + } + + } + + public static void Text_Trail_ABILITY(int iUserID) + { + + byte[] arrayOutBuf = new byte[64*1024]; + INT_PTR intPtr = new INT_PTR(); + String strInput = new String(""); + byte[] arrayInBuf = new byte[8*1024]; + arrayInBuf = strInput.getBytes(); + if(!HCNetSDK.getInstance().NET_DVR_GetXMLAbility(iUserID, HCNetSDK.DEVICE_ABILITY_INFO,arrayInBuf, strInput.length(), arrayOutBuf, 64*1024, intPtr)) + { + System.out.println("get Trail_ABILITY faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + System.out.println("get Trail_ABILITY succ!"); + } + } + + public static void Test_LEDArea(int iUserID) + { + HCNetSDKByJNA.NET_DVR_STD_CONFIG struSTDConfig = new HCNetSDKByJNA.NET_DVR_STD_CONFIG(); + + HCNetSDKByJNA.NET_DVR_LED_AREA_COND struCond = new HCNetSDKByJNA.NET_DVR_LED_AREA_COND(); + struCond.dwSize = struCond.size(); + struCond.dwVideoWallNo = 1; + struCond.write(); + + HCNetSDKByJNA.NET_DVR_LED_AREA_INFO struArea = new HCNetSDKByJNA.NET_DVR_LED_AREA_INFO(); + struArea.dwSize = struArea.size(); + struArea.write(); + + HCNetSDKByJNA.NET_DVR_LED_AREA_INFO_LIST struAreaList = new HCNetSDKByJNA.NET_DVR_LED_AREA_INFO_LIST(); + struAreaList.dwSize = struAreaList.size(); + struAreaList.lpstruBuffer = struArea.getPointer(); + struAreaList.dwBufferSize = struArea.dwSize; + struAreaList.write(); + + struSTDConfig.lpCondBuffer = struCond.getPointer(); + struSTDConfig.dwCondSize = struCond.dwSize; + struSTDConfig.lpOutBuffer = struAreaList.getPointer(); + struSTDConfig.dwOutSize = struAreaList.dwSize; + struSTDConfig.write(); + + if (!HCNetSDKJNAInstance.getInstance().NET_DVR_GetSTDConfig(iUserID,HCNetSDKByJNA.NET_DVR_GET_LED_AREA_INFO_LIST, struSTDConfig.getPointer())) + { + System.out.println("NET_DVR_GET_LED_AREA_INFO_LIST failed!" + "err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + System.out.println("NET_DVR_GET_LED_AREA_INFO_LIST succ"); + } + } + + + /****************************************PictureTest******************************************************/ + //private final static String TAG = "PicutreTest"; + private static int m_iHandle = -1; + + /*case0*/ + public CGReturn PicUpload(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_PICTURECFG struPic= new NET_DVR_PICTURECFG(); + struPic.byUseType = 1; + struPic.bySequence = 1; + struPic.sPicName[0]='a'; + struPic.sPicName[1]='b'; + struPic.dwVideoWallNo = 0x0100000; + struPic.struBasemapCfg.byScreenIndex = 1; + struPic.struBasemapCfg.byMapNum = 1; + struPic.struBasemapCfg.wSourHeight = 1; + struPic.struBasemapCfg.wSourWidth = 1; + String sFileName = "/mnt/sdcard/Pictures/Screenshots/Screenshot_2015-10-12-21-27-05.png"; + + File f = new File(sFileName); + if (f.exists()) { + Log.i("[NetSDKSimpleDemo]", "exist "+sFileName); + + } else { + Log.i("[NetSDKSimpleDemo]", "not exist "+sFileName); + } + + m_iHandle = HCNetSDK.getInstance().NET_DVR_PicUpload(iUserID, sFileName, struPic); + if(m_iHandle == -1) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_PicUpload fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_PicUpload success"); + } + + for(int i=0;i<100;i++) + { + int iprogress = HCNetSDK.getInstance().NET_DVR_GetPicUploadProgress(m_iHandle); + Log.i("[NetSDKSimpleDemo]","i="+i+",---iprogress="+iprogress); + //Thread.sleep(10); + } + + if(HCNetSDK.getInstance().NET_DVR_CloseUploadHandle(m_iHandle)) + { + Log.i("[NetSDKSimpleDemo]","NET_DVR_CloseUploadHandle success"); + } + else { + Log.e("[NetSDKSimpleDemo]","NET_DVR_CloseUploadHandle fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case1*/ + public CGReturn BaseMap(int iUserID) + { + CGReturn ret=new CGReturn(); + int lChannel = 0x01000001; + NET_DVR_BASEMAP_WINCFG struBaseMap = new NET_DVR_BASEMAP_WINCFG(); + if(HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_BASEMAP_WIN_CFG, lChannel, struBaseMap)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_WIN_CFG success"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_WIN_CFG fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + struBaseMap.byEnable = 1; + struBaseMap.struWinPosition.dwHeight = 1920; + struBaseMap.struWinPosition.dwWidth = 1920; + struBaseMap.struWinPosition.dwXCoordinate = 0; + struBaseMap.struWinPosition.dwYCoordinate = 0; + + if(HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_BASEMAP_WIN_CFG, lChannel, struBaseMap)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_BASEMAP_WIN_CFG success"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_BASEMAP_WIN_CFG fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case2*/ + public CGReturn BasemapCfg(int iUserID) + { + CGReturn ret=new CGReturn(); + int lChannel = 1; + NET_DVR_BASEMAP_PIC_INFO struPicInfo = new NET_DVR_BASEMAP_PIC_INFO(); + if(HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID,HCNetSDK.getInstance().NET_DVR_GET_BASEMAP_PIC_INFO,lChannel, struPicInfo)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_PIC_INFO success"); + } + else { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_PIC_INFO fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + NET_DVR_BASEMAP_CONTROL_CFG strCtrlCfg = new NET_DVR_BASEMAP_CONTROL_CFG(); + lChannel = 0x01000001; + if(HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_GET_BASEMAP_CFG, lChannel, strCtrlCfg)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_CFG success"); + } + else { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_GET_BASEMAP_CFG fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + + } + + if(HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.getInstance().NET_DVR_SET_BASEMAP_CFG, lChannel, strCtrlCfg)) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.i("[NetSDKSimpleDemo]","NET_DVR_SET_BASEMAP_CFG success"); + } + else { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e("[NetSDKSimpleDemo]","NET_DVR_SET_BASEMAP_CFG fail,error coed = "+HCNetSDK.getInstance().NET_DVR_GetLastError()); + + } + return ret; + } + /****************************************PTZTest****************************************************************/ + /*case 0*/ + public CGReturn Test_PTZControl(int iPreviewID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZControl(iPreviewID, PTZCommand.PAN_LEFT, 0)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControl PAN_LEFT 0 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControl PAN_LEFT 0 succ"); + } + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_PTZControl(iPreviewID, PTZCommand.PAN_LEFT, 1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControl PAN_LEFT 1 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControl PAN_LEFT 1 succ"); + } + return ret; + } + + /*case 1*/ + public CGReturn Test_PTZControlWithSpeed(int iPreviewID) + { + CGReturn ret=new CGReturn(); + if(! HCNetSDK.getInstance().NET_DVR_PTZControlWithSpeed(iPreviewID,PTZCommand.PAN_RIGHT, 0, 4)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControlWithSpeed PAN_RIGHT 0 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControlWithSpeed PAN_RIGHT 0 succ"); + } + try + { + Thread.sleep(2000); + } + catch (InterruptedException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(! HCNetSDK.getInstance().NET_DVR_PTZControlWithSpeed(iPreviewID,PTZCommand.PAN_RIGHT, 1, 4)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControlWithSpeed PAN_RIGHT 1 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZControlWithSpeed PAN_RIGHT 1 succ"); + } + return ret; + } + + /*case 2*/ + public CGReturn Test_PTZPreset(int iPreviewID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZPreset(iPreviewID, PTZPresetCmd.GOTO_PRESET, 1)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZPreset GOTO_PRESET faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZPreset GOTO_PRESET succ"); + } + return ret; + } + + /*case 3*/ + public CGReturn Test_PTZCruise(int iPreviewID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZCruise(iPreviewID, PTZCruiseCmd.RUN_SEQ, (byte)1,(byte)1,(short)1)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZCruise RUN_SEQ faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZCruise RUN_SEQ succ"); + } + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_PTZCruise(iPreviewID, PTZCruiseCmd.STOP_SEQ, (byte)1,(byte)1,(short)1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZCruise STOP_SEQ faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("PTZCruise STOP_SEQ succ"); + } + return ret; + } + + /*case 4*/ + public CGReturn Test_PTZTrack(int iPreviewID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZTrack(iPreviewID, PTZTrackCmd.RUN_CRUISE)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZTrack RUN_CRUISE faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZTrack RUN_CRUISE succ"); + } + return ret; + } + + /*case 5*/ + public CGReturn Test_PTZSelZoomIn(int iPreviewID) + { + CGReturn ret=new CGReturn(); + NET_DVR_POINT_FRAME strPointFrame = new NET_DVR_POINT_FRAME(); + strPointFrame.xTop = 10; + strPointFrame.yTop = 20; + strPointFrame.xBottom = 30; + strPointFrame.yBottom = 40; + if(!HCNetSDK.getInstance().NET_DVR_PTZSelZoomIn(iPreviewID, strPointFrame)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZSelZoomIn!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZSelZoomIn! succeed"); + } + return ret; + } + + /*case 6*/ + public CGReturn Test_PTZControl_Other(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZControl_Other(iUserID, iChan, PTZCommand.TILT_UP, 0)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControl_Other TILT_UP 0 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControl_Other TILT_UP 0 succ"); + } + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_PTZControl_Other(iUserID, iChan, PTZCommand.TILT_UP, 1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControl_Other TILT_UP 1 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControl_Other TILT_UP 1 succ"); + } + return ret; + } + + /*case 7*/ + public CGReturn Test_PTZControlWithSpeed_Other(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZControlWithSpeed_Other(iUserID, iChan,PTZCommand.PAN_RIGHT, 0, 4)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 0 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 0 succ"); + } + try + { + Thread.sleep(2000); + } catch (InterruptedException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_PTZControlWithSpeed_Other(iUserID, iChan,PTZCommand.PAN_RIGHT, 1, 4)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 1 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 1 succ"); + } + return ret; + } + + /*case8*/ + public CGReturn Test_PTZPreset_Other(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZPreset_Other(iUserID, iChan, PTZPresetCmd.GOTO_PRESET, 1)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZPreset_Other GOTO_PRESET faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZPreset_Other GOTO_PRESET succ"); + } + return ret; + } + + /*case 9*/ + public CGReturn Test_PTZCruise_Other(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZCruise_Other(iUserID, iChan, PTZCruiseCmd.RUN_SEQ, (byte)1,(byte)1,(short)1)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZCruise_Other RUN_SEQ faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZCruise_Other RUN_SEQ succ"); + } + try + { + Thread.sleep(2000); + } + catch (InterruptedException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_PTZCruise_Other(iUserID, iChan, PTZCruiseCmd.STOP_SEQ, (byte)1,(byte)1,(short)1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZCruise_Other STOP_SEQ faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZCruise_Other STOP_SEQ succ"); + } + return ret; + } + + /*case 10*/ + public CGReturn Test_PTZTrack_Other(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_PTZTrack_Other(iUserID, iChan, PTZTrackCmd.RUN_CRUISE)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZTrack_Other RUN_CRUISE faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZTrack_Other RUN_CRUISE succ"); + } + return ret; + } + + /*case 11*/ + public CGReturn Test_PTZSelZoomIn_EX(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + NET_DVR_POINT_FRAME strPointFrame = new NET_DVR_POINT_FRAME(); + strPointFrame.xTop = 10; + strPointFrame.yTop = 20; + strPointFrame.xBottom = 30; + strPointFrame.yBottom = 40; + if(!HCNetSDK.getInstance().NET_DVR_PTZSelZoomIn_EX(iUserID, iChan, strPointFrame)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZSelZoomIn_EX failed" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PTZSelZoomIn_EX! succeed"); + } + return ret; + } + + /****************************************OtherFunctionTest******************************************************/ + private static SerialDataCallBackV40 SerailDataCbfV40 = null; + /*case 0*/ + public CGReturn Test_FindFile_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int iFindHandle = -1; + NET_DVR_FILECOND lpSearchInfo = new NET_DVR_FILECOND(); + lpSearchInfo.lChannel = 1; + lpSearchInfo.dwFileType = 0xff; + lpSearchInfo.dwIsLocked = 0xff; + lpSearchInfo.dwUseCardNo = 0; + lpSearchInfo.struStartTime.dwYear = 2017; + lpSearchInfo.struStartTime.dwMonth = 9; + lpSearchInfo.struStartTime.dwDay = 1; + lpSearchInfo.struStopTime.dwYear = 2017; + lpSearchInfo.struStopTime.dwMonth = 9; + lpSearchInfo.struStopTime.dwDay = 11; + iFindHandle = HCNetSDK.getInstance().NET_DVR_FindFile_V30(iUserID, lpSearchInfo); + if (iFindHandle == -1) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_FindFile_V30 failed,Error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + int findNext = 0; + NET_DVR_FINDDATA_V30 struFindData = new NET_DVR_FINDDATA_V30(); + while (findNext != -1) + { + findNext = HCNetSDK.getInstance().NET_DVR_FindNextFile_V30(iFindHandle, struFindData); + if (findNext == HCNetSDK.NET_DVR_FILE_SUCCESS) + { + System.out.println("~~~~~Find File" + CommonMethod.toValidString(new String(struFindData.sFileName))); + System.out.println("~~~~~File Size" + struFindData.dwFileSize); + System.out.println("~~~~~File Time,from" + struFindData.struStartTime.ToString()); + System.out.println("~~~~~File Time,to" + struFindData.struStopTime.ToString()); + continue; + } + else if (HCNetSDK.NET_DVR_FILE_NOFIND == findNext) + { + System.out.println("No file found"); + break; + } + else if (HCNetSDK.NET_DVR_NOMOREFILE == findNext) + { + System.out.println("All files are listed"); + break; + } + else if (HCNetSDK.NET_DVR_FILE_EXCEPTION == findNext) + { + System.out.println("Exception in searching"); + break; + } + else if (HCNetSDK.NET_DVR_ISFINDING == findNext) + { + System.out.println("NET_DVR_ISFINDING"); + } + } + HCNetSDK.getInstance().NET_DVR_FindClose_V30(iFindHandle); + return ret; + } + + /*case 1*/ + public CGReturn Test_FindFileByEvent_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_SEARCH_EVENT_PARAM struParam = new NET_DVR_SEARCH_EVENT_PARAM(); + struParam.wMajorType = MAIN_EVENT_TYPE.EVENT_MOT_DET; + struParam.wMinorType = (short)0xffff; + struParam.struStartTime.dwYear = 2017; + struParam.struStartTime.dwMonth = 9; + struParam.struStartTime.dwDay = 1; + struParam.struEndTime.dwYear = 2017; + struParam.struEndTime.dwMonth = 9; + struParam.struEndTime.dwDay = 15; + struParam.wMotDetChanNo[0] = 33; + struParam.wMotDetChanNo[1] = (short)0xffff; + + int iFindHandle = HCNetSDK.getInstance().NET_DVR_FindFileByEvent(iUserID, struParam); + NET_DVR_SEARCH_EVENT_RET struRet = new NET_DVR_SEARCH_EVENT_RET(); + int iRet = -1; + if(iFindHandle >= 0) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + while(true) + { + iRet = HCNetSDK.getInstance().NET_DVR_FindNextEvent(iFindHandle, struRet); + if(iRet != HCNetSDK.NET_DVR_FILE_SUCCESS && iRet != HCNetSDK.NET_DVR_ISFINDING) + { + System.out.println("find next event exit with: " + iRet); + break; + } + else if(iRet == HCNetSDK.NET_DVR_FILE_SUCCESS) + { + System.out.println("event type:" + struRet.wMajorType + ",starttime:" + struRet.struStartTime.dwYear + + "-" + struRet.struStartTime.dwMonth + "-" + struRet.struStartTime.dwDay + " " + struRet.struStartTime.dwHour + + ":" + struRet.struStartTime.dwMinute + ":" + struRet.struStartTime.dwSecond + ",endtime:" + + struRet.struEndTime.dwYear + "-" + struRet.struEndTime.dwMonth + "-" + struRet.struEndTime.dwDay + + " " + struRet.struEndTime.dwHour + ":" + struRet.struEndTime.dwMinute + ":" + struRet.struEndTime.dwSecond); + } + } + HCNetSDK.getInstance().NET_DVR_FindClose_V30(iFindHandle); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_FindFileByEvent failed: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 2*/ + private static boolean IsDownlaod = false; + private static int lDownloadHandle = -1; + public CGReturn Test_GetFileDownload_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!IsDownlaod) + { + lDownloadHandle = HCNetSDK.getInstance().NET_DVR_GetFileByName(iUserID, new String("ch0001_02000000670000100"), "/sdcard/download.mp4"); + if(lDownloadHandle < 0) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetFileByName failed: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + }else{ + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetFileByName succ!"); + + byte[] lpInBuf = new byte[60]; + lpInBuf[0] = 5; + + if(!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(lDownloadHandle, PlaybackControlCommand.NET_DVR_SET_TRANS_TYPE, lpInBuf, 4, null)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PlayBackControl_V40 fail"); + return ret; + }else{ + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SET_TRANS_TYPE succ!"); + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(lDownloadHandle, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + Log.e(TAG, "NET_DVR_PlayBackControl_V40 failed!"); + return ret; + }else{ + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PLAYSTART succ!"); + } + IsDownlaod = true; + } + }else{ + HCNetSDK.getInstance().NET_DVR_StopGetFile(lDownloadHandle); + } + return ret; + } + + /*case 3*/ + public CGReturn Test_PlayBackConvert_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_TIME timeStart = new NET_DVR_TIME(); + NET_DVR_TIME timeStop = new NET_DVR_TIME(); + + timeStart.dwYear = 2015; + timeStart.dwMonth = 6; + timeStart.dwDay = 30; + timeStop.dwYear = 2015; + timeStop.dwMonth = 7; + timeStop.dwDay = 1; + + int nHandle = HCNetSDK.getInstance().NET_DVR_PlayBackByTime(iUserID, 1, timeStart, timeStop); + if (-1 == nHandle) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_PlayBackByTime failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + NET_DVR_COMPRESSION_INFO_V30 compression = new NET_DVR_COMPRESSION_INFO_V30(); + compression.byResolution = 1; + compression.dwVideoBitrate = 7; +// HCNetSDK.getInstance().NET_DVR_PlayBackControl_V50(nHandle, PlaybackControlCommand.NET_DVR_PLAY_CONVERT, compression, null); + HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(nHandle, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null); + int nProgress = -1; + while(true) + { + nProgress = HCNetSDK.getInstance().NET_DVR_GetPlayBackPos(nHandle); + System.out.println("NET_DVR_GetPlayBackPos:" + nProgress); + if(nProgress < 0 || nProgress >= 100) + { + break; + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + HCNetSDK.getInstance().NET_DVR_StopPlayBack(nHandle); + return ret; + } + + /*case 4*/ + public CGReturn Test_GetFileByTime_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_TIME timeStart = new NET_DVR_TIME(); + NET_DVR_TIME timeStop = new NET_DVR_TIME(); + + timeStart.dwYear = 2017; + timeStart.dwMonth = 9; + timeStart.dwDay = 11; + timeStart.dwHour = 10; + timeStart.dwMinute = 1; + timeStop.dwYear = 2017; + timeStop.dwMonth = 9; + timeStop.dwDay = 11; + timeStop.dwHour = 10; + timeStop.dwMinute = 5; + + int nDownloadHandle = HCNetSDK.getInstance().NET_DVR_GetFileByTime(iUserID,33, timeStart, timeStop, new String("/sdcard/RecordFile")); + if (-1 == nDownloadHandle) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetFileByTime failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(nDownloadHandle, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null); + int nProgress = -1; + while(true) + { + nProgress = HCNetSDK.getInstance().NET_DVR_GetDownloadPos(nDownloadHandle); + System.out.println("NET_DVR_GetDownloadPos:" + nProgress); + if(nProgress < 0 || nProgress >= 100) + { + break; + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + HCNetSDK.getInstance().NET_DVR_StopGetFile(nDownloadHandle); + return ret; + } + + /*case 5*/ + public CGReturn Test_GetFileByName_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + int nDownloadHandle = HCNetSDK.getInstance().NET_DVR_GetFileByName(iUserID, new String("ch0001_01000000080001900"), new String("/sdcard/RecordFile")); + if (-1 == nDownloadHandle) + { + System.out.println("NET_DVR_GetFileByName failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return ret; + } + HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(nDownloadHandle, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null); + int nProgress = -1; + while(true) + { + nProgress = HCNetSDK.getInstance().NET_DVR_GetDownloadPos(nDownloadHandle); + System.out.println("NET_DVR_GetDownloadPos:" + nProgress); + if(nProgress < 0 || nProgress >= 100) + { + break; + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + HCNetSDK.getInstance().NET_DVR_StopGetFile(nDownloadHandle); + return ret; + } + + /*case 6*/ + public CGReturn Test_UpdateRecordIndex_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_UpdateRecordIndex(iUserID, iChan)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_UpdateRecordIndex failed with:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_UpdateRecordIndex succ!"); + } + return ret; + } + + /*case 7*/ + public CGReturn Test_CaptureJpegPicture_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + NET_DVR_JPEGPARA strJpeg = new NET_DVR_JPEGPARA(); + strJpeg.wPicQuality = 1; + strJpeg.wPicSize = 2; + if(!HCNetSDK.getInstance().NET_DVR_CaptureJPEGPicture(iUserID, iChan, strJpeg, new String("/sdcard/cap.jpg"))) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_CaptureJPEGPicture!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_CaptureJPEGPicture! succeed"); + } + return ret; + } + + /*case 8*/ + public CGReturn Test_CaptureJpegPicture_new_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + NET_DVR_JPEGPARA strJpeg = new NET_DVR_JPEGPARA(); + strJpeg.wPicQuality = 1; + strJpeg.wPicSize = 2; + int iBufferSize = 1024*1024; + byte[] sbuffer = new byte[iBufferSize]; + INT_PTR bytesRerned = new INT_PTR(); + if(!HCNetSDK.getInstance().NET_DVR_CaptureJPEGPicture_NEW(iUserID, iChan, strJpeg, sbuffer, iBufferSize, bytesRerned)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_CaptureJPEGPicture_NEW!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_CaptureJPEGPicture_NEW size!" + bytesRerned.iValue); + } + return ret; + } + + /*case 9*/ + public CGReturn Test_DVRRecord_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_StartDVRRecord(iUserID, 1, 0)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_StartDVRRecord err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_StartDVRRecord succ!"); + } + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(!HCNetSDK.getInstance().NET_DVR_StopDVRRecord(iUserID, 1)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_StopDVRRecord err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_StopDVRRecord succ!"); + } + return ret; + } + + private static void processSerialData(int lSerialHandle, byte[] pDataBuffer, int iDataSize) + { + System.out.println("lSerialHandle " + lSerialHandle + " iDataSize " + iDataSize); + } + /*case 10*/ + public CGReturn Test_TransChannel_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(SerailDataCbfV40 == null) + { + SerailDataCbfV40 = new SerialDataCallBackV40() + { + public void fSerialDataCallBackV40(int lSerialHandle, int lChannel, byte[] pDataBuffer, int iDataSize) + { + processSerialData(lSerialHandle, pDataBuffer, iDataSize); + } + }; + } + NET_DVR_SERIALSTART_V40 struSerialStart = new NET_DVR_SERIALSTART_V40(); + struSerialStart.dwSerialPort = 2; + struSerialStart.wPort = 0; + int lSerialHandle = HCNetSDK.getInstance().NET_DVR_SerialStart_V40(iUserID, struSerialStart, SerailDataCbfV40); + if(lSerialHandle < 0) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialStart failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialStart succ"); + } + byte[] bytes = {0x5A,0x5A,0x5A,0x7E,0x0F,0x04,0x07,0x00,0x00,0x01,0x1B,0x00,0x00}; + int length = bytes.length; + if(!HCNetSDK.getInstance().NET_DVR_SerialSend(lSerialHandle, 0, bytes, length)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialSend failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialStart succ"); + } + if(!HCNetSDK.getInstance().NET_DVR_SerialStop(lSerialHandle)) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialStop failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else{ + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SerialStart succ"); + } + return ret; + } + + /*case 11*/ + public CGReturn Test_Serial_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_SendToSerialPort(iUserID, 1, 1, "12345".getBytes(), 5)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SendToSerialPort failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SendToSerialPort succ!"); + } + + if(!HCNetSDK.getInstance().NET_DVR_SendTo232Port(iUserID, "12345".getBytes(), 5)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SendTo232Port failed! error:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SendTo232Port succ!"); + } + return ret; + } + + private static RealPlayCallBack cbf = null; + private static void processRealData(int lRealHandle, int iDataType, byte[] pDataBuffer, int iDataSize) + { + System.out.println("recv real stream ,dataType:"+iDataType+", size:" + iDataSize); + } + + /*case 12*/ + public CGReturn Test_ZeroChanPreview_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + if (cbf==null){ + cbf = new RealPlayCallBack(){ + public void fRealDataCallBack(int iRealHandle, int iDataType, byte[] pDataBuffer, int iDataSize){ + processRealData(iRealHandle, iDataType, pDataBuffer, iDataSize); + } + }; + } + NET_DVR_CLIENTINFO ClientInfo = new NET_DVR_CLIENTINFO(); + ClientInfo.lChannel = 1; + ClientInfo.lLinkMode = 0; + int iZeroPreviewHandle = HCNetSDK.getInstance().NET_DVR_ZeroStartPlay(iUserID, ClientInfo, cbf, true); + if(iZeroPreviewHandle < 0) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ZeroStartPlay failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ZeroStartPlay succ"); + } + + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + if(!HCNetSDK.getInstance().NET_DVR_ZeroStopPlay(iZeroPreviewHandle)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ZeroStopPlay failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_ZeroStopPlay succ"); + } + return ret; + } + + /*case 13*/ + public CGReturn Test_Hikonline_jni() + { + CGReturn ret=new CGReturn(); + NET_DVR_QUERY_COUNTRYID_COND struCountryIDCond = new NET_DVR_QUERY_COUNTRYID_COND(); + NET_DVR_QUERY_COUNTRYID_RET struCountryIDRet = new NET_DVR_QUERY_COUNTRYID_RET(); + struCountryIDCond.wCountryID = 248; //248 is for china,other country's ID please see the interface document + System.arraycopy("www.hik-online.com".getBytes(), 0, struCountryIDCond.szSvrAddr, 0, "www.hik-online.com".getBytes().length); + System.arraycopy("Android NetSDK Demo".getBytes(), 0, struCountryIDCond.szClientVersion, 0, "Android NetSDK Demo".getBytes().length); + //first you need get the resolve area server address form www.hik-online.com by country ID + //and then get you dvr/ipc address from the area resolve server + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.QUERYSVR_BY_COUNTRYID, struCountryIDCond, struCountryIDRet)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYSVR_BY_COUNTRYID succ,resolve:" + CommonMethod.toValidString(new String(struCountryIDRet.szResolveSvrAddr))); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYSVR_BY_COUNTRYID failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + //follow code show how to get dvr/ipc address from the area resolve server by nickname or serial no. + NET_DVR_QUERY_DDNS_COND struDDNSCond = new NET_DVR_QUERY_DDNS_COND(); + NET_DVR_QUERY_DDNS_RET struDDNSQueryRet = new NET_DVR_QUERY_DDNS_RET(); + NET_DVR_CHECK_DDNS_RET struDDNSCheckRet = new NET_DVR_CHECK_DDNS_RET(); + System.arraycopy("Android NetSDK Demo".getBytes(), 0, struDDNSCond.szClientVersion, 0, "Android NetSDK Demo".getBytes().length); + System.arraycopy(struCountryIDRet.szResolveSvrAddr, 0, struDDNSCond.szResolveSvrAddr, 0, struCountryIDRet.szResolveSvrAddr.length); + System.arraycopy("nickname".getBytes(), 0, struDDNSCond.szDevNickName, 0, "nickname".getBytes().length);//your dvr/ipc nickname + System.arraycopy("serial no.".getBytes(), 0, struDDNSCond.szDevSerial, 0, "serial no.".getBytes().length);//your dvr/ipc serial no. + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.QUERYDEV_BY_NICKNAME_DDNS, struDDNSCond, struDDNSQueryRet)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_NICKNAME_DDNS succ,ip:" + CommonMethod.toValidString(new String(struDDNSQueryRet.szDevIP)) + ", SDK port:" + struDDNSQueryRet.wCmdPort + ", http port" + struDDNSQueryRet.wHttpPort); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_NICKNAME_DDNS failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.QUERYDEV_BY_SERIAL_DDNS, struDDNSCond, struDDNSQueryRet)) + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_SERIAL_DDNS succ,ip:" + CommonMethod.toValidString(new String(struDDNSQueryRet.szDevIP)) + ", SDK port:" + struDDNSQueryRet.wCmdPort + ", http port" + struDDNSQueryRet.wHttpPort); + } + else + { + ret.status_3=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_SERIAL_DDNS failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + //if you get the dvr/ipc address failed from the area reolve server,you can check the reason show as follow + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.CHECKDEV_BY_NICKNAME_DDNS, struDDNSCond, struDDNSCheckRet)) + { + System.out.println("CHECKDEV_BY_NICKNAME_DDNS succ,ip:" + CommonMethod.toValidString(new String(struDDNSCheckRet.struQueryRet.szDevIP)) + ", SDK port:" + struDDNSCheckRet.struQueryRet.wCmdPort + ", http port" + struDDNSCheckRet.struQueryRet.wHttpPort + ",region:" + struDDNSCheckRet.wRegionID + ",status:" + struDDNSCheckRet.byDevStatus); + } + else + { + System.out.println("CHECKDEV_BY_NICKNAME_DDNS failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.CHECKDEV_BY_SERIAL_DDNS, struDDNSCond, struDDNSCheckRet)) + { + System.out.println("CHECKDEV_BY_SERIAL_DDNS succ,ip:" + CommonMethod.toValidString(new String(struDDNSCheckRet.struQueryRet.szDevIP)) + ", SDK port:" + struDDNSCheckRet.struQueryRet.wCmdPort + ", http port" + struDDNSCheckRet.struQueryRet.wHttpPort + ",region:" + struDDNSCheckRet.wRegionID + ",status:" + struDDNSCheckRet.byDevStatus); + } + else + { + System.out.println("CHECKDEV_BY_SERIAL_DDNS failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 14*/ + public CGReturn Test_IPServer_jni() + { + CGReturn ret=new CGReturn(); + NET_DVR_QUERY_IPSERVER_COND struIPServerCond = new NET_DVR_QUERY_IPSERVER_COND(); + NET_DVR_QUERY_IPSERVER_RET struIPServerRet = new NET_DVR_QUERY_IPSERVER_RET(); + struIPServerCond.wResolveSvrPort = 7071; + System.arraycopy("10.10.34.21".getBytes(), 0, struIPServerCond.szResolveSvrAddr, 0, "10.10.34.21".getBytes().length);//your ipserver ip + System.arraycopy("nickname".getBytes(), 0, struIPServerCond.szDevNickName, 0, "nickname".getBytes().length);//your dvr/ipc nickname on ipserver + //search by nickname + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.QUERYDEV_BY_NICKNAME_IPSERVER, struIPServerCond, struIPServerRet)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_NICKNAME_IPSERVER succ,ip:" + CommonMethod.toValidString(new String(struIPServerRet.szDevIP)) + ", SDK port:" + struIPServerRet.wCmdPort); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_NICKNAME_IPSERVER failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + + System.arraycopy("serial no.".getBytes(), 0, struIPServerCond.szDevSerial, 0, "serial no.".getBytes().length);//your dvr/ipc serial no. + //search bu serial no. + if(HCNetSDK.getInstance().NET_DVR_GetAddrInfoByServer(ADDR_QUERY_TYPE.QUERYDEV_BY_SERIAL_IPSERVER, struIPServerCond, struIPServerRet)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_SERIAL_IPSERVER succ,ip:" + CommonMethod.toValidString(new String(struIPServerRet.szDevIP)) + ", SDK port:" + struIPServerRet.wCmdPort); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("QUERYDEV_BY_SERIAL_IPSERVER failed:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 15*/ + public CGReturn Test_DVRSetConnectTime_jni() + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_SetConnectTime(3000)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetConnectTime err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetConnectTime succ!"); + } + return ret; + } + + /*case 16*/ + public CGReturn Test_DVRSetReConnect_jni() + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_SetReconnect(3000,true)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetReconnect err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetReconnect succ!"); + } + return ret; + } + + /*case 17*/ + public CGReturn Test_SDKLOCAL_CFG_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_SDKLOCAL_CFG SdkLocalCfg = new NET_DVR_SDKLOCAL_CFG(); + if (!HCNetSDK.getInstance().NET_DVR_GetSDKLocalConfig(SdkLocalCfg)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKLocalConfig faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKLocalConfig succ!" + "EnableAbilityParse: " + SdkLocalCfg.byEnableAbilityParse ); + } + if (!HCNetSDK.getInstance().NET_DVR_SetSDKLocalConfig(SdkLocalCfg)) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetSDKLocalConfig faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + }else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetSDKLocalConfig succ!" + "EnableAbilityParse: " + SdkLocalCfg.byEnableAbilityParse ); + } + return ret; + } + + /*case 18*/ + public CGReturn Test_GetSDKVersion_jni() + { + CGReturn ret=new CGReturn(); + long SDKVersion = -1; + long SDKBuildVersion = -1; + SDKVersion = HCNetSDK.getInstance().NET_DVR_GetSDKVersion(); + if( SDKVersion < 0) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKVersion err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKVersion succ!" + SDKVersion); + } + SDKBuildVersion = HCNetSDK.getInstance().NET_DVR_GetSDKBuildVersion(); + if( SDKBuildVersion < 0) + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKVersion_GetSDKBuildVersion err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_2=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSDKVersion_GetSDKBuildVersion succ!" + SDKBuildVersion ); + } + return ret; + } + + /*case 19*/ + public CGReturn Test_DVRMakeKeyFrame_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_MakeKeyFrame( iUserID, iChan)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_MakeKeyFrame err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_MakeKeyFrame succ!"); + } + return ret; + } + + /*case 20*/ + public CGReturn Test_DVRMakeKeyFrameSub_jni(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_MakeKeyFrameSub( iUserID, iChan)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_MakeKeyFrameSub err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_MakeKeyFrameSub succ!"); + } + return ret; + } + + /*case 21*/ + public CGReturn Test_SetRecvTimeOut_jni() + { + CGReturn ret=new CGReturn(); + if(!HCNetSDK.getInstance().NET_DVR_SetRecvTimeOut( 5000 )) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetRecvTimeOut err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_SetRecvTimeOut succ!"); + } + return ret; + } + + /*case 22*/ + /* + public CGReturn Test_RecycleGetStream(int iUserID, int iChan) + { + CGReturn ret=new CGReturn(); + int i = 0; + while(true) + { + for(i = 0; i < 16; i++) + { + Thread thread = new PreviewGetStreamThread(iUserID, (iChan + i)); + thread.start(); + } + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return ret; + } + */ + + /*case 23*/ + public CGReturn Test_GetCurrentAudioCompress_V50(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_AUDIO_CHANNEL audioChannel = new NET_DVR_AUDIO_CHANNEL(); + audioChannel.dwChannelNum = 3; + NET_DVR_COMPRESSION_AUDIO audioCompression = new NET_DVR_COMPRESSION_AUDIO(); + if(HCNetSDK.getInstance().NET_DVR_GetCurrentAudioCompress_V50(iUserID, audioChannel, audioCompression)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetCurrentAudioCompress_V50 succ, type: " + audioCompression.byAudioEncType); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetCurrentAudioCompress_V50 failed: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + return ret; + } + + /*case 24*/ + /* + public CGReturn Test_MultiThreadLogin() + { + CGReturn ret=new CGReturn(); + Thread thread = new Thread() + { + public void run() + { + // while(true) + { + int i = 0; + for(i = 0; i < 100; i++) + { + Thread loginThread = new LoginMultiThread(); + loginThread.start(); + } + try { + Thread.sleep(30000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + }; + thread.start(); + return ret; + } + */ + + /*case 25*/ + public CGReturn Test_EzvizConfig_jni(int iUserID) + { + CGReturn ret=new CGReturn(); + NET_DVR_MULTI_ALARMIN_COND struCond = new NET_DVR_MULTI_ALARMIN_COND(); + NET_DVR_ALARMIN_PARAM_LIST struList = new NET_DVR_ALARMIN_PARAM_LIST(); + + int i = 0; + + for (i = 0; i < 64; i++) + { + struCond.iZoneNo[i] = -1; + } + + for(i = 0; i < 8; i++) + { + struCond.iZoneNo[i] = i; + } + + for(i = 0; i < 400; i++) + { + if (!HCNetSDK.getInstance().NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM_LIST, struCond, null, struList)) + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSTDConfig" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + else + { + ret.status_1=HCNetSDK.getInstance().NET_DVR_GetLastError(); + System.out.println("NET_DVR_GetSTDConfig success"); + } + } + return ret; + } + +} + + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevManageGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevManageGuider.java new file mode 100644 index 0000000..1acb0cd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevManageGuider.java @@ -0,0 +1,446 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; + +import com.hcnetsdk.jna.HCNetSDKByJNA; +import com.hcnetsdk.jna.HCNetSDKJNAInstance; +import com.hikvision.netsdk.ExceptionCallBack; +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.NET_DVR_DEVICEINFO_V30; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.UUID; +import java.util.regex.Pattern; + +public class DevManageGuider implements Serializable { + + /** + * @brief 设备状态对象 + */ + public class DeviceState implements Serializable { + public int m_iLogState = 0; // 0-offline, 1-online, 2-dropoff + public int m_iAlarmState = 0; // 0-alarmclosed, 1-alarmopen + + public void reset(){ + m_iLogState = 0; + m_iAlarmState = 0; + } + } + + public class DevNetInfo implements Serializable { + public String m_szIp; + public String m_szPort; + public String m_szUserName; + public String m_szPassword; + + public DevNetInfo(){} + + public DevNetInfo(String szIp, String szPort, String szUserName, String szPassWorld){ + m_szIp = szIp; + m_szPort = szPort; + m_szUserName = szUserName; + m_szPassword = szPassWorld; + } + + /** + * 判断IP格式和范围 + */ + public boolean checkIp(){ + if(m_szIp.length() < 7 || m_szIp.length() > 15 || "".equals(m_szIp)) + { + return false; + } + if (m_szIp != null && !m_szIp.isEmpty()) { + // 定义正则表达式 + String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"; + // 判断ip地址是否与正则表达式匹配 + return m_szIp.matches(regex); + } + return false; + } + public boolean checkPort() { + Pattern pattern = Pattern.compile("[1-9][0-9]*"); + return pattern.matcher(m_szPort).matches(); + } + + public boolean checkNetInfo(){ + return checkIp()&&checkPort()&&!m_szUserName.isEmpty()&&!m_szPassword.isEmpty(); + } + } + + /** + * @brief 设备信息对象 + */ + public class DeviceItem implements Serializable { + public String m_szUUID; + public String m_szDevName; + public int m_lUserID = -1; + public byte m_byLoginFlag = -1; // 设备登录方式,0-jni, 1-jna + public DeviceState m_struDevState = new DeviceState(); + public DevNetInfo m_struNetInfo; + public HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40 m_struDeviceInfoV40_jna; + public NET_DVR_DEVICEINFO_V30 m_struDeviceInfoV30_jni; + + public DeviceItem() { + m_szUUID = UUID.randomUUID().toString(); + } + public DeviceItem(String szUUID) { + m_szUUID = szUUID; + } + } + + /** + * @fn getExceptiongCb + * @author zhuzhenlei + * @brief process exception + * @param None. + * @return exception instance + */ + private ExceptionCallBack getExceptiongCb() + { + ExceptionCallBack oExceptionCb = new ExceptionCallBack() + { + public void fExceptionCallBack(int iType, int iUserID, int iHandle) { + Log.e("[NetSDKSimpleDemo]", "recv exception, type:" + iType); + switch (iType) { + case 0x8044: + getDevByUserID(iUserID).m_struDevState.m_iLogState = 2; + break; + default: + } + } + }; + return oExceptionCb; + } + + private ArrayList m_alDevList = new ArrayList(); + private int m_iCurrSelectDevIndex = -1; + + /** + * @fn setCurrSelectDevIndex + * @param [int] iCurrSelectDevIndex + * @return None. + * @brief 设置当前选中设备的列表序号. + */ + public void setCurrSelectDevIndex(int iCurrSelectDevIndex){ + m_iCurrSelectDevIndex = iCurrSelectDevIndex; + } + + /** + * @fn getCurrSelectDevIndex + * @return [int] 设备索引号 + * @brief 获取当前选中的设备在设备列表中的索引号. + */ + public int getCurrSelectDevIndex(){ + return m_iCurrSelectDevIndex; + } + + /** + * @fn getDevList + * @return [ArrayList] 设备列表 + * @brief 获取设备列表 + */ + public ArrayList getDevList(){ + return m_alDevList; + } + + /** + * @brief 清除设备列表 + */ + public void clearDevList(){ + m_alDevList.clear(); + } + + /** + * @fn getCurrSelectDev + * @return [DeviceItem] 设备信息对象 + * @brief 获取当前选中设备的信息对象 + */ + public DeviceItem getCurrSelectDev(){ + if(m_iCurrSelectDevIndex < 0 || m_iCurrSelectDevIndex >= m_alDevList.size()){ + return null; + } + return m_alDevList.get(m_iCurrSelectDevIndex); + } + + /** + * @fn getDevByUserID + * @param [in] lUserID 设备登陆ID + * @return [DeviceItem] 设备信息对象 + * @brief 使用登陆id查找设备信息对象 + */ + public DeviceItem getDevByUserID(int lUserID){ + if(lUserID < 0){ + return null; + } + for (DeviceItem item: this.m_alDevList) { + if(item.m_lUserID == lUserID){ + return item; + } + } + return null; + } + + public void setDevList(ArrayList alDevList){ + m_alDevList = alDevList; + } + + /** + * @fn login_v40_jna + * @param [in] szDevName 设备名称 + * @param [in] struDevNetInfo 设备登陆的网络参数 + * @return 登陆成功返回true,否则false + * @brief jna方式登陆设备 + */ + public boolean login_v40_jna(String szDevName, DevNetInfo struDevNetInfo){ + // 验证参数有效性 + if(!struDevNetInfo.checkIp() || !struDevNetInfo.checkPort() || struDevNetInfo.m_szUserName.isEmpty() || struDevNetInfo.m_szPassword.isEmpty()){ + System.out.println("login_v40_jna failed with error param"); + return false; + } + + // call hcnetsdk jna login API. + HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO(); + System.arraycopy(struDevNetInfo.m_szIp.getBytes(), 0, loginInfo.sDeviceAddress, 0, struDevNetInfo.m_szIp.length()); + System.arraycopy(struDevNetInfo.m_szUserName.getBytes(), 0, loginInfo.sUserName, 0, struDevNetInfo.m_szUserName.length()); + System.arraycopy(struDevNetInfo.m_szPassword.getBytes(), 0, loginInfo.sPassword, 0, struDevNetInfo.m_szPassword.length()); + loginInfo.wPort = (short)Integer.parseInt(struDevNetInfo.m_szPort); + HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40(); + loginInfo.write(); + int lUserID = HCNetSDKJNAInstance.getInstance().NET_DVR_Login_V40(loginInfo.getPointer(), deviceInfo.getPointer()); + if(lUserID < 0) + { + Log.e("[NetSDKSimpleDemo]","NET_DVR_Login_V40 failed with:" + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); + return false; + } + + // add a DeviceItem to device list. + deviceInfo.read(); + DeviceItem devItem = new DeviceItem(); + devItem.m_byLoginFlag = 1; + devItem.m_lUserID = lUserID; + if (szDevName.isEmpty()){ + devItem.m_szDevName = struDevNetInfo.m_szIp; + } + devItem.m_struDevState.m_iLogState = 1; + devItem.m_struNetInfo = struDevNetInfo; + devItem.m_struDeviceInfoV40_jna = deviceInfo; + m_alDevList.add(devItem); + Log.i("[NetSDKSimpleDemo]","NET_DVR_Login_V40 succ with:" + lUserID); + return true; + } + + /** + * @fn login_v40_jna_with_index + * @param [in] iDevIndex 设备列表中的索引号 + * @return 登陆成功返回true,否则false + * @brief 当设备已经添加到设备列表之后,可以通过在列表中的索引号进行登陆 + */ + public boolean login_v40_jna_with_isapi(int iDevIndex){ + // 验证参数有效性 + if(iDevIndex<0||iDevIndex>=m_alDevList.size()) { + Log.w("[NetSDKSimpleDemo]", "logout_jna failed with error param"); + return false; + } + DeviceItem devItem = m_alDevList.get(iDevIndex); + if(devItem.m_struDevState.m_iLogState == 1){ + return true; + } + // call hcnetsdk jna login API. + HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO(); + System.arraycopy(devItem.m_struNetInfo.m_szIp.getBytes(), 0, loginInfo.sDeviceAddress, 0, devItem.m_struNetInfo.m_szIp.length()); + System.arraycopy(devItem.m_struNetInfo.m_szUserName.getBytes(), 0, loginInfo.sUserName, 0, devItem.m_struNetInfo.m_szUserName.length()); + System.arraycopy(devItem.m_struNetInfo.m_szPassword.getBytes(), 0, loginInfo.sPassword, 0, devItem.m_struNetInfo.m_szPassword.length()); + loginInfo.wPort = 80; + loginInfo.byLoginMode = 1; // isapi login + HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40(); + loginInfo.write(); + int lUserID = HCNetSDKJNAInstance.getInstance().NET_DVR_Login_V40(loginInfo.getPointer(), deviceInfo.getPointer()); + if(lUserID < 0) + { + Log.e("[NetSDKSimpleDemo]","NET_DVR_Login_V40 failed with:" + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); + return false; + } + + // add a DeviceItem to device list. + deviceInfo.read(); + devItem.m_lUserID = lUserID; + devItem.m_struDevState.m_iLogState = 1; + devItem.m_struDeviceInfoV40_jna = deviceInfo; +// m_alDevList.add(devItem); + Log.i("[NetSDKSimpleDemo]","NET_DVR_Login_V40 succ with:" + lUserID); + return true; + } + + /** + * @fn login_v40_jna_with_index + * @param [in] iDevIndex 设备列表中的索引号 + * @return 登陆成功返回true,否则false + * @brief 当设备已经添加到设备列表之后,可以通过在列表中的索引号进行登陆 + */ + public boolean login_v40_jna_with_index(int iDevIndex){ + // 验证参数有效性 + if(iDevIndex<0||iDevIndex>=m_alDevList.size()) { + Log.w("[NetSDKSimpleDemo]", "logout_jna failed with error param"); + return false; + } + DeviceItem devItem = m_alDevList.get(iDevIndex); + if(devItem.m_struDevState.m_iLogState == 1){ + return true; + } + // call hcnetsdk jna login API. + HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDKByJNA.NET_DVR_USER_LOGIN_INFO(); + System.arraycopy(devItem.m_struNetInfo.m_szIp.getBytes(), 0, loginInfo.sDeviceAddress, 0, devItem.m_struNetInfo.m_szIp.length()); + System.arraycopy(devItem.m_struNetInfo.m_szUserName.getBytes(), 0, loginInfo.sUserName, 0, devItem.m_struNetInfo.m_szUserName.length()); + System.arraycopy(devItem.m_struNetInfo.m_szPassword.getBytes(), 0, loginInfo.sPassword, 0, devItem.m_struNetInfo.m_szPassword.length()); + loginInfo.wPort = (short)Integer.parseInt(devItem.m_struNetInfo.m_szPort); + HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDKByJNA.NET_DVR_DEVICEINFO_V40(); + loginInfo.write(); + int lUserID = HCNetSDKJNAInstance.getInstance().NET_DVR_Login_V40(loginInfo.getPointer(), deviceInfo.getPointer()); + if(lUserID < 0) + { + Log.e("[NetSDKSimpleDemo]","NET_DVR_Login_V40 failed with:" + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); + return false; + } + + // add a DeviceItem to device list. + deviceInfo.read(); + devItem.m_lUserID = lUserID; + devItem.m_struDevState.m_iLogState = 1; + devItem.m_struDeviceInfoV40_jna = deviceInfo; +// m_alDevList.add(devItem); + Log.i("[NetSDKSimpleDemo]","NET_DVR_Login_V40 succ with:" + lUserID); + return true; + } + + /** + * @fn logout_jna + * @param [in] iDevIndex 设备索引号 + * @return 注销成功true,否则false + * @brief 注销设备 + */ + public boolean logout_jna(int iDevIndex){ + if(iDevIndex<0||iDevIndex>=m_alDevList.size()) { + Log.w("[NetSDKSimpleDemo]", "logout_jna failed with error param"); + return false; + } + DeviceItem devItem = m_alDevList.get(iDevIndex); + boolean ret = HCNetSDKJNAInstance.getInstance().NET_DVR_Logout(devItem.m_lUserID); + if (!ret){ + Log.e("[NetSDKSimpleDemo]","NET_DVR_Logout failed with:" + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); + } +// m_alDevList.remove(iDevIndex); + devItem.m_struDevState.reset(); + devItem.m_struDeviceInfoV30_jni = null; + devItem.m_struDeviceInfoV40_jna = null; + return true; + } + + public boolean login_v30_jni(String szDevName, DevNetInfo struDevNetInfo){ + if(!struDevNetInfo.checkIp() || !struDevNetInfo.checkPort() || struDevNetInfo.m_szUserName.isEmpty() || struDevNetInfo.m_szPassword.isEmpty()){ + System.out.println("login_v40_jna failed with error param"); + return false; + } + + NET_DVR_DEVICEINFO_V30 m_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30(); + String strIP = struDevNetInfo.m_szIp; + int nPort = Integer.parseInt(struDevNetInfo.m_szPort); + String strUser = struDevNetInfo.m_szUserName; + String strPsd = struDevNetInfo.m_szPassword; + + // call NET_DVR_Login_v30 to login on, port 8000 as default + int lUserID = HCNetSDK.getInstance().NET_DVR_Login_V30(strIP, nPort, strUser, strPsd, m_oNetDvrDeviceInfoV30); + if (lUserID < 0) + { + Log.e("SimpleDemo", "NET_DVR_Login is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return false; + } + + DeviceItem devItem = new DeviceItem(); + devItem.m_byLoginFlag = 0; + devItem.m_lUserID = lUserID; + if (szDevName.isEmpty()){ + devItem.m_szDevName = struDevNetInfo.m_szIp; + }else { + devItem.m_szDevName = szDevName; + } + devItem.m_struDevState.m_iLogState = 1; + devItem.m_struNetInfo = struDevNetInfo; + devItem.m_struDeviceInfoV30_jni = m_oNetDvrDeviceInfoV30; + m_alDevList.add(devItem); + + // get instance of exception callback and set + ExceptionCallBack oexceptionCbf = getExceptiongCb(); + + if (!HCNetSDK.getInstance().NET_DVR_SetExceptionCallBack(oexceptionCbf)) + { + Log.e("[NetSDKSimpleDemo]", "NET_DVR_SetExceptionCallBack is failed!"); + return false; + } + Log.i("SimpleDemo", "NET_DVR_Login is Successful!"); + return true; + } + + public boolean login_v30_jni_with_index(int iDevIndex){ + // 验证参数有效性 + if(iDevIndex<0||iDevIndex>=m_alDevList.size()) { + Log.w("[NetSDKSimpleDemo]", "logout_jna failed with error param"); + return false; + } + DeviceItem devItem = m_alDevList.get(iDevIndex); + if(devItem.m_struDevState.m_iLogState == 1){ + return true; + } + NET_DVR_DEVICEINFO_V30 m_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30(); + String strIP = devItem.m_struNetInfo.m_szIp; + int nPort = Integer.parseInt(devItem.m_struNetInfo.m_szPort); + String strUser = devItem.m_struNetInfo.m_szUserName; + String strPsd = devItem.m_struNetInfo.m_szPassword; + + // call NET_DVR_Login_v30 to login on, port 8000 as default + int lUserID = HCNetSDK.getInstance().NET_DVR_Login_V30(strIP, nPort, strUser, strPsd, m_oNetDvrDeviceInfoV30); + if (lUserID < 0) + { + Log.e("SimpleDemo", "NET_DVR_Login is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return false; + } + + devItem.m_byLoginFlag = 0; + devItem.m_lUserID = lUserID; + devItem.m_struDevState.m_iLogState = 1; + devItem.m_struDeviceInfoV30_jni = m_oNetDvrDeviceInfoV30; + + // get instance of exception callback and set + ExceptionCallBack oexceptionCbf = getExceptiongCb(); + + if (!HCNetSDK.getInstance().NET_DVR_SetExceptionCallBack(oexceptionCbf)) + { + Log.e("[NetSDKSimpleDemo]", "NET_DVR_SetExceptionCallBack is failed!"); + return false; + } + Log.i("SimpleDemo", "NET_DVR_Login is Successful!"); + return true; + } + + public boolean logout_jni(int iDevIndex) { + if(iDevIndex<0||iDevIndex>=m_alDevList.size()) { + Log.w("[NetSDKSimpleDemo]", "logout_jna failed with error param"); + return false; + } + DeviceItem devItem = m_alDevList.get(iDevIndex); + boolean ret = HCNetSDK.getInstance().NET_DVR_Logout_V30(devItem.m_lUserID); + if (!ret){ + Log.e("[NetSDKSimpleDemo]","NET_DVR_Logout failed with:" + HCNetSDKJNAInstance.getInstance().NET_DVR_GetLastError()); + } +// m_alDevList.remove(iDevIndex); + devItem.m_struDevState.reset(); + devItem.m_struDeviceInfoV30_jni = null; + devItem.m_struDeviceInfoV40_jna = null; + return true; + } + + public void testFunc() { + Log.i("[yz]","call DevManageGuider.testFunc()"); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPassThroughGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPassThroughGuider.java new file mode 100644 index 0000000..e7bb55b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPassThroughGuider.java @@ -0,0 +1,59 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; + +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.SerialDataCallBack; + +public class DevPassThroughGuider { + + public int NET_DVR_SerialStart_jni(int iUserID, int iSerialType, SerialDataCallBack fSerialDataCallBack) + { + if (iUserID < 0 || iSerialType < 0) { + Log.println(Log.ERROR, "SimpleDemo", "NET_DVR_SerialStart_jni failed with error param"); + return -1; + } + + return HCNetSDK.getInstance().NET_DVR_SerialStart(iUserID, iSerialType, fSerialDataCallBack); + } + + public boolean NET_DVR_SerialStop_jni(int iSerialSendHandle) + { + if(iSerialSendHandle == -1){ + Log.println(Log.ERROR, "SimpleDemo", "NET_DVR_SerialStop_jni failed with error param"); + return false; + } + + return HCNetSDK.getInstance().NET_DVR_SerialStop(iSerialSendHandle); + } + + public boolean NET_DVR_SerialSend_jni(int iSerialSendHandle, int iSerialChannel, byte[] byInputBuf, int iInputBufSize) + { + if(iSerialSendHandle == -1 || iSerialChannel < 0 || iInputBufSize == 0){ + Log.println(Log.ERROR, "SimpleDemo", "NET_DVR_SerialSend_jni failed with error param"); + return false; + } + Log.println(Log.ERROR, "Send", iSerialSendHandle + " " + iSerialChannel); + return HCNetSDK.getInstance().NET_DVR_SerialSend(iSerialSendHandle, iSerialChannel, byInputBuf, iInputBufSize); + } + + public boolean NET_DVR_SendToSerialPort_jni(int iUserID, int iSerialType, int iSerialChannel, byte[] byInputBuf, int iInputBufSize) + { + if(iUserID == -1 || iSerialType <= 0 || iSerialChannel < 0 || iInputBufSize == 0){ + Log.println(Log.ERROR, "SimpleDemo", "NET_DVR_SendToSerialPort_jni failed with error param"); + return false; + } + Log.println(Log.ERROR, "Send", iSerialType + " " + iSerialChannel); + return HCNetSDK.getInstance().NET_DVR_SendToSerialPort(iUserID, iSerialType, iSerialChannel, byInputBuf, iInputBufSize); + } + + public boolean NET_DVR_SendTo232Port_jni(int iUserID, byte[] byInputBuf, int iInputBufSize) + { + if(iUserID == -1 || iInputBufSize == 0){ + Log.println(Log.ERROR, "SimpleDemo", "NET_DVR_SendTo232Port_jni failed with error param"); + return false; + } + + return HCNetSDK.getInstance().NET_DVR_SendTo232Port(iUserID, byInputBuf, iInputBufSize); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPlayBackGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPlayBackGuider.java new file mode 100644 index 0000000..e6e5130 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPlayBackGuider.java @@ -0,0 +1,266 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.widget.Toast; +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.NET_DVR_FILECOND; +import com.hikvision.netsdk.NET_DVR_FINDDATA_V30; +import com.hikvision.netsdk.NET_DVR_PLAYBACK_INFO; +import com.hikvision.netsdk.NET_DVR_PLAYCOND; +import com.hikvision.netsdk.NET_DVR_TIME; +import com.hikvision.netsdk.NET_DVR_VOD_PARA; +import com.hikvision.netsdk.PlaybackControlCommand; + +import java.util.Calendar; + +/** + * brief:device guider + * author:hubinglun + * date:2019/05/13 + */ + +public class DevPlayBackGuider { + //Time Conversion Interface + public boolean ConvertToTime(NET_DVR_TIME time,Calendar cal){ + if (time == null || cal == null){ + return false; + } + time.dwYear = cal.get(Calendar.YEAR); + time.dwMonth = cal.get(Calendar.MONTH)+1; + time.dwDay = cal.get(Calendar.DAY_OF_MONTH); + time.dwHour = cal.get(Calendar.HOUR_OF_DAY); + time.dwMinute = cal.get(Calendar.MINUTE); + time.dwSecond = cal.get(Calendar.SECOND); + return true; + } + + //Playback control interface + public boolean PlayBackControl_V40_jni(int lPlayHandle, int dwControlCode, byte[] lpInBuffer, int dwInLen, NET_DVR_PLAYBACK_INFO lpOutBuffer){ + if (lPlayHandle < 0) { + Log.e("SimpleDemo", "PlayBackControl_V40_jni failed with error param"); + return false; + } + return HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(lPlayHandle, dwControlCode, lpInBuffer, dwInLen, lpOutBuffer); + } + //Playback by filename + public int PlayBackByName_jni(int iLogID, String strFileName, Surface surface){ + if (iLogID < 0 || strFileName.isEmpty() || surface == null) { + Log.e("SimpleDemo", "PlayBackByName_jni failed with error param"); + return -1; + } + int iPlaybackID = HCNetSDK.getInstance().NET_DVR_PlayBackByName(iLogID,strFileName, surface); + + if (iPlaybackID < 0) { + Log.e("SimpleDemo", "NET_DVR_PlayBackByName is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iPlaybackID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + return -1; + } + + return iPlaybackID; + } + + //Find the files + public int FindFile_V30_jni(int iUserID, NET_DVR_FILECOND lpSearchInfo){ + if (iUserID < 0 || lpSearchInfo == null) { + Log.e("SimpleDemo", "FindFile_V30_jni failed with error param"); + return -1; + } + return HCNetSDK.getInstance().NET_DVR_FindFile_V30(iUserID, lpSearchInfo); + } + + public int FindNextFile_V30_jni(int iFindHandle, NET_DVR_FINDDATA_V30 struFindData){ + if (iFindHandle < 0 || struFindData == null) { + Log.e("SimpleDemo", "FindNextFile_V30_jni failed with error param"); + return -1; + } + return HCNetSDK.getInstance().NET_DVR_FindNextFile_V30(iFindHandle, struFindData); + } + + public boolean FindClose_V30_jni(int iFindHandle){ + if (iFindHandle < 0) { + Log.e("SimpleDemo", "FindClose_V30_jni failed with error param"); + return false; + } + return HCNetSDK.getInstance().NET_DVR_FindClose_V30(iFindHandle); + } + + public int PlayBackSurfaceChanged_jni(int iHandle, int nRegionNum, SurfaceHolder hHwnd){ + if (iHandle < 0 || nRegionNum < 0) { + Log.e("SimpleDemo", "PlayBackSurfaceChanged_jni failed with error param"); + return -1; + } + return HCNetSDK.getInstance().NET_DVR_PlayBackSurfaceChanged(iHandle, nRegionNum, hHwnd); + } + + public boolean StopPlayBack_jni(int iPlaybackID){ + if (iPlaybackID < 0) { + Log.e("SimpleDemo", "StopPlayBack_jni failed with error param"); + return false; + } + return HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + } + + // Download by File Name + public int GetFileByName_jni(int iLogID, String strFileName, String strPath){ + if (iLogID < 0 || strFileName.isEmpty() || strPath.isEmpty()) { + Log.e("SimpleDemo", "GetFileByName_jni failed with error param"); + return -1; + } + + int iDownloadID = HCNetSDK.getInstance().NET_DVR_GetFileByName(iLogID,strFileName, strPath); + + if (iDownloadID < 0) { + Log.e("SimpleDemo", "NET_DVR_GetFileByName is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + byte[] byTranstype = new byte[60]; + byTranstype[0] = 5; + + if(!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iDownloadID, PlaybackControlCommand.NET_DVR_SET_TRANS_TYPE, byTranstype, 4,null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 NET_DVR_SET_TRANS_TYPE is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopGetFile(iDownloadID); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iDownloadID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 NET_DVR_PLAYSTART is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopGetFile(iDownloadID); + return -1; + } + return iDownloadID; + } + + + //Reverse by filename + public int PlayBackReverseByName_jni(int iLogID, String strFileName, Surface surface){ + if (iLogID < 0 || surface == null || strFileName.isEmpty()) { + Log.e("SimpleDemo", "PlayBackReverseByName_jni failed with error param"); + return -1; + } + int iPlaybackID = HCNetSDK.getInstance().NET_DVR_PlayBackReverseByName(iLogID,strFileName, surface); + + if (iPlaybackID < 0) { + Log.e("SimpleDemo", "NET_DVR_PlayBackReverseByName is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iPlaybackID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + return -1; + } + return iPlaybackID; + } + + + //Playback JNI interface by time + public int GetFileByTime_jni(int iUserID, int iChannel, NET_DVR_TIME timeStart, NET_DVR_TIME timeStop, String fileName){ + + if (iUserID < 0 || iChannel < 0 || timeStart == null || timeStop == null || fileName.isEmpty()) { + Log.e("SimpleDemo", "GetFileByTime_jni failed with error param"); + return -1; + } + + int iDownloadID = HCNetSDK.getInstance().NET_DVR_GetFileByTime(iUserID,iChannel, timeStart, timeStop, fileName); + + if (iDownloadID < 0) { + Log.e("SimpleDemo", "NET_DVR_GetFileByTime is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iDownloadID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopGetFile(iDownloadID); + return -1; + } + return iDownloadID; + } + + //Get playback progress + public int GetPlayBackPos_jni(int iPlaybackID){ + return HCNetSDK.getInstance().NET_DVR_GetPlayBackPos(iPlaybackID); + } + + //Get the progress of downloading videos + public int GetDownloadPos_jni(int iDownloadID){ + if (iDownloadID < 0) { + Log.e("SimpleDemo", "GetDownloadPos_jni failed with error param"); + return -1; + } + return HCNetSDK.getInstance().NET_DVR_GetDownloadPos(iDownloadID); + } + + //停止下载录像文件 + public boolean StopGetFile_jni(int iDownloadID){ + if (iDownloadID < 0) { + Log.e("SimpleDemo", "StopGetFile_jni failed with error param"); + return false; + } + return HCNetSDK.getInstance().NET_DVR_StopGetFile(iDownloadID); + } + + //Playback on time + public int PlayBackByTime_v40_jni(int iLogID, NET_DVR_VOD_PARA vodParma){ + if(iLogID < 0 || vodParma == null){ + Log.e("SimpleDemo", "PlayBackByTime_v40_jni failed with error param"); + return -1; + } + + int iPlaybackID = HCNetSDK.getInstance().NET_DVR_PlayBackByTime_V40(iLogID, vodParma); + if (iPlaybackID < 0) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackByTime_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iPlaybackID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iPlaybackID, PlaybackControlCommand.NET_DVR_PLAYSTARTAUDIO, null, 0, null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + return -1; + } + return iPlaybackID; + } + + //Time reversal + public int PlayBackReverseByTime_V40_jni(int iLogID, Surface surface,NET_DVR_PLAYCOND vodcond){ + if(iLogID < 0 || vodcond == null || surface == null){ + Log.e("SimpleDemo", "PlayBackReverseByTime_V40_jni failed with error param"); + return -1; + } + + int iPlaybackID = HCNetSDK.getInstance().NET_DVR_PlayBackReverseByTime_V40(iLogID, surface, vodcond); + if (iPlaybackID < 0) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackReverseByTime_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + return -1; + } + + if (!HCNetSDK.getInstance().NET_DVR_PlayBackControl_V40(iPlaybackID, PlaybackControlCommand.NET_DVR_PLAYSTART, null, 0, null)) + { + Log.e("SimpleDemo", "NET_DVR_PlayBackControl_V40 is failed!Err:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + HCNetSDK.getInstance().NET_DVR_StopPlayBack(iPlaybackID); + return -1; + } + return iPlaybackID; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPreviewGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPreviewGuider.java new file mode 100644 index 0000000..7c5f969 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevPreviewGuider.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.widget.Toast; + +import com.hcnetsdk.jna.HCNetSDKByJNA; +import com.hcnetsdk.jna.HCNetSDKJNAInstance; +import com.hikvision.netsdk.NET_DVR_PREVIEWINFO_V20; +import com.sun.jna.Pointer; +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.NET_DVR_PREVIEWINFO; + +import java.util.Calendar; + +public class DevPreviewGuider { + + //预览接口 + public int RealPlay_V40_jni(int iUserID, NET_DVR_PREVIEWINFO struPlayInfo, Pointer pUser) { + if (iUserID < 0) { + Log.e("SimpleDemo", "RealPlay_V40_jni failed with error param"); + return -1; + } + int iRet = HCNetSDK.getInstance().NET_DVR_RealPlay_V40(iUserID, struPlayInfo, null); + if(iRet < 0) + { + return -1; + } + + boolean bRet = HCNetSDKJNAInstance.getInstance().NET_DVR_OpenSound((short)iRet); + if(bRet){ + Log.e("", "NET_DVR_OpenSound Succ!"); + } + return iRet; + } + + public int RealPlay_V40_jni(int iUserID, NET_DVR_PREVIEWINFO_V20 struPlayInfo, Pointer pUser) { + if (iUserID < 0) { + Log.e("SimpleDemo", "RealPlay_V40_jni failed with error param"); + return -1; + } + int iRet = HCNetSDK.getInstance().NET_DVR_RealPlay_V40(iUserID, struPlayInfo, null); + if(iRet < 0) + { + return -1; + } + return iRet; + } + + //预览窗口句柄变化时调用 + public int RealPlaySurfaceChanged_jni(int iHandle, int nRegionNum, SurfaceHolder hHwnd){ + if (iHandle < 0 || nRegionNum < 0) { + Log.e("SimpleDemo", "RealPlaySurfaceChanged_jni failed with error param"); + return -1; + } + return HCNetSDK.getInstance().NET_DVR_RealPlaySurfaceChanged(iHandle, nRegionNum, hHwnd); + } + + public boolean RealPlay_Stop_jni(int m_iPreviewHandle){ + if (m_iPreviewHandle < 0) { + Log.e("SimpleDemo", "RealPlay_Stop_jni failed with error param"); + return false; + } + if(!HCNetSDK.getInstance().NET_DVR_StopRealPlay(m_iPreviewHandle)) + { + Log.e("SimpleDemo", "RealPlay_Stop_jni failed"); + return false; + } + return true; + } + + public boolean RealPlay_Snap(int m_iPreviewHandle, String sPicFileName){ + if (!HCNetSDKJNAInstance.getInstance().NET_DVR_CapturePicture(m_iPreviewHandle, sPicFileName)) + { + Log.e("SimpleDemo", "RealPlay_Snap failed"); + return false; + } + return true; + } + + public boolean RealPlay_Record(int m_iPreviewHandle, int dwTransType, String sPicFileName){ + if (!HCNetSDKJNAInstance.getInstance().NET_DVR_SaveRealData_V30(m_iPreviewHandle, dwTransType, sPicFileName)) + { + Log.e("SimpleDemo", "RealPlay_Record failed"); + return false; + } + return true; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevTransportGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevTransportGuider.java new file mode 100644 index 0000000..d5baa64 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/DevTransportGuider.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; + +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.NET_DVR_XML_CONFIG_INPUT; +import com.hikvision.netsdk.NET_DVR_XML_CONFIG_OUTPUT; +import com.hcnetsdk.jna.HCNetSDKByJNA; +import com.hcnetsdk.jna.HCNetSDKJNAInstance; + +public class DevTransportGuider { + + public boolean STDXMLConfig_jni(int lUserID, NET_DVR_XML_CONFIG_INPUT lpInputParam, NET_DVR_XML_CONFIG_OUTPUT lpOutputParam) { + if (lUserID < 0) { + Log.e("SimpleDemo", "STDXMLConfig_jni failed with error param"); + return false; + } + return HCNetSDK.getInstance().NET_DVR_STDXMLConfig(lUserID, lpInputParam, lpOutputParam); + } + + public boolean STDXMLConfig_jna(int lUserID, HCNetSDKByJNA.NET_DVR_XML_CONFIG_INPUT lpInputParam, HCNetSDKByJNA.NET_DVR_XML_CONFIG_OUTPUT lpOutputParam) { + if (lUserID < 0) { + Log.e("SimpleDemo", "STDXMLConfig_jna failed with error param"); + return false; + } + return HCNetSDKJNAInstance.getInstance().NET_DVR_STDXMLConfig(lUserID, lpInputParam, lpOutputParam); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragBase.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragBase.java new file mode 100644 index 0000000..dc33fe7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragBase.java @@ -0,0 +1,15 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import com.rehome.scbaxj.activity.MainActivity; + +public class FragBase extends Fragment { + protected MainActivity m_mainActivity; + + public void setSDKGuider(MainActivity mainActivity) { + m_mainActivity = mainActivity; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragConfig.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragConfig.java new file mode 100644 index 0000000..e28e75b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/FragConfig.java @@ -0,0 +1,1689 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.Button; +import android.widget.Toast; +import android.widget.AdapterView; + + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.MainActivity; + +import java.lang.String; +import java.util.ArrayList; + +public class FragConfig extends FragBase { + public static final String ARGS_PAGE = "args_page"; + private TextView textView; + private int mPage; + private ArrayList data=new ArrayList(); + private ArrayList toastConfigInfo=new ArrayList(); + private ArrayAdapter adapter; + private Button btn_configTest = null; + private Button btn_manageTest = null; + private Button btn_pictureTest = null; + private Button btn_PTZTest = null; + private Button btn_screenTest = null; + private Button btn_otherFunctionTest = null; + private ListView listView=null; + + + + + public static FragConfig newInstance(MainActivity mainActivity, Bundle args) { + FragConfig fragment = new FragConfig(); + fragment.setSDKGuider(mainActivity); + if(args!=null) + { + fragment.setArguments(args); + } + return fragment; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mPage = 1; + + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + final View rootView = inflater.inflate(R.layout.frag_configure, container, false); +// textView = rootView.findViewById(R.id.textView2); +// textView.setText("Congure"); + fnBindScreenTestBtn(rootView); + fnBindconfigTestBtn(rootView); + fnBindPictureTestBtn(rootView); + fnBindManageTestBtn(rootView); + fnBindPTZTestBtn(rootView); + fnBindOtherFunctionBtn(rootView); + + return rootView; + } + + public void fnBindScreenTestBtn(View rootView) + { + btn_screenTest=(Button)rootView.findViewById(R.id.ScreenTest); + btn_screenTest.setOnClickListener(new View.OnClickListener() { + //@Override + + int flag=0; + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + switch(flag) + { + case 0: + btn_screenTest.setActivated(false); + flag=1; + break; + case 1: + btn_screenTest.setActivated(true); + flag=0; + } + data.clear(); + data.add("test_ControlScreen"); + data.add("test_SignalList"); + data.add("test_FileInfo"); + data.add("test_SerialAbility"); + data.add("test_loginCfg"); + data.add("test_PlayingPlan"); + data.add("test_CtrlPlan"); + data.add("test_Plan"); + data.add("test_VWParam"); + data.add("test_CurrentScene"); + + data.add("test_SceneControl"); + data.add("test_DecChanEnable"); + data.add("test_SwitchWin"); + data.add("test_WallInParam"); + data.add("test_CloseAll"); + data.add("test_Position"); + data.add("test_DisplayPosition"); + data.add("test_WallOutput"); + data.add("test_PlanList"); + data.add("test_ScreenCtrl"); + + data.add("test_UploadFile"); + data.add("test_Download"); + data.add("test_ScreenFileList"); + data.add("test_ScreenConfig"); + data.add("test_ScreenConfigCap"); + data.add("test_WallAbility"); + data.add("test_LEDCard"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + // + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position) { + + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_ControlScreen_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_CONTROL_SCREEN success!"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO succ"); + } else { + strToast = "NET_DVR_CONTROL_SCREEN fail,error code =" + ret.status_1 + "\n"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO fail,errorCode is"+ret.status_1); + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 1: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_SignalList_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GetInputSignalList_V40 success!"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO succ"); + } else { + strToast = "NET_DVR_GetInputSignalList_V40 fail,error code =" + ret.status_1 + "\n"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO fail,errorCode is"+ret.status_1); + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 2: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_FileInfo_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_SCREEN_FILEINFO succ"; + + } else { + strToast = "NET_DVR_GET_SCREEN_FILEINFO fail,errorCode is" + ret.status_1 + "\n"; + + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SET_SCREEN_FILEINFO succ"; + + } else { + strToast += "NET_DVR_SET_SCREEN_FILEINFO fail,errorCode is" + ret.status_2; + + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 3: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_SerialAbility_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GetDeviceAbility success!"; + } else { + strToast = "NET_DVR_GetDeviceAbility fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 4: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_loginCfg_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_STDXMLConfig success!"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO succ"); + } else { + strToast = "NET_DVR_STDXMLConfig fail,error code =" + ret.status_1 + "\n"; + //toastConfigInfo.add("NET_DVR_GET_SCREEN_FILEINFO fail,errorCode is"+ret.status_1); + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 5: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_PlayingPlan_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_PLAYING_PLAN success!"; + } else { + strToast = "NET_DVR_GET_PLAYING_PLAN fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 6: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_CtrlPlan_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_CTRL_PLAN success!"; + } else { + strToast = "NET_DVR_CTRL_PLAN fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 7: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_CtrlPlan_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_SET_PLAN success!"; + } else { + strToast = "NET_DVR_SET_PLAN fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 8: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_VWParam_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_VW_SCENE_PARAM succ"; + } else { + strToast = "NET_DVR_GET_VW_SCENE_PARAM fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SET_VW_SCENE_PARAM success"; + } else { + strToast += "NET_DVR_SET_VW_SCENE_PARAM fail,error code =" + ret.status_2 + "\n"; + } + if (ret.status_3 == 0) { + strToast += "NET_DVR_GET_VW_SCENE_PARAM success"; + } else { + strToast += "NET_DVR_GET_VW_SCENE_PARAM fail,error code " + ret.status_3; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 9: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_CurrentScene_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_CURRENT_SCENE success!"; + } else { + strToast = "NET_DVR_GET_CURRENT_SCENE fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 10: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_SceneControl_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_SCENE_CONTROL success!"; + } else { + strToast = "NET_DVR_SCENE_CONTROL fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 11: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_DecChanEnable_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_MatrixGetDecChanEnable succ"; + } else { + strToast = "NET_DVR_MatrixGetDecChanEnable fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_MaxtrixSetDecChanEnable success"; + } else { + strToast += "NET_DVR_MaxtrixSetDecChanEnable fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 12: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_SwitchWin_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_SWITCH_WIN_TOP succ"; + } else { + strToast = "NET_DVR_SWITCH_WIN_TOP fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SWITCH_WIN_BOTTOM success"; + } else { + strToast += "NET_DVR_SWITCH_WIN_BOTTOM fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 13: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_WallInParam_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_WALLWINPARAM_GET succ"; + } else { + strToast = "NET_DVR_WALLWINPARAM_GET fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_WALLWINPARAM_SET success"; + } else { + strToast += "NET_DVR_WALLWINPARAM_SET fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 14: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_CloseAll_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_VIDEOWALLWINDOW_CLOSEALL success!"; + } else { + strToast = "NET_DVR_VIDEOWALLWINDOW_CLOSEALL fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 15: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_Position_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_VIDEOWALLWINDOWPOSITION succ"; + } else { + strToast = "NET_DVR_GET_VIDEOWALLWINDOWPOSITION fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SET_VIDEOWALLWINDOWPOSITION success"; + } else { + strToast += "NET_DVR_SET_VIDEOWALLWINDOWPOSITION fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 16: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_DisplayPosition_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_VIDEOWALLDISPLAYPOSITION succ"; + } else { + strToast = "NET_DVR_GET_VIDEOWALLDISPLAYPOSITION fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SET_VIDEOWALLDISPLAYPOSITION success"; + } else { + strToast += "NET_DVR_SET_VIDEOWALLDISPLAYPOSITION fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 17: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_Position_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_VIDEOWALLWINDOWPOSITION succ"; + } else { + strToast = "NET_DVR_GET_VIDEOWALLWINDOWPOSITION fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SET_VIDEOWALLWINDOWPOSITION success"; + } else { + strToast += "NET_DVR_SET_VIDEOWALLWINDOWPOSITION fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 18: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_PlanList_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GetPlanList success!"; + } else { + strToast = "NET_DVR_GetPlanList fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 19: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_ScreenCtrl_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_StartRemoteConfig NET_DVR_START_SCREEN_CRTL succ"; + } else { + strToast = "NET_DVR_StartRemoteConfig NET_DVR_START_SCREEN_CRTL fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_SendRemoteConfig NET_DVR_START_SCREEN_CRTL success"; + } else { + strToast += "NET_DVR_SendRemoteConfig NET_DVR_START_SCREEN_CRTL fail,error code =" + ret.status_2 + "\n"; + } + if (ret.status_3 == 0) { + strToast += "NET_DVR_StopRemoteConfig NET_DVR_START_SCREEN_CRTL success"; + } else { + strToast += "NET_DVR_StopRemoteConfig NET_DVR_START_SCREEN_CRTL fail,error code " + ret.status_3; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 20: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_UploadFile_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GetPlanList success!"; + } else { + strToast = "NET_DVR_GetPlanList fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 21: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_Download_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_StartDownload succ"; + } else { + strToast = "NET_DVR_StartDownload fail,errorCode is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_StopDownload success"; + } else { + strToast += "NET_DVR_StopDownload fail,error code =" + ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 22: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_ScreenFileList_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_StartRemoteConfig NET_DVR_GET_SCREEN_FLIE_LIST succ"; + } else { + strToast = "NET_DVR_StartRemoteConfig NET_DVR_GET_SCREEN_FLIE_LIST is" + ret.status_1 + "\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_GetRemoteConfigState NET_DVR_GET_SCREEN_FLIE_LIST success"; + } else { + strToast += "NET_DVR_GetRemoteConfigState NET_DVR_GET_SCREEN_FLIE_LIST fail,error code =" + ret.status_2 + "\n"; + } + if (ret.status_3 == 0) { + strToast += "NET_DVR_GetNextRemoteConfig NET_DVR_GET_SCREEN_FLIE_LIST success"; + } else { + strToast += "NET_DVR_GetNextRemoteConfig NET_DVR_GET_SCREEN_FLIE_LIST fail,error code " + ret.status_3; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 23: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_ScreenConfig_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_SCREEN_CONFIG success!"; + } else { + strToast = "NET_DVR_GET_SCREEN_CONFIG fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 24: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_ScreenConfigCap_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GET_SCREEN_CONFIG_CAP success!"; + } else { + strToast = "NET_DVR_GET_SCREEN_CONFIG_CAP fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 25: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_WallAbility_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_GetDeviceAbility WallAbility success!"; + } else { + strToast = "NET_DVR_GetDeviceAbility WallAbility fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 26: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.test_LEDCard_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast = "NET_DVR_STDXMLConfig(PUT) success!"; + } else { + strToast = "NET_DVR_STDXMLConfig(PUT) fail,error code =" + ret.status_1 + "\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + default: + break; + } + } + + } + }); + }} + }); + } + + public void fnBindconfigTestBtn(View rootView) + { + btn_configTest=(Button)rootView.findViewById(R.id.ConfigTest); + btn_configTest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + data.clear(); + +// data.add("Test_Time"); +// data.add("Test_XMLAbility"); +// data.add("Test_PTZProtocol"); +// data.add("Test_PresetName"); +// data.add("Test_ShowString"); +// data.add("Test_DigitalChannelState"); +// data.add("Test_DDNSPara"); +// data.add("Test_APInfoList"); +// data.add("Test_WifiCfg"); +// data.add("Test_WifiStatus"); +// +// data.add("Test_UpnpNatState"); +// data.add("Test_UserCfg"); +// data.add("Test_DeviceCfg"); +// data.add("Test_DeviceCfg_V40"); +// data.add("Test_ExceptionCfg_V40"); +// data.add("Test_PicCfg"); +// data.add("Test_ZeroChanCfg"); +// data.add("Test_WorkState"); + data.add("Test_RecordCfg"); +// data.add("Test_AuxAlarmCfg"); +// +// data.add("Test_AlarminCfg"); +// data.add("Test_AlarmOutCfg"); +// data.add("Test_DecoderCfg"); +// data.add("Test_NTPPara"); +// data.add("Test_IPAlarmOutCfg"); +// data.add("Test_IPParaCfg"); +// data.add("Test_NetCfg"); +// data.add("Test_CompressionCfg"); +// data.add("Test_CompressCfgAud"); +// data.add("Test_AlarmOutStatus"); +// +// data.add("Test_VideoEffect"); +// data.add("Test_Preview_display"); +// data.add("Text_FISHEYE_ABILITY"); +// data.add("Test_CAMERAPARAMCFG_EX"); +// data.add("Test_WIRELESSDIAL_CFG"); +// data.add("Test_PostRadar_Capabilities"); +// data.add("TextOSD"); +// data.add("Test_EzvizCreate"); +// data.add("Test_EzvizXMLConfig"); +// data.add("Test_EzvizServerDeviceInfo"); +// +// data.add("Test_EzvizAlarmInParamList"); +// data.add("Test_EzvizCallerInfo"); +// data.add("Test_EzvizRemoteGatway"); +// data.add("Test_EzvizCallSignal"); +// data.add("Test_EzvizPawdAuth"); +// data.add("TestAlarmHostMainStatus"); +// data.add("TestMCUAbility"); +// data.add("TextTrialMachine"); +// data.add("TestWIRELESSDIAL_CFG"); +// data.add("Text_Trail_ABILITY"); +// +// data.add("Test_LEDArea"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position){ + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + SDKGuider.g_sdkGuider.m_comConfGuider.Test_RecordCfg(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + } + break; +// case 0: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_SearchLog_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_GET_TIMECFG success!"; +// } else { +// strToast ="NET_DVR_GET_TIMECFG fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 1: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ShutDown_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="DEVICE_ENCODE_ALL_ABILITY_V20 success!"; +// } else { +// strToast ="DEVICE_ENCODE_ALL_ABILITY_V20 fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 2: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_RebootDVR_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_GetPTZProtocol success!"; +// } else { +// strToast ="NET_DVR_GetPTZProtocol fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 3: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ClickKey_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_GET_PRESET_NAME success!"; +// } else { +// strToast ="NET_DVR_GET_PRESET_NAME fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 4: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_FormatDisk_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_GET_SHOWSTRING_V30 succ"; +// } else { +// strToast ="NET_DVR_GET_SHOWSTRING_V30 fail,errorCode is"+ret.status_1+"\n"; +// } +// if (ret.status_2 == 0) { +// strToast += "NET_DVR_SET_SHOWSTRING_V30 success"; +// } else { +// strToast+="NET_DVR_SET_SHOWSTRING_V30 fail,error code ="+ret.status_2; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; + default: + break; + } + + + } + } + }); + + }} + }); + } + + public void fnBindManageTestBtn(View rootView) + { + btn_manageTest=(Button)rootView.findViewById(R.id.ManageTest); + btn_manageTest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + data.clear(); + data.add("Test_SearchLog"); + data.add("Test_ShutDown"); + data.add("Test_RebootDVR"); + data.add("Test_ClickKey"); + data.add("Test_FormatDisk"); + data.add("Test_Upgrade"); + data.add("Test_ActivateDevice"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position){ + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_SearchLog_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFormatProgress success!"; + } else { + strToast ="NET_DVR_CONTROL_SCREEN fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 1: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ShutDown_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_ShutDownDVR success!"; + } else { + strToast ="NET_DVR_ShutDownDVR fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 2: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_RebootDVR_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_RebootDVR success!"; + } else { + strToast ="NET_DVR_RebootDVR fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 3: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ClickKey_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_ClickKey success!"; + } else { + strToast ="NET_DVR_ClickKey fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 4: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_FormatDisk_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFormatProgress succ"; + } else { + strToast ="NET_DVR_GetFormatProgress fail,errorCode is"+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_CloseFormatHandle success"; + } else { + strToast+="NET_DVR_CloseFormatHandle fail,error code ="+ret.status_2; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 5: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_Upgrade_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SetNetworkEnvironment succ"; + } else { + strToast ="NET_DVR_SetNetworkEnvironment fail,errorCode is"+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast += "NET_DVR_Upgrade success"; + } else { + strToast+="NET_DVR_Upgrade fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast += "NET_DVR_GetUpgradeProgress success"; + } else { + strToast+="NET_DVR_GetUpgradeProgress fail,error code ="+ret.status_3; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 6: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ActivateDevice_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_ActivateDevice success!"; + } else { + strToast ="NET_DVR_ActivateDevice fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + default: + break; + } + + + } + } + }); + + + }} + }); + } + + public void fnBindPictureTestBtn(View rootView) + { + btn_pictureTest=(Button)rootView.findViewById(R.id.PictureTest); + + btn_pictureTest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + data.clear(); + data.add("PicUpload"); + data.add("BaseMap"); + data.add("BasemapCfg"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position){ + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.PicUpload(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PicUpload success!"; + } else { + strToast ="NET_DVR_PicUpload fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 1: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.BaseMap(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SET_BASEMAP_WIN_CFG success!"; + } else { + strToast ="NET_DVR_SET_BASEMAP_WIN_CFG fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 2: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.BasemapCfg(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GET_BASEMAP_PIC_INFO success!"; + } else { + strToast ="NET_DVR_GET_BASEMAP_PIC_INFO fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_GET_BASEMAP_CFG success!"; + } else { + strToast ="NET_DVR_GET_BASEMAP_CFG fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast ="NET_DVR_SET_BASEMAP_CFG success!"; + } else { + strToast ="NET_DVR_SET_BASEMAP_CFG fail,error code ="+ret.status_3+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + default: + break; + } + + + } + } + }); + + + }} + }); + } + + public void fnBindPTZTestBtn(View rootView) + { + btn_PTZTest=(Button)rootView.findViewById(R.id.PTZTest); + + btn_PTZTest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + data.clear(); + //data.add("Test_PTZControl"); + //data.add("Test_PTZControlWithSpeed"); + //data.add("Test_PTZPreset"); + //data.add("Test_PTZCruise"); + //data.add("Test_PTZTrack"); + //data.add("Test_PTZSelZoomIn"); + data.add("Test_PTZControl_Other"); + data.add("Test_PTZControlWithSpeed_Other"); + data.add("Test_PTZPreset_Other"); + data.add("Test_PTZCruise_Other"); + data.add("Test_PTZTrack_Other"); + data.add("Test_PTZSelZoomIn_EX"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position){ +// case 0: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZControl(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="PTZControl PAN_LEFT 0 success!"; +// } else { +// strToast ="PTZControl PAN_LEFT 0 fail,error code ="+ret.status_1+"\n"; +// } +// +// if (ret.status_2 == 0) { +// strToast ="PTZControl PAN_LEFT 1 success!"; +// } else { +// strToast ="PTZControl PAN_LEFT 1 fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 1: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZControlWithSpeed(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="PTZControlWithSpeed PAN_RIGHT 0 success!"; +// } else { +// strToast ="PTZControlWithSpeed PAN_RIGHT 0 fail,error code ="+ret.status_1+"\n"; +// } +// if (ret.status_2 == 0) { +// strToast ="PTZControlWithSpeed PAN_RIGHT 1 success!"; +// } else { +// strToast ="PTZControlWithSpeed PAN_RIGHT 1 fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 2: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZPreset(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="PTZPreset GOTO_PRESET success!"; +// } else { +// strToast ="PTZPreset GOTO_PRESET fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 3: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZCruise(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="PTZCruise RUN_SEQ success!"; +// } else { +// strToast ="PTZCruise RUN_SEQ,error code ="+ret.status_1+"\n"; +// } +// if (ret.status_2 == 0) { +// strToast ="PTZCruise STOP_SEQ success!"; +// } else { +// strToast ="PTZCruise STOP_SEQ,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 4: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZTrack(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_PTZTrack RUN_CRUISE success!"; +// } else { +// strToast ="NET_DVR_PTZTrack RUN_CRUISE fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; +// case 5: +// if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { +// DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZSelZoomIn(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); +// //向listView写数据 +// if (ret.status_1 == 0) { +// strToast ="NET_DVR_PTZSelZoomIn success!"; +// } else { +// strToast ="NET_DVR_PTZSelZoomIn fail,error code ="+ret.status_1+"\n"; +// } +// Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); +// adapter.notifyDataSetChanged(); +// } +// break; + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZControl_Other(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZControl_Other TILT_UP 0 success!"; + } else { + strToast ="NET_DVR_PTZControl_Other TILT_UP 0,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_PTZControl_Other TILT_UP 1 success!"; + } else { + strToast ="NET_DVR_PTZControl_Other TILT_UP 1,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 1: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZControlWithSpeed_Other(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID, 1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 0 success!"; + } else { + strToast ="NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 0 fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 1 success!"; + } else { + strToast ="NET_DVR_PTZControlWithSpeed_Other PAN_RIGHT 1 fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 2: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZPreset_Other(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZPreset_Other GOTO_PRESET success!"; + } else { + strToast ="NET_DVR_PTZPreset_Other GOTO_PRESET fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 3: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZCruise_Other(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZCruise_Other RUN_SEQ success!"; + } else { + strToast ="NET_DVR_PTZCruise_Other RUN_SEQ fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_PTZCruise_Other STOP_SEQ success!"; + } else { + strToast ="NET_DVR_PTZCruise_Other STOP_SEQ fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 4: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZTrack_Other(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZTrack_Other RUN_CRUISE success!"; + } else { + strToast ="NET_DVR_PTZTrack_Other RUN_CRUISE fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 5: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PTZSelZoomIn_EX(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_PTZSelZoomIn_EX success!"; + } else { + strToast ="NET_DVR_PTZSelZoomIn_EX fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + default: + break; + } + + + } + } + }); + + + }} + }); + } + + public void fnBindOtherFunctionBtn(View rootView) + { + btn_otherFunctionTest=(Button)rootView.findViewById(R.id.OtherFunction); + btn_otherFunctionTest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() == null) + { + Toast.makeText(m_mainActivity,"please login first!",Toast.LENGTH_LONG).show(); + } + else + { + data.clear(); + /*NUNM=26*/ + data.add("Test_FindFile"); + data.add("Test_FindFileByEvent"); + data.add("Test_GetFileDownload"); + data.add("Test_PlayBackConvert"); + data.add("Test_GetFileByTime"); + data.add("Test_GetFileByName"); + data.add("Test_UpdateRecordIndex"); + data.add("Test_CaptureJpegPicture"); + data.add("Test_CaptureJpegPicture_new"); + data.add("Test_DVRRecord"); + + data.add("Test_TransChannel"); + data.add("Test_Serial"); + data.add("Test_ZeroChanPreview"); + data.add("Test_Hikonline"); + data.add("Test_IPServer"); + data.add("Test_DVRSetConnectTime"); + data.add("Test_DVRSetReConnect"); + data.add("Test_SDKLOCAL_CFG"); + data.add("Test_GetSDKVersion"); + data.add("Test_DVRMakeKeyFrame"); + + data.add("Test_DVRMakeKeyFrameSub"); + data.add("Test_SetRecvTimeOut"); + data.add("Test_RecycleGetStream"); + data.add("Test_GetCurrentAudioCompress_V50"); + data.add("Test_MultiThreadLogin"); + data.add("Test_EzvizConfig"); + + adapter = new ArrayAdapter(m_mainActivity,android.R.layout.simple_list_item_1,data); + listView=(ListView)rootView.findViewById(R.id.list_view); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev() != null) { + String strToast = ""; + switch (position){ + case 0: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_FindFile_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_FindFile_V30 success!"; + } else { + strToast ="NET_DVR_FindFile_V30 fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 1: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_FindFileByEvent_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_FindFileByEvent success!"; + } else { + strToast ="NET_DVR_FindFileByEvent fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 2: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_GetFileDownload_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFileByName success!"; + } else { + strToast ="NET_DVR_GetFileByName fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_SET_TRANS_TYPE success!"+"\n"; + } else { + strToast ="NET_DVR_PlayBackControl_V40 fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast ="NET_DVR_PLAYSTART success!"+"\n"; + } else { + strToast ="NET_DVR_PlayBackControl_V40 fail,error code ="+ret.status_3+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 3: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_PlayBackConvert_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFileByName success!"; + } else { + strToast ="NET_DVR_GetFileByName fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_SET_TRANS_TYPE success!"+"\n"; + } else { + strToast ="NET_DVR_PlayBackControl_V40 fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast ="NET_DVR_PLAYSTART success!"+"\n"; + } else { + strToast ="NET_DVR_PlayBackControl_V40 fail,error code ="+ret.status_3+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 4: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_GetFileByTime_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFileByTime success!"; + } else { + strToast ="NET_DVR_GetFileByTime fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 5: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_GetFileByName_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetFileByTime success!"; + } else { + strToast ="NET_DVR_GetFileByTime fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 6: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_UpdateRecordIndex_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_UpdateRecordIndex success!"; + } else { + strToast ="NET_DVR_UpdateRecordIndex fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 7: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_CaptureJpegPicture_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_CaptureJPEGPicture success!"; + } else { + strToast ="NET_DVR_CaptureJPEGPicture fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 8: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_CaptureJpegPicture_new_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_CaptureJPEGPicture_NEW success!"; + } else { + strToast ="NET_DVR_CaptureJPEGPicture_NEW fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 9: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_DVRRecord_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_StartDVRRecord success!"+"\n"; + } else { + strToast ="NET_DVR_StartDVRRecord fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_StopDVRRecord success!"; + } else { + strToast ="NET_DVR_StopDVRRecord fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 10: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_TransChannel_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SerialStart success!"+"\n"; + } else { + strToast ="NET_DVR_SerialStart fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_SerialSend success!"+"\n"; + } else { + strToast ="NET_DVR_SerialSend fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast ="NET_DVR_SerialStop success!"+"\n"; + } else { + strToast ="NET_DVR_SerialStop fail,error code ="+ret.status_3+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 11: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_Serial_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SendToSerialPort success!"+"\n"; + } else { + strToast ="NET_DVR_SendToSerialPort fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_SendTo232Port success!"+"\n"; + } else { + strToast ="NET_DVR_SendTo232Port fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 12: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_ZeroChanPreview_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_ZeroStartPlay success!"+"\n"; + } else { + strToast ="NET_DVR_ZeroStartPlay fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_ZeroStopPlay success!"+"\n"; + } else { + strToast ="NET_DVR_ZeroStopPlay fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 13: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_Hikonline_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="QUERYSVR_BY_COUNTRYID success!"+"\n"; + } else { + strToast ="QUERYSVR_BY_COUNTRYID fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="QUERYDEV_BY_NICKNAME_DDNS success!"+"\n"; + } else { + strToast ="QUERYDEV_BY_NICKNAME_DDNS fail,error code ="+ret.status_2+"\n"; + } + if (ret.status_3 == 0) { + strToast ="QUERYDEV_BY_SERIAL_DDNS success!"+"\n"; + } else { + strToast ="QUERYDEV_BY_SERIAL_DDNS fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 14: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_IPServer_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="QUERYDEV_BY_NICKNAME_IPSERVER success!"+"\n"; + } else { + strToast ="QUERYDEV_BY_NICKNAME_IPSERVER fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="QUERYDEV_BY_SERIAL_IPSERVER success!"+"\n"; + } else { + strToast ="QUERYDEV_BY_SERIAL_IPSERVER fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 15: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_DVRSetConnectTime_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SetConnectTime success!"+"\n"; + } else { + strToast ="NET_DVR_SetConnectTime fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 16: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_DVRSetReConnect_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SetReconnect success!"+"\n"; + } else { + strToast ="NET_DVR_SetReconnect fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 17: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_SDKLOCAL_CFG_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetSDKLocalConfig success!"+"\n"; + } else { + strToast ="NET_DVR_GetSDKLocalConfig fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_SetSDKLocalConfig success!"+"\n"; + } else { + strToast ="NET_DVR_SetSDKLocalConfig fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 18: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_GetSDKVersion_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetSDKVersion success!"+"\n"; + } else { + strToast ="NET_DVR_GetSDKVersion fail,error code ="+ret.status_1+"\n"; + } + if (ret.status_2 == 0) { + strToast ="NET_DVR_GetSDKVersion_GetSDKBuildVersion success!"+"\n"; + } else { + strToast ="NET_DVR_GetSDKVersion_GetSDKBuildVersion fail,error code ="+ret.status_2+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 19: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_DVRMakeKeyFrame_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_MakeKeyFrame success!"+"\n"; + } else { + strToast ="NET_DVR_MakeKeyFrame fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 20: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_DVRMakeKeyFrameSub_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID,1); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_MakeKeyFrameSub success!"+"\n"; + } else { + strToast ="NET_DVR_MakeKeyFrameSub fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 21: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_SetRecvTimeOut_jni(); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_SetRecvTimeOut success!"+"\n"; + } else { + strToast ="NET_DVR_SetRecvTimeOut fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 23: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_GetCurrentAudioCompress_V50(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetCurrentAudioCompress_V50 success!"+"\n"; + } else { + strToast ="NET_DVR_GetCurrentAudioCompress_V50 fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + case 25: + if (SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID != -1) { + DevConfigGuider.CGReturn ret = SDKGuider.g_sdkGuider.m_comConfGuider.Test_EzvizConfig_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev().m_lUserID); + //向listView写数据 + if (ret.status_1 == 0) { + strToast ="NET_DVR_GetSTDConfig success!"+"\n"; + } else { + strToast ="NET_DVR_GetSTDConfig fail,error code ="+ret.status_1+"\n"; + } + Toast.makeText(m_mainActivity, strToast, Toast.LENGTH_LONG).show(); + adapter.notifyDataSetChanged(); + } + break; + + default: + break; + } + + + } + } + }); + + + }} + }); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/PreviewGetStreamThread.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/PreviewGetStreamThread.java new file mode 100644 index 0000000..be30aba --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/PreviewGetStreamThread.java @@ -0,0 +1,34 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import com.hikvision.netsdk.HCNetSDK; +import com.hikvision.netsdk.NET_DVR_PREVIEWINFO; + +public class PreviewGetStreamThread { + private int iChan; + private int iUserID; + public PreviewGetStreamThread(int iUserID, int iChan) + { + this.iChan = iChan; + this.iUserID = iUserID; + } + public void run() + { + NET_DVR_PREVIEWINFO previewInfo = new NET_DVR_PREVIEWINFO(); + previewInfo.lChannel = iChan; + previewInfo.dwStreamType = 1; //substream + previewInfo.bBlocked = 1; + int iPreviewID = HCNetSDK.getInstance().NET_DVR_RealPlay_V40(iUserID, previewInfo, null); + if(iPreviewID < 0) + { + System.out.println("NET_DVR_RealPlay_V40 failed with:" + HCNetSDK.getInstance().NET_DVR_GetLastError()); + } + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + HCNetSDK.getInstance().NET_DVR_StopRealPlay(iPreviewID); + System.out.println("PreviewGetStreamThread " + iChan); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/SDKGuider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/SDKGuider.java new file mode 100644 index 0000000..8e80164 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Control/SDKGuider.java @@ -0,0 +1,110 @@ +package com.rehome.scbaxj.activity.hc.Control; + +import android.util.Log; + +import com.hcnetsdk.jna.HCNetSDKJNAInstance; +import com.hikvision.netsdk.HCNetSDK; + +public class SDKGuider{ + static public SDKGuider g_sdkGuider = new SDKGuider(); + + //ISAPI协议透传接口 + public DevTransportGuider m_comTransportGuider = new DevTransportGuider(); + //串口透传接口 + public DevPassThroughGuider m_comSerialTransGuider = new DevPassThroughGuider(); + //设备管理接口 + public DevManageGuider m_comDMGuider = new DevManageGuider(); + //设备远程设置接口 + public DevConfigGuider m_comConfGuider = new DevConfigGuider(); + //设备报警接口 + public DevAlarmGuider m_comDevAlarmGuider = new DevAlarmGuider(); + //关于回放接口 + public DevPlayBackGuider m_comPBGuider = new DevPlayBackGuider(); + //预览相关接口 + public DevPreviewGuider m_comPreviewGuider = new DevPreviewGuider(); + //SDK初始化 + public SDKGuider(){ + initNetSdk_jna(); + } + //清理 + public void finalize() + { + cleanupNetSdk_jna(); + } + + /** + * @fn GetLastError_jni + * @return 返回错误码 + * @brief 获取SDK错误码 + */ + public int GetLastError_jni() + { + return HCNetSDK.getInstance().NET_DVR_GetLastError(); + } + + /** + * @fn initNetSdk_jni + * @return 成功初始化NetSDK,返回True,否则False + * @brief NetSDK初始化. + */ + private boolean initNetSdk_jni() + { + // init net sdk + if (!HCNetSDK.getInstance().NET_DVR_Init()) + { + Log.e("[NetSDKSimpleDemo]", "HCNetSDK init is failed!"); + return false; + } + HCNetSDK.getInstance().NET_DVR_SetLogToFile(3, "/mnt/sdcard/sdklog/", true); + return true; + } + + /** + * @fn initNetSdk_jna + * @return 成功初始化NetSDK,返回True,否则False + * @brief NetSDK初始化. + */ + private boolean initNetSdk_jna() + { + // init net sdk + if (!HCNetSDKJNAInstance.getInstance().NET_DVR_Init()) + { + Log.e("[NetSDKSimpleDemo]", "HCNetSDK init is failed!"); + return false; + } + HCNetSDKJNAInstance.getInstance().NET_DVR_SetLogToFile(3, "/mnt/sdcard/sdklog/", true); + return true; + } + + /** + * @fn cleanupNetSdk_jni + * @return 成功返回True,否则False + * @brief NetSDK反初始化. + */ + private boolean cleanupNetSdk_jni() + { + // init net sdk + if (!HCNetSDK.getInstance().NET_DVR_Cleanup()) + { + Log.e("[NetSDKSimpleDemo]", "HCNetSDK cleanup is failed!"); + return false; + } + return true; + } + + /** + * @fn cleanupNetSdk_jna + * @return 成功返回True,否则False + * @brief NetSDK反初始化. + */ + private boolean cleanupNetSdk_jna() + { + // init net sdk + if (!HCNetSDKJNAInstance.getInstance().NET_DVR_Cleanup()) + { + Log.e("[NetSDKSimpleDemo]", "HCNetSDK cleanup is failed!"); + return false; + } + return true; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DBDevice.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DBDevice.java new file mode 100644 index 0000000..23e906e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DBDevice.java @@ -0,0 +1,196 @@ +package com.rehome.scbaxj.activity.hc.Model; + +import java.lang.String; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; +import com.rehome.scbaxj.activity.hc.Control.DevManageGuider; +import com.rehome.scbaxj.activity.hc.Control.SDKGuider; + +import java.util.ArrayList; + +public class DBDevice { + private class DBHelper extends SQLiteOpenHelper { + /** + * @param context 上下文环境(例如,一个 Activity) + * @param name 数据库名字 + * @param factory 一个可选的游标工厂(通常是 Null) + * @param version 数据库模型版本的整数 + *

+ * 会调用父类 SQLiteOpenHelper的构造函数 + */ + public DBHelper(Context context, String name, CursorFactory factory, int version) { + super(context, name, factory, version); + } + + /** + * 在数据库第一次创建的时候会调用这个方法 + *

+ * 根据需要对传入的SQLiteDatabase 对象填充表和初始化数据。 + */ + @Override + public void onCreate(SQLiteDatabase db) { + } + + /** + * 当数据库需要修改的时候(两个数据库版本不同),Android系统会主动的调用这个方法。 + * 一般我们在这个方法里边删除数据库表,并建立新的数据库表. + */ + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + //三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号 + + } + + @Override + public void onOpen(SQLiteDatabase db) { + // 每次成功打开数据库后首先被执行 + super.onOpen(db); + } + } + + private DBHelper m_dbHelper; + private SQLiteDatabase m_db; + + private Context m_contex; + + private String db_name = "device"; + private String table_name = "device_list"; + + static DBDevice g_dbDevice; + + static public DBDevice getInstance(Context ct) { + if (g_dbDevice == null) { + g_dbDevice = new DBDevice(ct); + } + return g_dbDevice; + } + + private DBDevice(Context ct) { + m_contex = ct; + m_dbHelper = new DBHelper(ct, db_name, null, 1); + m_db = m_dbHelper.getWritableDatabase(); + Cursor c = m_db.rawQuery("SELECT * FROM sqlite_master WHERE type='table' and name=?", new String[]{table_name}); + if (!c.moveToFirst()) { + m_db.execSQL("CREATE TABLE " + table_name + "(id TEXT PRIMARY KEY, devname TEXT, ip TEXT, port TEXT, username TEXT, password TEXT);"); + } + } + + private SQLiteDatabase open() { + if (m_db.isOpen()) { + return m_db; + } + if (m_dbHelper == null) { + m_dbHelper = new DBHelper(m_contex, db_name, null, 1); + } + m_db = m_dbHelper.getWritableDatabase(); + return m_db; + } + + private void close() { + m_db.close(); + } + + public boolean insertDevice(DevManageGuider.DeviceItem deviceItem) { + SQLiteDatabase db = open(); + if (db == null || !deviceItem.m_struNetInfo.checkNetInfo()) { + return false; + } + ContentValues cv = new ContentValues(); + // 开始组装第一条数据 + cv.put("id", deviceItem.m_szUUID); + cv.put("devname", deviceItem.m_szDevName); + cv.put("ip", deviceItem.m_struNetInfo.m_szIp); + cv.put("port", deviceItem.m_struNetInfo.m_szPort); + cv.put("username", deviceItem.m_struNetInfo.m_szUserName); + cv.put("password", deviceItem.m_struNetInfo.m_szPassword); + db.insert("device_list", null, cv); // 插入一条数据 + close(); + return true; + } + + public ArrayList getAllDevices() { + SQLiteDatabase db = open(); + if(db == null) + { + return null; + } + Cursor cv = db.rawQuery("select * from device_list", null); + ArrayList alDev = new ArrayList(); + if (cv.moveToFirst()) { + do { + String id = cv.getString(cv.getColumnIndex("id")); + DevManageGuider.DeviceItem devItem = SDKGuider.g_sdkGuider.m_comDMGuider.new DeviceItem(id); + String devname = cv.getString(cv.getColumnIndex("devname")); + Log.i("[ASDemo]", id + "," + devname); + String ip = cv.getString(cv.getColumnIndex("ip")); + String port = cv.getString(cv.getColumnIndex("port")); + String username = cv.getString(cv.getColumnIndex("username")); + String password = cv.getString(cv.getColumnIndex("password")); + devItem.m_szDevName = devname; + devItem.m_struNetInfo = SDKGuider.g_sdkGuider.m_comDMGuider.new DevNetInfo(ip, port, username, password); + alDev.add(devItem); + } while (cv.moveToNext()); + } + close(); + return alDev; + } + + public DevManageGuider.DeviceItem getDeviceById(String id) { + SQLiteDatabase db = open(); + if(db == null) + { + return null; + } + Cursor c = db.rawQuery("select * from device_list where id=?", new String[]{id}); + if (c.moveToFirst()) { //判断游标是否为空 + DevManageGuider.DeviceItem devItem = SDKGuider.g_sdkGuider.m_comDMGuider.new DeviceItem(); + String devname = c.getString(c.getColumnIndex("devname")); + String ip = c.getString(c.getColumnIndex("ip")); + String port = c.getString(c.getColumnIndex("port")); + String username = c.getString(c.getColumnIndex("username")); + String password = c.getString(c.getColumnIndex("password")); + devItem.m_szDevName = devname; + devItem.m_struNetInfo = SDKGuider.g_sdkGuider.m_comDMGuider.new DevNetInfo(ip, port, username, password); + close(); + return devItem; + } + close(); + return null; + } + + public boolean updateDeviceById(String id, DevManageGuider.DeviceItem devItem) { + SQLiteDatabase db = open(); + if(db == null) + { + return false; + } + ContentValues cv = new ContentValues(); + cv.put("devname", devItem.m_szDevName); + cv.put("ip", devItem.m_struNetInfo.m_szIp);//添加要更改的字段及内容 + cv.put("port", devItem.m_struNetInfo.m_szPort);//添加要更改的字段及内容 + cv.put("username", devItem.m_struNetInfo.m_szUserName);//添加要更改的字段及内容 + cv.put("password", devItem.m_struNetInfo.m_szPassword);//添加要更改的字段及内容 + String whereClause = "id=?";//修改条件 + String[] whereArgs = {id};//修改条件的参数 + db.update(table_name, cv, whereClause, whereArgs);//执行修改 + close(); + return true; + } + + public boolean removeDeviceById(String id) { + SQLiteDatabase db = open(); + if(db == null) + { + return false; + } + int ret = db.delete(table_name, "id=?", new String[]{id});//执行删除 + close(); + return true; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DeviceRecorder.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DeviceRecorder.java new file mode 100644 index 0000000..4334550 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/Model/DeviceRecorder.java @@ -0,0 +1,69 @@ +package com.rehome.scbaxj.activity.hc.Model; + +import android.content.res.XmlResourceParser; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.MainActivity; +import com.rehome.scbaxj.activity.hc.Control.DevManageGuider; +import com.rehome.scbaxj.activity.hc.Control.SDKGuider; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class DeviceRecorder { + MainActivity m_mainAct; + public DeviceRecorder(MainActivity mainAct) { + m_mainAct = mainAct; + } + /** + * @return + * @throws Exception + */ + public ArrayList readDeviceRecord(){ + ArrayList lConfig = new ArrayList(); + XmlResourceParser parser; + try { + parser = m_mainAct.getResources().getXml(R.xml.device_list); + //循环直到文档结束 + while (parser.next() != XmlPullParser.END_DOCUMENT) { + if ("device".equals(parser.getName())) { + int i = parser.getAttributeCount(); + DevManageGuider.DeviceItem dev = SDKGuider.g_sdkGuider.m_comDMGuider.new DeviceItem(); + dev.m_struNetInfo = SDKGuider.g_sdkGuider.m_comDMGuider.new DevNetInfo(); + while(i>0){ + if(parser.getAttributeName(i-1).equals("ip")){ + dev.m_struNetInfo.m_szIp = parser.getAttributeValue(i-1); + } + else if(parser.getAttributeName(i-1).equals("port")){ + dev.m_struNetInfo.m_szPort = parser.getAttributeValue(i-1); + } + else if(parser.getAttributeName(i-1).equals("user")){ + dev.m_struNetInfo.m_szUserName = parser.getAttributeValue(i-1); + } + else if(parser.getAttributeName(i-1).equals("password")){ + dev.m_struNetInfo.m_szPassword = parser.getAttributeValue(i-1); + } + else if(parser.getAttributeName(i-1).equals("name")){ + dev.m_szDevName = parser.getAttributeValue(i-1); + } + i--; + } + if(dev.m_szDevName != null && dev.m_struNetInfo.checkNetInfo()){ + lConfig.add(dev); + } + } + } + } catch (XmlPullParserException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return lConfig; + } + public void updateDeviceRecord(List devList){ + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/PreviewCamaraBySurfaceViewActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/PreviewCamaraBySurfaceViewActivity.java new file mode 100644 index 0000000..1cee56c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/hc/PreviewCamaraBySurfaceViewActivity.java @@ -0,0 +1,284 @@ +package com.rehome.scbaxj.activity.hc; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + +import android.graphics.PixelFormat; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; +import android.widget.Toast; + +import com.hikvision.netsdk.NET_DVR_PREVIEWINFO; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.hc.Control.DevManageGuider; +import com.rehome.scbaxj.activity.hc.Control.SDKGuider; +import com.rehome.scbaxj.activity.hc.Model.DBDevice; +import com.rehome.scbaxj.base.BaseActivityAutoToolbarViewBinding; +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding; +import com.rehome.scbaxj.databinding.ActivityPreviewCamaraBySurfaceViewBinding; +import com.rehome.scbaxj.utils.AutoToolbar; +import com.rehome.scbaxj.utils.OAToolbar; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PreviewCamaraBySurfaceViewActivity extends BaseActivityOaToolbarViewBinding implements SurfaceHolder.Callback{ + + //private SurfaceView m_osurfaceView = null; + private int m_iPreviewHandle = -1; // playback + private int m_iSelectChannel = -1; + private int m_iSelectStreamType = -1; + private int m_iUserID = -1; // return by NET_DVR_Login_v30 + + private int m_byChanNum = 0;// analog channel nums + private int m_byStartChan = 0;//start analog channel + + private int m_IPChanNum = 0;//digital channel nums + private int m_byStartDChan = 0;//start digital channel + + private List m_data_list_channel, m_data_list_stream; + private ArrayAdapter m_streamtype_adapter, m_arrchannel_adapter; + + String m_szDevName = "192.168.2.227"; + String m_szIp = "192.168.2.227"; +// String m_szDevName = "119.91.158.116"; +// String m_szIp = "119.91.158.116"; + String m_szPort = "8000"; + String m_szUserName = "admin"; + String m_szPassWorld = "rEhome2021"; + + private DevManageGuider.DeviceItem deviceItem; + + + @NonNull + @Override + protected ActivityPreviewCamaraBySurfaceViewBinding getViewBinding() { + return ActivityPreviewCamaraBySurfaceViewBinding.inflate(LayoutInflater.from(this)); + } + + @NonNull + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + @Override + protected void initView() { + initToolbar("摄像头预览", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + + binding.streamSpinnerSurface.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {//通过此方法为下拉列表设置点击事件 + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + m_iSelectStreamType = i; + } + @Override + public void onNothingSelected(AdapterView adapterView) { + } + }); + + + binding.bychanSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {//通过此方法为下拉列表设置点击事件 + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + String text= binding.bychanSpinner.getItemAtPosition(i).toString(); + m_iSelectChannel = Integer.valueOf(GetChannel(text)).intValue(); + } + @Override + public void onNothingSelected(AdapterView adapterView) { + } + }); + + //Surface + //binding.SurfacePreviewPlay = findViewById(R.id.Surface_Preview_Play); + binding.SurfacePreviewPlay.getHolder().addCallback(this); + binding.SurfacePreviewPlay.setZOrderOnTop(true); + + binding.buttonPreviewStart.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(m_iPreviewHandle != -1){ + SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_Stop_jni(m_iPreviewHandle); + } + + NET_DVR_PREVIEWINFO struPlayInfo = new NET_DVR_PREVIEWINFO(); + struPlayInfo.lChannel = m_iSelectChannel; + struPlayInfo.dwStreamType = m_iSelectStreamType; + struPlayInfo.bBlocked = 1; + //m_osurfaceView = findViewById(R.id.Surface_Preview_Play); + struPlayInfo.hHwnd = binding.SurfacePreviewPlay.getHolder(); + m_iPreviewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni(m_iUserID,struPlayInfo, null); + if (m_iPreviewHandle < 0) + { + Toast.makeText(PreviewCamaraBySurfaceViewActivity.this,"NET_DVR_RealPlay_V40 fail, Err:"+ SDKGuider.g_sdkGuider.GetLastError_jni(),Toast.LENGTH_SHORT).show(); + return; + } + Toast.makeText(PreviewCamaraBySurfaceViewActivity.this,"NET_DVR_RealPlay_V40 Succ " ,Toast.LENGTH_SHORT).show(); + } + }); + + binding.buttonPreviewStop.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_Stop_jni(m_iPreviewHandle)) + { + Toast.makeText(PreviewCamaraBySurfaceViewActivity.this,"NET_DVR_StopRealPlay m_iPreviewHandle:" + m_iPreviewHandle + + " error:" + SDKGuider.g_sdkGuider.GetLastError_jni(),Toast.LENGTH_SHORT).show(); + return; + } + m_iPreviewHandle = -1; + Toast.makeText(PreviewCamaraBySurfaceViewActivity.this,"NET_DVR_StopRealPlay Succ",Toast.LENGTH_SHORT).show(); + } + }); + + } + + @Override + protected void initData() { + login(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if(m_iPreviewHandle != -1){ + SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_Stop_jni(m_iPreviewHandle); + m_iPreviewHandle = -1; + } + if(SDKGuider.g_sdkGuider.m_comDMGuider.logout_jni(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDevIndex())){ + Toast.makeText(this, "logout succ", Toast.LENGTH_SHORT).show(); + }else{ + Toast.makeText(this, "logout failed with " + SDKGuider.g_sdkGuider.GetLastError_jni(), Toast.LENGTH_SHORT).show(); + } + SDKGuider.g_sdkGuider.m_comDMGuider.clearDevList(); + } + + public String GetChannel(String inPutStr) { + String regEx="[^0-9]"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(inPutStr); + return m.replaceAll("").trim(); + } + + // @Override + public void surfaceCreated(SurfaceHolder holder) { + binding.SurfacePreviewPlay.getHolder().setFormat(PixelFormat.TRANSLUCENT); + if (-1 == m_iPreviewHandle) { + return; + } + Surface surface = holder.getSurface(); + if (surface.isValid()) { + if (-1 == SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlaySurfaceChanged_jni(m_iPreviewHandle, 0, holder)) + Toast.makeText(this,"NET_DVR_PlayBackSurfaceChanged"+ SDKGuider.g_sdkGuider.GetLastError_jni(),Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, + int height) { + // m_osurfaceView.setZOrderOnTop(true); + //Toast.makeText(FragPlayBackByTime.this,"surfaceChanged" + m_iPort ,Toast.LENGTH_SHORT).show(); + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + if (-1 == m_iPreviewHandle) { + return; + } + if (holder.getSurface().isValid()) { + if (-1 == SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlaySurfaceChanged_jni(m_iPreviewHandle, 0, null)) + { + Toast.makeText(this,"NET_DVR_RealPlaySurfaceChanged"+ SDKGuider.g_sdkGuider.GetLastError_jni(),Toast.LENGTH_SHORT).show(); + } + } + } + + private void login(){ + SDKGuider.g_sdkGuider.m_comDMGuider.clearDevList(); + // clicked add button + deviceItem = SDKGuider.g_sdkGuider.m_comDMGuider.new DeviceItem(); + deviceItem.m_szDevName = m_szDevName; + deviceItem.m_struNetInfo = SDKGuider.g_sdkGuider.m_comDMGuider.new DevNetInfo( + m_szIp, + m_szPort, + m_szUserName, + m_szPassWorld); + if(deviceItem.m_szDevName.isEmpty()) + { + deviceItem.m_szDevName = deviceItem.m_struNetInfo.m_szIp; + } + if (SDKGuider.g_sdkGuider.m_comDMGuider.login_v40_jna(deviceItem.m_szDevName, deviceItem.m_struNetInfo)) { + Toast.makeText(getApplicationContext(), "add device succ!", Toast.LENGTH_LONG).show(); + Log.i("app","add device succ!"); + Log.i("app",String.valueOf(SDKGuider.g_sdkGuider.m_comDMGuider.getDevList().size())); + if(SDKGuider.g_sdkGuider.m_comDMGuider.getDevList().size()>0){ + SDKGuider.g_sdkGuider.m_comDMGuider.setCurrSelectDevIndex(0); + if(SDKGuider.g_sdkGuider.m_comDMGuider.login_v40_jna_with_index(SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDevIndex())){ + Toast.makeText(this, "login succ", Toast.LENGTH_SHORT).show(); + initCamara(); + }else{ + Toast.makeText(this, "login failed with " + SDKGuider.g_sdkGuider.GetLastError_jni(), Toast.LENGTH_SHORT).show(); + } + } + } else { + Toast.makeText(getApplicationContext(), "add device failed with "+ SDKGuider.g_sdkGuider.GetLastError_jni(), Toast.LENGTH_LONG).show(); + } + } + + private void initCamara(){ + //Channel type + DevManageGuider.DeviceItem deviceInfo = SDKGuider.g_sdkGuider.m_comDMGuider.getCurrSelectDev(); + if(deviceInfo == null){ + Toast.makeText(this,"get the deviceInfo failed",Toast.LENGTH_SHORT).show(); + return; + } + m_iUserID = deviceInfo.m_lUserID; + m_byChanNum = deviceInfo.m_struDeviceInfoV40_jna.struDeviceV30.byChanNum; + m_byStartChan = deviceInfo.m_struDeviceInfoV40_jna.struDeviceV30.byStartChan; + + m_IPChanNum = deviceInfo.m_struDeviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.m_struDeviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256; + m_byStartDChan = deviceInfo.m_struDeviceInfoV40_jna.struDeviceV30.byStartChan ; + + int iAnalogStartChan = m_byStartChan; + int iDigitalStartChan = m_byStartDChan; + m_data_list_channel = new ArrayList(); + + for(int idexChanNum = 0;idexChanNum < m_byChanNum; idexChanNum++) { + m_data_list_channel.add("ACamera_"+ iAnalogStartChan); + iAnalogStartChan++; + } + + for(int idexChanNum = 0;idexChanNum < m_IPChanNum; idexChanNum++) { + + m_data_list_channel.add("DCamera_"+ iDigitalStartChan); + iDigitalStartChan++; + } + m_arrchannel_adapter= new ArrayAdapter(this, android.R.layout.simple_spinner_item, m_data_list_channel); + m_arrchannel_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + binding.bychanSpinner.setAdapter(m_arrchannel_adapter); + + //stream Type + m_data_list_stream = new ArrayList(); + m_data_list_stream.add("主码流"); + m_data_list_stream.add("子码流"); + m_data_list_stream.add("第三通道码流"); + m_streamtype_adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, m_data_list_stream); + m_streamtype_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + binding.streamSpinnerSurface.setAdapter(m_streamtype_adapter); + binding.streamSpinnerSurface.setSelection(1); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ComfirmSblistActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ComfirmSblistActivity.java new file mode 100644 index 0000000..758e2f1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ComfirmSblistActivity.java @@ -0,0 +1,268 @@ +package com.rehome.scbaxj.activity.qfgd; + + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.QfSblbinfoAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.QXRequestBean; +import com.rehome.scbaxj.bean.QfsblistBean; +import com.rehome.scbaxj.bean.QfsblistRequestBean; +import com.rehome.scbaxj.bean.QxdBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import org.greenrobot.eventbus.EventBus; +import java.util.ArrayList; +import java.util.List; + + +/** + * Created by ruihong on 2018/4/17. + */ + +public class ComfirmSblistActivity extends BaseActivity3 { + + List datas; + RecyclerView rlv; + private QfSblbinfoAdapter qfSblbinfoAdapter; + private QfsblistBean.DataBean dataBean; + + + @Override + public int getLayoutId() { + return R.layout.activity_qfsblist; + } + + @Override + public void initView() { + initToolbar("设备列表", "确定", new View.OnClickListener() { + @Override + public void onClick(View v) { + for (QfsblistBean.DataBean dataBean : qfSblbinfoAdapter.getDatas()) { + if (dataBean.isSelected()) { + String SBID = dataBean.getSBID(); + requestDatas2(SBID); + } + + } + } + }); + rlv = findViewById(R.id.rlv); + } + + @Override + public void initData() { + datas = new ArrayList<>(); + requestDatas(); + } + + + private void requestDatas() { + + Log.i("app",Contans.IP + Contans.QFGD); + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.QFDDVICELIST, RequestMethod.POST); + requset.setDefineRequestBodyForJson(createJson()); + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + try { + String resutlString = response.get(); + Log.i("app",resutlString); +// QfsblistBean qfsblistBean = GsonUtils.GsonToBean(resutlString, QfsblistBean.class); +// datas.clear(); +// datas.addAll(qfsblistBean.getData()); +// setAdapter(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJson() { + QfsblistRequestBean info = new QfsblistRequestBean(); + info.setAction("Q4SBGLMAIN_GET"); + //info.setYHID((String) SPUtils.get(context, Contans.USERNAME, "")); + //info.setFSBID(""); + String json = GsonUtils.GsonString(info); + return json; + } + + private void requestDatas2(String SBID) { + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.QFGD, RequestMethod.POST); + + requset.setDefineRequestBodyForJson(createJson2(SBID)); + + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + try { + QxdBean qxdBean = GsonUtils.GsonToBean(response.get(), QxdBean.class); + + if (qxdBean.getData().size() == 0) { + + for (QfsblistBean.DataBean dataBean : qfSblbinfoAdapter.getDatas()) { + + if (dataBean.isSelected()) { + + Intent resultIntent = new Intent(); + + Bundle bundle = new Bundle(); + + bundle.putString("SBID", dataBean.getSBID()); + + bundle.putString("SBMC", dataBean.getSBMC()); + + resultIntent.putExtras(bundle); + + setResult(RESULT_OK, resultIntent); + + finish(); + + } + + } + + } else { + + if (qxdBean.getState() == 1) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("提示"); + builder.setTitle("此设备有提单,是否去查看"); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + for (QfsblistBean.DataBean dataBean : qfSblbinfoAdapter.getDatas()) { + + if (dataBean.isSelected()) { + + Intent resultIntent = new Intent(); + + Bundle bundle = new Bundle(); + + bundle.putString("SBID", dataBean.getSBID()); + + bundle.putString("SBMC", dataBean.getSBMC()); + + resultIntent.putExtras(bundle); + + setResult(RESULT_OK, resultIntent); + + finish(); + + } + + } + + } + }); + + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + for (QfsblistBean.DataBean dataBean : qfSblbinfoAdapter.getDatas()) { + + if (dataBean.isSelected()) { + +// Intent intent = new Intent(ComfirmSblistActivity.this, QfpmqxgdListActivity.class); +// intent.putExtra("SBBH", dataBean.getSBID()); +// startActivity(intent); + } + } + + + + + + } + }); + builder.show(); + + } + } + + + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJson2(String SBID) { + QXRequestBean info = new QXRequestBean(); + info.setAction("Q4GD_QXGD_GET"); + info.setYHID(""); + info.setGZDH(""); + info.setZRBM(""); + info.setGZYXJ(""); + info.setSBBH(SBID); + info.setGZZT(""); + info.setPL_WK_DO(""); + info.setPL_WK_TE(""); + String json = GsonUtils.GsonString(info); + return json; + } + + private void setAdapter() { + + qfSblbinfoAdapter = new QfSblbinfoAdapter(context, datas); + + rlv.setLayoutManager(new LinearLayoutManager(context)); + + rlv.setAdapter(qfSblbinfoAdapter); + + qfSblbinfoAdapter.setOnChildItemClickListener(new QfSblbinfoAdapter.OnChildItemClickListener() { + @Override + public void onClick(QfsblistBean.DataBean dataBean) { + +// Intent intent = new Intent(ComfirmSblistActivity.this, OtherSblistActivity.class); +// intent.putExtra("FSBID", dataBean.getSBID()); +// intent.putExtra("SBMC", dataBean.getSBMC()); +// startActivity(intent); +// finish(); + + } + }); + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/DeviceTreeActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/DeviceTreeActivity.java new file mode 100644 index 0000000..81d26f7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/DeviceTreeActivity.java @@ -0,0 +1,190 @@ +package com.rehome.scbaxj.activity.qfgd; + +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.qfgd.tree.TreePoint; +import com.rehome.scbaxj.adapter.DeviceTreeAdapterBase; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.DeviceTreeBean; +import com.rehome.scbaxj.bean.QfsblistRequestBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; + +import java.util.ArrayList; +import java.util.List; + + +/** + * Created by ruihong on 2018/4/17. + */ + +public class DeviceTreeActivity extends BaseActivity3 { + + ListView rlv; + List pointList; + private DeviceTreeAdapterBase deviceTreeAdapter; + + + @Override + public int getLayoutId() { + return R.layout.activity_device_tree; + } + + @Override + public void initView() { + initToolbar("设备列表", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + rlv = findViewById(R.id.rlv); + } + + @Override + public void initData() { + pointList = new ArrayList<>(); + requestDeviceTreeRoot("0"); + } + + + private void requestDeviceTreeRoot(String parentId) { + + Log.i("app", Contans.IP + Contans.QFDDVICESUBLISTTREE); + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.QFDDVICELIST, RequestMethod.POST); + requset.setDefineRequestBodyForJson(createJson(parentId)); + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + try { + String resutlString = response.get(); + Log.i("app", resutlString); + DeviceTreeBean deviceTreeBean = GsonUtils.GsonToBean(resutlString, DeviceTreeBean.class); + Log.i("app", String.valueOf(deviceTreeBean.getData().size())); + Log.i("app", String.valueOf(deviceTreeBean.getData().get(0).getISLEAF().equals("1"))); + if (deviceTreeBean.getState() == 1) { + if (deviceTreeBean.getData().size() > 0) { + pointList.clear(); + pointList.addAll(deviceTreeBean.getData()); + setAdapter(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void requestDeviceTree(TreePoint treePoint) { + + Log.i("app", Contans.IP + Contans.QFDDVICESUBLISTTREE); + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.QFDDVICELIST, RequestMethod.POST); + requset.setDefineRequestBodyForJson(createJson(treePoint.getID())); + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + try { + String resutlString = response.get(); + Log.i("app", resutlString); + DeviceTreeBean deviceTreeBean = GsonUtils.GsonToBean(resutlString, DeviceTreeBean.class); + Log.i("app", String.valueOf(deviceTreeBean.getData().size())); + Log.i("app", String.valueOf(deviceTreeBean.getData().get(0).getISLEAF().equals("1"))); + if (deviceTreeBean.getState() == 1) { + if (deviceTreeBean.getData().size() > 0) { + pointList.addAll(deviceTreeBean.getData()); + + if ("1".equals(treePoint.getISLEAF())) { + //点击叶子节点 + //Toast.makeText(mcontext, getSubmitResult(treePoint), Toast.LENGTH_SHORT).show(); + } else { + //如果点击的是父类 + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJson(String parentId) { + QfsblistRequestBean info = new QfsblistRequestBean(); + info.setAction("Q4SBGLCHILD_GET_TREE"); + info.setPARENTID(parentId); + String json = GsonUtils.GsonString(info); + Log.i("app", json); + return json; + } + + private void setAdapter() { + + deviceTreeAdapter = new DeviceTreeAdapterBase(context, pointList); + rlv.setAdapter(deviceTreeAdapter); + rlv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + DeviceTreeBean.DataBean dataBean = pointList.get(position); + if (dataBean.getISLEAF().equals("1")) { + Intent resultIntent = new Intent(); + Bundle bundle = new Bundle(); + bundle.putParcelable("dataBean", dataBean); + resultIntent.putExtras(bundle); + setResult(RESULT_OK, resultIntent); + finish(); + } else { + + } + } + }); + + +// deviceTreeAdapter.setOnChildItemClickListener(new DeviceTreeAdapter.OnChildItemClickListener() { +// @Override +// public void onClick(DeviceTreeBean.DataBean dataBean) { +// +// if(dataBean.getISLEAF().equals("1")){ +// Intent resultIntent = new Intent(); +// Bundle bundle = new Bundle(); +// bundle.putParcelable("dataBean", dataBean); +// resultIntent.putExtras(bundle); +// setResult(RESULT_OK, resultIntent); +// finish(); +// }else{ +// +// } +// +//// Intent intent = new Intent(ComfirmSblistActivity.this, OtherSblistActivity.class); +//// intent.putExtra("FSBID", dataBean.getSBID()); +//// intent.putExtra("SBMC", dataBean.getSBMC()); +//// startActivity(intent); +//// finish(); +// +// } +// }); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ZRbzBmListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ZRbzBmListActivity.java new file mode 100644 index 0000000..ad6ecb2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/ZRbzBmListActivity.java @@ -0,0 +1,130 @@ +package com.rehome.scbaxj.activity.qfgd; + + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.QfBmlbinfoAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.QfbmlistBean; +import com.rehome.scbaxj.bean.QfsblistRequestBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/4/18. + */ + +public class ZRbzBmListActivity extends BaseActivity3 { + + RecyclerView rlv; + List datas; + QfBmlbinfoAdapter qfBmlbinfoAdapter; + + @Override + public int getLayoutId() { + return R.layout.activity_qfbmlist; + } + + @Override + public void initView() { + rlv = findViewById(R.id.rlv); + } + + @Override + public void initData() { + initToolbar("部门列表", "确定", new View.OnClickListener() { + @Override + public void onClick(View v) { + for (QfbmlistBean.DataBean dataBean : qfBmlbinfoAdapter.getDatas()) { + + if (dataBean.isSelected()) { + + Intent resultIntent = new Intent(); + + Bundle bundle = new Bundle(); + + bundle.putString("BMID", dataBean.getBMID()); + + bundle.putString("BMMC", dataBean.getBMMC()); + + resultIntent.putExtras(bundle); + + setResult(RESULT_OK, resultIntent); + + finish(); + + } + } + } + }); + datas = new ArrayList<>(); + requestDatas(); + } + + private void requestDatas() { + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.QFGD, RequestMethod.POST); + requset.setDefineRequestBodyForJson(createJson()); + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + try { + QfbmlistBean qfbmlistBean = GsonUtils.GsonToBean(response.get(), QfbmlistBean.class); + + datas.clear(); + datas.addAll(qfbmlistBean.getData()); + setAdapter(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + + private void setAdapter() { + + qfBmlbinfoAdapter = new QfBmlbinfoAdapter(context, datas); + + rlv.setLayoutManager(new LinearLayoutManager(context)); + + rlv.setAdapter(qfBmlbinfoAdapter); + + qfBmlbinfoAdapter.setOnChildItemClickListener(new QfBmlbinfoAdapter.OnChildItemClickListener() { + @Override + public void onClick(QfbmlistBean.DataBean dataBean) { +// showToast(dataBean.getBMID()); + } + }); + + } + + + private String createJson() { + QfsblistRequestBean info = new QfsblistRequestBean(); + info.setAction("Q4GD_ZRBZ_GET"); +// info.setYHID((String) SPUtils.get(context, Contans.USERNAME, "")); +// info.setSJBM(""); + String json = GsonUtils.GsonString(info); + return json; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/DensityUtil.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/DensityUtil.java new file mode 100644 index 0000000..b709fd0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/DensityUtil.java @@ -0,0 +1,62 @@ +package com.rehome.scbaxj.activity.qfgd.tree; + +import android.content.Context; + +/** + * Created by xulc on 2018/8/7. + */ + +public class DensityUtil { + + public static int dip2px(Context context, float dpValue) { + float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } + + public static int px2dip(Context context, float pxValue) { + float scale = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / scale + 0.5f); + } + + public static float dip2pxf(Context context, int dpValue) { + float scale = context.getResources().getDisplayMetrics().density; + return dpValue * scale + 0.5f; + } + + public static float dip2pxf(Context context, float dpValue) { + float scale = context.getResources().getDisplayMetrics().density; + return dpValue * scale + 0.5f; + } + + /** + * 将px值转换为sp值,保证文字大小不变 + * + * @param context + * @param pxValue + * (DisplayMetrics类中属性scaledDensity) + * @return + */ + public static int px2sp(Context context, float pxValue) { + float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return (int) (pxValue / fontScale + 0.5f); + } + + /** + * 将sp值转换为px值,保证文字大小不变 + * + * @param context + * @param spValue + * (DisplayMetrics类中属性scaledDensity) + * @return + */ + public static int sp2px(Context context, float spValue) { + float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return (int) (spValue * fontScale + 0.5f); + } + + public static float sp2pxf(Context context, float spValue) { + float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return spValue * fontScale + 0.5f; + } +} + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeAdapter.java new file mode 100644 index 0000000..50bcadf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeAdapter.java @@ -0,0 +1,292 @@ +package com.rehome.scbaxj.activity.qfgd.tree; + +import android.app.Activity; +import android.content.Context; +import android.text.Html; +import android.text.Spanned; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.IntDef; + +import com.rehome.scbaxj.R; + +import java.util.HashMap; +import java.util.List; + + +/** + * Created by xulc on 2018/7/27. + */ + +public class TreeAdapter extends BaseAdapter { + private Context mcontext; + private Activity mActivity; + private List pointList; + private String keyword = ""; + private HashMap pointMap = new HashMap<>(); + + private int operateMode = ModeClick; + //两种操作模式 点击 或者 选择 + private static final int ModeClick = 1; + private static final int ModeSelect = 2; + + @IntDef({ModeClick,ModeSelect}) + public @interface Mode{ + + } + + //设置操作模式 + public void setOperateMode(@Mode int operateMode){ + this.operateMode = operateMode; + } + + public TreeAdapter(final Context mcontext, List pointList, HashMap pointMap) { + this.mcontext = mcontext; + this.mActivity = (Activity) mcontext; + this.pointList = pointList; + this.pointMap = pointMap; + } + + /** + * 搜索的时候,先关闭所有的条目,然后,按照条件,找到含有关键字的数据 + * 如果是叶子节点, + */ + public void setKeyword(String keyword) { + this.keyword = keyword; + for (TreePoint treePoint : pointList) { + treePoint.setExpand(false); + } + if (!"".equals(keyword)) { + for (TreePoint tempTreePoint : pointList) { + if (tempTreePoint.getNNAME().contains(keyword)) { + if ("0".equals(tempTreePoint.getISLEAF())) { //非叶子节点 + tempTreePoint.setExpand(true); + } + //展开从最顶层到该点的所有节点 + openExpand(tempTreePoint); + } + } + } + this.notifyDataSetChanged(); + } + + /** + * 从TreePoint开始一直展开到顶部 + * @param treePoint + */ + private void openExpand(TreePoint treePoint) { + if ("0".equals(treePoint.getPARENTID())) { + treePoint.setExpand(true); + } else { + pointMap.get(treePoint.getPARENTID()).setExpand(true); + openExpand(pointMap.get(treePoint.getPARENTID())); + } + } + + + //第一要准确计算数量 + @Override + public int getCount() { + int count = 0; + for (TreePoint tempPoint : pointList) { + if ("0".equals(tempPoint.getPARENTID())) { + count++; + } else { + if (getItemIsExpand(tempPoint.getPARENTID())) { + count++; + } + } + } + return count; + } + + //判断当前Id的tempPoint是否展开了 + private boolean getItemIsExpand(String ID) { + for (TreePoint tempPoint : pointList) { + if (ID.equals(tempPoint.getID())) { + return tempPoint.isExpand(); + } + } + return false; + } + + @Override + public Object getItem(int position) { + return pointList.get(convertPostion(position)); + } + + private int convertPostion(int position) { + int count = 0; + for (int i = 0; i < pointList.size(); i++) { + TreePoint treePoint = pointList.get(i); + if ("0".equals(treePoint.getPARENTID())) { + count++; + } else { + if (getItemIsExpand(treePoint.getPARENTID())) { + count++; + } + } + if (position == (count - 1)) { + return i; + } + } + return 0; + } + + @Override + public long getItemId(int position) { + return position; + } + + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + if (convertView == null) { + convertView = LayoutInflater.from(mcontext).inflate(R.layout.adapter_treeview, null); + holder = new ViewHolder(); + holder.text = (TextView) convertView.findViewById(R.id.text); + holder.icon = (ImageView) convertView.findViewById(R.id.icon); + holder.ib_select = (ImageButton) convertView.findViewById(R.id.ib_select); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + final TreePoint tempPoint = (TreePoint) getItem(position); + int level = TreeUtils.getLevel(tempPoint,pointMap); + holder.icon.setPadding(25 * level, holder.icon.getPaddingTop(), 0, holder.icon.getPaddingBottom()); + if ("0".equals(tempPoint.getISLEAF())) { //如果为父节点 + if (!tempPoint.isExpand()) { //不展开显示加号 + holder.icon.setVisibility(View.VISIBLE); + holder.icon.setImageResource(R.drawable.outline_list_collapse); + } else { //展开显示减号 + holder.icon.setVisibility(View.VISIBLE); + holder.icon.setImageResource(R.drawable.outline_list_expand); + } + } else { //如果叶子节点,不占位显示 + holder.icon.setVisibility(View.INVISIBLE); + } + if(operateMode == ModeSelect){ + holder.ib_select.setVisibility(View.VISIBLE); + holder.ib_select.setSelected(tempPoint.isSelected()); + holder.ib_select.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onModeSelect(tempPoint); + } + }); + }else{ + holder.ib_select.setVisibility(View.GONE); + } + //如果存在搜索关键字 + if (keyword != null && !"".equals(keyword) && tempPoint.getNNAME().contains(keyword)) { + int index = tempPoint.getNNAME().indexOf(keyword); + int len = keyword.length(); + Spanned temp = Html.fromHtml(tempPoint.getNNAME().substring(0, index) + + "" + + tempPoint.getNNAME().substring(index, index + len) + "" + + tempPoint.getNNAME().substring(index + len, tempPoint.getNNAME().length())); + + holder.text.setText(temp); + } else { + holder.text.setText(tempPoint.getNNAME()); + } + holder.text.setCompoundDrawablePadding(DensityUtil.dip2px(mcontext, 10)); + return convertView; + } + + + + public void onItemClick(int position) { + TreePoint treePoint = (TreePoint) getItem(position); + if ("1".equals(treePoint.getISLEAF())) { //点击叶子节点 + //处理回填 + //Toast.makeText(mcontext, getSubmitResult(treePoint), Toast.LENGTH_SHORT).show(); + } else { //如果点击的是父类 + if (treePoint.isExpand()) { + for (TreePoint tempPoint : pointList) { + if (tempPoint.getPARENTID().equals(treePoint.getID())) { + if ("0".equals(treePoint.getISLEAF())) { + tempPoint.setExpand(false); + } + } + } + treePoint.setExpand(false); + } else { + treePoint.setExpand(true); + } + } + this.notifyDataSetChanged(); + } + + + //选择操作 + private void onModeSelect(TreePoint treePoint){ + if ("1".equals(treePoint.getISLEAF())) { //选择叶子节点 + //处理回填 + treePoint.setSelected(!treePoint.isSelected()); + } else { //选择父节点 + int position = pointList.indexOf(treePoint); + boolean isSelect = treePoint.isSelected(); + treePoint.setSelected(!isSelect); + if(position == -1){ + return ; + } + if(position == pointList.size()-1){ + return; + } + position++; + for(;position < pointList.size();position++){ + TreePoint tempPoint = pointList.get(position); + if(tempPoint.getPARENTID().equals(treePoint.getPARENTID())){ //如果找到和自己同级的数据就返回 + break; + } + tempPoint.setSelected(!isSelect); + } + } + this.notifyDataSetChanged(); + } + + //选中所有的point +// private void selectPoint(TreePoint treePoint) { +// if(){ +// +// } +// } + + + + + private String getSubmitResult(TreePoint treePoint) { + StringBuilder sb = new StringBuilder(); + addResult(treePoint, sb); + String result = sb.toString(); + if (result.endsWith("-")) { + result = result.substring(0, result.length() - 1); + } + return result; + } + + private void addResult(TreePoint treePoint, StringBuilder sb) { + if (treePoint != null && sb != null) { + sb.insert(0, treePoint.getNNAME() + "-"); + if (!"0".equals(treePoint.getPARENTID())) { + addResult(pointMap.get(treePoint.getPARENTID()), sb); + } + } + } + + + class ViewHolder { + TextView text; + ImageView icon; + ImageButton ib_select; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePoint.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePoint.java new file mode 100644 index 0000000..483b2dd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePoint.java @@ -0,0 +1,80 @@ +package com.rehome.scbaxj.activity.qfgd.tree; + +/** + * Created by xulc on 2018/7/27. + */ + +public class TreePoint { + private String ID; // 7241, //账号id + private String NNAME; // "用户原因", //原因名称 + private String PARENTID; // 0, //父id 0表示父节点 + private String ISLEAF; //0, //是否是叶子节点 1为叶子节点 + private int DISPLAY_ORDER; // 1 //同一个级别的显示顺序 + private boolean isExpand = false; //是否展开了 + private boolean isSelected = false; //是否选中了 + + + public TreePoint(String ID, String NNAME, String PARENTID, String ISLEAF, int DISPLAY_ORDER) { + this.ID = ID; + this.NNAME = NNAME; + this.PARENTID = PARENTID; + this.ISLEAF = ISLEAF; + this.DISPLAY_ORDER = DISPLAY_ORDER; + } + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } + + public String getNNAME() { + return NNAME; + } + + public void setNAME(String NAME) { + this.NNAME = NNAME; + } + + public String getPARENTID() { + return PARENTID; + } + + public void setPARENTID(String PARENTID) { + this.PARENTID = PARENTID; + } + + public String getISLEAF() { + return ISLEAF; + } + + public void setISLEAF(String ISLEAF) { + this.ISLEAF = ISLEAF; + } + + public int getDISPLAY_ORDER() { + return DISPLAY_ORDER; + } + + public void setDISPLAY_ORDER(int DISPLAY_ORDER) { + this.DISPLAY_ORDER = DISPLAY_ORDER; + } + + public boolean isExpand() { + return isExpand; + } + + public void setExpand(boolean expand) { + isExpand = expand; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePointBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePointBean.java new file mode 100644 index 0000000..b717fc2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreePointBean.java @@ -0,0 +1,33 @@ +package com.rehome.scbaxj.activity.qfgd.tree; + +import java.util.List; + +public class TreePointBean { + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeUtils.java new file mode 100644 index 0000000..214f36f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/qfgd/tree/TreeUtils.java @@ -0,0 +1,30 @@ +package com.rehome.scbaxj.activity.qfgd.tree; + +import android.util.Log; + +import java.util.HashMap; + +/** + * Created by xulc on 2018/7/27. + */ + +public class TreeUtils { + //第一级别为0 + public static int getLevel(TreePoint treePoint, HashMap map){ + if("0".equals(treePoint.getPARENTID())){ + return 0; + }else{ + return 1+getLevel(getTreePoint(treePoint.getPARENTID(),map),map); + } + } + + + + public static TreePoint getTreePoint(String ID, HashMap map){ + if(map.containsKey(ID)){ + return map.get(ID); + } + Log.e("xlc","ID:" + ID); + return null; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckTemperatureDqgzActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckTemperatureDqgzActivity.java new file mode 100644 index 0000000..b094323 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckTemperatureDqgzActivity.java @@ -0,0 +1,316 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AuditDialog; +import com.rehome.scbaxj.weight.EditDialog; +import com.rinsun.mtdriver.MTnativeInterface; +import com.rehome.scbaxj.base.BaseActivity3; + +import org.litepal.crud.DataSupport; + +import java.text.SimpleDateFormat; +import java.util.Date; + + +public class CheckTemperatureDqgzActivity extends BaseActivity3 { + + EditText etRealValue; + EditText noticeValue; + Button btnSubmit; + TextView checkTip; + TextView standerTip; + + + private String temperatureValue; + //public static final int RESULT_SUCCESS = 1; + //private String checkType; + //是否可编辑 + private boolean isEdit = false; + private String username; + + //频谱用到的变量///////////////////////////// + private double edit16LA; + private double edit16LV; + private double edit16LD; + private double edit16HA; + private double edit16HV; + private double edit16HD; + + private double[] ppsour; + private int ppfreq; // <1280,5120,12800> + private int pplen; // 1024, 4096, 8192 + /////////////////////////////////////////////// + + MTnativeInterface mt= MTnativeInterface.getInstance();//获取传感器调用接口 + Intent intentTemplate; + //页面传过来的数据 + Dqgz dqgz; + + @Override + public int getLayoutId() { + return R.layout.activity_check_temperature; + } + + @Override + public void initView() { + etRealValue = findViewById(R.id.et_realValue); + noticeValue = findViewById(R.id.et_noticeValue); + btnSubmit = findViewById(R.id.btn_submit); + checkTip = findViewById(R.id.tv_checkTip); + standerTip = findViewById(R.id.tv_standerTip); + + etRealValue.setEnabled(true); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + + Bundle bundle = CheckTemperatureDqgzActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + if(isEdit){ + initToolbar("测温", "开始测量", new View.OnClickListener() { + @Override + public void onClick(View v) { + demo(); + } + }); + }else{ + initToolbar("测温", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + btnSubmit.setVisibility(View.GONE); + } + } + + noticeValue.setKeyListener(null); + //回调函数(自动返回数据)。CMDtype:数据类型,参数说明见“说明文档.txt” + mt.setOnReceiveListener(new MTnativeInterface.OnReceiveListener() { + @Override + public void onShowMessage(byte[] recBuff,int CMDtype, int tag) { + /* 根据CMDtype区分数据类型,普通测量值/频谱数据/配置数据。如果10秒没读到数据会返回超时提示并关闭电源 */ + System.out.println("-------------"); + System.out.println(new String(recBuff)+"/"+CMDtype+"/"+tag); + + //收到普通测量值 + updateUI(new String(recBuff));//可直接显示数据 + + //收到频谱采集部分 + //recBuff 原始数据数组,CMDtype 返回数据类型,tag 数据长度 + System.out.println((recBuff.length)+"/"+CMDtype+"/"+tag); + } + }); + btnSubmit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + temperatureValue = etRealValue.getText().toString(); + if(temperatureValue.equals("")){ + showToast("实际值不能为空"); + }else{ + AuditDialog auditDialog = new AuditDialog(context, "确定要保存数据吗?", new AuditDialog.AuditDialogListener() { + @Override + public void confirm() { + if (isEdit) { + if(!etRealValue.getText().toString().trim().equals("")){ + String dateNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + ContentValues values = new ContentValues(); + values.put("isWorkChecked", true); + values.put("SCNR", temperatureValue); + values.put("DATE", dateNow); + DataSupport.updateAll(Dqgz.class, values, "rwid = ? and username = ? ",dqgz.getRWID(),username); + dqgz.setWorkChecked(true); + dqgz.setDATE(dateNow); + dqgz.setSCNR(temperatureValue); + dqgz.setSCBZ(""); + Intent intent = new Intent(Contans.ACTION_YULTWO); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", dqgz); + intent.putExtras(bundle); + //发送广播 + sendBroadcast(intent); + } + } + + Intent intent = new Intent(); + intent.putExtra("value", temperatureValue); + //intent.putExtra("checkType", checkType); + setResult(RESULT_OK, intent); + finish(); + } + + @Override + public void cancel() { + + } + }); + auditDialog.show(); + } + } + }); + noticeValue.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + //Toast.makeText(context, "onLongClick", Toast.LENGTH_SHORT).show(); + EditDialog editDialog = new EditDialog(context); + editDialog.setMessage(noticeValue.getText().toString().trim()); + editDialog.setYesOnclickListener("确定", new EditDialog.onYesOnclickListener() { + @Override + public void onYesClick(String phone) { + if (!TextUtils.isEmpty(phone)) { + noticeValue.setText(phone); + } + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.setNoOnclickListener("取消", new EditDialog.onNoOnclickListener() { + @Override + public void onNoClick() { + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.show(); + return false; + } + }); + } + + @SuppressLint("SetTextI18n") + @Override + public void initData() { + intentTemplate = getIntent(); + dqgz = intentTemplate.getParcelableExtra("bean"); + if (dqgz != null) { + if(dqgz.getZX_MC()!=null){ + standerTip.setText(dqgz.getZX_MC()); + } + if(dqgz.getZX_NR()!=null){ + checkTip.setText(dqgz.getZX_NR()); + } + if(dqgz.getSCNR()!=null){ + etRealValue.setText(dqgz.getSCNR()); + } + } + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onPause() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onPause(); + } + + public void demo(){ + /*========读卡示例,参数说明见“说明文档.txt”============================================================*/ + //mt.RFIDopen(MTnativeInterface.CARD_14443);//开启电源。(不可与振动同时打开,它们共用硬件资源) + //mt.RFIDread(-1,""); + + + /*======转速示例============================================================================================*/ + //mt.RPMopen();//开启电源。 + + /*=====测温示例,参数说明见“说明文档.txt”=================================================================*/ + mt.IRTopen(MTnativeInterface.TEMP_25);//开启电源。 + mt.IRTread(95); + + /*=======测振示例,参数说明见“说明文档.txt”================================================================*/ +// mt.VIBopen();//开启电源。 +// //振动值测量。(振动值测量和频谱采集同时只能使用其中一个) +// mt.VIBread(MTnativeInterface.CMD_VIBD_R,0); + + //频谱采集测量。 + // mt.VIBset(MTnativeInterface.CMD_ALL_W,"RK");//频谱采集前,必须读取一次"频谱参数",频谱计算过程要用到 +// Button but = (Button) findViewById(R.id.button1); +// but.setText("频谱采集"); +// but.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// ppfreq=1280;//可选频率 1280 5120 12800 +// pplen=1024;//对应返回数据长度1024, 4096, 8192 +// ppsour = new double[pplen]; +// //开始频谱采集,参数CMDtype采样类型有三个可选CMD_VIBA_P加速度、CMD_VIBD_P位移、CMD_VIBV_P速度。参数level采样频率有三个可选 1280 5120 12800 +// //mt.VIBread(MTnativeInterface.CMD_VIBA_P,ppfreq); +// //执行下面代码可停止频谱采集 +// //mt.VIBread(0,0); +// } +// }); +// Button btnSecond = (Button) findViewById(R.id.button2); +// btnSecond.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// +// } +// }); + } + + private double getRK(int type){ + double res=0.0; + switch(type) { + case MTnativeInterface.CMD_VIBA_P: + res = edit16LA; + case MTnativeInterface.CMD_VIBV_P: + res=edit16LV; + case MTnativeInterface.CMD_VIBD_P: + res=edit16LD; + } + return res; + } + + public void updateUI(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if(info!=null){ + if(etRealValue!=null){ + //temperatureValue = info; + etRealValue.setText(info); + } + } + } + }); + } + + @Override + protected void onDestroy() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onDestroy(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckVibrationDqgzActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckVibrationDqgzActivity.java new file mode 100644 index 0000000..1139cd3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/CheckVibrationDqgzActivity.java @@ -0,0 +1,327 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AuditDialog; +import com.rehome.scbaxj.weight.EditDialog; +import com.rinsun.mtdriver.MTnativeInterface; +import org.litepal.crud.DataSupport; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class CheckVibrationDqgzActivity extends BaseActivity3 { + + TextView etRealTitle; + EditText etRealValue; + EditText noticeValue; + Button btnSubmit; + TextView checkTip; + TextView standerTip; + RadioGroup rgLevel; + RadioGroup rgType; + + + private String vibrationValue; + public static final int RESULT_SUCCESS = 1; + //private String checkType; + int checkVibrationType = MTnativeInterface.CMD_VIBD_R; + int level = 0; + // 振动位移单位 mm + //振动速度单位 mm/s + //振动加速度单位 mm/(s^2) + //String measure = "mm"; + //是否可编辑 + private boolean isEdit = false; + //页面传过来的数据 + Dqgz dqgz; + + //频谱用到的变量///////////////////////////// + private double edit16LA; + private double edit16LV; + private double edit16LD; + private double edit16HA; + private double edit16HV; + private double edit16HD; + + private double[] ppsour; + private int ppfreq; // <1280,5120,12800> + private int pplen; // 1024, 4096, 8192 + /////////////////////////////////////////////// + + MTnativeInterface mt = MTnativeInterface.getInstance();//获取传感器调用接口 + Intent intentTemplate; + private String username; + + + @Override + public int getLayoutId() { + return R.layout.activity_check_vibration; + } + + @Override + public void initView() { + etRealTitle = findViewById(R.id.tv_realTitle); + etRealValue = findViewById(R.id.et_realValue); + noticeValue = findViewById(R.id.et_noticeValue); + btnSubmit = findViewById(R.id.btn_submit); + checkTip = findViewById(R.id.tv_checkTip); + standerTip = findViewById(R.id.tv_standerTip); + rgLevel = findViewById(R.id.rgLevel); + rgType = findViewById(R.id.rgType); + + etRealValue.setEnabled(true); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + + + + Bundle bundle = CheckVibrationDqgzActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + if (isEdit) { + initToolbar("测振", "开始测量", new View.OnClickListener() { + @Override + public void onClick(View v) { + demo(); + } + }); + } else { + initToolbar("测振", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + btnSubmit.setVisibility(View.GONE); + } + } + + noticeValue.setKeyListener(null); + + //回调函数(自动返回数据)。CMDtype:数据类型,参数说明见“说明文档.txt” + mt.setOnReceiveListener(new MTnativeInterface.OnReceiveListener() { + @Override + public void onShowMessage(byte[] recBuff, int CMDtype, int tag) { + /* 根据CMDtype区分数据类型,普通测量值/频谱数据/配置数据。如果10秒没读到数据会返回超时提示并关闭电源 */ + System.out.println("-------------"); + System.out.println(new String(recBuff) + "/" + CMDtype + "/" + tag); + + if (CMDtype == MTnativeInterface.CMD_VIBA_R) { + if (recBuff != null) { + String recv = new String(recBuff); + String cut = " "; + String[] newStr = recv.split(cut); // 分割成数组 + updateUI(newStr[0]);//可直接显示数据 + } + } else { + //收到普通测量值 + updateUI(new String(recBuff));//可直接显示数据 + } + + //收到频谱采集部分 + //recBuff 原始数据数组,CMDtype 返回数据类型,tag 数据长度 + System.out.println((recBuff.length) + "/" + CMDtype + "/" + tag); + } + }); + btnSubmit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + vibrationValue = etRealValue.getText().toString().trim(); + if (vibrationValue.equals("")) { + showToast("实际值不能为空"); + } else { + AuditDialog auditDialog = new AuditDialog(context, "确定要保存数据吗?", new AuditDialog.AuditDialogListener() { + @Override + public void confirm() { + if (isEdit) { + if (!etRealValue.getText().toString().trim().equals("")) { + String dateNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + ContentValues values = new ContentValues(); + values.put("isWorkChecked", true); + values.put("SCNR", vibrationValue); + values.put("DATE", dateNow); + DataSupport.updateAll(Dqgz.class, values, "rwid = ? and username = ? ", dqgz.getRWID(), username); + dqgz.setWorkChecked(true); + dqgz.setDATE(dateNow); + dqgz.setSCNR(vibrationValue); + dqgz.setSCBZ(""); + Intent intent = new Intent(Contans.ACTION_YULTWO); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", dqgz); + intent.putExtras(bundle); + //发送广播 + sendBroadcast(intent); + } + } + Intent intent = new Intent(); + intent.putExtra("value", vibrationValue); + setResult(RESULT_OK, intent); + finish(); + } + + @Override + public void cancel() { + + } + }); + auditDialog.show(); + } + } + }); + rgLevel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (i) { + case R.id.rb1: + level = 0; + demo();//测量 + break; + case R.id.rb2: + level = 1; + demo();//测量 + break; + } + } + }); + rgType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (i) { + case R.id.rb3: + checkVibrationType = MTnativeInterface.CMD_VIBD_R; + etRealTitle.setText("实际值(mm):"); + demo();//测量 + break; + case R.id.rb4: + checkVibrationType = MTnativeInterface.CMD_VIBV_R; + etRealTitle.setText("实际值(mm/s):"); + demo();//测量 + break; + case R.id.rb5: + checkVibrationType = MTnativeInterface.CMD_VIBA_R; + etRealTitle.setText("实际值(mm/(s^2)):"); + demo();//测量 + break; + } + } + }); + noticeValue.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + //Toast.makeText(context, "onLongClick", Toast.LENGTH_SHORT).show(); + EditDialog editDialog = new EditDialog(context); + editDialog.setMessage(noticeValue.getText().toString().trim()); + editDialog.setYesOnclickListener("确定", new EditDialog.onYesOnclickListener() { + @Override + public void onYesClick(String phone) { + if (!TextUtils.isEmpty(phone)) { + noticeValue.setText(phone); + } + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.setNoOnclickListener("取消", new EditDialog.onNoOnclickListener() { + @Override + public void onNoClick() { + //让软键盘隐藏 + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm.isActive()) { + imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); // 隐藏 + } + editDialog.dismiss(); + } + }); + editDialog.show(); + return false; + } + }); + } + + @Override + public void initData() { + intentTemplate = getIntent(); + dqgz = intentTemplate.getParcelableExtra("bean"); + if (dqgz != null) { + if (dqgz.getZX_MC() != null) { + standerTip.setText(dqgz.getZX_MC()); + } + if (dqgz.getZX_NR() != null) { + checkTip.setText(dqgz.getZX_NR()); + } + if (dqgz.getSCNR() != null) { + etRealValue.setText(dqgz.getSCNR()); + } + } + } + + @Override + protected void onResume() { + //demo();//测量 + super.onResume(); + } + + @Override + protected void onPause() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onPause(); + } + + public void demo() { + /*=======测振示例,参数说明见“说明文档.txt”================================================================*/ + mt.VIBopen();//开启电源。 + //振动值测量。(振动值测量和频谱采集同时只能使用其中一个) + //读振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBA_R 振动加速度(加速度回传了2个值,取第一个就可以) + //CMD_VIBD_R 振动位移 + //CMD_VIBA_R 振动速度 + mt.VIBread(checkVibrationType, level); + } + + public void updateUI(final String info) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (info != null) { + if (etRealValue != null) { + etRealValue.setText(info); + } + } + } + }); + } + + @Override + protected void onDestroy() { + //使用完一定记得关闭电源 + mt.RFIDclose(); + mt.IRTclose(); + mt.VIBclose(); + mt.RPMclose(); + super.onDestroy(); + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzActivity.java new file mode 100644 index 0000000..4fe29f9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzActivity.java @@ -0,0 +1,280 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.SetxjSbModel; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AllCheckDialog; +import com.google.gson.Gson; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; + + +public class DqgzActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + private boolean isEdit = true; + private int item; + private String qybh; + //private ArrayList xsjjhxzDataBeanArrayList = new ArrayList<>();//工作列表 + private ArrayList xsjjhDataBeanArrayList = new ArrayList<>(); + //private List infos = new ArrayList<>(); + private View headView; + private CommonAdapter adapter; + //private int itemposition; + private String LX, LXResult; + private ArrayList setxjSbModelArrayList; + //测温 + public static final int REQUEST_CHECK_TEMPERATURE = 1; + //测振 + public static final int REQUEST_CHECK_VIBRATION = 2; + //观察和录入 + public static final int REQUEST_CHECK_SEE_INPUT = 3; + private String type = null; + private String username; + + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Contans.ACTION_YULTWO.equals(action)) { //更新设备点检页面返回时编辑的item内容 + Bundle bundle =intent.getExtras(); + if (bundle != null) { + Dqgz dqgzTemp = bundle.getParcelable("bean"); + if (xsjjhDataBeanArrayList.size() > 0&&dqgzTemp!=null) { + String rwid = dqgzTemp.getRWID(); + for (int i = 0; i < xsjjhDataBeanArrayList.size(); i++) { + Dqgz xsjjhDataBean = xsjjhDataBeanArrayList.get(i); + if (xsjjhDataBean.getRWID().equals(rwid)) { + xsjjhDataBean.setWorkChecked(dqgzTemp.isWorkChecked()); + xsjjhDataBean.setSCNR(dqgzTemp.getSCNR()); + xsjjhDataBean.setSCBZ(dqgzTemp.getSCBZ()); + xsjjhDataBean.setDATE(dqgzTemp.getDATE()); + } + } + } + } + } + } + }; + + @Override + public int getLayoutId() { + return R.layout.activity_yul; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + + headView = View.inflate(context, R.layout.dqzg_check_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.setEmptyView(tvNodata); + + + + } + + @Override + public void initData() { + username = (String) SPUtils.get(context, Contans.USERID, ""); + initToolbar("定期工作记录", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + + Bundle bundle = getIntent().getExtras(); + type = bundle.getString("type"); + + List xsjjhDataBeen = DataSupport.where("download = ? and mkbs = ? and username = ?", "1",type,username).find(Dqgz.class); + xsjjhDataBeanArrayList.clear(); + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen); + + setListAdapter(); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULTWO); + registerReceiver(myReceiver, filter); + } + + private void setListAdapter() { + adapter = new CommonAdapter(context, R.layout.dqzg_check_item, xsjjhDataBeanArrayList) { + @Override + protected void convert(ViewHolder viewHolder, Dqgz item, int position) { + viewHolder.setText(R.id.tv_d, item.getZX_MC()); + if (item.isWorkChecked()) { + viewHolder.setText(R.id.tv_zt, "已检"); + viewHolder.setTextColor(R.id.tv_zt, Color.parseColor("#00CD00"));//已经检查完成绿色 + }else{ + viewHolder.setText(R.id.tv_zt, "未检"); + viewHolder.setTextColor(R.id.tv_zt, Color.parseColor("#FF0000"));//未检查完成红色 + } + } + }; + + + //adapter = new TimerTaskAdapter(context, xsjjhDataBeanArrayList); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((parent, view, position, id) -> { + Log.i("app", String.valueOf(position)); + Gson gson = new Gson(); + Dqgz xSJJHDataBean = xsjjhDataBeanArrayList.get(position - 1); + Log.i("app", gson.toJson(xSJJHDataBean)); + + if (xSJJHDataBean.getZX_LRFS().equals("1")) { + Intent intent = new Intent(DqgzActivity.this, DqgzCheckActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", xSJJHDataBean); + bundle.putBoolean("edit", isEdit); + intent.putExtras(bundle); + startActivityForResult(intent, REQUEST_CHECK_SEE_INPUT); + }else { + if (xSJJHDataBean.getZX_LRFS().equals("0") && xSJJHDataBean.getZX_CBLX().equals("W")) { + Intent intentTemplate = new Intent(DqgzActivity.this, CheckTemperatureDqgzActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", xSJJHDataBean); + bundle.putString("checkTip", "日检破碎机,驱动部电机驱动端温度"); + bundle.putString("standerTip", "≤40℃"); + bundle.putString("checkType", "234233"); + bundle.putBoolean("edit", isEdit); + intentTemplate.putExtras(bundle); + startActivityForResult(intentTemplate, REQUEST_CHECK_TEMPERATURE); + } else if (xSJJHDataBean.getZX_LRFS().equals("0") && xSJJHDataBean.getZX_CBLX().equals("Z")) { + Intent intentTemplate = new Intent(DqgzActivity.this, CheckVibrationDqgzActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", xSJJHDataBean); + bundle.putString("checkTip", "日检破碎机,驱动部电机振动"); + bundle.putString("standerTip", "≤11.2mm/s"); + bundle.putString("checkType", "234235"); + bundle.putBoolean("edit", isEdit); + intentTemplate.putExtras(bundle); + startActivityForResult(intentTemplate, REQUEST_CHECK_VIBRATION); + } else { + Intent intent = new Intent(DqgzActivity.this, DqgzCheckActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", xSJJHDataBean); + bundle.putBoolean("edit", isEdit); + intent.putExtras(bundle); + startActivityForResult(intent, REQUEST_CHECK_SEE_INPUT); + } + } + }); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != RESULT_OK) return; + if (data != null) { +// if (Req == requestCode) { +// setxjSbModelArrayList = data.getParcelableArrayListExtra("setSbModelList"); +// if (setxjSbModelArrayList == null) { +// +// } else { +// for (int i = 0; i < setxjSbModelArrayList.size(); i++) { +// for (int j = 0; j < infos.size(); j++) { +// +// if (infos.get(j).getSbid().equals(setxjSbModelArrayList.get(i).getSbId())) +// +// infos.get(j).setCjjg(setxjSbModelArrayList.get(i).getValue()); +// +//// infos.get(j).setStatu(setSbModelList.get(i).getStatu()); +// +// } +// } +// adapter.notifyDataSetChanged(); +// } +// adapter.notifyDataSetChanged(); +// } else { +// String temperatureValue = data.getStringExtra("value"); +// if (temperatureValue != null) { +// //先判断是哪个页面返回过来的 +// switch (requestCode) { +// case REQUEST_CHECK_TEMPERATURE: +// //测温 +// //成功了 +// Toast.makeText(DqgzActivity.this, temperatureValue, Toast.LENGTH_SHORT).show(); +// break; +// case REQUEST_CHECK_VIBRATION: +// //测振 +// //成功了 +// Toast.makeText(DqgzActivity.this, temperatureValue, Toast.LENGTH_SHORT).show(); +// break; +// } +// } +// } + } + } + + @Override + protected void onResume() { + super.onResume(); + adapter.notifyDataSetChanged(); + } + + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } + + + public void rightBtnClickAllCheck() { + AllCheckDialog allCheckDialog = new AllCheckDialog(DqgzActivity.this, "一键正常将会把所有选择类的选项状态改为已检,是否继续当前操作?", new AllCheckDialog.AuditDialogListener() { + @Override + public void confirm() { + allCheckNow(); + } + + @Override + public void cancel() { + + } + }); + allCheckDialog.show(); + } + + private void allCheckNow() { + ArrayList xsjjhDataBeanArrayListTran = new ArrayList<>(); + if (xsjjhDataBeanArrayList.size() > 0) { + for (int i = 0; i < xsjjhDataBeanArrayList.size(); i++) { + Dqgz xSJJHDataBeanTemp = xsjjhDataBeanArrayList.get(i); + if (xSJJHDataBeanTemp.getZX_LRFS().equals("1")) { + xSJJHDataBeanTemp.setWorkChecked(true); + xSJJHDataBeanTemp.setSCNR("正常"); + } + } + } + adapter.notifyDataSetChanged(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzCheckActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzCheckActivity.java new file mode 100644 index 0000000..888be35 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzCheckActivity.java @@ -0,0 +1,358 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bleUtil.BluetoothLeService; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AuditDialog; +import com.rehome.scbaxj.weight.ListDialog; +import org.litepal.crud.DataSupport; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * Created by ruihong on 2017/11/30. + */ +public class DqgzCheckActivity extends BaseActivity3 { + + public static int Req = 101; + TextView tvBjmc; + TextView tvSbmc; + EditText etJg; + Button xjetButton; + LinearLayout ycmsLl; + EditText etYcFxnr; + Button btnNext; + TextView tvZt; + + //private MyFragmentAdapter adapter; + //private List list; + //private XJCJFragment xjcjFragment; + //private int item = 0; + private boolean isEdit = false; +// private int index = 0; + //private int itemposition; + //private String LX, LXResult; + private String username; + + //新数据 + private Dqgz dqgz; + private String MRNR; + //private ArrayList setSbModelList; + + + @Override + public int getLayoutId() { + return R.layout.activity_dqgz_check; + } + + @Override + public void initView() { + username = (String) SPUtils.get(context, Contans.USERID, ""); + + tvBjmc = findViewById(R.id.tv_bjmc); + tvSbmc = findViewById(R.id.tv_sbmc); + etJg = findViewById(R.id.et_jg); + xjetButton = findViewById(R.id.xjet_button); + ycmsLl = findViewById(R.id.ycms_ll); + etYcFxnr = findViewById(R.id.et_yc_fxnr); + btnNext = findViewById(R.id.btn_next); + tvZt = findViewById(R.id.tv_zt); + + + + ycmsLl.setVisibility(View.GONE); + initToolbar("设备巡检详情", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + AuditDialog auditDialog = new AuditDialog(context, "确定要保存数据吗?", new AuditDialog.AuditDialogListener() { + @Override + public void confirm() { + next(); + } + + @Override + public void cancel() { + + } + }); + auditDialog.show(); + } + }); + + btnNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); + Bundle bundle = DqgzCheckActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + dqgz = bundle.getParcelable("bean"); + } + if(dqgz!=null) { + if (dqgz.getZX_LRNR() != null) { + MRNR = dqgz.getZX_LRNR(); + if(MRNR!=null){ + xjetButton.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, stringToList(MRNR), (text, position) -> { + xjetButton.setText(text); + etJg.setText(text); + if (text.equals("正常")){ + ycmsLl.setVisibility(View.GONE); + }else if (text.equals("异常")){ + ycmsLl.setVisibility(View.VISIBLE); + } + }); + dialog.show(); + }); + } + } + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + } + + public void initData() { + + if(dqgz!=null){ + if(dqgz.getZX_MC()!=null){ + tvSbmc.setText(dqgz.getZX_MC()); + } + if(dqgz.getZX_NR()!=null){ + tvBjmc.setText(dqgz.getZX_NR()); + } + if(dqgz.getSCBZ()!=null){ + etYcFxnr.setText(dqgz.getSCBZ()); + } + if(dqgz.isWorkChecked()){ + tvZt.setText("已检"); + } + if(dqgz.getZX_LRFS().equals("1")){ + etJg.setVisibility(View.GONE); + //ycmsLl.setVisibility(View.GONE); + xjetButton.setVisibility(View.VISIBLE); + etYcFxnr.setText(""); + if (dqgz.getSCNR() == null) { + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + } else { + switch (dqgz.getSCNR()) { + case "已运行": + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + break; + case "大小修": + xjetButton.setText("大小修"); + etJg.setText("大小修"); + ycmsLl.setVisibility(View.GONE); + break; + case "已停用": + xjetButton.setText("已停用"); + etJg.setText("已停用"); + ycmsLl.setVisibility(View.GONE); + break; + case "异常": + ycmsLl.setVisibility(View.VISIBLE); + xjetButton.setText("异常"); + etJg.setText("异常"); + if(dqgz.getSCBZ()!=null){ + etYcFxnr.setText(dqgz.getSCBZ()); + } + break; + case "": + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + break; + default: + xjetButton.setText(dqgz.getSCNR()); + etJg.setText(dqgz.getSCNR()); + ycmsLl.setVisibility(View.GONE); + break; + } + } + } + if(dqgz.getZX_LRFS().equals("0")){ + etJg.setVisibility(View.VISIBLE); + //ycmsLl.setVisibility(View.GONE); + xjetButton.setVisibility(View.GONE); + etYcFxnr.setText(""); + if (dqgz.getSCNR() == null) { + etJg.setText(""); + } else { + switch (dqgz.getSCNR()) { + case "已运行": + etJg.setText(""); + break; + case "大小修": + etJg.setText("大小修"); + break; + case "已停用": + etJg.setText("已停用"); + break; + case "": + etJg.setText(""); + break; + default: + etJg.setText(dqgz.getSCNR()); + break; + } + } + } + } + + +// if (xsjjhDataBeanArrayList.size() != 0) { +// xjcjFragment = XJCJFragment.newInstance(isEdit, xsjjhDataBeanArrayList.get(index), xsjjhDataBeanArrayList.size(), index + 1); +// } else { +// xjcjFragment = XJCJFragment.newInstance(isEdit, new XSJJHDataBean(), 0, 0); +// } +// list.add(xjcjFragment); + +// adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); +// vp.setAdapter(adapter); +// vp.setOffscreenPageLimit(3); +// rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { +// @Override +// public void onCheckedChanged(RadioGroup radioGroup, int i) { +// +// switch (i) { +// case R.id.rb1: +// rb1.setTextColor(Color.WHITE); +// rb2.setTextColor(Color.GRAY); +// rb3.setTextColor(Color.GRAY); +// vp.setCurrentItem(0, false); +// break; +// case R.id.rb2: +// rb1.setTextColor(Color.GRAY); +// rb2.setTextColor(Color.WHITE); +// rb3.setTextColor(Color.GRAY); +// vp.setCurrentItem(1, false); +// break; +// case R.id.rb3: +// rb1.setTextColor(Color.GRAY); +// rb2.setTextColor(Color.GRAY); +// rb3.setTextColor(Color.WHITE); +// vp.setCurrentItem(2, false); +// break; +// } +// } +// }); + + } + + public void next() { + if(etJg.getText().toString().trim().equals("")){ + showToast("没有采集结果"); + }else{ + ContentValues values = new ContentValues(); + values.put("isWorkChecked", true); + values.put("SCNR", etJg.getText().toString().trim()); + values.put("SCBZ", etYcFxnr.getText().toString().trim()); + String dateNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + values.put("DATE",dateNow); + int i = DataSupport.updateAll(Dqgz.class, values, "rwid = ? and username = ? ", dqgz.getRWID(),username); + if (i != 0) { + dqgz.setWorkChecked(true); + dqgz.setDATE(dateNow); + dqgz.setSCNR(etJg.getText().toString().trim()); + dqgz.setSCBZ(etYcFxnr.getText().toString().trim()); + showToast("保存成功"); + updatecheck(true); + updateItem(dqgz); + finish(); + } + } + } + + private void updateItem(Dqgz dqgzTemp) { + Intent intent = new Intent(Contans.ACTION_YULTWO); + Bundle bundle = new Bundle(); + bundle.putParcelable("bean", dqgzTemp); + intent.putExtras(bundle); + //发送广播 + sendBroadcast(intent); + } + + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { + finish(); + return true; + } + return super.onKeyDown(keyCode, event); + } + + private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + String Data = ""; + if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { + String BleData = intent.getStringExtra(BluetoothLeService.EXTRA_DATA); + String type = BleData.substring(0, 1); + if (type.equals("T")) { + Data = "温度:" + BleData.substring(2, 6); + } else { + Data = "震动:" + BleData.substring(2, 6); + } + //xjcjFragment.getBlueToothData(Data); + } + } + }; + + static IntentFilter makeGattUpdateIntentFilter() { + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED); + intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE); + return intentFilter; + } + + @Override + protected void onDestroy() { + unregisterReceiver(mGattUpdateReceiver); + super.onDestroy(); + } + + public void updatecheck(Boolean value) { + if (value) { + tvZt.setText("已检"); + } else { + tvZt.setText("未检"); + } + } + + private List stringToList(String strs) { + String[] str = strs.split(";"); + return Arrays.asList(str); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzDownFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzDownFragment.java new file mode 100644 index 0000000..428315d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzDownFragment.java @@ -0,0 +1,319 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DqgzDownloadAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.WaitDialog; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.rest.RequestQueue; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import androidx.appcompat.app.AlertDialog; + + +import static org.litepal.crud.DataSupport.where; + +/** + * Created by huang on 2021/12/09 + * 定期工作-任务下载 + */ + +public class DqgzDownFragment extends BaseFragment { + + ListView lv; + TextView tvNodata; + FrameLayout FL; + Button btnXz; + Button btnDelete; + LinearLayout LL; + + + private WaitDialog dialog; + private DqgzUpAndDownActivity mActivity; + private View headView; + private View head; + private DqgzDownloadAdapter adapter; + private CheckBox cb; + private List xjjhs; +// private int selectCount = 0; +// private int requestCount = 0; + private List zxids = new ArrayList<>(); + private List jhmcs = new ArrayList<>(); + private RequestQueue queue; + private String type = null; + private String professionId = null; + private String username; + + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Contans.ACTION_REFRESHPLANDOWNLOAD.equals(action)) { + //刷新页面 + initData(); + } + if(Contans.ACTION_PROFESSIONCHANGE.equals(action)){ + professionId=intent.getStringExtra("professionId"); + Log.i("app",professionId); + Log.i("app","initData"); + //刷新页面 + initData(); + } + } + }; + + public DqgzDownFragment() { + + } + public DqgzDownFragment(String type) { + this.type=type; + } + + public static DqgzDownFragment newInstance(String type) { + DqgzDownFragment fragment = new DqgzDownFragment(type); + return fragment; + } + + + @Override + public int getContentViewId() { + return R.layout.fragment_xzxsjh; + } + + @Override + protected void initView() { + lv = view.findViewById(R.id.lv); + tvNodata = view.findViewById(R.id.tv_nodata); + FL = view.findViewById(R.id.FL); + username = (String) SPUtils.get(context, Contans.USERID, ""); + lv.setEmptyView(tvNodata); + mActivity = (DqgzUpAndDownActivity) getActivity(); + headView = View.inflate(context, R.layout.xzxsjh_item, null); + head = headView.findViewById(R.id.head); + head.setVisibility(View.VISIBLE); + + btnXz = view.findViewById(R.id.btn_xz); + btnDelete = view.findViewById(R.id.btn_delete); + LL = view.findViewById(R.id.LL); + + btnXz.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (xjjhs.size() != 0) { + zxids.clear(); + jhmcs.clear(); + for (int i = 0; i < xjjhs.size(); i++) { + if (xjjhs.get(i).isChecked()) { + if (!dialog.isShowing()) { + dialog.setMessage("下载计划中..."); + dialog.show(); + } + //运行,燃料定时任务下载 + downData(xjjhs.get(i).getRWID()); + zxids.add(xjjhs.get(i).getRWID()); + } + } + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + + tvNodata.setText("暂无数据"); + List xjjhListall = new ArrayList<>(); + if(professionId!=null){ + xjjhListall = where("download = ? and mkbs = ? and zx_zy = ? and username = ?", "0",type,professionId,username).find(Dqgz.class); + }else{ + xjjhListall = where("download = ? and mkbs = ? and username = ?", "0",type,username).find(Dqgz.class); + } + + xjjhs.clear(); + xjjhs.addAll(xjjhListall); + if (adapter != null) { + cb.setChecked(false); + adapter.notifyDataSetChanged(); + } + showToast("下载成功"); + + Intent intent = new Intent(Contans.ACTION_REFRESHPLANUPLOAD); + //发送广播,刷新任务上传页面 + requireActivity().sendBroadcast(intent); + } else { + showToast("没有可下载计划"); + } + } + }); + + btnDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (xjjhs.size() != 0) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("提示"); + builder.setTitle("你确定要删除?"); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + List delete = new ArrayList<>(); + for (int i = 0; i < xjjhs.size(); i++) { + if (xjjhs.get(i).isChecked()) { + delete.add(xjjhs.get(i)); + DataSupport.deleteAll(Dqgz.class, "rwid = ? and username = ?", xjjhs.get(i).getRWID(),username); + } + } + xjjhs.removeAll(delete); + adapter.notifyDataSetChanged(); + } + }); + builder.show(); + + } else { + showToast("没有可删除计划"); + } + } + }); + + cb = headView.findViewById(R.id.cb); + cb.setOnClickListener(view -> { + + if (cb.isChecked()) { + for (int i = 0; i < xjjhs.size(); i++) { + xjjhs.get(i).setChecked(true); + adapter.notifyDataSetChanged(); + } + } else { + for (int i = 0; i < xjjhs.size(); i++) { + xjjhs.get(i).setChecked(false); + adapter.notifyDataSetChanged(); + } + } + }); + lv.addHeaderView(headView, null, false); + TextView tv_taskName=headView.findViewById(R.id.tv_gwmc); + tv_taskName.setText("任务名称"); + TextView tv_isCheck=headView.findViewById(R.id.tv_gwds); + tv_isCheck.setText("状态"); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_REFRESHPLANDOWNLOAD); + filter.addAction(Contans.ACTION_PROFESSIONCHANGE); + requireActivity().registerReceiver(myReceiver, filter); + } + + public void initData() { + + queue = NoHttp.newRequestQueue(1); + dialog = new WaitDialog(getActivity(), "加载中..."); + dialog.setCancelable(false); + cb.setChecked(false); + xjjhs = new ArrayList<>(); + //如果数据库中有数据 + if (DataSupport.count("Dqgz") != 0) { + List xjjhListall = new ArrayList<>(); + if(professionId!=null){ + xjjhListall = where("download = ? and mkbs = ? and zx_zy = ? and username = ?", "0",type,professionId,username).find(Dqgz.class); + }else{ + xjjhListall = where("download = ? and mkbs = ? and username = ?", "0",type,username).find(Dqgz.class); + } + + xjjhs.clear(); + xjjhs.addAll(xjjhListall); + Log.i("app","-------"); + Log.i("app",String.valueOf(xjjhs.size())); + setListData(); + } else { + tvNodata.setText("暂无数据"); + LL.setVisibility(View.GONE); + } + } + + //运行,燃料计划下载 + private void downData(String rwid) { + //++requestCount; + ContentValues values = new ContentValues(); + values.put("download", 1); + DataSupport.updateAll(Dqgz.class, values, "rwid = ?", rwid); + } + + private String createZyJson(String zxid, String jhmc) { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("YX_XJGL_RWXZ_GET"); + info.setZxid(zxid); + //info.setJhmc(jhmc); + String json = GsonUtils.GsonString(info); + Log.i("app",json); + return json; + } + + private void setListData() { + + adapter = new DqgzDownloadAdapter(context, xjjhs, new DqgzDownloadAdapter.CallBack() { + @Override + public void Click(View view) { + + CheckBox checkBox = (CheckBox) view; + int index = (int) checkBox.getTag(); + xjjhs.get(index).setChecked(checkBox.isChecked()); + int count = 0; + for (int a = 0; a < xjjhs.size(); a++) { + if (xjjhs.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == xjjhs.size()); + adapter.notifyDataSetChanged(); + } + }); + + + lv.setAdapter(adapter); + + lv.setOnItemClickListener((adapterView, view, i, l) -> { + + xjjhs.get(i - 1).setChecked(!xjjhs.get(i - 1).isChecked()); + int count = 0; + for (int a = 0; a < xjjhs.size(); a++) { + if (xjjhs.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == xjjhs.size()); + adapter.notifyDataSetChanged(); + }); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + requireActivity().unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpAndDownActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpAndDownActivity.java new file mode 100644 index 0000000..abef502 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpAndDownActivity.java @@ -0,0 +1,112 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.Intent; +import android.util.Log; +import android.view.View; +import com.rehome.scbaxj.DBModel.Profession; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.weight.ListDialog; +import com.google.android.material.tabs.TabLayout; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.sbxdj.FragmentAdapter; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import java.util.ArrayList; +import java.util.List; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; +import org.litepal.crud.DataSupport; + + +/** + * Created by huang on 2021/12/09 + * 定期工作-任务管理 + */ +public class DqgzUpAndDownActivity extends BaseActivity3 { + + private DrawerLayout mDrawerLayout; + private ViewPager mViewPager; + private TabLayout mTabLayout; + private List fragments = new ArrayList<>(); + private String type = null; + private List listPro = new ArrayList<>(); + private List professionList = new ArrayList<>(); + + + @Override + public int getLayoutId() { + return R.layout.activity_dqgz_up_and_down; + } + + @Override + public void initView() { +// listPro.add("运行专业"); +// listPro.add("燃料专业"); + } + + public void initData() { + Intent intent = getIntent(); + type = intent.getStringExtra("type"); + if (type != null && type.equals("YX")) { + initToolbar("定期任务数据管理", "选择专业", new View.OnClickListener() { + @Override + public void onClick(View v) { + if (type.equals("YX")) { + ListDialog listDialog = new ListDialog(context, listPro, new ListDialog.ListDialogListener() { + @Override + public void selectText(String text, int position) { + if (professionList != null && professionList.size() > 0) { + Profession profession = professionList.get(position); + Log.i("app", profession.getZyid()); + //刷新计划下载界面 + Intent intent = new Intent(Contans.ACTION_PROFESSIONCHANGE); + intent.putExtra("professionId", profession.getZyid()); + //专业选择改变发送广播,刷新任务下载页面 + sendBroadcast(intent); + } + } + }); + listDialog.setTvTitle("请选择专业"); + listDialog.show(); + ; + } + } + }); + professionList = DataSupport.findAll(Profession.class); + if (professionList != null && professionList.size() > 0) { + for (Profession profession : professionList) { + listPro.add(profession.getZymc()); + } + } + + } else { + initToolbar("定期任务数据管理", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + + mViewPager = findViewById(R.id.viewpager); + initViewPager(); + + } + + private void initViewPager() { + mTabLayout = findViewById(R.id.tabs); + List titles = new ArrayList<>(); + titles.add("数据下载"); + titles.add("数据上传"); + for (int i = 0; i < titles.size(); i++) { + mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(i))); + } + fragments.add(new DqgzDownFragment(type)); + fragments.add(new DqgzUpFragment(type)); + FragmentAdapter mFragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), fragments, titles); + mViewPager.setAdapter(mFragmentAdapter); + mTabLayout.setupWithViewPager(mViewPager); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpFragment.java new file mode 100644 index 0000000..2ee6a04 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/DqgzUpFragment.java @@ -0,0 +1,423 @@ +package com.rehome.scbaxj.activity.regular; + + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DqgzDownloadAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.DqgzUpLoadBean; +import com.rehome.scbaxj.bean.StatusInfo2; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.HttpResponseListener; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.utils.UiUtlis; +import com.rehome.scbaxj.weight.MeasureDialog; +import com.rehome.scbaxj.weight.WaitDialog; +import com.rehome.scbaxj.weight.toastviewbymyself; +import com.google.gson.Gson; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.RequestQueue; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; + +import static org.litepal.crud.DataSupport.where; + +/** + * Created by huang on 2021/12/09 + * 定期工作-任务上传 + */ +public class DqgzUpFragment extends BaseFragment { + + ListView lv; + Button btn_sc; + Button btn_del; + TextView tvNodata; + private DqgzUpAndDownActivity mActivity; + private View headView; + private View head; + private CheckBox xj_cb; + private DqgzDownloadAdapter adapter; + private WaitDialog dialog; + private RequestQueue queue; + private int noCheck = 0; + private int selectCount = 0; + private List dbxjjh = new ArrayList<>(); + //private List xsjjhxzDataBeanList = new ArrayList<>(); + //private String rwid = ""; +// private List xsjhxzdatalist = new ArrayList<>(); +// private Map> xsJjhDataBeanMap = new HashMap<>(); +// private Map> xsJjhBaDataBeanMap = new HashMap<>(); + private String type = null; + private String username; + + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Contans.ACTION_REFRESHPLANUPLOAD.equals(action)) { + //刷新页面 + initData(); + } + } + }; + + public DqgzUpFragment() { + + } + + public DqgzUpFragment(String type) { + this.type=type; + } + + public static DqgzUpFragment newInstance(String type) { + DqgzUpFragment fragment = new DqgzUpFragment(type); + return fragment; + } + + + @Override + protected void initView() { + lv = view.findViewById(R.id.lv); + btn_sc = view.findViewById(R.id.btn_sc); + btn_del = view.findViewById(R.id.btn_del); + tvNodata = view.findViewById(R.id.tv_nodata); + + username = (String) SPUtils.get(context, Contans.USERID, ""); + lv.setEmptyView(tvNodata); + + btn_sc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + uploadData();//上传勾选中的数据 + } + }); + + btn_del.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + deleteData();//删除勾选中的数据 + } + }); + + + dialog = new WaitDialog(context, "上传中..."); + dialog.setCancelable(false); + mActivity = (DqgzUpAndDownActivity) getActivity(); + headView = View.inflate(context, R.layout.scxscb_item, null); + head = headView.findViewById(R.id.head); + xj_cb = headView.findViewById(R.id.xj_cb); + lv.addHeaderView(headView, null, false); + TextView tv_taskName=headView.findViewById(R.id.tv_gwmc); + tv_taskName.setText("任务名称"); + TextView tv_isCheck=headView.findViewById(R.id.tv_yjzj); + tv_isCheck.setText("状态"); + xj_cb.setOnClickListener(view -> { + + if (xj_cb.isChecked()) { + for (int i = 0; i < dbxjjh.size(); i++) { + dbxjjh.get(i).setChecked(true); + adapter.notifyDataSetChanged(); + } + } else { + for (int i = 0; i < dbxjjh.size(); i++) { + dbxjjh.get(i).setChecked(false); + adapter.notifyDataSetChanged(); + } + } + }); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_REFRESHPLANUPLOAD); + requireActivity().registerReceiver(myReceiver, filter); + } + + + @Override + public int getContentViewId() { + return R.layout.fragment_xssc; + } + + public void initData() { + xj_cb.setChecked(false); + queue = NoHttp.newRequestQueue(1); + getDataInSQL();//获取运行,燃料数据 + setListData();//显示数据 + } + + + /** + * 获取数据库的数据 + */ + public void getDataInSQL() { + + dbxjjh.clear(); + dbxjjh.addAll(where("download = ? and mkbs = ? and username = ?", "1",type,username).find(Dqgz.class)); + + Log.i("app",String.valueOf(dbxjjh.size())); + + int count = 0; + for (int i = 0; i < dbxjjh.size(); i++) { + Dqgz dataBean = dbxjjh.get(i); + Log.i("app", dataBean.getRWID()); + Gson gson = new Gson(); + Log.i("app", gson.toJson(dataBean)); + if (!dataBean.getRWID().equals("")) { + if(dataBean.isWorkChecked()){ + count++; + } + } + } + if (count != 0) { + toastviewbymyself.makeText(getActivity(), "有巡检数据未上传,请检查!!!", Toast.LENGTH_LONG).show(); + } + } + + private void setListData() { + + adapter = new DqgzDownloadAdapter(context, dbxjjh,view -> { + CheckBox checkBox = (CheckBox) view; + int index = (int) checkBox.getTag(); + dbxjjh.get(index).setChecked(checkBox.isChecked()); + int count = 0; + for (int a = 0; a < dbxjjh.size(); a++) { + if (dbxjjh.get(a).isChecked()) { + count++; + } + } + xj_cb.setChecked(count == dbxjjh.size()); + adapter.notifyDataSetChanged(); + }); + lv.setAdapter(adapter); + + + lv.setOnItemClickListener((adapterView, view, i, l) -> { + + Log.i("app",String.valueOf(i)); + + dbxjjh.get(i - 1).setChecked(!dbxjjh.get(i - 1).isChecked()); + int count = 0; + for (int a = 0; a < dbxjjh.size(); a++) { + if (dbxjjh.get(a).isChecked()) { + count++; + } + } + xj_cb.setChecked(count == dbxjjh.size()); + adapter.notifyDataSetChanged(); + }); + } + + private void uploadData() { + noCheck = 0;//没有检查的数量 + selectCount = 0; + boolean isSelectUpLoad = false; + DqgzUpLoadBean scxjjhbean = new DqgzUpLoadBean(); + scxjjhbean.setAction("DQGZ_RWSC_SET"); + scxjjhbean.setSCR(username); + List datalist = new ArrayList<>(); + for (int i = 0; i < dbxjjh.size(); i++) { + Dqgz dataBean = dbxjjh.get(i); + if (dataBean.isChecked()) { + isSelectUpLoad = true; + selectCount++; + DqgzUpLoadBean.data datas = new DqgzUpLoadBean.data(); + datas.setRWID(dataBean.getRWID()); + datas.setSCNR(dataBean.getSCNR()); + if(dataBean.getSCNR()==null){ + datas.setSCNR(""); + } + datas.setSCBZ(dataBean.getSCBZ()); + if(dataBean.getSCBZ()==null){ + datas.setSCBZ(""); + } + if(dataBean.isWorkChecked()){ + datas.setDATE(dataBean.getDATE()); + }else{ + datas.setDATE(""); + } + datalist.add(datas); + if(!dataBean.isWorkChecked()){ + noCheck++; + } + } + } + scxjjhbean.setData(datalist); + Gson gson = new Gson(); + Log.i("app",gson.toJson(scxjjhbean)); + if (noCheck > 0) { //如果未检查的数量大于0 则提示有未检查的项目 + if(selectCount==noCheck){ + MeasureDialog measureDialog = new MeasureDialog(context, "至少有一条任务已检才能上传!", new MeasureDialog.AuditDialogListener() { + @Override + public void confirm() { + + } + + @Override + public void cancel() { + + } + }); + measureDialog.show(); + }else{ + MeasureDialog measureDialog = new MeasureDialog(context, "还有项目未检查,是否还要上传?", new MeasureDialog.AuditDialogListener() { + @Override + public void confirm() { + final String json = GsonUtils.GsonString(scxjjhbean); + sCData(json); + } + + @Override + public void cancel() { + + } + }); + measureDialog.show(); + } + } else { + final String json = GsonUtils.GsonString(scxjjhbean); + sCData(json); + } + if (!isSelectUpLoad) { + showToast("请选择要上传的计划"); + } + } + + private void sCData(String json) { + Log.i("app",Contans.IP + Contans.DQGZ_UPLOAD_TASK); + Request request = NoHttp.createStringRequest(Contans.IP + Contans.DQGZ_UPLOAD_TASK, RequestMethod.POST); + request.setDefineRequestBodyForJson(json); + queue.add(1, request, new HttpResponseListener<>(getActivity(), request, callback, false, true, "上传数据中...请稍等...")); + } + + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + + Gson gson = new Gson(); + Log.i("app", gson.toJson(response.get())); + StatusInfo2 info = GsonUtils.GsonToBean(response.get(), StatusInfo2.class); + + + try { + if (what == 1) { + if (info.getState() == 1) { //成功 + + showToast("上传数据成功"); + + List dbxjjhTemp = new ArrayList<>(); + //这里处理那个删除item,更新UI + for (int i = 0; i < dbxjjh.size(); i++) { + + if (dbxjjh.get(i).isChecked()) { + + DataSupport.deleteAll(Dqgz.class, "rwid = ? and username = ?", dbxjjh.get(i).getRWID(),username); + + //dbxjjh.remove(dbxjjh.get(i)); + }else{ + dbxjjhTemp.add(dbxjjh.get(i)); + } + + } + dbxjjh.clear(); + dbxjjh.addAll(dbxjjhTemp); + + adapter.notifyDataSetChanged(); + + //刷新计划下载界面 + Intent intent = new Intent(Contans.ACTION_REFRESHDOWNLOADPLAN); + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent); + + } else { + + showToast("上传数据失败"); + + } + } + + + } catch (Exception e) { + + showToast(UiUtlis.getString(context, R.string.data_error)); + + dialog.dismiss(); + + } + } + + @Override + public void onFailed(int what, Response response) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + } + }; + + + private void deleteData() { + int count = 0; + for (int a = 0; a < dbxjjh.size(); a++) { + if (dbxjjh.get(a).isChecked()) { + count++; + } + } + if(count==0){ + showToast("请选择要删除的计划"); + return; + } + MeasureDialog measureDialog = new MeasureDialog(context, "你确定要删除?", new MeasureDialog.AuditDialogListener() { + @Override + public void confirm() { + for (int i = 0; i < dbxjjh.size(); i++) { + Log.i("app",String.valueOf(i)); + Log.i("app",String.valueOf(dbxjjh.get(i).isChecked())); + if (dbxjjh.get(i).isChecked()) { + DataSupport.deleteAll(Dqgz.class, "rwid = ? and username = ?", dbxjjh.get(i).getRWID(),username); + } + } + + xj_cb.setChecked(false); + //刷新界面 + getDataInSQL(); + //刷新计划下载界面 + Intent intent = new Intent(Contans.ACTION_REFRESHDOWNLOADPLAN); + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent); + + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void cancel() { + + } + }); + measureDialog.show(); + + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + requireActivity().unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/RegularActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/RegularActivity.java new file mode 100644 index 0000000..7059773 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/regular/RegularActivity.java @@ -0,0 +1,261 @@ +package com.rehome.scbaxj.activity.regular; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.util.Log; +import android.view.WindowManager; +import android.widget.GridView; +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.DBModel.DqgzList; +import com.rehome.scbaxj.DBModel.ProfessionList; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.GridViewAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.DqgzRequestInfo; +import com.rehome.scbaxj.bean.GridViewBean; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.utils.StatusBarUtil; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; +import com.rehome.scbaxj.DBModel.Profession; + +/** + * 巡视抄表管理 + */ +public class RegularActivity extends BaseActivity { + + GridView gv; + + // private String[] str = {"巡检任务", "巡检工作","燃料周期详情"}; +// private int[] imageId = {R.mipmap.icon_xs1, R.mipmap.icon6,R.mipmap.icon8}; +// private int[] colors = {R.drawable.radius_b1, R.drawable.radius_a4,R.drawable.radius_c1}; + private String[] str = {"定期任务", "定期工作"}; + private int[] imageId = {R.mipmap.icon_xs1, R.mipmap.icon6}; + private int[] colors = {R.drawable.radius_b1, R.drawable.radius_a4}; + private GridViewAdapter adapter; + private String type = null; + private String username; + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Contans.ACTION_REFRESHDOWNLOADPLAN.equals(action)) { + //刷新页面 + requestDatas(); + } + } + }; + + @Override + public int getContentViewID() { + return R.layout.activity_xscbgl; + } + + @Override + protected void initView() { + + gv = findViewById(R.id.gv); + Intent intentType = getIntent(); + type = intentType.getStringExtra("type"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + if(type.equals("YX")){ + setTitle("运行定期"); + setTitle("运行定期"); + }else if(type.equals("RL")){ + setTitle("燃料定期"); + setTitle("燃料定期"); + } + + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + StatusBarUtil.transparencyBar(RegularActivity.this); + mToolbar.setBackgroundColor(Color.parseColor("#00000000")); + setBack(); + + adapter = new GridViewAdapter(this, getGridViewData(), new ArrayList(), true); + gv.setSelector(new ColorDrawable(Color.TRANSPARENT)); + gv.setAdapter(adapter); + gv.setOnItemClickListener((adapterView, view, i, l) -> { + Intent intent = null; + switch (i) { + case 0: + intent = new Intent(RegularActivity.this, DqgzUpAndDownActivity.class); + intent.putExtra("type",type); + break; + case 1: + intent = new Intent(RegularActivity.this, DqgzActivity.class); + intent.putExtra("type",type); + break; + } + if (intent != null) { + startActivity(intent); + } + }); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_REFRESHDOWNLOADPLAN); + registerReceiver(myReceiver, filter); + + requestDatas(); + if(type.equals("YX")){ + getProfessionData(); + } + } + + private List getGridViewData() { + + List datas = new ArrayList<>(); + for (int i = 0; i < str.length; i++) { + GridViewBean bean = new GridViewBean(); + bean.setTitle(str[i]); + bean.setBackgroup(colors[i]); + bean.setImageid(imageId[i]); + bean.setShow(false); + datas.add(bean); + } + return datas; + } + + private void requestDatas() { //获取定期任务列表数据 + + Log.i("app",Contans.IP + Contans.DQGZ); + Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.DQGZ, RequestMethod.POST);; + requestxs.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + + Log.i("app",response.get()); + DqgzList list = GsonToBean(response.get(), DqgzList.class); + Log.i("app",list.getMsg()); + Log.i("app",list.getState()); + Log.i("app",String.valueOf(list.getData().size())); + + if (list != null) { + + if (list.getState().equals("1")) { + + List dqgzs = list.getData();//服务器数据 + + DataSupport.deleteAll(Dqgz.class, "download = 0 and username = ?",username); + + for (Dqgz dqgz : dqgzs) { + + List dbDqgz = DataSupport.where("rwid = ? and download = ? and username = ?", dqgz.getRWID(), "1",username).find(Dqgz.class); + + if (dbDqgz.size() == 0) { + dqgz.setUsername(username); + dqgz.save(); + } + } + //刷新计划下载界面 + Intent intent = new Intent(Contans.ACTION_REFRESHPLANDOWNLOAD); + //发送广播,刷新任务下载页面 + sendBroadcast(intent); + } else { + DataSupport.deleteAll(Dqgz.class, "download = 0 and username = ?",username); + } + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + //获取运行专业数据 + private void getProfessionData() { + + Log.i("app",Contans.IP + Contans.XSCB); + final Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + + requestxs.setDefineRequestBodyForJson(createJsonZY()); + + NohttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + + Log.i("app",response.get()); + ProfessionList list = GsonToBean(response.get(), ProfessionList.class); + Log.i("app",list.getMsg()); + Log.i("app",list.getState()); + Log.i("app",String.valueOf(list.getData().size())); + + if (list != null) { + //获取数据成功 + if (list.getState().equals("1")) { + //服务器数据 + List professions = list.getData(); + DataSupport.deleteAll(Profession.class); + for (Profession profession : professions) { + profession.save(); + } + } + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJsonBA() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("BA_XJGL_RWLB_GET"); + String json = GsonUtils.GsonString(info); + Log.i("app",json); + return json; + } + private String createJson() { + DqgzRequestInfo info = new DqgzRequestInfo(); + info.setAction("DQGZ_RWLB_GET"); + info.setRWZT(0); + String bz = (String) SPUtils.get(context, Contans.BZBH, ""); +// if(bz!=null&&(!bz.equals(""))){ +// info.setBZ(bz); +// } + if(type!=null&&type.equals("YX")){ + info.setMK("YX"); + } + if(type!=null&&type.equals("RL")){ + info.setMK("RL"); + } + String json = GsonUtils.GsonString(info); + Log.i("app",json); + return json; + } + + private String createJsonZY() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("YX_XJGL_ZY_GET"); + String jsonZY = GsonUtils.GsonString(info); + return jsonZY; + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/BzFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/BzFragment.java new file mode 100755 index 0000000..b4bd54b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/BzFragment.java @@ -0,0 +1,65 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.os.Bundle; +import android.widget.EditText; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + +/** + * 安健环巡查管理-标准 + */ +public class BzFragment extends BaseFragment { + + EditText et_bz; + + private boolean isEdit; + private String bz; + + public BzFragment() { + } + + public static BzFragment newInstance(boolean b, String bz) { + Bundle bundle = new Bundle(); + bundle.putBoolean("edit", b); + bundle.putString("bz", bz); + BzFragment fragment = new BzFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle bundle = getArguments(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + bz = bundle.getString("bz"); + } + } + + @Override + public int getContentViewId() { + return R.layout.fragment_bz; + } + + @Override + protected void initView() { + et_bz = view.findViewById(R.id.et_bz); + et_bz.setEnabled(isEdit); + updata(bz); + } + + @Override + public void initData() { + super.initData(); + } + + + + /** + * 更新数据 + */ + public void updata(String bz) { + et_bz.setText(bz); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/CJFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/CJFragment.java new file mode 100755 index 0000000..a3ac8a9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/CJFragment.java @@ -0,0 +1,237 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.view.View; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.ScrollView; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + + + +public class CJFragment extends BaseFragment { + TextView tv_bw; + TextView tv_dmc; + EditText et_jg; + TextView tv_yjzj; + TextView tv_zt; + TextView tvSb; + TextView tvBz; + ScrollView sv; + TextView tvZq; + RadioButton rbzc; + RadioButton rbbzc; + RadioGroup RGZC; + TextView textviewTy; + TextView tvDjnr; + EditText etYcFxnr; + LinearLayout ycmsLl; + private boolean isEdit; + private QYDDATABean info; + private int zj; + private int index; + private String writebleinfo; + + public static CJFragment newInstance(boolean b, QYDDATABean info, int zj, int index) { + Bundle bundle = new Bundle(); + bundle.putBoolean("edit", b); + bundle.putParcelable("info", info); + bundle.putInt("zj", zj); + bundle.putInt("index", index); + CJFragment fragment = new CJFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle bundle = getArguments(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + info = bundle.getParcelable("info"); + zj = bundle.getInt("zj"); + index = bundle.getInt("index"); + } + } + + @Override + public int getContentViewId() { + return R.layout.fragment_cj; + } + + @Override + protected void initView() { + tv_bw = view.findViewById(R.id.tv_bw); + tv_dmc = view.findViewById(R.id.tv_dmc); + et_jg = view.findViewById(R.id.et_jg); + tv_yjzj = view.findViewById(R.id.tv_yjzj); + tv_zt = view.findViewById(R.id.tv_zt); + tvSb = view.findViewById(R.id.tv_sb); + tvBz = view.findViewById(R.id.tv_bz); + sv = view.findViewById(R.id.sv); + tvZq = view.findViewById(R.id.tv_zq); + rbzc = view.findViewById(R.id.rbzc); + rbbzc = view.findViewById(R.id.rbbzc); + RGZC = view.findViewById(R.id.RGZC); + textviewTy = view.findViewById(R.id.textview_ty); + tvDjnr = view.findViewById(R.id.tv_djnr); + etYcFxnr = view.findViewById(R.id.et_yc_fxnr); + ycmsLl = view.findViewById(R.id.ycms_ll); + + et_jg.setEnabled(isEdit); + updata(info, index, zj); + } + + @Override + public void initData() { + RGZC.setOnCheckedChangeListener((radioGroup, i) -> { + if (i == R.id.rbzc) { + et_jg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + } else if (i == R.id.rbbzc) { + et_jg.setText("异常"); + ycmsLl.setVisibility(View.VISIBLE); + } + }); + } + + void updateState(String value) { + et_jg.setText(value); + } + + void updateFXNR(String value) { + etYcFxnr.setText(value); + } + + void updatecheck(Boolean value) { + if (value) { + tv_zt.setText("已检"); + } else { + tv_zt.setText("未检"); + } + } + + @SuppressLint("SetTextI18n") + void updata(QYDDATABean info, int item, int size) { + tvSb.setText(info.getSBMC()); + tv_bw.setText(info.getBJMC()); + tv_dmc.setText(info.getDMC()); + tvDjnr.setText(info.getDJNR()); + tvBz.setText(info.getBZZ()); + tv_zt.setText(info.isChecked() ? "已检" : "未检"); + tv_yjzj.setText(item + "/" + size); + + writebleinfo = info.getLRFS(); + + + if (info.getLRFS().equals("0")) { //当时编辑状态的是 不需要按钮 + et_jg.setVisibility(View.VISIBLE); + RGZC.setVisibility(View.GONE); + textviewTy.setVisibility(View.GONE); + ycmsLl.setVisibility(View.GONE); + etYcFxnr.setText(""); + if (info.getCJJG() == null) { + et_jg.setText(""); + } else { + switch (info.getSBMCSTATE()) { + case "已运行": + et_jg.setText(info.getCJJG()); + break; + case "已停用": + et_jg.setText("已停用"); + et_jg.setVisibility(View.GONE); + textviewTy.setVisibility(View.VISIBLE); + break; + case "备用": + et_jg.setText("备用"); + textviewTy.setText("备用"); + et_jg.setVisibility(View.GONE); + textviewTy.setVisibility(View.VISIBLE); + break; + default: + et_jg.setText(info.getCJJG()); + break; + } + } + } else if (info.getLRFS().equals("1")) { //不是编辑状态的时候 + + et_jg.setVisibility(View.GONE); + textviewTy.setVisibility(View.GONE); + rbzc.setVisibility(View.VISIBLE); + rbbzc.setVisibility(View.VISIBLE); + RGZC.setVisibility(View.VISIBLE); + rbzc.setText("正常"); + rbbzc.setText("异常"); + rbzc.setChecked(true); + rbbzc.setChecked(false); + etYcFxnr.setText(""); + + if (info.getCJJG() == null) { + et_jg.setText("正常"); + rbzc.setChecked(true); + rbbzc.setChecked(false); + ycmsLl.setVisibility(View.GONE); + } else { + switch (info.getCJJG()) { + case "已运行": + et_jg.setText("正常"); + rbzc.setChecked(true); + rbbzc.setChecked(false); + ycmsLl.setVisibility(View.GONE); + break; + case "已停用": + textviewTy.setVisibility(View.VISIBLE); + et_jg.setText("已停用"); + RGZC.setVisibility(View.GONE); + textviewTy.setVisibility(View.VISIBLE); + ycmsLl.setVisibility(View.GONE); + break; + case "异常": + et_jg.setText("异常"); + rbbzc.setChecked(true); + rbzc.setChecked(false); + ycmsLl.setVisibility(View.VISIBLE); + etYcFxnr.setText(info.getFXNR()); + break; + case "备用": + textviewTy.setVisibility(View.VISIBLE); + ycmsLl.setVisibility(View.GONE); + et_jg.setText("备用"); + textviewTy.setText("备用"); + RGZC.setVisibility(View.GONE); + ycmsLl.setVisibility(View.GONE); + break; + default: + et_jg.setText(info.getCJJG()); + rbzc.setText(info.getCJJG()); + rbzc.setChecked(true); + rbbzc.setChecked(false); + break; + } + } + } + } + + public void getBlueToothData(String bluetoothdata) { + if (writebleinfo.equals("0")) { + et_jg.setText(bluetoothdata); + } else if (writebleinfo.equals("1")) { + + } + } + + public String getCJJG() { + return et_jg.getText().toString().trim(); + } + + public String getYc_Fxnr() { + return etYcFxnr.getText().toString().trim(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/ChangeYulActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/ChangeYulActivity.java new file mode 100755 index 0000000..0daff93 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/ChangeYulActivity.java @@ -0,0 +1,177 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.view.View; +import android.widget.ListView; +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.contans.Contans; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + +public class ChangeYulActivity extends BaseActivity { + + ListView lv; + private boolean isEdit = true; + private int item; + // private ArrayList djjhs = new ArrayList<>(); + private List xdjjhxzDataBeanList = new ArrayList<>();//工作列表 + private ArrayList qyddataBeanList = new ArrayList<>();//点检记录列表 + private List infos = new ArrayList<>(); + private View headView; + private DlbAdapter adapter; + private int itemposition; + private String LX, LXResult; + /** + * 广播 + */ + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + //更新指定item + String action = intent.getAction(); + switch (action) { + case Contans.ACTION_YULONE: //更新设备点检页面返回时编辑的item内容 + + int position = intent.getIntExtra(Contans.KEY_POSITION, -1); + String name = intent.getStringExtra(Contans.KEY_NAME); + DlbInfo dlbInfo = infos.get(position); + dlbInfo.setCjjg(name); + dlbInfo.setStatu(true); + infos.set(position, dlbInfo); + + QYDDATABean qyddataBean = qyddataBeanList.get(position); + qyddataBean.setChecked(true); + qyddataBean.setCJJG(name); + qyddataBeanList.set(position, qyddataBean); + + break; + default: + break; + } + + } + }; + + @Override + public int getContentViewID() { + return R.layout.activity_yul; + } + + @Override + protected void initView() { + + setBack(); + setTitle("浏览点检记录"); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv = findViewById(R.id.lv); + + } + + @Override + public void initData() { + + + Bundle bundle = getIntent().getExtras(); + isEdit = bundle.getBoolean("edit"); +// qyddataBeanList = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + item = bundle.getInt(Contans.KEY_ITEM); + itemposition = bundle.getInt("itemposition"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + + searchdata(); + setListAdapter(); + + //创建filter + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULONE); + //注册广播 + registerReceiver(myReceiver, filter); + } + + private void searchdata() { + if (LX.equals("Click")) { + + + xdjjhxzDataBeanList.clear(); + //获取本地所有的工作列表数据 + xdjjhxzDataBeanList.addAll(DataSupport.findAll(XDJJHXZDataBean.class)); + qyddataBeanList.clear(); + //获取当前点击的工作栏对应的点检记录列表 + qyddataBeanList.addAll(where("xdjjhxzDataBean_id = ?", xdjjhxzDataBeanList.get(itemposition).getId() + "").find(QYDDATABean.class)); + + } else if (LX.equals("QRcode")) { + + + List qydDataBeen = DataSupport.where("QYEWM = ?", LXResult).find(QYDDATABean.class);//ewm是根据扫描得到的二维码结果来查询 + + qyddataBeanList.clear(); + qyddataBeanList.addAll(qydDataBeen); + + } else if (LX.equals("NFC")) { + + + List qydDataBeen = DataSupport.where("QYNFC = ?", LXResult).find(QYDDATABean.class); + + qyddataBeanList.clear(); + qyddataBeanList.addAll(qydDataBeen); + + } + } + + private void setListAdapter() { + + for (QYDDATABean rw : qyddataBeanList) { + DlbInfo info = new DlbInfo(); + info.setCjjg(rw.getCJJG()); + info.setDian(rw.getSBMC() + " - " + rw.getBJMC()); + info.setStatu(rw.isChecked()); + infos.add(info); + } + + adapter = new DlbAdapter(context, infos); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((parent, view, position, id) -> { + + Intent intent = new Intent(ChangeYulActivity.this, SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanList); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, position - 1); + bundle.putInt("itemposition", itemposition); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivity(intent); + finish(); + }); + } + + @Override + protected void onResume() { + super.onResume(); + //更新list + searchdata(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + //反注册广播(注销) + unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjMainActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjMainActivity.java new file mode 100755 index 0000000..b76ca98 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjMainActivity.java @@ -0,0 +1,53 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import com.google.android.material.tabs.TabLayout; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import com.rehome.scbaxj.base.BaseActivity; + +import java.util.ArrayList; +import java.util.List; + +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +/** + * 设备巡点检管理--现场点检 + */ +public class DjMainActivity extends BaseActivity { + + private ViewPager mViewPager; + private TabLayout mTabLayout; + private List fragments = new ArrayList<>(); + + @Override + public int getContentViewID() { + return R.layout.activity_maindj; + } + + protected void initView() { + + } + + public void initData() { + setTitle("点检数据管理"); + mViewPager = findViewById(R.id.viewpager); + setBack(); + initViewPager(); + } + + private void initViewPager() { + mTabLayout = findViewById(R.id.tabs); + List titles = new ArrayList<>(); + titles.add("数据下载"); + titles.add("数据上传"); + for (int i = 0; i < titles.size(); i++) { + mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(i))); + } + fragments.add(new XzjhFragment()); + fragments.add(new DjdscFragment()); + FragmentAdapter mFragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), fragments, titles); + mViewPager.setAdapter(mFragmentAdapter); + mTabLayout.setupWithViewPager(mViewPager); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjdscFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjdscFragment.java new file mode 100755 index 0000000..fd82271 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjdscFragment.java @@ -0,0 +1,303 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import com.rehome.scbaxj.DBModel.Djjh; +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.ScjhAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.ScdjjhBean; +import com.rehome.scbaxj.bean.StatusInfo2; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.HttpResponseListener; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.utils.UiUtlis; +import com.rehome.scbaxj.weight.toastviewbymyself; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.RequestQueue; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import androidx.appcompat.app.AlertDialog; + +/** + * 设备巡点检管理-点检点上传 + */ +public class DjdscFragment extends BaseFragment { + + ListView lv; + Button btn_sc; + Button btn_del; + TextView tvNodata; + + private View headView; + private View head; + private CheckBox cb; + private ScjhAdapter adapter; + private RequestQueue queue; + private int checkedCount = 0, totalCount = 0;//已选中的item中,已检测的数量和总数 + private final String separator = "/";//分割线 + private int selectItem = 0;//选中的item数量 + NumberFormat numberFormat = NumberFormat.getInstance(); + private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //所有的XDJJHXZDataBean数据 + private List xdjjhxzDataBeanList = new ArrayList<>(); + //当前查询的gwid + private String gwid = ""; + //点检计划列表数据源 + private List xdjjhxzDataList = new ArrayList<>(); + //点检计划map + private Map> qydDataBeanMap = new HashMap<>(); + public DjdscFragment() { + } + public static DjdscFragment newInstance() { + DjdscFragment fragment = new DjdscFragment(); + return fragment; + } + @Override + protected void initView() { + lv = view.findViewById(R.id.lv); + btn_sc = view.findViewById(R.id.btn_sc); + btn_del = view.findViewById(R.id.btn_del); + tvNodata = view.findViewById(R.id.tv_nodata); + + btn_sc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (selectItem == 0) { + toastviewbymyself.makeText(getActivity(), "请先选中要上传的数据!!!", Toast.LENGTH_LONG).show(); + } else { + uploadData(); + } + } + }); + + btn_del.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + deleteData();//删除勾选中的数据 + } + }); + + lv.setEmptyView(tvNodata); + mActivity = getActivity(); + headView = View.inflate(context, R.layout.scjh_item, null); + head = headView.findViewById(R.id.head); + cb = headView.findViewById(R.id.cb); + cb.setOnClickListener(view -> { + checkedCount = 0; + totalCount = 0; + selectItem = 0; + for (int i = 0; i < xdjjhxzDataList.size(); i++) { + xdjjhxzDataList.get(i).setChecked(cb.isChecked()); + adapter.notifyDataSetChanged(); + if (cb.isChecked()) { + String[] countStr = xdjjhxzDataList.get(i).getCountPercent().split(separator); + checkedCount += Integer.parseInt(countStr[0]); + totalCount += Integer.parseInt(countStr[1]); + } + } + if (cb.isChecked()) { + selectItem = xdjjhxzDataList.size(); + } + }); + + } + + @Override + public int getContentViewId() { + return R.layout.fragment_djdsc; + } + + public void initData() { + queue = NoHttp.newRequestQueue(1); + getDataInSQL(); + setListData(); + numberFormat.setMaximumFractionDigits(2); + } + void getDataInSQL() { + xdjjhxzDataList.clear(); + qydDataBeanMap.clear(); + xdjjhxzDataBeanList.clear(); + xdjjhxzDataBeanList.addAll(DataSupport.findAll(XDJJHXZDataBean.class)); + for (int i = 0; i < xdjjhxzDataBeanList.size(); i++) { + if (!xdjjhxzDataBeanList.get(i).getGWID().equals(gwid)) { + List qydDataBeen = DataSupport.where("GWID = ?", xdjjhxzDataBeanList.get(i).getGWID()).find(QYDDATABean.class); + gwid = xdjjhxzDataBeanList.get(i).getGWID(); + int count = 0; + for (int j = 0; j < qydDataBeen.size(); j++) { + if (qydDataBeen.get(j).isChecked()) { + count++; + } + } + XDJJHXZDataBean xdjjhxzDataBean = new XDJJHXZDataBean(); + xdjjhxzDataBean.setGWMC(xdjjhxzDataBeanList.get(i).getGWMC()); + xdjjhxzDataBean.setGWID(xdjjhxzDataBeanList.get(i).getGWID()); + xdjjhxzDataBean.setCountPercent(count + separator + qydDataBeen.size()); + xdjjhxzDataBean.setQYBH(xdjjhxzDataBeanList.get(i).getQYBH()); + xdjjhxzDataList.add(xdjjhxzDataBean); + qydDataBeanMap.put(xdjjhxzDataBeanList.get(i).getGWID(), qydDataBeen); + } + } + } + private void setListData() { + adapter = new ScjhAdapter(context, xdjjhxzDataList, view -> { + CheckBox checkBox = (CheckBox) view; + int index = (int) checkBox.getTag(); + xdjjhxzDataList.get(index).setChecked(checkBox.isChecked()); + calculateSelectedCount(); + cb.setChecked(selectItem == xdjjhxzDataList.size()); + adapter.notifyDataSetChanged(); + }); + + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, i, l) -> { + xdjjhxzDataList.get(i - 1).setChecked(!xdjjhxzDataList.get(i - 1).isChecked()); + calculateSelectedCount(); + cb.setChecked(selectItem == xdjjhxzDataList.size()); + adapter.notifyDataSetChanged(); + }); + } + private void calculateSelectedCount() { + selectItem = 0; + checkedCount = 0; + totalCount = 0; + for (int a = 0; a < xdjjhxzDataList.size(); a++) { + if (xdjjhxzDataList.get(a).isChecked()) { + selectItem++; + String[] countStr = xdjjhxzDataList.get(a).getCountPercent().split(separator); + checkedCount += Integer.parseInt(countStr[0]); + totalCount += Integer.parseInt(countStr[1]); + } + } + } + + private void uploadData() { + String USERNAME = (String) SPUtils.get(context, Contans.USERID, ""); + ScdjjhBean scdjjhbean = new ScdjjhBean(); + scdjjhbean.setAction("DJ_GWSC_SET"); + scdjjhbean.setYHID(USERNAME); + List djDataList = new ArrayList<>(); + List qydjDataList = new ArrayList<>(); + for (int i = 0; i < xdjjhxzDataList.size(); i++) { + ScdjjhBean.DJ_DATA dhdata = new ScdjjhBean.DJ_DATA(); + if (xdjjhxzDataList.get(i).isChecked()) { + final List qyddataBeanList = qydDataBeanMap.get(xdjjhxzDataList.get(i).getGWID()); + scdjjhbean.setGWID(xdjjhxzDataList.get(i).getGWID()); + scdjjhbean.setGWMC(xdjjhxzDataList.get(i).getGWMC()); + dhdata.setQYBH(xdjjhxzDataList.get(i).getQYBH()); + dhdata.setQYDJ_ST(sdf.format(new Date())); + for (int j = 0; j < qyddataBeanList.size(); j++) { + ScdjjhBean.DJ_DATA.QYDJ_DATA qydj_data = new ScdjjhBean.DJ_DATA.QYDJ_DATA(); + qydj_data.setSCID(qyddataBeanList.get(j).getSCID()); + if (TextUtils.isEmpty(qyddataBeanList.get(j).getDATE())) { + qydj_data.setDJSJ(""); + } else { + qydj_data.setDJSJ(qyddataBeanList.get(j).getDATE()); + } + if (TextUtils.isEmpty(qyddataBeanList.get(j).getCJJG())) { + qydj_data.setDJSZ(""); + qydj_data.setSBZT(""); + } else { + qydj_data.setDJSZ(qyddataBeanList.get(j).getCJJG()); + qydj_data.setFXNR(qyddataBeanList.get(j).getFXNR()); + if (qyddataBeanList.get(j).getCJJG().equals("已停用")) { + qydj_data.setSBZT("3"); + qydj_data.setFXNR(""); + }else if (qyddataBeanList.get(j).getCJJG().equals("备用")){ + qydj_data.setSBZT("5"); + qydj_data.setFXNR(""); + } else if (qyddataBeanList.get(j).getCJJG().equals("大小修")) { + qydj_data.setSBZT("4"); + qydj_data.setFXNR(""); + } else { + qydj_data.setSBZT("1"); + } + } + qydj_data.setSMFS("NFC"); + qydjDataList.add(qydj_data); + } + dhdata.setQYDJ_DATA(qydjDataList); + djDataList.add(dhdata); + scdjjhbean.setDJ_DATA(djDataList); + final String json = GsonUtils.GsonString(scdjjhbean); + sCData(json); + } + } + + } + private void sCData(String json) { + Request request = NoHttp.createStringRequest(Contans.IP + Contans.DJJHSC, RequestMethod.POST); + request.setDefineRequestBodyForJson(json); + queue.add(1, request, new HttpResponseListener<>(getActivity(), request, callback, false, true, "上传数据中...请稍等...")); + } + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + StatusInfo2 info = GsonUtils.GsonToBean(response.get(), StatusInfo2.class); + try { + if (what == 1) { + if (info.getState() == 1) { + for (int i = 0; i < xdjjhxzDataList.size(); i++) { + if (xdjjhxzDataList.get(i).isChecked()) { + DataSupport.deleteAll(XDJJHXZDataBean.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + DataSupport.deleteAll(QYDDATABean.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + DataSupport.deleteAll(Djjh.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + xdjjhxzDataList.remove(xdjjhxzDataList.get(i)); + } + } + adapter.notifyDataSetChanged(); + } else { + showToast(info.getMsg()); + } + } + } catch (Exception e) { + showToast(UiUtlis.getString(context, R.string.data_error)); + + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }; + private void deleteData() { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("提示"); + builder.setTitle("你确定要删除?"); + builder.setNegativeButton("取消", (dialog, which) -> dialog.dismiss()); + builder.setPositiveButton("确定", (dialog, which) -> { + for (int i = 0; i < xdjjhxzDataList.size(); i++) { + if (xdjjhxzDataList.get(i).isChecked()) { + DataSupport.deleteAll(XDJJHXZDataBean.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + DataSupport.deleteAll(QYDDATABean.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + DataSupport.deleteAll(Djjh.class, "GWID = ?", xdjjhxzDataList.get(i).getGWID()); + } + } + getDataInSQL(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + }); + builder.show(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjgwListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjgwListActivity.java new file mode 100755 index 0000000..66ce426 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/DjgwListActivity.java @@ -0,0 +1,131 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + + +import static org.litepal.crud.DataSupport.where; + +/** + * Created by ruihong on 2018/5/23. + */ + +public class DjgwListActivity extends BaseActivity3 { + ListView lv; + TextView tvNodata; + private View headView; + //所有的XDJJHXZDataBean数据 + private List xdjjhxzDataBeanList = new ArrayList<>(); + //点检计划列表数据源 + private List xdjjhxzDataList = new ArrayList<>(); + //传递的数据源 + ArrayList xdjjhxzDataBeanList2 = new ArrayList<>(); + private String gwid = ""; + private CommonAdapter adapter; + + + @Override + public int getLayoutId() { + return R.layout.activity_sdjgw; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.djgwlist_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + } + + @Override + public void initData() { + initToolbar("岗位列表", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + getDataInSQL(); + setListData(); + + } + + + public void getDataInSQL() { + xdjjhxzDataBeanList.clear(); + xdjjhxzDataBeanList.addAll(DataSupport.findAll(XDJJHXZDataBean.class)); + xdjjhxzDataList.clear(); + for (int i = 0; i < xdjjhxzDataBeanList.size(); i++) { + if (!xdjjhxzDataBeanList.get(i).getGWID().equals(gwid)) { + List qydDataBeen = where("GWID = ?", xdjjhxzDataBeanList.get(i).getGWID()).find(QYDDATABean.class); + gwid = xdjjhxzDataBeanList.get(i).getGWID(); + //点检计划列表bean + XDJJHXZDataBean xdjjhxzDataBean = new XDJJHXZDataBean(); + xdjjhxzDataBean.setGWMC(xdjjhxzDataBeanList.get(i).getGWMC()); + xdjjhxzDataBean.setGWID(xdjjhxzDataBeanList.get(i).getGWID()); + xdjjhxzDataBean.setQYBH(xdjjhxzDataBeanList.get(i).getQYBH()); +// xdjjhxzDataBean.setCountPercent(count + "/" + qydDataBeen.size()); +// xdjjhxzDataBean.setQYBH(xdjjhxzDataBeanList.get(i).getQYBH()); + xdjjhxzDataList.add(xdjjhxzDataBean); + } + } + } + + private void setListData() { + if (adapter == null) { + adapter = new CommonAdapter(context, R.layout.djgwlist_item, xdjjhxzDataList) { + @Override + protected void convert(ViewHolder viewHolder, XDJJHXZDataBean item, int position) { + viewHolder.setText(R.id.tv_qymc, item.getGWMC()); +// viewHolder.setText(R.id.tv_xh, item.getSN() + ""); +// viewHolder.setText(R.id.tv_qymc, item.getGWMC() + "--" + item.getQYMC()); +// viewHolder.setText(R.id.tv_djrw, checkedCount + "/" + qyddataBeen.size()); + + } + }; + + + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, postion, l) -> { + String GWID = xdjjhxzDataList.get(postion - 1).getGWID(); + Bundle bundle = new Bundle(); + Intent intent = new Intent(DjgwListActivity.this, SdjgzActivity.class); + bundle.putString("GWID", GWID); + intent.putExtras(bundle); + startActivity(intent); + + }); + } else { + adapter.notifyDataSetChanged(); + } + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FXFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FXFragment.java new file mode 100755 index 0000000..30ca060 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FXFragment.java @@ -0,0 +1,53 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import com.rehome.scbaxj.DBModel.QYAQFXDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.GwfxListAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import java.util.ArrayList; + +public class FXFragment extends BaseFragment { + + + ListView lv; + private ArrayList qyddataBeanArrayList; + GwfxListAdapter gwfxlistadapter; + + @Override + public int getContentViewId() { + return R.layout.fragment_fx; + } + + @Override + protected void initView() { + lv = view.findViewById(R.id.lv); + + qyddataBeanArrayList = new ArrayList<>(); + requestDatas(); + } + + private void requestDatas() { + Bundle bundle = getActivity().getIntent().getExtras(); + qyddataBeanArrayList = bundle.getParcelableArrayList("QYFXTS"); + setAdapter(); + } + + private void setAdapter() { + gwfxlistadapter = new GwfxListAdapter(context, qyddataBeanArrayList); + lv.setAdapter(gwfxlistadapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, final int position, long id) { + + + } + }); + + + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FfFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FfFragment.java new file mode 100755 index 0000000..fad0376 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FfFragment.java @@ -0,0 +1,68 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.os.Bundle; +import android.widget.EditText; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + +/** + * 安健环巡查管理-方法 + */ +public class FfFragment extends BaseFragment { + + + EditText et_ff; + + private String ff; + + private boolean isEdit; + + public FfFragment() { + } + + public static FfFragment newInstance(boolean b, String ff) { + Bundle bundle = new Bundle(); + bundle.putBoolean("edit", b); + bundle.putString("ff", ff); + FfFragment fragment = new FfFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle bundle = getArguments(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + ff = bundle.getString("ff"); + } + } + + @Override + protected void initView() { + et_ff = view.findViewById(R.id.et_ff); + et_ff.setEnabled(isEdit); + update(ff); + } + + @Override + public int getContentViewId() { + return R.layout.fragment_ff; + } + + public void initData() { + } + + + + /** + * 更新数据 + * + * @param aaa + */ + public void update(String aaa) { + et_ff.setText(aaa); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FragmentAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FragmentAdapter.java new file mode 100755 index 0000000..bf33749 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/FragmentAdapter.java @@ -0,0 +1,33 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; + +import java.util.List; + +public class FragmentAdapter extends FragmentStatePagerAdapter { + private List mFragments; + private List mTitles; + + public FragmentAdapter(FragmentManager fm, List fragments, List titles) { + super(fm); + mFragments = fragments; + mTitles = titles; + } + + @Override + public Fragment getItem(int position) { + return mFragments.get(position); + } + + @Override + public int getCount() { + return mFragments.size(); + } + + @Override + public CharSequence getPageTitle(int position) { + return mTitles.get(position); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/MainSbxdjglActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/MainSbxdjglActivity.java new file mode 100755 index 0000000..537c46f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/MainSbxdjglActivity.java @@ -0,0 +1,154 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Build; +import android.view.WindowManager; +import android.widget.GridView; + +import com.rehome.scbaxj.DBModel.Djjh; +import com.rehome.scbaxj.DBModel.DjjhList; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.yhpc.YhpcDataListActivity; +import com.rehome.scbaxj.adapter.GridViewAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.GridViewBean; +import com.rehome.scbaxj.bean.XscbRequestBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.utils.StatusBarUtil; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + +/** + * Created by ruihong on 2017/11/24. + */ + +public class MainSbxdjglActivity extends BaseActivity { + + GridView gv; + private String[] str = {"点检任务", "点检工作", "隐患排查上传", "隐患整改上传"}; + private int[] imageId = {R.mipmap.icon3, R.mipmap.icon6, R.mipmap.icon_dxj, R.mipmap.icon_dxj}; + private int[] colors = {R.drawable.radius_b1, R.drawable.radius_b2, R.drawable.radius_b1, R.drawable.radius_b1}; + private GridViewAdapter adapter; + + @Override + public int getContentViewID() { + return R.layout.activity_sbxdjgl; + } + + protected void initView() { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + StatusBarUtil.transparencyBar(MainSbxdjglActivity.this); + + gv = findViewById(R.id.gv); + } + + public void initData() { + mToolbar.setBackgroundColor(Color.parseColor("#00000000")); + setTitle("设备点检"); + downloadDjData(); + setBack(); + adapter = new GridViewAdapter(this, getGridViewData(), new ArrayList<>(), true); + gv.setSelector(new ColorDrawable(Color.TRANSPARENT)); + gv.setAdapter(adapter); + gv.setOnItemClickListener((adapterView, view, i, l) -> { + Intent intent; + switch (i) { + case 0: + intent = new Intent(MainSbxdjglActivity.this, DjMainActivity.class); + startActivity(intent); + break; + case 1: + intent = new Intent(MainSbxdjglActivity.this, DjgwListActivity.class); + startActivity(intent); + break; + case 2: + intent = new Intent(MainSbxdjglActivity.this, YhpcDataListActivity.class); + startActivity(intent); + break; + case 3: + showToast("此功能还在开发中..."); + break; + + } + }); + } + + private List getGridViewData() { + + List datas = new ArrayList<>(); + for (int i = 0; i < str.length; i++) { + GridViewBean bean = new GridViewBean(); + bean.setTitle(str[i]); + bean.setBackgroup(colors[i]); + bean.setImageid(imageId[i]); + bean.setShow(false); + datas.add(bean); + } + return datas; + } + + private void downloadDjData() { + Request requestdj = NoHttp.createStringRequest(Contans.IP + Contans.DJJHLIST, RequestMethod.POST); + requestdj.setDefineRequestBodyForJson(createZyJson()); + NohttpUtils.getInstance().add(null, 1, requestdj, callback, false, false, "加载中..."); + } + + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + if (what == 1) { +// Log.e("serviceData", response.get()); + DjjhList list = GsonToBean(response.get(), DjjhList.class); + if (list != null) { + if (list.getState().equals("1")) { + int dbcount = -1;//数据库中是否有数据 + List djjhs = list.getData();//服务器数据 + //先删除未下载的计划 + DataSupport.deleteAll(Djjh.class, "download = 0"); + for (Djjh djjh : djjhs) { + List dbdjjh = DataSupport.where("GWID = ? and download = ?", djjh.getGWID(), "1").find(Djjh.class); + //如果数据库中没有这条数据,就添加到数据库 + if (dbdjjh.size() == 0) { + dbcount = 1; + djjh.save(); + } + } + if (dbcount == 1) { +// shownotification(1, "您有新的点检计划"); + } + } else { + DataSupport.deleteAll(Djjh.class, "download = 0"); + } + } + } + } + + @Override + public void onFailed(int what, Response response) { + } + }; + + private String createZyJson() { + String GWID = (String) SPUtils.get(getApplicationContext(), Contans.BZBH, ""); + String YHID = (String) SPUtils.get(getApplicationContext(), Contans.USERID, ""); + XscbRequestBean info = new XscbRequestBean(); + info.setAction("DJ_GWLIST_GET"); + info.setGWID(GWID); + info.setYHID(YHID); + String json = GsonUtils.GsonString(info); + return json; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/OldqxgdFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/OldqxgdFragment.java new file mode 100755 index 0000000..bcf24d6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/OldqxgdFragment.java @@ -0,0 +1,30 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + + +public class OldqxgdFragment extends BaseFragment { + + + @Override + public int getContentViewId() { + return R.layout.fragment_oldqxgd; + } + + @Override + protected void initView() { + + } + + @Override + public void initData() { + + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/QxgdFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/QxgdFragment.java new file mode 100755 index 0000000..084cfb9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/QxgdFragment.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj.activity.sbxdj; + + + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; + + +public class QxgdFragment extends BaseFragment { + + + @Override + public int getContentViewId() { + return R.layout.fragment_qxgd; + } + + @Override + protected void initView() { + + } + + + @Override + public void initData() { + + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbSelectActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbSelectActivity.java new file mode 100755 index 0000000..cdd44e6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbSelectActivity.java @@ -0,0 +1,129 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.contans.Contans; + +import java.util.ArrayList; +import java.util.List; + +public class SbSelectActivity extends BaseActivity { + + ListView lv; + + private boolean isEdit = true; + private int item; + private ArrayList djjhs = new ArrayList<>(); + private List infos = new ArrayList<>(); + private View headView; + private DlbAdapter adapter; + + /** + * 广播 + */ + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + //更新指定item + String action = intent.getAction(); + if (Contans.ACTION_YULONE.equals(action)) { //更新设备点检页面返回时编辑的item内容 + int position = intent.getIntExtra(Contans.KEY_POSITION, -1); + String name = intent.getStringExtra(Contans.KEY_NAME); + DlbInfo dlbInfo = infos.get(position); + dlbInfo.setCjjg(name); + dlbInfo.setStatu(true); + infos.set(position, dlbInfo); + QYDDATABean qyddataBean = djjhs.get(position); + qyddataBean.setChecked(true); + qyddataBean.setCJJG(name); + djjhs.set(position, qyddataBean); + + } + + } + }; + + @Override + public int getContentViewID() { + return R.layout.activity_yul; + } + + @Override + protected void initView() { + setBack(); + setTitle("浏览点检记录"); + lv = findViewById(R.id.lv); + } + + @Override + public void initData() { + + Bundle bundle = getIntent().getExtras(); + isEdit = bundle.getBoolean("edit"); + djjhs = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + item = bundle.getInt(Contans.KEY_ITEM); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + setListAdapter(); + + //创建filter + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULONE); + //注册广播 + registerReceiver(myReceiver, filter); + } + + private void setListAdapter() { + + for (QYDDATABean rw : djjhs) { + DlbInfo info = new DlbInfo(); + info.setCjjg(rw.getCJJG()); + info.setDian(rw.getSBMC() + " - " + rw.getBJMC()); + info.setStatu(rw.isChecked()); + infos.add(info); + } + + adapter = new DlbAdapter(context, infos); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + Intent intent = new Intent(SbSelectActivity.this, SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, djjhs); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, position - 1); + intent.putExtras(bundle); + startActivity(intent); + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + //更新list + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + //反注册广播(注销) + unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbxdjcjsbActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbxdjcjsbActivity.java new file mode 100755 index 0000000..2359946 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SbxdjcjsbActivity.java @@ -0,0 +1,286 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.RadioButton; +import android.widget.Toast; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.SetSbModel; +import com.rehome.scbaxj.bleUtil.BluetoothLeService; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.weight.AutoRadioGroup; +import com.rehome.scbaxj.weight.NoscrollViewPager; +import com.rehome.scbaxj.weight.toastviewbymyself; + +import org.litepal.crud.DataSupport; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import androidx.fragment.app.Fragment; + +/** + * Created by ruihong on 2017/11/30. + */ + +public class SbxdjcjsbActivity extends BaseActivity3 { + + //录入和选择 + public static int Req = 101; + + NoscrollViewPager vp; + RadioButton rb1; + RadioButton rb2; + RadioButton rb3; + AutoRadioGroup rg; + Button btnSaveNext; + Button btnNext; + Button btnLast; + private MyFragmentAdapter adapter; + private List list; + private CJFragment cj; + private FfFragment ff; + private BzFragment bz; + private int item = 0;//当前的item + private boolean isEdit = true; + private int index = 0; + private int itemposition; + private String LX, LXResult; + private ArrayList qyddataBeanArrayList; + private SimpleDateFormat sdf; + private ArrayList setSbModelList; + + @Override + public int getLayoutId() { + return R.layout.activity_sbxdjcjsb; + } + + @Override + public void initView() { + vp = findViewById(R.id.vp); + rb1 = findViewById(R.id.rb1); + rb2 = findViewById(R.id.rb2); + rb3 = findViewById(R.id.rb3); + rg = findViewById(R.id.rg); + btnSaveNext = findViewById(R.id.btn_save_next); + btnNext = findViewById(R.id.btn_next); + btnLast = findViewById(R.id.btn_last); + btnLast.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + --item; + if (item == 0) { + btnLast.setEnabled(false); + item++; + showToast("当前为第一条"); + } else { + cj.updata(qyddataBeanArrayList.get(item - 1), item, qyddataBeanArrayList.size()); + bz.updata(qyddataBeanArrayList.get(item - 1).getBZZ()); + ff.update(qyddataBeanArrayList.get(item - 1).getJCFS()); + } + } + }); + btnNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + next(); + } + }); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != RESULT_OK) return; + if (requestCode == Req) { + if (data != null) { + setSbModelList = data.getParcelableArrayListExtra("setSbModelList"); + for (int i = 0; i < setSbModelList.size(); i++) { + for (int j = 0; j < qyddataBeanArrayList.size(); j++) { + if (qyddataBeanArrayList.get(j).getSBID().equals(setSbModelList.get(i).getSbId())) { + qyddataBeanArrayList.get(j).setCJJG(setSbModelList.get(i).getValue()); + qyddataBeanArrayList.get(j).setChecked(setSbModelList.get(i).getStatu()); + } + } + } + if (cj != null) { + cj.updateState(qyddataBeanArrayList.get(index).getCJJG()); + cj.updateFXNR(qyddataBeanArrayList.get(index).getFXNR()); + cj.updatecheck(qyddataBeanArrayList.get(index).isChecked()); + } + } + } + } + + public void initData() { + + initToolbar("设备点检信息", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); + sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Bundle bundle = SbxdjcjsbActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + qyddataBeanArrayList = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + index = bundle.getInt(Contans.KEY_ITEM); + item = bundle.getInt(Contans.KEY_ITEM) + 1; + itemposition = bundle.getInt("itemposition"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + } + + if (!isEdit) { + btnSaveNext.setVisibility(View.GONE); + } + list = new ArrayList<>(); + if (qyddataBeanArrayList.size() != 0) { + cj = CJFragment.newInstance(isEdit, qyddataBeanArrayList.get(index), qyddataBeanArrayList.size(), index + 1); + ff = FfFragment.newInstance(isEdit, qyddataBeanArrayList.get(index).getJCFS()); + bz = BzFragment.newInstance(isEdit, qyddataBeanArrayList.get(index).getBZZ()); + } else { + cj = CJFragment.newInstance(isEdit, new QYDDATABean(), 0, 0); + ff = FfFragment.newInstance(isEdit, ""); + bz = BzFragment.newInstance(isEdit, ""); + } + list.add(cj); + list.add(ff); + list.add(bz); + adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); + vp.setAdapter(adapter); + vp.setOffscreenPageLimit(3); + rg.setOnCheckedChangeListener((radioGroup, i) -> { + if(i==R.id.rb1){ + rb1.setTextColor(Color.WHITE); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(0, false); + }else if(i==R.id.rb2){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.WHITE); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(1, false); + }else if(i==R.id.rb3){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.WHITE); + vp.setCurrentItem(2, false); + } + }); + + } + + public void next() { + if (qyddataBeanArrayList.size() != 0) { + btnNext.setEnabled(false);//避免“点击下一条”操作过快 + if (isEdit) { + if (TextUtils.isEmpty(cj.getCJJG())) { + toastviewbymyself.makeText(context, "你没有数据采集结果!", Toast.LENGTH_SHORT).show(); + } else { + ContentValues values = new ContentValues(); + values.put("checked", true); + values.put("CJJG", cj.getCJJG()); + values.put("FXNR", cj.getYc_Fxnr()); + values.put("DATE", sdf.format(new Date())); + int i = DataSupport.updateAll(QYDDATABean.class, values, "SCID = ?", qyddataBeanArrayList.get(item - 1).getSCID()); + if (i != 0) { + qyddataBeanArrayList.get(item - 1).setChecked(true); + qyddataBeanArrayList.get(item - 1).setCJJG(cj.getCJJG()); + showToast("保存数据成功!!"); + updateItem(cj.getCJJG(), item - 1); + } else { + showToast("保存数据失败!!"); + } + item++; + if (item > qyddataBeanArrayList.size()) { + item--; + cj.updata(qyddataBeanArrayList.get(item - 1), item, qyddataBeanArrayList.size()); + showToast("最后一条数据了"); + setResult(RESULT_OK, new Intent(SbxdjcjsbActivity.this, Yul_SBActivity.class)); + finish(); + } else { + cj.updata(qyddataBeanArrayList.get(item - 1), item, qyddataBeanArrayList.size()); + bz.updata(qyddataBeanArrayList.get(item - 1).getBZZ()); + ff.update(qyddataBeanArrayList.get(item - 1).getJCFS()); + } + } + } else { + item++; + if (item > qyddataBeanArrayList.size()) { + item--; + showToast("最后一条数据了"); + } else { + cj.updata(qyddataBeanArrayList.get(item - 1), item, qyddataBeanArrayList.size()); + bz.updata(qyddataBeanArrayList.get(item - 1).getBZZ()); + ff.update(qyddataBeanArrayList.get(item - 1).getJCFS()); + } + } + btnNext.setEnabled(true); + if (!btnLast.isEnabled()) { + btnLast.setEnabled(true); + } + } + } + + public int getItem() { + return item - 1; + } + + private void updateItem(String name, int position) { + Intent intent = new Intent(Contans.ACTION_YULONE); + intent.putExtra(Contans.KEY_POSITION, position); + intent.putExtra(Contans.KEY_NAME, name); + sendBroadcast(intent); + + } + + + private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + String Data = ""; + if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { + String BleData = intent.getStringExtra(BluetoothLeService.EXTRA_DATA); + String type = BleData.substring(0, 1); + if (type.equals("T")) { + Data = "温度:" + BleData.substring(2, 6); + } else { + Data = "震动:" + BleData.substring(2, 6); + } + cj.getBlueToothData(Data); + } + } + }; + + static IntentFilter makeGattUpdateIntentFilter() { + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED); + intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE); + return intentFilter; + } + + @Override + protected void onDestroy() { + unregisterReceiver(mGattUpdateReceiver); + super.onDestroy(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjSbListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjSbListActivity.java new file mode 100755 index 0000000..46fa4a0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjSbListActivity.java @@ -0,0 +1,194 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.SetSbModel; +import com.rehome.scbaxj.bean.sbInfo; +import com.rehome.scbaxj.contans.Contans; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + +/** + * 设备巡点检管理-点检设备列表 + */ +public class SdjSbListActivity extends BaseActivity3 { + ListView lv; + TextView tvNodata; + private View headView; + private CommonAdapter adapter; + private List qyddataBeanArrayList; + private boolean isEdit = true; + private int item; + private ArrayList infos; + Intent intent; + private String LX, LXResult; + private int itemposition; + private int from;//0-来自工作页面;1-采集页面 + private long xdjjhxzDataBean_id; + private String GWID; + private ArrayList setSbModelList = new ArrayList<>(); + + @Override + public int getLayoutId() { + return R.layout.activity_sblist; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.djajhsb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + } + + @Override + public void initData() { + initNFC(); + initToolbar("当前设备", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + if (from == 0) { //工作页面 + finish(); + } else if (from == 1) { //采集页面 + Intent intent = new Intent(SdjSbListActivity.this, SbxdjcjsbActivity.class); + intent.putParcelableArrayListExtra("setSbModelList", setSbModelList); + setResult(RESULT_OK, intent); + } + } + }, new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + Bundle bundle = SdjSbListActivity.this.getIntent().getExtras(); + + qyddataBeanArrayList = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + item = bundle.getInt(Contans.KEY_ITEM); + GWID = bundle.getString("GWID"); + isEdit = bundle.getBoolean("edit"); + itemposition = bundle.getInt("itemposition"); + xdjjhxzDataBean_id = bundle.getLong("xdjjhxzDataBean_id"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + from = bundle.getInt("from"); + + switch (LX) { + case "Click": + qyddataBeanArrayList = where("xdjjhxzDataBean_id = ?", xdjjhxzDataBean_id + "").find(QYDDATABean.class); + break; + case "NFC": + qyddataBeanArrayList = where("QYNFC = ?", LXResult + "").find(QYDDATABean.class); + break; + } + setListData(); + } + + + private void setListData() { + infos = new ArrayList<>(); + LinkedHashMap maps = new LinkedHashMap(); + for (QYDDATABean rw : qyddataBeanArrayList) { + sbInfo sbinfo = new sbInfo(); + sbinfo.setSbmc(rw.getSBMC()); + sbinfo.setQybh(rw.getQYBH()); + sbinfo.setSbid(rw.getSBID()); + sbinfo.setSbstate(rw.getSBMCSTATE()); + String Key = rw.getSBID() + "_" + rw.getSBMC(); + sbInfo data = maps.get(Key); + if (data == null) { + maps.put(Key, sbinfo); + } + } + infos.addAll(maps.values()); + adapter = new CommonAdapter(context, R.layout.djajhsb_item, infos) { + @Override + protected void convert(ViewHolder viewHolder, sbInfo item, int position) { + viewHolder.setText(R.id.tv_sbmc, item.getSbmc() + ""); + if (item.getSbstate() == null) { + viewHolder.setText(R.id.tv_sbstate, " "); + } else { + viewHolder.setText(R.id.tv_sbstate, item.getSbstate() + ""); + } + } + }; + lv.setAdapter(adapter); + if (isEdit) { + lv.setOnItemClickListener((adapterView, view, position, l) -> { + intent = new Intent(SdjSbListActivity.this, Yul_SBActivity.class); + Bundle bundle2 = new Bundle(); + bundle2.putBoolean("edit", isEdit); + bundle2.putInt(Contans.KEY_ITEM, item); + bundle2.putLong("xdjjhxzDataBean_id", xdjjhxzDataBean_id); + bundle2.putInt("itemposition", itemposition); + bundle2.putString("LX", LX); + bundle2.putString("LXResult", LXResult); + bundle2.putString("GWID", GWID); + bundle2.putParcelableArrayList("infos", infos);//当前设备页列表数据 + bundle2.putInt("itemIndex", position - 1);//当前点击的item索引 + intent.putExtras(bundle2); + startActivity(intent); + finish(); + }); + } else { + showToast("请使用NFC"); + + } + + + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 1) { + if (resultCode == RESULT_OK) { + switch (LX) { + case "Click": + qyddataBeanArrayList.clear(); + qyddataBeanArrayList = where("xdjjhxzDataBean_id = ?", xdjjhxzDataBean_id + "").find(QYDDATABean.class); + setListData(); + adapter.notifyDataSetChanged(); + break; + case "NFC": + qyddataBeanArrayList.clear(); + qyddataBeanArrayList = where("QYNFC = ?", LXResult + "").find(QYDDATABean.class); + setListData(); + adapter.notifyDataSetChanged(); + break; + } + } + } + } + + @Override + protected void onResume() { + super.onResume(); + switch (LX) { + case "Click": + qyddataBeanArrayList.clear(); + qyddataBeanArrayList = where("xdjjhxzDataBean_id = ?", xdjjhxzDataBean_id + "").find(QYDDATABean.class); + setListData(); + adapter.notifyDataSetChanged(); + break; + case "NFC": + qyddataBeanArrayList.clear(); + qyddataBeanArrayList = where("QYNFC = ?", LXResult + "").find(QYDDATABean.class); + setListData(); + adapter.notifyDataSetChanged(); + break; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjgzActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjgzActivity.java new file mode 100755 index 0000000..393ec27 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdjgzActivity.java @@ -0,0 +1,162 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.ContentValues; +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.weight.toastviewbymyself; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + + +public class SdjgzActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + private View headView; + private CommonAdapter adapter; + private List xdjjhxzDataBeanList = new ArrayList<>();//工作列表 + private ArrayList qyddataBeanList = new ArrayList<>();//点检记录列表 + private String GWID; + Intent intent; + + @Override + public int getLayoutId() { + return R.layout.activity_sdjgz; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.djajhgz_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + } + + public void initData() { + initNFC(); + initToolbar("点检工作(请使用NFC)", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + Bundle bundle = SdjgzActivity.this.getIntent().getExtras(); + GWID = bundle.getString("GWID"); + xdjjhxzDataBeanList.clear(); + xdjjhxzDataBeanList.addAll(where("GWID = ?", GWID + "").find(XDJJHXZDataBean.class)); + setListData(); + } + + + private void setListData() { + if (adapter == null) { + adapter = new CommonAdapter(context, R.layout.djajhgz_item, xdjjhxzDataBeanList) { + @Override + protected void convert(ViewHolder viewHolder, XDJJHXZDataBean item, int position) { + int checkedCount = 0; + List qyddataBeen = where("xdjjhxzDataBean_id = ?", item.getId() + "").find(QYDDATABean.class); + for (int i = 0; i < qyddataBeen.size(); i++) { + if (qyddataBeen.get(i).isChecked()) { + checkedCount++; + } + } + viewHolder.setText(R.id.tv_xh, item.getSN() + ""); + viewHolder.setText(R.id.tv_qymc, item.getGWMC() + "--" + item.getQYMC()); + viewHolder.setText(R.id.tv_djrw, checkedCount + "/" + qyddataBeen.size()); + int a = checkedCount; + int b = qyddataBeen.size(); + if (a == b) { + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } else { + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#FF0000"));//已经检查完成绿色 + } + } + }; + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, postion, l) -> { + showToast("请使用NFC进行点检"); + qyddataBeanList.clear(); + qyddataBeanList.addAll(where("xdjjhxzDataBean_id = ?", xdjjhxzDataBeanList.get(postion - 1).getId() + "").find(QYDDATABean.class)); + + if (qyddataBeanList.size() != 0) { + Bundle bundle = new Bundle(); + Intent intent = new Intent(SdjgzActivity.this, SdjSbListActivity.class); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanList); + bundle.putString("GWID", GWID); + bundle.putBoolean("edit", false); +// bundle.putBoolean("edit", true); +// if (qyddataBeanList.get(0).getSecond() != null) { +// if (qyddataBeanList.get(0).getSecond().equals("YES")) {//如果曾经扫描过二维码或者NFC进入到区域 则下次可以直接点击进入编辑 +// bundle.putBoolean("edit", true); +// } else { +// bundle.putBoolean("edit", false); +// } +// } + bundle.putInt(Contans.KEY_ITEM, 0); + bundle.putInt("itemposition", xdjjhxzDataBeanList.get(postion - 1).getSN() - 1); + bundle.putLong("xdjjhxzDataBean_id", xdjjhxzDataBeanList.get(postion - 1).getId()); + bundle.putString("LX", "Click"); + bundle.putString("LXResult", "LXResult"); + bundle.putInt("from", 0); + intent.putExtras(bundle); + startActivity(intent); + } else { + showToast("暂无该区域点检任务,请联系管理员确认"); + } + }); + } else { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void handleNfc(String result) { + super.handleNfc(result); + List qydDataBeen = DataSupport.where("QYNFC = ?", result).find(QYDDATABean.class);//ewm是根据扫描得到的二维码结果来查询 + qyddataBeanList.clear(); + qyddataBeanList.addAll(qydDataBeen); + if (qydDataBeen.size() == 0) { + toastviewbymyself.makeText(SdjgzActivity.this, "无数据请联系管理员", Toast.LENGTH_SHORT).show(); + } else { + Bundle bundle3 = new Bundle(); + Intent intent = new Intent(SdjgzActivity.this, SdjSbListActivity.class); + bundle3.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanList); + bundle3.putInt(Contans.KEY_ITEM, 0); + bundle3.putString("GWID", GWID); + bundle3.putBoolean("edit", true); + bundle3.putInt("itemposition", 0); + bundle3.putLong("xdjjhxzDataBean_id", 0); + bundle3.putString("LX", "NFC"); + bundle3.putString("LXResult", result); + bundle3.putInt("from", 0); + intent.putExtras(bundle3); + ContentValues values = new ContentValues(); + values.put("second", "YES"); + startActivity(intent); + } + } + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdlbActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdlbActivity.java new file mode 100755 index 0000000..c1e833c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SdlbActivity.java @@ -0,0 +1,171 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.ContentValues; +import android.graphics.Color; +import androidx.fragment.app.Fragment; +import android.widget.RadioButton; +import android.widget.RadioGroup; + +import com.rehome.scbaxj.DBModel.DjjhRwQy; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.weight.AutoRadioGroup; +import com.rehome.scbaxj.weight.NoscrollViewPager; + +import org.litepal.crud.DataSupport; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 设备巡点检管理-点列表 + */ +public class SdlbActivity extends BaseActivity { + + NoscrollViewPager vp; + RadioButton rb1; + RadioButton rb2; + RadioButton rb3; + AutoRadioGroup rg; + + private List list; + private MyFragmentAdapter adapter; + private WjFragment wj; + private YjwscFragment yjwsc; + private YscFragment ysc; + + private ArrayList rwqys; + private ArrayList rwwj; + private ArrayList rwyjwsc; + private ArrayList rwysc; + + //private String jhlx;//计划类型 + private String num = "";//二维码or条形码 + private boolean nfrorewm;//false nfc true 二维码 + + private boolean aaa = false; + + private int flag = 1; + + @Override + public int getContentViewID() { + return R.layout.activity_sdlb; + } + + protected void initView() { + vp = findViewById(R.id.vp); + rb1 = findViewById(R.id.rb1); + rb2 = findViewById(R.id.rb2); + rb3 = findViewById(R.id.rb3); + rg = findViewById(R.id.rg); + } + + public void initData() { + + setBack(); + num = getIntent().getExtras().getString(Contans.KEY_BQBM); + nfrorewm = getIntent().getExtras().getBoolean(Contans.NFCOREWM); + + rwqys = new ArrayList<>(); + rwwj = new ArrayList<>(); + rwyjwsc = new ArrayList<>(); + rwysc = new ArrayList<>(); + flag = getIntent().getExtras().getInt(Contans.KEY_FLAG); + + getDataInSqlite(); + + if (flag == Contans.DLB) { + setTitle("点检任务"); + rb1.setText("未检(" + rwwj.size() + ")"); + rb2.setText("已检未上传(" + rwyjwsc.size() + ")"); + rb3.setText("已上传(" + rwysc.size() + ")"); + } else { + setTitle("质控点列表"); + rb1.setText("未完成(0)"); + rb2.setText("已完成未上传(0)"); + rb3.setText("已上传(0)"); + } + + list = new ArrayList<>(); + wj = WjFragment.newInstance(rwwj, num, nfrorewm); + yjwsc = YjwscFragment.newInstance(rwyjwsc, num, nfrorewm); + ysc = YscFragment.newInstance(rwysc, num, nfrorewm); + + list.add(wj); + list.add(yjwsc); + list.add(ysc); + + adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); + vp.setAdapter(adapter); + vp.setOffscreenPageLimit(3); + rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + if(i==R.id.rb1){ + rb1.setTextColor(Color.WHITE); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(0, false); + }else if(i==R.id.rb2){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.WHITE); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(1, false); + }else if(i==R.id.rb3){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.WHITE); + vp.setCurrentItem(2, false); + } + } + }); + } + + public int getFlag() { + return flag; + } + + @Override + protected void onRestart() { + super.onRestart(); + getDataInSqlite(); + rb1.setText("未检(" + rwwj.size() + ")"); + rb2.setText("已检未上传(" + rwyjwsc.size() + ")"); + rb3.setText("已上传(" + rwysc.size() + ")"); + wj.setListadapter(); + yjwsc.setListadapter(); + ysc.setListadapter(); + } + + //查询数据库数据 + private void getDataInSqlite() { + rwqys.clear(); + rwwj.clear(); + rwyjwsc.clear(); + rwysc.clear(); + //二维码一维码 + if (nfrorewm) { + ContentValues values = new ContentValues(); + values.put("SMFX", 1); + DataSupport.updateAll(DjjhRwQy.class, values, "BQBM = ?", num); +// rwyjwsc.addAll(DataSupport.where("bqbm = ? and uploaded = ? and checked = ? ", num, "0", "1").order("assetnum").order("pointnum").find(DjjhRwQy.class)); + rwqys.addAll(DataSupport.where("BQBM = ?", num).find(DjjhRwQy.class)); + rwwj.addAll(DataSupport.where("bqbm = ? and checked = ? ", num, "0").find(DjjhRwQy.class)); + rwysc.addAll(DataSupport.where("bqbm = ? and uploaded = ? ", num, "1").find(DjjhRwQy.class)); + rwyjwsc.addAll(DataSupport.where("bqbm = ? and uploaded = ? and checked = ? ", num, "0", "1").find(DjjhRwQy.class)); + } else { + //NFC标签 + ContentValues values = new ContentValues(); + values.put("SMFX", 0); + DataSupport.updateAll(DjjhRwQy.class, values, "NFCBH = ?", num); + + rwqys.addAll(DataSupport.where("NFCBH = ?", num).find(DjjhRwQy.class)); + rwwj.addAll(DataSupport.where("NFCBH = ? and checked = ? ", num, "0").find(DjjhRwQy.class)); + rwysc.addAll(DataSupport.where("NFCBH = ? and uploaded = ? ", num, "1").find(DjjhRwQy.class)); + rwyjwsc.addAll(DataSupport.where("NFCBH = ? and uploaded = ? and checked = ? ", num, "0", "1").find(DjjhRwQy.class)); + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SxcdjActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SxcdjActivity.java new file mode 100755 index 0000000..d9ca258 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/SxcdjActivity.java @@ -0,0 +1,88 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.graphics.Color; +import androidx.fragment.app.Fragment; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.weight.AutoRadioGroup; +import com.rehome.scbaxj.weight.NoscrollViewPager; +import java.util.ArrayList; +import java.util.List; + +/** + * 设备巡点检管理--现场点检 + */ +public class SxcdjActivity extends BaseActivity { + + NoscrollViewPager vp; + + RadioButton rb1; + + RadioButton rb2; + + RadioButton rb3; + + AutoRadioGroup rg; + + private List list; + private MyFragmentAdapter adapter; + + private XzjhFragment xzjh; + private DjdscFragment djdsc; + + @Override + public int getContentViewID() { + return R.layout.activity_sxcdj; + } + + protected void initView() { + vp = findViewById(R.id.vp_centent); + rb1 = findViewById(R.id.rb1); + rb2 = findViewById(R.id.rb2); + rb3 = findViewById(R.id.rb3); + rg = findViewById(R.id.rg); + } + + public void initData() { + setTitle("点检下载计划"); + setBack(); + xzjh = XzjhFragment.newInstance(); + djdsc = DjdscFragment.newInstance(); + list = new ArrayList<>(); + list.add(xzjh); + list.add(djdsc); + adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); + vp.setAdapter(adapter); + + + vp.setOffscreenPageLimit(2); + rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + + switch (i) { + case R.id.rb1: + rb1.setTextColor(Color.WHITE); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(0, false); + break; + case R.id.rb2: + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.WHITE); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(1, false); + break; + + } + } + }); + } + + public void updataDjdsc() { + djdsc.getDataInSQL(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/TipsActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/TipsActivity.java new file mode 100755 index 0000000..15f5424 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/TipsActivity.java @@ -0,0 +1,104 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import com.google.android.material.tabs.TabLayout; +import com.rehome.scbaxj.DBModel.QYAQFXDATABean; +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import java.util.ArrayList; +import java.util.List; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +public class TipsActivity extends BaseActivity3 { + private DrawerLayout mDrawerLayout; + private ViewPager mViewPager; + private TabLayout mTabLayout; + private List fragments = new ArrayList<>(); + private ArrayList qyaqfxdataBeanArrayList; + private ArrayList qyddataBeanArrayList; + private boolean isEdit = true; + private int item; + private int itemposition; + private String LX, LXResult; + private int from;//0-来自工作页面;1-采集页面 + private long xdjjhxzDataBean_id; + private String GWID; + + @Override + public int getLayoutId() { + return R.layout.activity_tips; + } + + @Override + public void initView() { + } + + + public void initData() { + initToolbar("风险提示查看", "进入区域", new View.OnClickListener() { + @Override + public void onClick(View v) { + Bundle bundle = new Bundle(); + Intent intent = new Intent(TipsActivity.this, SdjSbListActivity.class); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanArrayList); + bundle.putParcelableArrayList("QYFXTS", qyaqfxdataBeanArrayList); + bundle.putString("GWID", GWID); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, 0); + bundle.putInt("itemposition", itemposition); + bundle.putLong("xdjjhxzDataBean_id", xdjjhxzDataBean_id); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + bundle.putInt("from", 0); + intent.putExtras(bundle); + startActivity(intent); + finish(); + } + }); + mViewPager = findViewById(R.id.viewpager); + + + Bundle bundle = TipsActivity.this.getIntent().getExtras(); + qyaqfxdataBeanArrayList = new ArrayList<>(); + qyddataBeanArrayList = new ArrayList<>(); + qyaqfxdataBeanArrayList = bundle.getParcelableArrayList("QYFXTS"); + qyddataBeanArrayList = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + GWID = qyddataBeanArrayList.get(0).getGWID(); + isEdit = bundle.getBoolean("edit"); + item = bundle.getInt(Contans.KEY_ITEM); + itemposition = bundle.getInt("itemposition"); + xdjjhxzDataBean_id = bundle.getLong("xdjjhxzDataBean_id"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + from = bundle.getInt("from"); + initViewPager(); + + } + + private void initViewPager() { + mTabLayout = findViewById(R.id.tabs); + List titles = new ArrayList<>(); + titles.add("高危风险"); + titles.add("缺陷工单"); + for (int i = 0; i < titles.size(); i++) { + mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(i))); + } + fragments.add(new FXFragment()); + fragments.add(new QxgdFragment()); + FragmentAdapter mFragmentAdapteradapter = new FragmentAdapter(getSupportFragmentManager(), fragments, titles); + //给ViewPager设置适配器 + mViewPager.setAdapter(mFragmentAdapteradapter); + //将TabLayout和ViewPager关联起来。 + mTabLayout.setupWithViewPager(mViewPager); + //给TabLayout设置适配器 + mTabLayout.setTabsFromPagerAdapter(mFragmentAdapteradapter); + } +} + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/WjFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/WjFragment.java new file mode 100755 index 0000000..f46208e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/WjFragment.java @@ -0,0 +1,170 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.DjjhRwQy; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.adapter.ZkdAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.bean.ZkdInfo; +import com.rehome.scbaxj.contans.Contans; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 设备巡点检管理-未检 or 未完成 + */ + +public class WjFragment extends BaseFragment { + + TextView tv_project; + ListView lv; + + private View headView; + private SdlbActivity mActivity; + + private List list; + private DlbAdapter adapter; + + private String num; + private boolean nfcorewm; + + private ZkdAdapter zAdapter; + private List zList; + + private ArrayList rwqys; + + public WjFragment() { + } + + public static WjFragment newInstance(ArrayList lists, String num, boolean nfcorewm) { + WjFragment fragment = new WjFragment(); + Bundle bundle = new Bundle(); + bundle.putString("num", num); + bundle.putBoolean("nfcorewm", nfcorewm); + bundle.putParcelableArrayList("list", lists); + fragment.setArguments(bundle); + return fragment; + } + + + @Override + public int getContentViewId() { + return R.layout.fragment_wj; + } + + @Override + protected void initView() { + mActivity = (SdlbActivity) getActivity(); + + tv_project = view.findViewById(R.id.tv_project); + lv = view.findViewById(R.id.lv); + + Bundle bundle = getArguments(); + if (bundle != null) { + rwqys = bundle.getParcelableArrayList("list"); + num = bundle.getString("num"); + nfcorewm = bundle.getBoolean("nfcorewm"); + } + + } + + public void initData() { + + if (mActivity.getFlag() == Contans.DLB) { + initDjd(); + } else { +// initZkd(); + } + } + + + + /** + * 质控点 + */ + private void initZkd() { + + zList = new ArrayList<>(); + + ZkdInfo info = new ZkdInfo(1, "H-2:传热元件", "未完成", "H", "质检A", "质检B", "质检C", "监理"); + ZkdInfo info2 = new ZkdInfo(2, "W-3:驱动装置检查", "未完成", "w", "质检A", "质检B", "质检C", "监理"); + zList.add(info); + zList.add(info2); + + headView = View.inflate(mActivity, R.layout.zkd_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + + tv_project.setVisibility(View.VISIBLE); + zAdapter = new ZkdAdapter(context, zList); + lv.addHeaderView(headView, null, false); + lv.setAdapter(zAdapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { +// Intent intent = new Intent(mActivity, SqdActivity.class); +// intent.putExtra(Contans.KEY_IS_EDIT, true); +// intent.putExtra(Contans.NFCOREWM, true); +// intent.putExtra(Contans.KEY_BQBM, num); +// startActivity(intent); + } + }); + } + + /** + * 点检点 + */ + private void initDjd() { + + list = new ArrayList<>(); + + initDlbinfo(); + + adapter = new DlbAdapter(context, list); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + Intent intent = new Intent(getActivity(), SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putInt(Contans.KEY_ITEM, i - 1); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, rwqys); + bundle.putBoolean("edit", true); + bundle.putBoolean(Contans.NFCOREWM, nfcorewm); + bundle.putString(Contans.KEY_BQBM, num); + intent.putExtras(bundle); + startActivityForResult(intent, 0x00); + } + }); + } + + private void initDlbinfo() { + + for (int i = 0; i < rwqys.size(); i++) { + DlbInfo info = new DlbInfo(); + info.setXh(i + 1); + info.setDian(rwqys.get(i).getPOINTNAME() + "(" + rwqys.get(i).getDESCRIPTION() + ")"); + info.setStatu(rwqys.get(i).isChecked()); + info.setCjjg(rwqys.get(i).getCJJG()); + list.add(info); + } + } + + public void setListadapter() { + list.clear(); + initDlbinfo(); + adapter.notifyDataSetChanged(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/XzjhFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/XzjhFragment.java new file mode 100755 index 0000000..2fe7d58 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/XzjhFragment.java @@ -0,0 +1,255 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.ContentValues; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Djjh; +import com.rehome.scbaxj.DBModel.XDJJHXZBean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.XzjhAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.XscbRequestBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.HttpResponseListener; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.utils.UiUtlis; +import com.rehome.scbaxj.weight.WaitDialog; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.RequestQueue; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; + +import static org.litepal.crud.DataSupport.where; + +/** + * 设备巡点检管理-下载计划 + */ +public class XzjhFragment extends BaseFragment { + + ListView lv; + Button btn_xz; + TextView tvNodata; + LinearLayout LL; + + private WaitDialog dialog; + private DjMainActivity mActivity; + private View headView; + private View head; + private XzjhAdapter adapter; + private CheckBox cb; + private List djjhs; + private int selectCount = 0; + private int requestCount = 0; + private List gwids = new ArrayList<>(); + private RequestQueue queue; + private XDJJHXZBean xdjjhxzBean; + + public XzjhFragment() { + + } + + public static XzjhFragment newInstance() { + XzjhFragment fragment = new XzjhFragment(); + return fragment; + } + + + @Override + public int getContentViewId() { + return R.layout.fragment_xzjh; + } + + @Override + protected void initView() { + + lv.setEmptyView(tvNodata); + mActivity = (DjMainActivity) getActivity(); + + lv = view.findViewById(R.id.lv); + tvNodata = view.findViewById(R.id.tv_nodata); + btn_xz = view.findViewById(R.id.btn_xz); + LL = view.findViewById(R.id.LL); + + btn_xz.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (djjhs.size() != 0) { + + gwids.clear(); + for (int i = 0; i < djjhs.size(); i++) { + if (djjhs.get(i).isChecked()) { + if (!dialog.isShowing()) { + dialog.setMessage("下载计划中..."); + dialog.show(); + } + + downData(djjhs.get(i).getGWID()); + gwids.add(djjhs.get(i).getGWID()); + } + } + } else { + showToast("没有可下载计划"); + } + } + }); + + headView = View.inflate(context, R.layout.xzjh_item, null); + head = headView.findViewById(R.id.head); + head.setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + cb = headView.findViewById(R.id.cb); + cb.setOnClickListener(view -> { + if (cb.isChecked()) { + for (int i = 0; i < djjhs.size(); i++) { + djjhs.get(i).setChecked(true); + adapter.notifyDataSetChanged(); + } + } else { + for (int i = 0; i < djjhs.size(); i++) { + djjhs.get(i).setChecked(false); + adapter.notifyDataSetChanged(); + } + } + }); + } + + public void initData() { + queue = NoHttp.newRequestQueue(1); + dialog = new WaitDialog(getActivity(), "加载中..."); + dialog.setCancelable(false); + djjhs = new ArrayList<>(); + //如果数据库中有数据 + if (DataSupport.count("Djjh") != 0) { + List djjhall = where("download = ?", "0").find(Djjh.class); + djjhs.clear(); + djjhs.addAll(djjhall); + setListData(); + } else { + tvNodata.setText("暂无数据"); + LL.setVisibility(View.GONE); + } + } + + private void downData(String gwid) { + selectCount++; + Request request = NoHttp.createStringRequest(Contans.IP + Contans.DJJHDLB, RequestMethod.POST); + request.setDefineRequestBodyForJson(createZyJson(gwid)); + queue.add(1, request, new HttpResponseListener<>(getActivity(), request, callback, false, false, "")); + } + + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + try { + if (what == 1) { + ++requestCount; + Log.e("dataLog", response.get()); + xdjjhxzBean = GsonUtils.GsonToBean(response.get(), XDJJHXZBean.class); + if (xdjjhxzBean != null && xdjjhxzBean.getState() == 1) { + List xdjjhxzDataBeanList = xdjjhxzBean.getData(); + ContentValues values = new ContentValues(); + values.put("download", 1);//把Djjh里面的下载过的download变成1 + for (int i = 0; i < xdjjhxzDataBeanList.size(); i++) { + DataSupport.updateAll(Djjh.class, values, "GWID = ?", xdjjhxzDataBeanList.get(i).getGWID()); + } + int dataCount = DataSupport.count(XDJJHXZDataBean.class); + int index;//序号 + index = dataCount; + for (int i = 0; i < xdjjhxzDataBeanList.size(); i++) { + xdjjhxzDataBeanList.get(i).setSN(++index); + DataSupport.saveAll(xdjjhxzDataBeanList.get(i).getQYD_DATA()); + DataSupport.saveAll(xdjjhxzDataBeanList.get(i).getQYAQFX_DATA()); + } + DataSupport.saveAll(xdjjhxzDataBeanList); + } else { + showToast(UiUtlis.getString(context, R.string.data_error)); + } + } + + if (requestCount == selectCount && requestCount != 0) { + requestCount = 0; + selectCount = 0; + tvNodata.setText("暂无数据"); + requestCount = 0; + selectCount = 0; + dialog.cancel(); + djjhs.clear(); + djjhs.addAll(where("download = ?", "0").find(Djjh.class)); + if (adapter != null) { + cb.setChecked(false); + adapter.notifyDataSetChanged(); + } + showToast("下载成功"); + dialog.dismiss(); + } + } catch (Exception e) { + showToast(UiUtlis.getString(context, R.string.data_error)); + dialog.dismiss(); + } + } + + @Override + public void onFailed(int what, Response response) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + } + }; + + private void setListData() { + adapter = new XzjhAdapter(context, djjhs, view -> { + CheckBox checkBox = (CheckBox) view; + int index = (int) checkBox.getTag(); + djjhs.get(index).setChecked(checkBox.isChecked()); + int count = 0; + for (int a = 0; a < djjhs.size(); a++) { + if (djjhs.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == djjhs.size()); + adapter.notifyDataSetChanged(); + }); + + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, i, l) -> { + djjhs.get(i - 1).setChecked(!djjhs.get(i - 1).isChecked()); + int count = 0; + for (int a = 0; a < djjhs.size(); a++) { + if (djjhs.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == djjhs.size()); + adapter.notifyDataSetChanged(); + }); + } + + private String createZyJson(String gwid) { + String YHID = (String) SPUtils.get(context, Contans.USERID, ""); + XscbRequestBean info = new XscbRequestBean(); + info.setAction("DJ_RWXZ_GET"); + info.setGWID(gwid); + info.setYHID(YHID); + String json = GsonUtils.GsonString(info); + return json; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YjwscFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YjwscFragment.java new file mode 100755 index 0000000..c2b393f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YjwscFragment.java @@ -0,0 +1,126 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import com.rehome.scbaxj.DBModel.DjjhRwQy; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.contans.Contans; +import java.util.ArrayList; +import java.util.List; + + +/** + * 设备巡点检管理-已检未上传 or 已完成未上传 + */ +public class YjwscFragment extends BaseFragment { + + ListView lv; + private SdlbActivity mActivity; + private ArrayList rwqys; + private String num; + private boolean nfcorewm; + private List list; + private View headView; + private DlbAdapter adapter; + + public YjwscFragment() { + } + + public static YjwscFragment newInstance(ArrayList list, String num, boolean nfcorewm) { + YjwscFragment fragment = new YjwscFragment(); + Bundle bundle = new Bundle(); + bundle.putString("num", num); + bundle.putBoolean("nfcorewm", nfcorewm); + bundle.putParcelableArrayList("list", list); + fragment.setArguments(bundle); + return fragment; + } + + + @Override + public int getContentViewId() { + return R.layout.fragment_yjwsc; + } + + @Override + protected void initView() { + mActivity = (SdlbActivity) getActivity(); + lv = view.findViewById(R.id.lv); + + Bundle bundle = getArguments(); + if (bundle != null) { + rwqys = bundle.getParcelableArrayList("list"); + num = bundle.getString("num"); + nfcorewm = bundle.getBoolean("nfcorewm"); + } + } + + public void initData() { + + if (mActivity.getFlag() == Contans.DLB) { + + initDlb(); + } else { + + initZkd(); + } + } + + + /** + * 质控点 + */ + private void initZkd() { + } + + /** + * 点检点 + */ + private void initDlb() { + + + list = new ArrayList<>(); + initDlbinfo(); + adapter = new DlbAdapter(context, list); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + Intent intent = new Intent(getActivity(), SbxdjcjsbActivity.class); + intent.putExtra("edit", true); + intent.putExtra(Contans.NFCOREWM, nfcorewm); + intent.putExtra(Contans.KEY_BQBM, num); + intent.putExtra(Contans.KEY_ITEM, i - 1); + intent.putParcelableArrayListExtra(Contans.KEY_DJJHRWQY, rwqys); + startActivity(intent); + } + }); + } + + public void setListadapter() { + this.list.clear(); + initDlbinfo(); + adapter.notifyDataSetChanged(); + } + + private void initDlbinfo() { + for (int i = 0; i < rwqys.size(); i++) { + DlbInfo info = new DlbInfo(); + info.setXh(i + 1); + info.setDian(rwqys.get(i).getPOINTNAME() + "(" + rwqys.get(i).getDESCRIPTION() + ")"); + info.setStatu(rwqys.get(i).isChecked()); + info.setCjjg(rwqys.get(i).getCJJG()); + list.add(info); + } + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YscFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YscFragment.java new file mode 100755 index 0000000..a8c98a4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YscFragment.java @@ -0,0 +1,120 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import com.rehome.scbaxj.DBModel.DjjhRwQy; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.contans.Contans; +import java.util.ArrayList; +import java.util.List; + + +/** + * 设备巡点检管理-已上传 + */ +public class YscFragment extends BaseFragment { + + ListView lv; + + private View headView; + private DlbAdapter adapter; + + private String num; + private boolean nfcorewm; + + private View head; + private SdlbActivity mActivity; + private List list; + + private List rwqys; + + public YscFragment() { + } + + public static YscFragment newInstance(ArrayList list, String num, boolean nfcorewm) { + YscFragment fragment = new YscFragment(); + Bundle bundle = new Bundle(); + bundle.putString("num", num); + bundle.putBoolean("nfcorewm", nfcorewm); + bundle.putParcelableArrayList("list", list); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public int getContentViewId() { + return R.layout.fragment_ysc; + } + + @Override + protected void initView() { + mActivity = (SdlbActivity) getActivity(); + lv = view.findViewById(R.id.lv); + + Bundle bundle = getArguments(); + if (bundle != null) { + rwqys = bundle.getParcelableArrayList("list"); + num = bundle.getString("num"); + nfcorewm = bundle.getBoolean("nfcorewm"); + } + } + + public void initData() { + if (mActivity.getFlag() == Contans.DLB) { + initDLB(); + } else { + initZKD(); + } + } + + + /** + * 质控点 + */ + private void initZKD() { + } + + /** + * 点检点 + */ + private void initDLB() { + + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + list = new ArrayList<>(); + + initDlbinfo(); + + adapter = new DlbAdapter(context, list); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + + } + }); + } + + public void setListadapter() { + this.list.clear(); + initDlbinfo(); + adapter.notifyDataSetChanged(); + } + + private void initDlbinfo() { + for (int i = 0; i < rwqys.size(); i++) { + DlbInfo info = new DlbInfo(); + info.setXh(i + 1); + info.setDian(rwqys.get(i).getPOINTNAME() + "(" + rwqys.get(i).getDESCRIPTION() + ")"); + info.setStatu(rwqys.get(i).isChecked()); + info.setCjjg(rwqys.get(i).getCJJG()); + list.add(info); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YulActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YulActivity.java new file mode 100755 index 0000000..c323885 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/YulActivity.java @@ -0,0 +1,218 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.ListView; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.bean.SetSbModel; +import com.rehome.scbaxj.contans.Contans; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + +public class YulActivity extends BaseActivity { + + ListView lv; + private static final int Req = 101; + private boolean isEdit = true; + private int item; + private List xdjjhxzDataBeanList = new ArrayList<>();//工作列表 + private ArrayList qyddataBeanList = new ArrayList<>();//点检记录列表 + private List infos = new ArrayList<>(); + private View headView; + private DlbAdapter adapter; + private int itemposition; + private String LX, LXResult; + + /** + * 广播 + */ + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + //更新指定item + String action = intent.getAction(); + switch (action) { + case Contans.ACTION_YULONE: //更新设备点检页面返回时编辑的item内容 + + int position = intent.getIntExtra(Contans.KEY_POSITION, -1); + String name = intent.getStringExtra(Contans.KEY_NAME); + DlbInfo dlbInfo = infos.get(position); + dlbInfo.setCjjg(name); + dlbInfo.setStatu(true); + infos.set(position, dlbInfo); + + QYDDATABean qyddataBean = qyddataBeanList.get(position); + qyddataBean.setChecked(true); + qyddataBean.setCJJG(name); + qyddataBeanList.set(position, qyddataBean); + + Log.e("YulActivity", "name=" + name + ", position=" + position); + break; + default: + break; + } + + } + }; + + @Override + public int getContentViewID() { + return R.layout.activity_yul; + } + + @Override + protected void initView() { + + lv = findViewById(R.id.lv); + setBack(); + setTitle("浏览点检记录"); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + + } + + @Override + public void initData() { + + + Bundle bundle = getIntent().getExtras(); + isEdit = bundle.getBoolean("edit"); +// qyddataBeanList = bundle.getParcelableArrayList(Contans.KEY_DJJHRWQY); + item = bundle.getInt(Contans.KEY_ITEM); + itemposition = bundle.getInt("itemposition"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + searchdata(); + setListAdapter(); + + + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULONE); + registerReceiver(myReceiver, filter); + } + + private void searchdata() { + if (LX.equals("Click")) { + + + xdjjhxzDataBeanList.clear(); + //获取本地所有的工作列表数据 + xdjjhxzDataBeanList.addAll(DataSupport.findAll(XDJJHXZDataBean.class)); + qyddataBeanList.clear(); + //获取当前点击的工作栏对应的点检记录列表 + qyddataBeanList.addAll(where("xdjjhxzDataBean_id = ?", xdjjhxzDataBeanList.get(itemposition).getId() + "").find(QYDDATABean.class)); + + } else if (LX.equals("QRcode")) { + + + List qydDataBeen = DataSupport.where("QYEWM = ?", LXResult).find(QYDDATABean.class);//ewm是根据扫描得到的二维码结果来查询 + + qyddataBeanList.clear(); + qyddataBeanList.addAll(qydDataBeen); + + } else if (LX.equals("NFC")) { + + + List qydDataBeen = DataSupport.where("QYNFC = ?", LXResult).find(QYDDATABean.class); + + qyddataBeanList.clear(); + qyddataBeanList.addAll(qydDataBeen); + + } + } + + private void setListAdapter() { + + for (QYDDATABean rw : qyddataBeanList) { //这里进行了数据的一些获取 把必要的拿出来显示 + DlbInfo info = new DlbInfo(); + info.setSbid(rw.getSBID()); + info.setCjjg(rw.getCJJG());//采集结果 + info.setDian(rw.getSBMC() + " - " + rw.getBJMC());//项目名称 + info.setStatu(rw.isChecked());//状态 + infos.add(info); + } + + adapter = new DlbAdapter(context, infos); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((parent, view, position, id) -> {//这里应该 + + Intent intent = new Intent(YulActivity.this, SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanList); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, position - 1); + bundle.putInt("itemposition", itemposition); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivityForResult(intent, Req); + }); + } + + private ArrayList setSbModelList; + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != RESULT_OK) return; + if (data != null) { + setSbModelList = data.getParcelableArrayListExtra("setSbModelList"); + + if (setSbModelList == null) { + + } else { + for (int i = 0; i < setSbModelList.size(); i++) { + for (int j = 0; j < infos.size(); j++) { + + if (infos.get(j).getSbid().equals(setSbModelList.get(i).getSbId())) + + infos.get(j).setCjjg(setSbModelList.get(i).getValue()); + +// infos.get(j).setStatu(setSbModelList.get(i).getStatu()); + + } + } + adapter.notifyDataSetChanged(); + } + adapter.notifyDataSetChanged(); + + } + //获取返回时的数据 + + + } + + @Override + protected void onResume() { + super.onResume(); + searchdata(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + //反注册广播(注销) + unregisterReceiver(myReceiver); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/Yul_SBActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/Yul_SBActivity.java new file mode 100755 index 0000000..2de59d1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxdj/Yul_SBActivity.java @@ -0,0 +1,277 @@ +package com.rehome.scbaxj.activity.sbxdj; + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.QYDDATABean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.bean.sbInfo; +import com.rehome.scbaxj.contans.Contans; + +import org.litepal.crud.DataSupport; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + +public class Yul_SBActivity extends BaseActivity { + + private static final int Req = 101; + + ListView lv; + TextView txSetsbmc; + Button btTY; + Button btYC; + Button btBY; + + + private boolean isEdit = true; + private int item; + private SimpleDateFormat sdf; + private String GWID, QYBH; + private ArrayList qyddataBeanArrayList_SB = new ArrayList<>();//点检记录列表 + private List infos = new ArrayList<>(); + private View headView; + private DlbAdapter adapter; + private int itemposition; + private String LX, LXResult, SBID; + private long xdjjhxzDataBean_id; + private List sbInfoList;//当前设备页列表 + private int itemIndex;//被点击的item索引 + + + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + switch (action) { + case Contans.ACTION_YULONE: //更新设备点检页面返回时编辑的item内容 + int position = intent.getIntExtra(Contans.KEY_POSITION, -1); + String name = intent.getStringExtra(Contans.KEY_NAME); + DlbInfo dlbInfo = infos.get(position); + dlbInfo.setCjjg(name); + dlbInfo.setStatu(true); + infos.set(position, dlbInfo); + QYDDATABean qyddataBean = qyddataBeanArrayList_SB.get(position); + qyddataBean.setChecked(true); + qyddataBean.setCJJG(name); + qyddataBeanArrayList_SB.set(position, qyddataBean); + break; + default: + break; + } + + } + }; + + @Override + public int getContentViewID() { + return R.layout.activity_yul_sb; + } + + @Override + protected void initView() { + setBack(); + setTitle("浏览点检数据"); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + + lv = findViewById(R.id.lv); + txSetsbmc = findViewById(R.id.tx_setsbmc); + btTY = findViewById(R.id.bt_TY); + btYC = findViewById(R.id.bt_YC); + btBY = findViewById(R.id.bt_BY); + } + + @Override + public void initData() { + sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Bundle bundle = getIntent().getExtras(); + isEdit = bundle.getBoolean("edit"); + item = bundle.getInt(Contans.KEY_ITEM); + itemposition = bundle.getInt("itemposition"); + GWID = bundle.getString("GWID"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + xdjjhxzDataBean_id = bundle.getLong("xdjjhxzDataBean_id"); + sbInfoList = bundle.getParcelableArrayList("infos"); + itemIndex = bundle.getInt("itemIndex"); + SBID = sbInfoList.get(itemIndex).getSbid(); + QYBH = sbInfoList.get(itemIndex).getQybh(); + qyddataBeanArrayList_SB = (ArrayList) where("SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH).find(QYDDATABean.class); + if (qyddataBeanArrayList_SB.size() > 0) { + txSetsbmc.setText(qyddataBeanArrayList_SB.get(0).getSBMC()); + } + setListAdapter(); + TYOnclick(); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULONE); + registerReceiver(myReceiver, filter); + } + + private void TYOnclick() { + + btTY.setOnClickListener(v -> { + ContentValues values = new ContentValues(); + values.put("CJJG", "已停用"); + values.put("SBMCSTATE", "已停用"); + values.put("checked", true); + values.put("SBMCSTATEVALUE", "3"); + values.put("DATE", sdf.format(new Date())); + int i = DataSupport.updateAll(QYDDATABean.class, values, "SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH); + if (i != 0) { + showToast("设置设备状态为已停用成功"); + } else { + showToast("设置设备状态为已停用失败"); + } + //点击停用时,根据itemIndex+1查找下一条数据,并更新界面 + itemIndex++; + getDataList(itemIndex); + }); + btBY.setOnClickListener(v -> { + ContentValues values = new ContentValues(); + values.put("CJJG", "备用"); + values.put("SBMCSTATE", "备用"); + values.put("checked", true); + values.put("SBMCSTATEVALUE", "5"); + values.put("DATE", sdf.format(new Date())); + int i = DataSupport.updateAll(QYDDATABean.class, values, "SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH); + if (i != 0) { + showToast("该设备改为备用状态成功"); + } else { + showToast("该设备改为备用状态成功"); + } + //点击停用时,根据itemIndex+1查找下一条数据,并更新界面 + itemIndex++; + getDataList(itemIndex); + }); + btYC.setOnClickListener(v -> { + ContentValues values = new ContentValues(); +// values.put("CJJG", ""); + values.put("SBMCSTATE", "已运行"); + values.put("checked", false); + values.put("SBMCSTATEVALUE", "2"); + int i = DataSupport.updateAll(QYDDATABean.class, values, "SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH); + if (i != 0) { + showToast("设置设备状态为已运行成功"); + } else { + showToast("设置设备状态为已运行失败"); + } + qyddataBeanArrayList_SB = (ArrayList) where("SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH).find(QYDDATABean.class); + Intent intent = new Intent(Yul_SBActivity.this, SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanArrayList_SB); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, 0); + bundle.putInt("itemposition", itemposition); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivityForResult(intent, Req); + }); + } + + /** + * 获取更新数据列表,并更新页面 + */ + private void getDataList(int index) { + if (sbInfoList != null) { + if (index < sbInfoList.size()) { + SBID = sbInfoList.get(index).getSbid(); + qyddataBeanArrayList_SB = (ArrayList) where("SBID = ? and GWID = ? and QYBH = ?", SBID, GWID, QYBH).find(QYDDATABean.class); + infos.clear(); + infos.addAll(filterCheckedData(qyddataBeanArrayList_SB)); + txSetsbmc.setText(qyddataBeanArrayList_SB.get(0).getSBMC()); + adapter.notifyDataSetChanged(); + } else { + finish(); + } + } + } + + + private void setListAdapter() { + infos.clear(); + infos.addAll(filterCheckedData(qyddataBeanArrayList_SB)); + adapter = new DlbAdapter(context, infos); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((parent, view, position, id) -> { + + if (qyddataBeanArrayList_SB != null) { +// if (qyddataBeanArrayList_SB.get(0).getSecond().equals("YES")) { +// qyddataBeanArrayList_SB = (ArrayList) where("SBID = ?", SBID + "").find(QYDDATABean.class); + + Intent intent = new Intent(Yul_SBActivity.this, SbxdjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(Contans.KEY_DJJHRWQY, qyddataBeanArrayList_SB); + bundle.putBoolean("edit", isEdit); + bundle.putInt(Contans.KEY_ITEM, position - 1); + bundle.putInt("itemposition", itemposition); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivityForResult(intent, Req); +// } else { +// +// } + } + }); + } + + private List filterCheckedData(ArrayList qyddataBeanArrayList) { + List dlbInfos = new ArrayList<>(); + for (QYDDATABean rw : qyddataBeanArrayList) { //这里进行了数据的一些获取 把必要的拿出来显示 + DlbInfo info = new DlbInfo(); + info.setSbid(rw.getSBID()); + info.setCjjg(rw.getCJJG());//采集结果 + info.setDian(rw.getSBMC() + " - " + rw.getBJMC());//项目名称 + info.setStatu(rw.isChecked());//状态 + dlbInfos.add(info); + } + return dlbInfos; + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != RESULT_OK) return; + if (requestCode == Req) { + itemIndex++; + getDataList(itemIndex); + } + } + + @Override + protected void onResume() { + super.onResume(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/BamjActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/BamjActivity.kt new file mode 100644 index 0000000..713c41a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/BamjActivity.kt @@ -0,0 +1,224 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.text.TextUtils +import android.util.Log +import android.view.View +import android.widget.CheckBox +import android.widget.TextView +import cn.hutool.core.io.IoUtil +import com.google.gson.Gson +import com.rehome.scbaxj.DBModel.Profession +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.DBModel.XjjhList +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.BamjAdapter +import com.rehome.scbaxj.adapter.ScxsAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.bean.MjList +import com.rehome.scbaxj.bean.MjRequestInfo +import com.rehome.scbaxj.bean.XsRequestInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityBamjBinding +import com.rehome.scbaxj.utils.* +import com.rehome.scbaxj.weight.MjEditDialog +import com.rehome.scbaxj.weight.WaitDialog +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Request +import com.yolanda.nohttp.rest.RequestQueue +import com.yolanda.nohttp.rest.Response + +class BamjActivity : BaseActivityOaToolbarViewBinding() { + + private val mjList: MutableList = mutableListOf() + private lateinit var adapter: BamjAdapter + private lateinit var headView: View + private lateinit var head: View + private lateinit var tv_yjzj: TextView + private lateinit var xj_cb: CheckBox + private lateinit var dialog: WaitDialog + private lateinit var queue: RequestQueue + private lateinit var username: String + + override fun getViewBinding() = ActivityBamjBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("保安免检管理", "提交", { finish() }, { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + if (mjList.size > 0) { + var isChecked = false + val mjCheckList: MutableList = mutableListOf() + for (i in mjList.indices) { + if (mjList[i].isChecked) { + isChecked = true + mjCheckList.add(mjList[i]) + } + } + if (isChecked) { + val dialog = MjEditDialog(this, object : MjEditDialog.DialogListener { + override fun onYesClick(noCheckReason: String) { + if(!TextUtils.isEmpty(noCheckReason)){ + upLoadBaMj(noCheckReason,mjCheckList) + }else{ + showToast("免检原因必填") + } + } + + override fun onNoClick() { + + } + + }) + dialog.show() + } else { + showToast("请选择要免检的计划") + } + } + } else { + Log.i("app", "无网络") + showToast("无wifi网络连接,请先连接到wifi网络") + } + }) + queue = NoHttp.newRequestQueue(1) + username = SPUtils.get(context, Contans.USERID, "") as String + binding.lv.emptyView = binding.tvNodata + dialog = WaitDialog(context, "上传数据中...请稍等...") + dialog.setCancelable(false) + headView = View.inflate(context, R.layout.scxscb_item, null) + head = headView.findViewById(R.id.head) + tv_yjzj = headView.findViewById(R.id.tv_yjzj) + tv_yjzj.text = "总点数" + xj_cb = headView.findViewById(R.id.xj_cb) + binding.lv.addHeaderView(headView, null, false) + xj_cb.setOnClickListener { + if (xj_cb.isChecked) { + for (i in mjList.indices) { + mjList[i].isChecked = true + adapter.notifyDataSetChanged() + } + } else { + for (i in mjList.indices) { + mjList[i].isChecked = false + adapter.notifyDataSetChanged() + } + } + } + + adapter = BamjAdapter(this, mjList) { view: View -> + val checkBox = view as CheckBox + val index = checkBox.tag as Int + mjList[index].isChecked = checkBox.isChecked + var count = 0 + for (a in mjList.indices) { + if (mjList[a].isChecked) { + count++ + } + } + xj_cb.isChecked = count == mjList.size + adapter.notifyDataSetChanged() + } + binding.lv.adapter = adapter + } + + override fun initData() { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + requestData() + } else { + Log.i("app", "无网络") + } + } + + private fun requestData() { //下载巡检数据 + val request: Request = + NoHttp.createStringRequest(Contans.IP + Contans.BA_Download_MJ_URL, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonBaMjDown()) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, MjList::class.java) + Log.i("app", bean!!.msg) + Log.i("app", bean.state) + Log.i("app", bean.data.size.toString()) + if (bean.state == "1") { + if (bean.data != null && bean.data.size > 0) { + mjList.clear() + val list = bean.data //服务器数据 + mjList.addAll(list) + adapter.notifyDataSetChanged() + }else{ + mjList.clear() + adapter.notifyDataSetChanged() + } + }else{ + mjList.clear() + adapter.notifyDataSetChanged() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun upLoadBaMj(noCheckReason: String?,mjCheckList: MutableList) { + Log.i("app", Contans.IP + Contans.BA_UPLOAD_MJ_URL) + val request: Request = + NoHttp.createStringRequest(Contans.IP + Contans.BA_UPLOAD_MJ_URL, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonBaMjUp(noCheckReason,mjCheckList)) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, MjList::class.java) + Log.i("app", bean!!.msg) + Log.i("app", bean.state) + if (bean.state == "1") { + showToast("操作成功") + initData() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun createJsonBaMjDown(): String { + val info = XsRequestInfo() + info.action = "BA_XJGL_BAKH_GET" + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + + private fun createJsonBaMjUp(noCheckReason: String?,mjCheckList: MutableList): String { + val info = MjRequestInfo() + info.action = "BA_XJGL_BAKHSC_SET" + if (noCheckReason != null) { + info.bz = noCheckReason + } else { + info.bz = "" + } + info.scr = username + info.data = mjCheckList + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedListActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedListActivity.kt new file mode 100644 index 0000000..ce3a3d3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedListActivity.kt @@ -0,0 +1,152 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.view.View +import android.widget.AdapterView +import android.widget.ListView +import android.widget.TextView +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.CheckScxsAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityCheckedListBinding +import com.rehome.scbaxj.utils.SPUtils +import org.litepal.crud.DataSupport + +/** + * Create By HuangWenFei + * 创建日期:2023-02-11 11:58 + * 描述: + */ +class CheckedListActivity : BaseActivityOaToolbarViewBinding() { + + private lateinit var headView: View + private lateinit var adapter: CheckScxsAdapter + private var dbxjjh: MutableList = mutableListOf() + private var xsJjhDataBeanMap: MutableMap> = mutableMapOf() + private var xsJjhBaDataBeanMap: MutableMap> = mutableMapOf() + private lateinit var type: String + private lateinit var username: String + + override fun getViewBinding() = ActivityCheckedListBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + username = SPUtils.get(context, Contans.USERID, "") as String + val intent = intent + type = intent.getStringExtra("type")!! + + initToolbar("已检", "") {} + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(context, R.layout.no_checkbox_scxscb_item, null) + binding.lv.addHeaderView(headView, null, false) + + } + + override fun initData() { + if (type == "BA") { + getDataInSQLBA() //获取保安数据 + } else { + getDataInSQL() //获取运行,燃料数据 + } + setListData() //显示数据 + + } + + /** + * 获取数据库的数据 + */ + private fun getDataInSQLBA() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhBaDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + if (dataBean.zxid != "") { + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHXZDataBean::class.java + ) + var count = 0 + for (j in qydDataBeen.indices) { + if (qydDataBeen[j].isBAChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhBaDataBeanMap[dataBean.zxid] = qydDataBeen + } + } + } + + /** + * 获取数据库的数据 + */ + private fun getDataInSQL() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHDataBean::class.java + ) + Log.i("app", qydDataBeen.size.toString()) + var count = 0 + for (j in qydDataBeen.indices) { + if (qydDataBeen[j].isChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhDataBeanMap[dataBean.zxid] = qydDataBeen + } + } + + /** + * 列表适配数据 + */ + private fun setListData() { + adapter = CheckScxsAdapter(context, dbxjjh) + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { adapterView: AdapterView<*>?, view: View?, i: Int, l: Long -> + if (type == "BA") { + //保安数据 + val item = dbxjjh[i - 1] + val bundle = Bundle() + val intent = Intent(this, CheckedStatusListActivity::class.java) + intent.putExtra("type", type) + intent.putExtra("checkType", "checked") + intent.putExtra("zxid", item.zxid) + intent.putExtras(bundle) + startActivity(intent) + } else if (type == "XF") { + //消防数据 + val item = dbxjjh[i - 1] + val intent = Intent(this, CheckedStatusListXfActivity::class.java) + intent.putExtra("type", type) + intent.putExtra("checkType", "checked") + intent.putExtra("zxid", item.zxid) + startActivity(intent) + } + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListActivity.java new file mode 100644 index 0000000..eb048b1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListActivity.java @@ -0,0 +1,232 @@ +package com.rehome.scbaxj.activity.sbxj; + + +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.util.Log; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import androidx.annotation.RequiresApi; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import static org.litepal.crud.DataSupport.where; + + +public class CheckedStatusListActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + private View headView; + private TextView tv_djrw; + private CommonAdapter adapter; + private List xsjjhxzDataBeanList = new ArrayList<>(); + private List checkedList = new ArrayList<>(); + private List noCheckeList = new ArrayList<>(); + private List checkedListBA = new ArrayList<>(); + private List noCheckeListBA = new ArrayList<>(); + private List qybh = new ArrayList<>(); + private ArrayList xsjjhDataBeanArrayList = new ArrayList<>();//点检记录列表 + private String type = null; + private String checkType = null; + private String zxid = null; + private String username; + + @Override + public int getLayoutId() { + return R.layout.activity_checked_status_list; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + Intent intent = getIntent(); + type = intent.getStringExtra("type"); + checkType = intent.getStringExtra("checkType"); + zxid = intent.getStringExtra("zxid"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.checked_status_xsgz_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + tv_djrw = headView.findViewById(R.id.tv_djrw); + if(checkType!=null&&checkType.equals("checked")){ + initToolbar("已检", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + }else{ + initToolbar("未检", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + } + + public void initData() { + getDataInSqlite(); + setListData(); + } + + //加载数据库中已经下载的计划 + private void getDataInSqlite() { + xsjjhxzDataBeanList.clear(); + checkedListBA.clear(); + noCheckeListBA.clear(); + checkedList.clear(); + noCheckeList.clear(); + List planTemp = where("mk = ? and username = ? and zxid = ?", type, username,zxid).find(XSJJHXZDataBean.class); + List planTemp1 = this.removeDuplicate(planTemp); + xsjjhxzDataBeanList.addAll(planTemp1); + Log.i("app",String.valueOf(xsjjhxzDataBeanList.size())); + for (int i = 0; i < xsjjhxzDataBeanList.size(); i++) { + XSJJHXZDataBean item = xsjjhxzDataBeanList.get(i); + if (type != null && type.equals("BA")) { + if(item.isBAChecked()){ + checkedListBA.add(item); + }else{ + noCheckeListBA.add(item); + } + }else if (type != null && type.equals("XF")) { + int checkedCount = 0; + List xsjjhdatabean = DataSupport.where("zxid = ? and mk = ? and username = ?", zxid, type, username).find(XSJJHDataBean.class); + for (int j = 0; j< xsjjhdatabean.size(); j++) { + if (xsjjhdatabean.get(j).isChecked()) { + checkedCount++; + } + } + int a = checkedCount; + int b = xsjjhdatabean.size(); + if (a == b) { + checkedList.add(item); + } else { + noCheckeList.add(item); + } + }else{ + int checkedCount = 0; + List xsjjhdatabean = DataSupport.where("qybh = ? and mk = ? and username = ?", item.getQybh(), type, username).find(XSJJHDataBean.class); + for (int j = 0; j< xsjjhdatabean.size(); j++) { + if (xsjjhdatabean.get(j).isChecked()) { + checkedCount++; + } + } + int a = checkedCount; + int b = xsjjhdatabean.size(); + if (a == b) { + checkedList.add(item); + } else { + noCheckeList.add(item); + } + } + } + if (type != null && type.equals("BA")) { + if(checkType!=null&&checkType.equals("checked")){ + xsjjhxzDataBeanList.clear(); + xsjjhxzDataBeanList.addAll(checkedListBA); + }else{ + xsjjhxzDataBeanList.clear(); + xsjjhxzDataBeanList.addAll(noCheckeListBA); + } + }else{ + if(checkType!=null&&checkType.equals("checked")){ + xsjjhxzDataBeanList.clear(); + xsjjhxzDataBeanList.addAll(checkedList); + }else{ + xsjjhxzDataBeanList.clear(); + xsjjhxzDataBeanList.addAll(noCheckeList); + } + } + } + + public List removeDuplicate(List list) { + for (int i = 0; i < list.size() - 1; i++) { + for (int j = list.size() - 1; j > i; j--) { + if (list.get(j).getQybh().equals(list.get(i).getQybh())) { + list.remove(j); + } + } + } + return list; + } + + private void setListData() { + + if (adapter == null) { + adapter = new CommonAdapter(context, R.layout.checked_status_xsgz_item, xsjjhxzDataBeanList) { + @Override + protected void convert(ViewHolder viewHolder, XSJJHXZDataBean item, int position) { + if (type != null && type.equals("BA")) { + viewHolder.setText(R.id.tv_xh, String.valueOf(position + 1)); + viewHolder.setText(R.id.tv_qymc, item.getQymc()); + if (item.isBAChecked()) { + viewHolder.setText(R.id.tv_djrw, "已检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#FF0000"));//未检查完成红色 + } + }else if (type != null && type.equals("XF")) { + int checkedCount = 0; + List xsjjhdatabean = DataSupport.where("zxid = ? and mk = ? and username = ?", item.getZxid(), type, username).find(XSJJHDataBean.class); + for (int i = 0; i < xsjjhdatabean.size(); i++) { + if (xsjjhdatabean.get(i).isChecked()) { + checkedCount++; + } + } + viewHolder.setText(R.id.tv_xh, String.valueOf(xsjjhdatabean.size())); + viewHolder.setText(R.id.tv_qymc, item.getQymc()); + //viewHolder.setText(R.id.tv_djrw, checkedCount + "/" + xsjjhdatabean.size()); + int a = checkedCount; + int b = xsjjhdatabean.size(); + if (a == b) { + viewHolder.setText(R.id.tv_djrw, "已检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#FF0000"));//未检查完成红色 + } + } else { + int checkedCount = 0; + List xsjjhdatabean = DataSupport.where("qybh = ? and mk = ? and username = ?", item.getQybh(), type, username).find(XSJJHDataBean.class); + for (int i = 0; i < xsjjhdatabean.size(); i++) { + if (xsjjhdatabean.get(i).isChecked()) { + checkedCount++; + } + } + viewHolder.setText(R.id.tv_xh, String.valueOf(xsjjhdatabean.size())); + viewHolder.setText(R.id.tv_qymc, item.getQymc()); + //viewHolder.setText(R.id.tv_djrw, checkedCount + "/" + xsjjhdatabean.size()); + int a = checkedCount; + int b = xsjjhdatabean.size(); + if (a == b) { + viewHolder.setText(R.id.tv_djrw, "已检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#FF0000"));//未检查完成红色 + } + } + } + }; + + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + } else { + adapter.notifyDataSetChanged(); + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListXfActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListXfActivity.kt new file mode 100644 index 0000000..beb85dc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/CheckedStatusListXfActivity.kt @@ -0,0 +1,136 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.graphics.Color +import android.view.View +import android.widget.TextView +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.CommonAdapter +import com.rehome.scbaxj.adapter.ViewHolder +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityCheckedStatusListXfBinding +import com.rehome.scbaxj.utils.SPUtils +import org.litepal.crud.DataSupport + +class CheckedStatusListXfActivity : + BaseActivityOaToolbarViewBinding() { + private lateinit var headView: View + private lateinit var tv_djrw: TextView + private lateinit var adapter: CommonAdapter + private var checkedList: MutableList = mutableListOf() + private var noCheckeList: MutableList = mutableListOf() + + private lateinit var type: String + private lateinit var checkType: String + private lateinit var zxid: String + private lateinit var username: String + + override fun getViewBinding() = ActivityCheckedStatusListXfBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + type = intent.getStringExtra("type")!! + checkType = intent.getStringExtra("checkType")!! + zxid = intent.getStringExtra("zxid")!! + username = SPUtils.get(context, Contans.USERID, "") as String + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(this, R.layout.checked_status_xsgz_item, null) + headView.findViewById(R.id.head).visibility = View.VISIBLE + tv_djrw = headView.findViewById(R.id.tv_djrw) + if (checkType == "checked") { + initToolbar("已检", "") { } + } else { + initToolbar("未检", "") { } + } + } + + override fun initData() { + getDataInSqlite() + setListData() + } + + //加载数据库中已经下载的计划 + private fun getDataInSqlite() { + + checkedList.clear() + noCheckeList.clear() + + if (type == "XF") { + val xsjjhdatabean = + DataSupport.where("zxid = ? and mk = ? and username = ?", zxid, type, username) + .find( + XSJJHDataBean::class.java + ) + if (xsjjhdatabean != null && xsjjhdatabean.size > 0) { + for (j in xsjjhdatabean.indices) { + if (xsjjhdatabean[j].isChecked) { + checkedList.add(xsjjhdatabean[j]) + } else { + noCheckeList.add(xsjjhdatabean[j]) + } + } + } + } + } + + private fun setListData() { + + if (checkType == "checked") { + adapter = object : CommonAdapter( + context, + R.layout.checked_status_xsgz_item, + checkedList + ) { + override fun convert(viewHolder: ViewHolder, item: XSJJHDataBean, position: Int) { + + viewHolder.setText(R.id.tv_xh, (1).toString()) + viewHolder.setText(R.id.tv_qymc, item.dlxmc) + if (item.isChecked) { + viewHolder.setText(R.id.tv_djrw, "已检") + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#00CD00") + ) //已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检") + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#FF0000") + ) //未检查完成红色 + } + } + } + } else { + adapter = object : CommonAdapter( + context, + R.layout.checked_status_xsgz_item, + noCheckeList + ) { + override fun convert(viewHolder: ViewHolder, item: XSJJHDataBean, position: Int) { + + viewHolder.setText(R.id.tv_xh, (1).toString()) + viewHolder.setText(R.id.tv_qymc, item.dlxmc) + if (item.isChecked) { + viewHolder.setText(R.id.tv_djrw, "已检") + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#00CD00") + ) //已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检") + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#FF0000") + ) //未检查完成红色 + } + } + } + } + + binding.lv.addHeaderView(headView, null, false) + binding.lv.adapter = adapter + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NFCInfoActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NFCInfoActivity.java new file mode 100755 index 0000000..9189fc6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NFCInfoActivity.java @@ -0,0 +1,30 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity; + +public class NFCInfoActivity extends BaseActivity { + + TextView tvNfc; + + @Override + public int getContentViewID() { + return R.layout.activity_nfcinfo; + } + + @Override + protected void initView() { + setTitle("读取NFC标签"); + tvNfc = findViewById(R.id.tv_nfc); + setBack(); + initNFC(); + } + + @Override + public void handleNfc(String result) { + super.handleNfc(result); + tvNfc.setText(result); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NoCheckedListActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NoCheckedListActivity.kt new file mode 100644 index 0000000..baf4484 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/NoCheckedListActivity.kt @@ -0,0 +1,149 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.view.View +import android.widget.AdapterView +import android.widget.TextView +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.CheckScxsAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityNoCheckedListBinding +import com.rehome.scbaxj.utils.SPUtils +import org.litepal.crud.DataSupport + +class NoCheckedListActivity : BaseActivityOaToolbarViewBinding() { + + private lateinit var noChecked: TextView + private lateinit var headView: View + private lateinit var adapter: CheckScxsAdapter + private var dbxjjh: MutableList = mutableListOf() + private var xsJjhDataBeanMap: MutableMap> = mutableMapOf() + private var xsJjhBaDataBeanMap: MutableMap> = + mutableMapOf() + private lateinit var type: String + private lateinit var username: String + + + override fun getViewBinding() = ActivityNoCheckedListBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + username = SPUtils.get(context, Contans.USERID, "") as String + val intent = intent + type = intent.getStringExtra("type")!! + + initToolbar("未检", "") {} + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(context, R.layout.no_checkbox_scxscb_item, null) + binding.lv.addHeaderView(headView, null, false) + noChecked = headView.findViewById(R.id.tv_yjzj) + noChecked.text = "未检/总计" + } + + override fun initData() { + if (type == "BA") { + getDataInSQLBA() //获取保安数据 + } else { + getDataInSQL() //获取运行,燃料数据 + } + setListData() //显示数据 + + } + + /** + * 获取数据库的数据 + */ + private fun getDataInSQLBA() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhBaDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + if (dataBean.zxid != "") { + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHXZDataBean::class.java + ) + var count = 0 + for (j in qydDataBeen.indices) { + if (!qydDataBeen[j].isBAChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhBaDataBeanMap[dataBean.zxid] = qydDataBeen + } + } + } + + /** + * 获取数据库的数据 + */ + private fun getDataInSQL() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHDataBean::class.java + ) + Log.i("app", qydDataBeen.size.toString()) + var count = 0 + for (j in qydDataBeen.indices) { + if (!qydDataBeen[j].isChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhDataBeanMap[dataBean.zxid] = qydDataBeen + } + } + + /** + * 列表适配数据 + */ + private fun setListData() { + adapter = CheckScxsAdapter(context, dbxjjh) + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { adapterView: AdapterView<*>?, view: View?, i: Int, l: Long -> + if (type == "BA") { + //保安数据 + val item = dbxjjh[i - 1] + val intent = Intent(this, CheckedStatusListActivity::class.java) + intent.putExtra("type", type) + intent.putExtra("checkType", "noChecked") + intent.putExtra("zxid", item.zxid) + startActivity(intent) + } else if (type == "XF") { + //消防数据 + val item = dbxjjh[i - 1] + val intent = Intent(this, CheckedStatusListXfActivity::class.java) + intent.putExtra("type", type) + intent.putExtra("checkType", "noChecked") + intent.putExtra("zxid", item.zxid) + startActivity(intent) + } + } + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/RecordEventActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/RecordEventActivity.java new file mode 100644 index 0000000..5168044 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/RecordEventActivity.java @@ -0,0 +1,705 @@ +package com.rehome.scbaxj.activity.sbxj; + + +import static org.litepal.crud.DataSupport.where; +import android.Manifest; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.luck.picture.lib.animators.AnimationType; +import com.luck.picture.lib.basic.PictureSelectionModel; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.PictureSelectionConfig; +import com.luck.picture.lib.config.SelectLimitType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.config.SelectModeConfig; +import com.luck.picture.lib.decoration.GridSpacingItemDecoration; +import com.luck.picture.lib.dialog.RemindDialog; +import com.luck.picture.lib.engine.CompressFileEngine; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.engine.UriToFileTransformEngine; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.entity.MediaExtraInfo; +import com.luck.picture.lib.interfaces.OnCallbackListener; +import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener; +import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener; +import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener; +import com.luck.picture.lib.interfaces.OnPermissionDeniedListener; +import com.luck.picture.lib.interfaces.OnQueryFilterListener; +import com.luck.picture.lib.interfaces.OnSelectLimitTipsListener; +import com.luck.picture.lib.permissions.PermissionConfig; +import com.luck.picture.lib.permissions.PermissionUtil; +import com.luck.picture.lib.style.PictureSelectorStyle; +import com.luck.picture.lib.style.SelectMainStyle; +import com.luck.picture.lib.style.TitleBarStyle; +import com.luck.picture.lib.utils.DateUtils; +import com.luck.picture.lib.utils.DensityUtil; +import com.luck.picture.lib.utils.MediaUtils; +import com.luck.picture.lib.utils.PictureFileUtils; +import com.luck.picture.lib.utils.SandboxTransformUtils; +import com.luck.picture.lib.utils.StyleUtils; +import com.luck.picture.lib.utils.ToastUtils; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.Listener.FullyGridLayoutManager; +import com.rehome.scbaxj.Listener.GlideEngine; +import com.rehome.scbaxj.Listener.ImageLoaderUtils; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.GridImageAdapter; +import com.rehome.scbaxj.base.BaseActivityViewBinding; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.databinding.ActivityRecordEventBinding; +import com.rehome.scbaxj.utils.OAToolbar; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.ConfirmDialog; +import com.yalantis.ucrop.UCrop; +import com.yalantis.ucrop.UCropImageEngine; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import org.litepal.crud.DataSupport; +import top.zibin.luban.CompressionPredicate; +import top.zibin.luban.Luban; +import top.zibin.luban.OnNewCompressListener; +import top.zibin.luban.OnRenameListener; + + +public class RecordEventActivity extends BaseActivityViewBinding { + + + + private RecyclerView mRecyclerView; + private GridImageAdapter mAdapter; + private int maxSelectNum = 9;//图片数量 + //private int themeId; + //private int chooseMode = PictureMimeType.ofAll(); + private int chooseMode = SelectMimeType.ofImage(); + + private boolean isUpward; + private int language = -1; + + private PictureSelectorStyle selectorStyle; + + private List mData = new ArrayList<>(); + private ArrayList finalList; + + private ImageEngine imageEngine; + private ActivityResultLauncher launcherResult; + private final static String TAG = "PictureSelectorTag"; + + private int animationMode = AnimationType.DEFAULT_ANIMATION; + + private String scid = null; + private String username; + private XSJJHXZDataBean itemQY; + + + @Override + protected ActivityRecordEventBinding getViewBinding() { + return ActivityRecordEventBinding.inflate(LayoutInflater.from(this)); + } + + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + + @Override + public void initView() { + initToolbar("现场记事", "保存", v -> { + //左边返回按钮点击事件 + finish(); + }, v -> { + mData.clear(); + mData.addAll(mAdapter.getData()); + //右边返回按钮点击事件 + SaveYhData();//数据保存到数据库中 + +// if (binding.etYhms.isEmpty()&&mData.size()==0) { +// showToast("请把信息填写完整,现场描述或照片致少要有其中一项"); +// } else { +// SaveYhData();//数据保存到数据库中 +// } + }); + + scid = getIntent().getStringExtra("scid"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + selectorStyle = new PictureSelectorStyle(); + launcherResult = createActivityResultLauncher(); + + finalList = new ArrayList<>(); + mRecyclerView = findViewById(R.id.recycler); + FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); + mRecyclerView.setLayoutManager(manager); + mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, DensityUtil.dip2px(this, 8), false)); + + mAdapter = new GridImageAdapter(getContext(), mData); + mAdapter.setSelectMax(maxSelectNum); + mRecyclerView.setAdapter(mAdapter); + + imageEngine = GlideEngine.createGlideEngine(); + + } + + @Override + public void initData() { + + getDataInSqlite(); + + mAdapter.setOnItemClickListener(new GridImageAdapter.OnItemClickListener() { + @Override + public void onItemClick(View v, int position) { + // 预览图片、视频、音频 + PictureSelector.create(RecordEventActivity.this) + .openPreview() + .setImageEngine(imageEngine) + .setSelectorUIStyle(selectorStyle) + .setLanguage(language) + .isPreviewFullScreenMode(true) + .setExternalPreviewEventListener(new MyExternalPreviewEventListener()) + .isPreviewZoomEffect(chooseMode != SelectMimeType.ofAudio(), mRecyclerView) + .startActivityPreview(position, false, mAdapter.getData()); + } + + @Override + public void openPicture() { + // 进入相册 + PictureSelectionModel selectionModel = PictureSelector.create(getContext()) + .openGallery(chooseMode) + .setSelectorUIStyle(selectorStyle) + .setImageEngine(imageEngine) + .setCompressEngine(new ImageFileCompressEngine()) + .setSandboxFileEngine(new MeSandboxFileEngine()) + .setSelectLimitTipsListener(new MeOnSelectLimitTipsListener()) + .setEditMediaInterceptListener(new MeOnMediaEditInterceptListener(getSandboxPath(), buildOptions())) + .setPermissionDeniedListener(new MeOnPermissionDeniedListener()) + .isPageSyncAlbumCount(true) + .setQueryFilterListener(new OnQueryFilterListener() { + @Override + public boolean onFilter(LocalMedia media) { + return false; + } + }) + .setSelectionMode(SelectModeConfig.MULTIPLE) + .setLanguage(language) + //.setQuerySortOrder("") + .isDisplayTimeAxis(true) + .isOnlyObtainSandboxDir(false) + .isPageStrategy(true) + .isOriginalControl(false) + .isDisplayCamera(true) + .isFastSlidingSelect(true) + .isPreviewFullScreenMode(true) + .isPreviewZoomEffect(true) + .isPreviewImage(true) + .isMaxSelectEnabledMask(true) + .setMaxSelectNum(maxSelectNum) + .setRecyclerAnimationMode(animationMode) + .setSelectedData(mAdapter.getData()); + forSelectResult(selectionModel); + } + }); + + } + + + //加载数据库中已经下载的计划 + private void getDataInSqlite() { + + List planNFC = where("scid = ? and username = ?", scid, username).find(XSJJHXZDataBean.class); + if (planNFC != null && planNFC.size() > 0) { + itemQY = planNFC.get(0); + + if(!TextUtils.isEmpty(itemQY.getFxnr())){ + binding.etYhms.setContentText(itemQY.getFxnr()); + } + + if(!TextUtils.isEmpty(itemQY.getXjnr())){ + binding.tvXjnr.setText(itemQY.getXjnr()); + } + + if(!TextUtils.isEmpty(itemQY.getCbsz())){ + if(itemQY.getCbsz().equals("正常")){ + binding.rb1.setChecked(true); + binding.rb2.setChecked(false); + }else{ + binding.rb1.setChecked(false); + binding.rb2.setChecked(true); + } + } + + + Gson gson=new Gson(); + Log.i("app",gson.toJson(itemQY)); + if(TextUtils.isEmpty(itemQY.getPhotos())){ + Log.i("app","itemQY is null"); + }else{ + Log.i("app","itemQY not null"); + //List mDataTemp = GsonUtils.GsonToList(itemQY.getPhotos(),LocalMedia.class); + List mDataTemp =gson.fromJson(itemQY.getPhotos(), new TypeToken>() {}.getType()); + for(LocalMedia localMedia:mDataTemp){ + Log.i("app",new Gson().toJson(localMedia)); + } + mData.clear(); + mData.addAll(mDataTemp); + mAdapter.getData().clear(); + mAdapter.getData().addAll(mDataTemp); + mAdapter.notifyItemRangeInserted(0, mDataTemp.size()); + } + } + + } + + // private GridImageAdapter.onAddPicClickListener onAddPicClickListener = new GridImageAdapter.onAddPicClickListener() { +// @Override +// public void onAddPicClick() { +// +// PictureSelector.create(YhpcTakePhotoActivity.this) +// .openGallery(chooseMode)// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio() +// .loadImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎,必传项 +// .theme(themeId)// 主题样式设置 具体参考 values/styles 用法:R.style.picture.white.style v2.3.3后 建议使用setPictureStyle()动态方式 +// .isWeChatStyle(false)// 是否开启微信图片选择风格 +// .isUseCustomCamera(false)// 是否使用自定义相机 +// .setLanguage(language)// 设置语言,默认中文 +// .setPictureStyle(mPictureParameterStyle)// 动态自定义相册主题 +// .setPictureCropStyle(mCropParameterStyle)// 动态自定义裁剪主题 +// .isWithVideoImage(true)// 图片和视频是否可以同选,只在ofAll模式下有效 +// .maxSelectNum(maxSelectNum)// 最大图片选择数量 +// .minSelectNum(1)// 最小选择数量 +// .maxVideoSelectNum(1) // 视频最大选择数量,如果没有单独设置的需求则可以不设置,同用maxSelectNum字段 +// .imageSpanCount(4)// 每行显示个数 +// .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回 +// .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)// 设置相册Activity方向,不设置默认使用系统 +// .isOriginalImageControl(false)// 是否显示原图控制按钮,如果设置为true则用户可以自由选择是否使用原图,压缩、裁剪功能将会失效 +// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 +// .isSingleDirectReturn(false)// 单选模式下是否直接返回,PictureConfig.SINGLE模式下有效 +// .previewImage(true)// 是否可预览图片 +// .previewVideo(true)// 是否可预览视频 +// .enablePreviewAudio(true) // 是否可播放音频 +// .isCamera(true)// 是否显示拍照按钮 +// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true +// .enableCrop(false)// 是否裁剪 +// .compress(true)// 是否压缩 +// .synOrAsy(true)//同步true或异步false 压缩 默认同步 +// .hideBottomControls(false)// 是否显示uCrop工具栏,默认不显示 +// .isGif(false)// 是否显示gif图片 +// .freeStyleCropEnabled(false)// 裁剪框是否可拖拽 +// .circleDimmedLayer(false)// 是否圆形裁剪 +// .showCropFrame(false)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false +// .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false +// .openClickSound(false)// 是否开启点击声音 +// .selectionMedia(mAdapter.getData())// 是否传入已选图片 +// .cutOutQuality(90)// 裁剪输出质量 默认100 +// .minimumCompressSize(100)// 小于100kb的图片不压缩 +// .forResult(result -> { +// mAdapter.setList(result); +// mAdapter.notifyDataSetChanged(); +// PhotoListData = result; +// }); +// +// } +// }; + private void SaveYhData() { + finalList.clear(); + for (LocalMedia media : mData) { + finalList.add(media.getCompressPath()); + Log.i("app",new Gson().toJson(media)); + } + + Log.i("app",finalList.toString().toLowerCase()); + + if(itemQY!=null){ + Log.i("app",String.valueOf(mData.size())); + ContentValues values = new ContentValues(); + values.put("photos",new Gson().toJson(mData)); + if(!TextUtils.isEmpty(binding.etYhms.toString().trim())){ + values.put("fxnr",binding.etYhms.getContentText().toString().trim()); + } + if(binding.rb1.isChecked()){ + values.put("cbsz", "正常"); + }if(binding.rb2.isChecked()){ + values.put("cbsz", "异常"); + } + DataSupport.updateAll(XSJJHXZDataBean.class, values, "scid = ? and username = ?", scid, username); + ConfirmDialog confirmDialog = new ConfirmDialog(context, "保存成功", new ConfirmDialog.ConfirmDialogListener() { + @Override + public void confirm() { + finish(); + } + }); + confirmDialog.setTvTitle("巡检内容"); + confirmDialog.setCancelable(true); + confirmDialog.show(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mAdapter != null && mAdapter.getData() != null && mAdapter.getData().size() > 0) { + outState.putParcelableArrayList("selectorList", + (ArrayList) mAdapter.getData()); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + + public Context getContext() { + return this; + } + + private void forSelectResult(PictureSelectionModel model) { + //model.forResult(PictureConfig.CHOOSE_REQUEST); + model.forResult(launcherResult); + } + + /** + * 创建一个ActivityResultLauncher + * + * @return + */ + private ActivityResultLauncher createActivityResultLauncher() { + return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult result) { + int resultCode = result.getResultCode(); + if (resultCode == RESULT_OK) { + ArrayList selectList = PictureSelector.obtainSelectorList(result.getData()); + analyticalSelectResults(selectList); + } else if (resultCode == RESULT_CANCELED) { + Log.i(TAG, "onActivityResult PictureSelector Cancel"); + } + } + }); + } + + /** + * 处理选择结果 + * + * @param result + */ + private void analyticalSelectResults(ArrayList result) { + mData = result; + for (LocalMedia media : result) { + if (media.getWidth() == 0 || media.getHeight() == 0) { + if (PictureMimeType.isHasImage(media.getMimeType())) { + MediaExtraInfo imageExtraInfo = MediaUtils.getImageSize(getContext(), media.getPath()); + media.setWidth(imageExtraInfo.getWidth()); + media.setHeight(imageExtraInfo.getHeight()); + } else if (PictureMimeType.isHasVideo(media.getMimeType())) { + MediaExtraInfo videoExtraInfo = MediaUtils.getVideoSize(getContext(), media.getPath()); + media.setWidth(videoExtraInfo.getWidth()); + media.setHeight(videoExtraInfo.getHeight()); + } + } + Log.i(TAG, "文件名: " + media.getFileName()); + Log.i(TAG, "是否压缩:" + media.isCompressed()); + Log.i(TAG, "压缩:" + media.getCompressPath()); + Log.i(TAG, "初始路径:" + media.getPath()); + Log.i(TAG, "绝对路径:" + media.getRealPath()); + Log.i(TAG, "是否裁剪:" + media.isCut()); + Log.i(TAG, "裁剪路径:" + media.getCutPath()); + Log.i(TAG, "是否开启原图:" + media.isOriginal()); + Log.i(TAG, "原图路径:" + media.getOriginalPath()); + Log.i(TAG, "沙盒路径:" + media.getSandboxPath()); + Log.i(TAG, "水印路径:" + media.getWatermarkPath()); + Log.i(TAG, "视频缩略图:" + media.getVideoThumbnailPath()); + Log.i(TAG, "原始宽高: " + media.getWidth() + "x" + media.getHeight()); + Log.i(TAG, "裁剪宽高: " + media.getCropImageWidth() + "x" + media.getCropImageHeight()); + Log.i(TAG, "文件大小: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize())); + Log.i(TAG, "文件时长: " + media.getDuration()); + } + runOnUiThread(new Runnable() { + @Override + public void run() { + boolean isMaxSize = result.size() == mAdapter.getSelectMax(); + int oldSize = mAdapter.getData().size(); + mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize); + mAdapter.getData().clear(); + mAdapter.getData().addAll(result); + mAdapter.notifyItemRangeInserted(0, result.size()); + } + }); + } + + /** + * 自定义压缩 + */ + private static class ImageFileCompressEngine implements CompressFileEngine { + + @Override + public void onStartCompress(Context context, ArrayList source, OnKeyValueResultCallbackListener call) { + Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() { + @Override + public String rename(String filePath) { + int indexOf = filePath.lastIndexOf("."); + String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg"; + return DateUtils.getCreateFileName("CMP_") + postfix; + } + }).filter(new CompressionPredicate() { + @Override + public boolean apply(String path) { + if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) { + return true; + } + return !PictureMimeType.isUrlHasGif(path); + } + }).setCompressListener(new OnNewCompressListener() { + @Override + public void onStart() { + + } + + @Override + public void onSuccess(String source, File compressFile) { + if (call != null) { + call.onCallback(source, compressFile.getAbsolutePath()); + } + } + + @Override + public void onError(String source, Throwable e) { + if (call != null) { + call.onCallback(source, null); + } + } + }).launch(); + } + } + + /** + * 自定义沙盒文件处理 + */ + private static class MeSandboxFileEngine implements UriToFileTransformEngine { + + @Override + public void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) { + if (call != null) { + call.onCallback(srcPath, SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType)); + } + } + } + + /** + * 拦截自定义提示 + */ + private static class MeOnSelectLimitTipsListener implements OnSelectLimitTipsListener { + + @Override + public boolean onSelectLimitTips(Context context, @Nullable LocalMedia media, PictureSelectionConfig config, int limitType) { + if (limitType == SelectLimitType.SELECT_MIN_SELECT_LIMIT) { + ToastUtils.showToast(context, "图片最少不能低于" + config.minSelectNum + "张"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_VIDEO_SELECT_LIMIT) { + ToastUtils.showToast(context, "视频最少不能低于" + config.minVideoSelectNum + "个"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_AUDIO_SELECT_LIMIT) { + ToastUtils.showToast(context, "音频最少不能低于" + config.minAudioSelectNum + "个"); + return true; + } + return false; + } + } + + /** + * 自定义编辑 + */ + private static class MeOnMediaEditInterceptListener implements OnMediaEditInterceptListener { + private final String outputCropPath; + private final UCrop.Options options; + + public MeOnMediaEditInterceptListener(String outputCropPath, UCrop.Options options) { + this.outputCropPath = outputCropPath; + this.options = options; + } + + @Override + public void onStartMediaEdit(Fragment fragment, LocalMedia currentLocalMedia, int requestCode) { + String currentEditPath = currentLocalMedia.getAvailablePath(); + Uri inputUri = PictureMimeType.isContent(currentEditPath) + ? Uri.parse(currentEditPath) : Uri.fromFile(new File(currentEditPath)); + Uri destinationUri = Uri.fromFile( + new File(outputCropPath, DateUtils.getCreateFileName("CROP_") + ".jpeg")); + UCrop uCrop = UCrop.of(inputUri, destinationUri); + options.setHideBottomControls(false); + uCrop.withOptions(options); + uCrop.setImageEngine(new UCropImageEngine() { + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ImageLoaderUtils.assertValidRequest(context)) { + return; + } + Glide.with(context).load(url).override(180, 180).into(imageView); + } + + @Override + public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener call) { + Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (call != null) { + call.onCall(resource); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + if (call != null) { + call.onCall(null); + } + } + }); + } + }); + uCrop.startEdit(fragment.requireActivity(), fragment, requestCode); + } + } + + /** + * 创建自定义输出目录 + * + * @return + */ + private String getSandboxPath() { + File externalFilesDir = getContext().getExternalFilesDir(""); + File customFile = new File(externalFilesDir.getAbsolutePath(), "Sandbox"); + if (!customFile.exists()) { + customFile.mkdirs(); + } + return customFile.getAbsolutePath() + File.separator; + } + + /** + * 配制UCrop,可根据需求自我扩展 + * + * @return + */ + private UCrop.Options buildOptions() { + UCrop.Options options = new UCrop.Options(); + options.setHideBottomControls(false); + options.setFreeStyleCropEnabled(true); + options.setShowCropFrame(true); + options.setShowCropGrid(false); + options.setCircleDimmedLayer(false); + options.withAspectRatio(0, 0); + options.setCropOutputPathDir(getSandboxPath()); + options.isCropDragSmoothToCenter(false); + options.setSkipCropMimeType(getNotSupportCrop()); + options.isForbidCropGifWebp(true); + options.isForbidSkipMultipleCrop(true); + options.setMaxScaleMultiplier(100); + if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) { + SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle(); + boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack(); + int statusBarColor = mainStyle.getStatusBarColor(); + options.isDarkStatusBarBlack(isDarkStatusBarBlack); + if (StyleUtils.checkStyleValidity(statusBarColor)) { + options.setStatusBarColor(statusBarColor); + options.setToolbarColor(statusBarColor); + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + } + TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle(); + if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) { + options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor()); + } else { + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + return options; + } + + private String[] getNotSupportCrop() { + return new String[]{PictureMimeType.ofGIF(), PictureMimeType.ofWEBP()}; + } + + /** + * 权限拒绝后回调 + */ + private static class MeOnPermissionDeniedListener implements OnPermissionDeniedListener { + + @Override + public void onDenied(Fragment fragment, String[] permissionArray, + int requestCode, OnCallbackListener call) { + String tips; + if (TextUtils.equals(permissionArray[0], PermissionConfig.CAMERA[0])) { + tips = "缺少相机权限\n可能会导致不能使用摄像头功能"; + } else if (TextUtils.equals(permissionArray[0], Manifest.permission.RECORD_AUDIO)) { + tips = "缺少录音权限\n访问您设备上的音频、媒体内容和文件"; + } else { + tips = "缺少存储权限\n访问您设备上的照片、媒体内容和文件"; + } + RemindDialog dialog = RemindDialog.buildDialog(fragment.getContext(), tips); + dialog.setButtonText("去设置"); + dialog.setButtonTextColor(0xFF7D7DFF); + dialog.setContentTextColor(0xFF333333); + dialog.setOnDialogClickListener(new RemindDialog.OnDialogClickListener() { + @Override + public void onClick(View view) { + PermissionUtil.goIntentSetting(fragment, requestCode); + dialog.dismiss(); + } + }); + dialog.show(); + } + } + + /** + * 外部预览监听事件 + */ + private class MyExternalPreviewEventListener implements OnExternalPreviewEventListener { + + @Override + public void onPreviewDelete(int position) { + mAdapter.remove(position); + mAdapter.notifyItemRemoved(position); + } + + @Override + public boolean onLongPressDownload(LocalMedia media) { + return false; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SbxjcjsbActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SbxjcjsbActivity.java new file mode 100755 index 0000000..6503944 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SbxjcjsbActivity.java @@ -0,0 +1,323 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.widget.Button; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.MyFragmentAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.SetxjSbModel; +import com.rehome.scbaxj.bleUtil.BluetoothLeService; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AutoRadioGroup; +import com.rehome.scbaxj.weight.NoscrollViewPager; +import org.litepal.crud.DataSupport; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import androidx.fragment.app.Fragment; + + +/** + * Created by ruihong on 2017/11/30. + */ + +public class SbxjcjsbActivity extends BaseActivity3 { + + public static int Req = 101; + NoscrollViewPager vp; + RadioButton rb1; + RadioButton rb2; + RadioButton rb3; + AutoRadioGroup rg; + Button btnSaveNext; + Button btnNext; + Button btnLast; + + private MyFragmentAdapter adapter; + private List list; + private XJCJFragment xjcjFragment; + private int item = 0; + private boolean isEdit = false; + private int index = 0; + private String LX, LXResult; + private String username; + private String smfs; + private String type = null; + + //新数据 + private ArrayList xsjjhDataBeanArrayList; + private ArrayList setSbModelList; + + + @Override + public int getLayoutId() { + return R.layout.activity_sbxjcjsb; + } + + @Override + public void initView() { + username = (String) SPUtils.get(context, Contans.USERID, ""); + vp = findViewById(R.id.vp); + rb1 = findViewById(R.id.rb1); + rb2 = findViewById(R.id.rb2); + rb3 = findViewById(R.id.rb3); + rg = findViewById(R.id.rg); + btnSaveNext = findViewById(R.id.btn_save_next); + btnNext = findViewById(R.id.btn_next); + btnLast = findViewById(R.id.btn_last); + btnLast.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + --item; + if (item == 0) { + btnLast.setEnabled(false); + item++; + showToast("当前为第一条"); + } else { + xjcjFragment.updata(xsjjhDataBeanArrayList.get(item - 1), item, xsjjhDataBeanArrayList.size()); + } + } + }); + btnNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + next(); + } + }); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + + super.onActivityResult(requestCode, resultCode, data); + + if (resultCode != RESULT_OK) return; + + if (requestCode == Req) { + + if (data != null) { + + setSbModelList = data.getParcelableArrayListExtra("setSbModelList"); + + //更新数据源 + for (int i = 0; i < setSbModelList.size(); i++) { + for (int j = 0; j < xsjjhDataBeanArrayList.size(); j++) { + if (xsjjhDataBeanArrayList.get(j).getSbid().equals(setSbModelList.get(i).getSbId())) { + xsjjhDataBeanArrayList.get(j).setCJJG(setSbModelList.get(i).getValue()); + xsjjhDataBeanArrayList.get(j).setChecked(setSbModelList.get(i).getStatu()); + } + } + } + + //更新当前的检查配件状态 + if (xjcjFragment != null) { + xjcjFragment.updateState(xsjjhDataBeanArrayList.get(index).getCJJG()); + xjcjFragment.updatecheck(xsjjhDataBeanArrayList.get(index).isChecked()); + xjcjFragment.updateFXNR(xsjjhDataBeanArrayList.get(index).getFxnr()); + } + } + } + + + } + + public void initData() { + initToolbar("设备巡检详情", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent2 = new Intent(SbxjcjsbActivity.this, SbxjcjsbActivity.class); + intent2.putParcelableArrayListExtra("setSbModelList", setSbModelList); + setResult(RESULT_OK, intent2); + finish(); + } + }, new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); + Bundle bundle = SbxjcjsbActivity.this.getIntent().getExtras(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + smfs = bundle.getString("smfs"); + xsjjhDataBeanArrayList = bundle.getParcelableArrayList("xsjjhDataBeanArrayList"); + index = bundle.getInt(Contans.KEY_ITEM); + item = bundle.getInt(Contans.KEY_ITEM) + 1; + //itemposition = bundle.getInt("itemposition"); + LX = bundle.getString("LX"); + type = bundle.getString("type"); + LXResult = bundle.getString("LXResult"); + } + + if (!isEdit) { + btnSaveNext.setVisibility(View.GONE); + } + list = new ArrayList<>(); + if (xsjjhDataBeanArrayList.size() != 0) { + xjcjFragment = XJCJFragment.newInstance(isEdit, xsjjhDataBeanArrayList.get(index), xsjjhDataBeanArrayList.size(), index + 1); + } else { + xjcjFragment = XJCJFragment.newInstance(isEdit, new XSJJHDataBean(), 0, 0); + } + list.add(xjcjFragment); + + adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); + vp.setAdapter(adapter); + vp.setOffscreenPageLimit(3); + rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + if(i==R.id.rb1){ + rb1.setTextColor(Color.WHITE); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(0, false); + }else if(i==R.id.rb2){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.WHITE); + rb3.setTextColor(Color.GRAY); + vp.setCurrentItem(1, false); + }else if(i==R.id.rb3){ + rb1.setTextColor(Color.GRAY); + rb2.setTextColor(Color.GRAY); + rb3.setTextColor(Color.WHITE); + vp.setCurrentItem(2, false); + } + } + }); + + } + + public void next() { + if (xsjjhDataBeanArrayList.size() != 0) { + if (!btnLast.isEnabled()) { + btnLast.setEnabled(true); + } + if (isEdit) { + + if (!xjcjFragment.getCJJG().equals("")) { + ContentValues values = new ContentValues(); + values.put("smfs", smfs); + values.put("checked", true); + values.put("CJJG", xjcjFragment.getCJJG()); + if(xjcjFragment.getYc_Fxnr()!=null){ + values.put("fxnr", xjcjFragment.getYc_Fxnr()); + } + values.put("DATE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + int i = DataSupport.updateAll(XSJJHDataBean.class, values, "scid = ? and mk = ? and username = ? ", xsjjhDataBeanArrayList.get(item - 1).getScid(),type,username); + if (i != 0) { + xsjjhDataBeanArrayList.get(item - 1).setChecked(true); + xsjjhDataBeanArrayList.get(item - 1).setCJJG(xjcjFragment.getCJJG()); + xsjjhDataBeanArrayList.get(item - 1).setFxnr(xjcjFragment.getYc_Fxnr()); + showToast("保存成功"); + updateItem(xjcjFragment.getCJJG(), item - 1,xsjjhDataBeanArrayList.get(item - 1).getScid()); + } + } else { + showToast("没有采集结果"); + } + + if (!xjcjFragment.getCJJG().equals("")) { + ++item; + if (item > xsjjhDataBeanArrayList.size()) { + item--; + xjcjFragment.updata(xsjjhDataBeanArrayList.get(item - 1), item, xsjjhDataBeanArrayList.size()); + finish(); + //showToast("到底了"); + } else { + xjcjFragment.updata(xsjjhDataBeanArrayList.get(item - 1), item, xsjjhDataBeanArrayList.size()); + } + } else { + showToast("没有采集结果"); + } + + + } else { + if (xsjjhDataBeanArrayList.size() != 0) { + ++item; + if (!btnLast.isEnabled()) { + btnLast.setEnabled(true); + } + if (item > xsjjhDataBeanArrayList.size()) { + item--; +// finish(); + + } else { + xjcjFragment.updata(xsjjhDataBeanArrayList.get(item - 1), item, xsjjhDataBeanArrayList.size()); + + } + } + } + } + } + + public int getItem() { + return item - 1; + } + + + private void updateItem(String name, int position,String scid) { + Intent intent = new Intent(Contans.ACTION_YULONE); + //intent.putExtra(Contans.KEY_POSITION, position); + intent.putExtra(Contans.KEY_NAME, name); + intent.putExtra(Contans.SCID, scid); + //发送广播 + sendBroadcast(intent); + + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { + finish(); + return true; + } + return super.onKeyDown(keyCode, event); + } + + private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + String Data = ""; + if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { + String BleData = intent.getStringExtra(BluetoothLeService.EXTRA_DATA); + String type = BleData.substring(0, 1); + if (type.equals("T")) { + Data = "温度:" + BleData.substring(2, 6); + } else { + Data = "震动:" + BleData.substring(2, 6); + } + xjcjFragment.getBlueToothData(Data); + } + } + }; + + static IntentFilter makeGattUpdateIntentFilter() { + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED); + intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE); + return intentFilter; + } + + @Override + protected void onDestroy() { + unregisterReceiver(mGattUpdateReceiver); + super.onDestroy(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ScxsjhFragment.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ScxsjhFragment.kt new file mode 100644 index 0000000..feca0ee --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ScxsjhFragment.kt @@ -0,0 +1,956 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.CheckBox +import android.widget.Toast +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.luck.picture.lib.entity.LocalMedia +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.ScxsAdapter +import com.rehome.scbaxj.base.BaseFragmentViewBinding +import com.rehome.scbaxj.bean.BmBean +import com.rehome.scbaxj.bean.ScxjjhBean +import com.rehome.scbaxj.bean.StatusInfo2 +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.FragmentScxsjhBinding +import com.rehome.scbaxj.utils.* +import com.rehome.scbaxj.weight.MeasureDialog +import com.rehome.scbaxj.weight.WaitDialog +import com.rehome.scbaxj.weight.toastviewbymyself +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.OnResponseListener +import com.yolanda.nohttp.rest.RequestQueue +import com.yolanda.nohttp.rest.Response +import org.litepal.crud.DataSupport +import java.io.File + + +class ScxsjhFragment(var type: String) : BaseFragmentViewBinding() { + private lateinit var headView: View + private lateinit var head: View + private lateinit var xj_cb: CheckBox + private lateinit var adapter: ScxsAdapter + private lateinit var dialog: WaitDialog + private lateinit var queue: RequestQueue + //private var noCheck = 0 + private val dbxjjh: MutableList = mutableListOf() + private val xsJjhDataBeanMap: MutableMap> = mutableMapOf() + private val xsJjhBaDataBeanMap: MutableMap> = + mutableMapOf() + private lateinit var username: String + + private var needUploadPhotoCount = 0 + private var uploadPhotoSuccessCount = 0 + + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (Contans.ACTION_REFRESHPLANUPLOAD == action) { + //刷新页面 + initData() + } + } + } + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentScxsjhBinding.inflate(inflater) + + override fun initView() { + queue = NoHttp.newRequestQueue(1) + username = SPUtils.get(context, Contans.USERID, "") as String + binding.lv.emptyView = binding.tvNodata + dialog = WaitDialog(context, "上传数据中...请稍等...") + dialog.setCancelable(false) + headView = View.inflate(context, R.layout.scxscb_item, null) + head = headView.findViewById(R.id.head) + xj_cb = headView.findViewById(R.id.xj_cb) + binding.lv.addHeaderView(headView, null, false) + xj_cb.setOnClickListener { + if (xj_cb.isChecked) { + for (i in dbxjjh.indices) { + dbxjjh[i].isChecked = true + adapter.notifyDataSetChanged() + } + } else { + for (i in dbxjjh.indices) { + dbxjjh[i].isChecked = false + adapter.notifyDataSetChanged() + } + } + } + val filter = IntentFilter() + filter.addAction(Contans.ACTION_REFRESHPLANUPLOAD) + requireActivity().registerReceiver(myReceiver, filter) + uploadBtnClick() + deleteBtnClick() + } + + override fun initData() { + xj_cb.isChecked = false + when (type) { + "BA" -> { + getDataInSQLBA() //获取保安数据 + } + "XF" -> { + getDataInSQLXF() //获取消防数据 + } + else -> { + getDataInSQL() //获取运行,燃料数据 + } + } + setListData() //显示数据 + } + + private fun setListData() { + adapter = ScxsAdapter(context, dbxjjh) { view: View -> + val checkBox = view as CheckBox + val index = checkBox.tag as Int + dbxjjh[index].isChecked = checkBox.isChecked + var count = 0 + for (a in dbxjjh.indices) { + if (dbxjjh[a].isChecked) { + count++ + } + } + xj_cb.isChecked = count == dbxjjh.size + adapter.notifyDataSetChanged() + } + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { _: AdapterView<*>?, _: View?, i: Int, _: Long -> + dbxjjh[i - 1].isChecked = !dbxjjh[i - 1].isChecked + var count = 0 + for (a in dbxjjh.indices) { + if (dbxjjh[a].isChecked) { + count++ + } + } + xj_cb.isChecked = count == dbxjjh.size + adapter.notifyDataSetChanged() + } + } + + /** + * 获取数据库的数据 + */ + fun getDataInSQL() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHDataBean::class.java + ) + var count = 0 + for (j in qydDataBeen.indices) { + if (qydDataBeen[j].isChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhDataBeanMap[dataBean.zxid] = qydDataBeen + if (count != 0) { + toastviewbymyself.makeText(activity, "有巡检数据未上传,请检查!!!", Toast.LENGTH_LONG).show() + } + } + } + + /** + * 获取保安数据库的数据 + */ + fun getDataInSQLBA() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhBaDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + if (dataBean.zxid != "") { + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHXZDataBean::class.java + ) + var count = 0 + for (j in qydDataBeen.indices) { + if (qydDataBeen[j].isBAChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhBaDataBeanMap[dataBean.zxid] = qydDataBeen + if (count != 0) { + toastviewbymyself.makeText(activity, "有巡检数据未上传,请检查!!!", Toast.LENGTH_LONG) + .show() + } + } + } + } + + /** + * 获取消防数据库的数据 + */ + fun getDataInSQLXF() { + dbxjjh.clear() + dbxjjh.addAll( + DataSupport.where("download = ? and mk = ? and username = ?", "1", type, username) + .find( + Xjjh::class.java + ) + ) + xsJjhDataBeanMap.clear() + for (i in dbxjjh.indices) { + val dataBean = dbxjjh[i] + val qydDataBeen = + DataSupport.where("zxid = ? and username = ?", dataBean.zxid, username).find( + XSJJHDataBean::class.java + ) + var count = 0 + for (j in qydDataBeen.indices) { + if (qydDataBeen[j].isChecked) { + count++ + } + } + dataBean.countPercent = count.toString() + xsJjhDataBeanMap[dataBean.zxid] = qydDataBeen + if (count != 0) { + toastviewbymyself.makeText(activity, "有巡检数据未上传,请检查!!!", Toast.LENGTH_LONG).show() + } + } + } + + private fun uploadBtnClick() { + binding.btnSc.setOnClickListener { + if (type == "BA") { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //上传勾选中的保安数据 + uploadDataBaCheck() + } else { + showToast("无法连接到服务器,请检查wifi网络") + } + } else if (type == "XF") { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //上传勾选中的消防数据 + uploadDataCheckXf() + } else { + showToast("无法连接到服务器,请检查wifi网络") + } + } else { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //上传勾选中的运行和燃料数据 + uploadDataCheck() + } else { + showToast("无法连接到服务器,请检查wifi网络") + } + } + } + } + + private fun deleteBtnClick() { + binding.btnDel.setOnClickListener { + //删除勾选中的数据 + deleteData() + } + } + + private fun deleteData() { + var count = 0 + for (a in dbxjjh.indices) { + if (dbxjjh[a].isChecked) { + count++ + } + } + if (count == 0) { + showToast("请选择要删除的计划") + return + } + val measureDialog = + MeasureDialog(context, "你确定要删除?", object : MeasureDialog.AuditDialogListener { + override fun confirm() { + for (i in dbxjjh.indices) { + if (dbxjjh[i].isChecked) { + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + dbxjjh[i].zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + dbxjjh[i].zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + dbxjjh[i].zxid, + username + ) + } + } + + //刷新页面 + initData() + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent) + } + + override fun cancel() {} + }) + measureDialog.show() + } + + override fun onDestroyView() { + super.onDestroyView() + requireActivity().unregisterReceiver(myReceiver) + } + + private fun uploadDataBaCheck() { + var isSelectUpLoad = false + for (i in dbxjjh.indices) { + if (dbxjjh[i].isChecked) { + isSelectUpLoad = true + } + } + if (!isSelectUpLoad) { + //没有选中要上传的计划 + showToast("请选择要上传的计划") + } else { + //上传选择的计划 + //showToast("上传选中的计划"); + val measureDialog = + MeasureDialog(context, "确定要上传选中的计划吗?", object : MeasureDialog.AuditDialogListener { + override fun confirm() { + //uploadDataBA(); + checkNeedUpLoadPhoto() + } + + override fun cancel() {} + }) + measureDialog.show() + } + } + + //保安巡检 检查看是否有图片要上传 + private fun checkNeedUpLoadPhoto() { + needUploadPhotoCount = 0 + uploadPhotoSuccessCount = 0 + val dbxjjhCanUpload: MutableList = mutableListOf() + val qydDataListCanUpload: MutableList = mutableListOf() + val qydDataListNeedUploadPhoto: MutableList = mutableListOf() + for (xjjh in dbxjjh) { + if (xjjh.isChecked) { + val qydDataList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHXZDataBean::class.java + ) + if (qydDataList != null && qydDataList.size > 0) { + dbxjjhCanUpload.add(xjjh) + qydDataListCanUpload.addAll(qydDataList) + } + } + } + if (dbxjjhCanUpload.size > 0) { + Log.i("app", "可上传") + for (itemQyd in qydDataListCanUpload) { + //有图片需要上传 + if (!TextUtils.isEmpty(itemQyd.photos)) { + needUploadPhotoCount++ + qydDataListNeedUploadPhoto.add(itemQyd) + } + } + //有图片需要上传 + if (qydDataListNeedUploadPhoto.size > 0) { + //上传有图片的区域 + for (itemQyd in qydDataListNeedUploadPhoto) { + uploadPhotoDataBA(itemQyd, dbxjjhCanUpload) + } + } else { + //不需要上传图片,直接上传数据 + uploadDataBA() + } + } else { + Log.i("app", "不可上传") + } + } + + //保安巡检上传图片 + private fun uploadPhotoDataBA(itemQyd: XSJJHXZDataBean, dbxjjhCanUpload: List) { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.BA_UPLOAD_PHOTO_URL, RequestMethod.POST) + request.add("Action", "BAXJ") + request.add("SCID", itemQyd.scid) + val gson = Gson() + val mDataTemp = gson.fromJson>( + itemQyd.photos, + object : TypeToken?>() {}.type + ) + for (localMedia in mDataTemp) { + Log.i("app", Gson().toJson(localMedia)) + if(localMedia.compressPath!=null){ + request.add("file", File(localMedia.compressPath)) + }else{ + if(localMedia.sandboxPath!=null){ + request.add("file", File(localMedia.sandboxPath)) + } + } + } + queue.add( + 1, + request, + object : OnResponseListener { + override fun onStart(what: Int) { + dialog.show() + } + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, BmBean::class.java) + if (bean != null && bean.state == 1) { + uploadPhotoSuccessCount++ + if (uploadPhotoSuccessCount == needUploadPhotoCount) { + Log.i("app", "图片上传完成") + uploadDataBA() + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + dialog.dismiss() + } + }) + } + + //保安巡检上传数据 + private fun uploadDataBA() { + for (xjjh in dbxjjh) { + if (xjjh.isChecked) { + val scxjjhbean = ScxjjhBean() + scxjjhbean.action = "BA_XJGL_RWSC_SET" + scxjjhbean.qzwc = 0 + scxjjhbean.zxid = xjjh.zxid + val xsjjhdatabeanList: List? = xsJjhBaDataBeanMap[xjjh.zxid] + val datalist: MutableList = mutableListOf() + for (j in xsjjhdatabeanList!!.indices) { + val datas = ScxjjhBean.data() + datas.scid = xsjjhdatabeanList[j].scid + datas.dbh = xsjjhdatabeanList[j].qybh + if (xsjjhdatabeanList[j].isBAChecked) { + if(TextUtils.isEmpty(xsjjhdatabeanList[j].cbsz)){ + datas.cbsz = "正常" + }else{ + datas.cbsz = xsjjhdatabeanList[j].cbsz + } + } else { + datas.cbsz = "" + } + if (xsjjhdatabeanList[j].date == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].date + } + datas.zcmc = SPUtils.get(context, Contans.BZBH, "") as String + datas.cbr = SPUtils.get(context, Contans.USERID, "") as String + if (xsjjhdatabeanList[j].fxnr == null) { + datas.fxnr = "" + } else { + datas.fxnr = xsjjhdatabeanList[j].fxnr + } + if (xsjjhdatabeanList[j].smfs != null) { + datas.smfx = xsjjhdatabeanList[j].smfs + } else { + datas.smfx = "" + } + if (xsjjhdatabeanList[j].djsj == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].djsj + } + datalist.add(datas) + } + scxjjhbean.data = datalist + val json = GsonUtils.GsonString(scxjjhbean) + scDataBA(json, xjjh.zxid) + } + } + } + + //保安巡检上传单条计划数据 + private fun scDataBA(json: String, zxid: String) { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.XSCB_PLAN_BA_UPLOAD, RequestMethod.POST) + request.setDefineRequestBodyForJson(json) + queue.add(2, request, object : OnResponseListener { + override fun onStart(what: Int) { + dialog.show() + } + + override fun onSucceed(what: Int, response: Response?) { + val gson = Gson() + //Log.i("app", gson.toJson(response.get())); + val info = GsonUtils.GsonToBean(response?.get(), StatusInfo2::class.java) + try { + if (what == 2) { + if (info.state == 1) { + //成功 + showToast("上传数据成功") + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + //刷新当前页面 + initData() + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent) + } else { + showToast("上传数据失败") + } + } + } catch (e: Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + dialog.dismiss() + } + }) + } + + private fun uploadDataCheck() { + var isSelectUpLoad = false + for (i in dbxjjh.indices) { + if (dbxjjh[i].isChecked) { + isSelectUpLoad = true + } + } + if (!isSelectUpLoad) { + //没有选中要上传的计划 + showToast("请选择要上传的计划") + } else { + //上传选择的计划 + //showToast("上传选中的计划"); + val measureDialog = + MeasureDialog(context, "确定要上传选中的计划吗?", object : MeasureDialog.AuditDialogListener { + override fun confirm() { + uploadData() + } + + override fun cancel() {} + }) + measureDialog.show() + } + } + + private fun uploadData() { + for (xjjh in dbxjjh) { + val scxjjhbean = ScxjjhBean() + scxjjhbean.action = "YX_XJGL_RWSC_SET" + scxjjhbean.qzwc = 0 + if (xjjh.isChecked) { + val xsjjhdatabeanList: List? = xsJjhDataBeanMap[xjjh.zxid] + scxjjhbean.zxid = xjjh.zxid + val datalist: MutableList = mutableListOf() + for (j in xsjjhdatabeanList!!.indices) { + val datas = ScxjjhBean.data() + datas.scid = xsjjhdatabeanList[j].scid + if (xsjjhdatabeanList[j].dbh != null) { + datas.dbh = xsjjhdatabeanList[j].dbh + } else { + datas.dbh = "" + } + if (xsjjhdatabeanList[j].cjjg == null) { + datas.cbsz = "" + } else { + datas.cbsz = xsjjhdatabeanList[j].cjjg + } + if (xsjjhdatabeanList[j].date == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].date + } + if (xsjjhdatabeanList[j].smfs != null) { + datas.smfx = xsjjhdatabeanList[j].smfs + } else { + datas.smfx = "" + } + if (xsjjhdatabeanList[j].fxnr != null) { + datas.fxnr = xsjjhdatabeanList[j].fxnr + } else { + datas.fxnr = "" + } + datas.zcmc = SPUtils.get(context, Contans.BZBH, "") as String + datas.cbr = SPUtils.get(context, Contans.USERID, "") as String + datalist.add(datas) + } + scxjjhbean.data = datalist + val json = GsonUtils.GsonString(scxjjhbean) + sCData(json, xjjh.zxid) + } + } + } + + private fun sCData(json: String, zxid: String) { + val request = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST) + request.setDefineRequestBodyForJson(json) + queue.add( + 1, + request, + object : OnResponseListener { + override fun onStart(what: Int) { + dialog.show() + } + + override fun onSucceed(what: Int, response: Response?) { + val info = GsonUtils.GsonToBean(response?.get(), StatusInfo2::class.java) + try { + if (what == 1) { + if (info.state == 1) { + //成功 + showToast("上传数据成功") + //这里处理那个删除哪条上传成功的计划 + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + zxid, + username + ) + //刷新页面 + initData() + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent) + } else { + showToast("上传数据失败") + } + } + } catch (e: java.lang.Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + dialog.dismiss() + } + } + ) + } + + private fun uploadDataCheckXf() { + var isSelectUpLoad = false + for (i in dbxjjh.indices) { + if (dbxjjh[i].isChecked) { + isSelectUpLoad = true + } + } + if (!isSelectUpLoad) { + //没有选中要上传的计划 + showToast("请选择要上传的计划") + } else { + //上传选择的计划 + //showToast("上传选中的计划"); + val measureDialog = + MeasureDialog(context, "确定要上传选中的计划吗?", object : MeasureDialog.AuditDialogListener { + override fun confirm() { + //uploadDataXf() + checkNeedUpLoadPhotoXf() + } + + override fun cancel() {} + }) + measureDialog.show() + } + } + + //消防巡检 检查看是否有图片要上传 + private fun checkNeedUpLoadPhotoXf() { + needUploadPhotoCount = 0 + uploadPhotoSuccessCount = 0 + val dbxjjhCanUpload: MutableList = mutableListOf() + val qydDataListCanUpload: MutableList = mutableListOf() + val qydDataListNeedUploadPhoto: MutableList = mutableListOf() + for (xjjh in dbxjjh) { + if (xjjh.isChecked) { + val qydDataList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHDataBean::class.java + ) + if (qydDataList != null && qydDataList.size > 0) { + dbxjjhCanUpload.add(xjjh) + qydDataListCanUpload.addAll(qydDataList) + } + } + } + if (dbxjjhCanUpload.size > 0) { + Log.i("app", "可上传") + for (itemQyd in qydDataListCanUpload) { + //有图片需要上传 + if (!TextUtils.isEmpty(itemQyd.photos)) { + needUploadPhotoCount++ + qydDataListNeedUploadPhoto.add(itemQyd) + } + } + //有图片需要上传 + if (qydDataListNeedUploadPhoto.size > 0) { + //上传有图片的区域 + for (itemQyd in qydDataListNeedUploadPhoto) { + uploadPhotoDataXf(itemQyd, dbxjjhCanUpload) + } + } else { + //不需要上传图片,直接上传数据 + uploadDataXf(dbxjjhCanUpload) + } + } else { + Log.i("app", "不可上传") + } + } + + //消防巡检上传图片 + private fun uploadPhotoDataXf(itemQyd: XSJJHDataBean, dbxjjhCanUpload: List) { + val request = + NoHttp.createStringRequest(Contans.IP + Contans.XF_UPLOAD_PHOTO_URL, RequestMethod.POST) + request.add("Action", "XFXJ") + request.add("SCID", itemQyd.scid) + val gson = Gson() + val mDataTemp = gson.fromJson>( + itemQyd.photos, + object : TypeToken?>() {}.type + ) + for (localMedia in mDataTemp) { + Log.i("app", Gson().toJson(localMedia)) + if(localMedia.compressPath!=null){ + request.add("file", File(localMedia.compressPath)) + }else{ + if(localMedia.sandboxPath!=null){ + request.add("file", File(localMedia.sandboxPath)) + } + } + } + queue.add( + 1, + request, + object : OnResponseListener { + override fun onStart(what: Int) { + dialog.show() + } + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, BmBean::class.java) + if (bean != null && bean.state == 1) { + uploadPhotoSuccessCount++ + if (uploadPhotoSuccessCount == needUploadPhotoCount) { + Log.i("app", "图片上传完成") + uploadDataXf(dbxjjhCanUpload) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + dialog.dismiss() + } + }) + } + + private fun uploadDataXf(dbxjjhCanUpload: List) { + for (xjjh in dbxjjhCanUpload) { + val scxjjhbean = ScxjjhBean() + scxjjhbean.action = "XF_XJGL_RWSC_SET" + scxjjhbean.qzwc = 0 + scxjjhbean.zxid = xjjh.zxid + val xsjjhdatabeanList = + DataSupport.where("zxid = ? and username = ?", xjjh.zxid, username).find( + XSJJHDataBean::class.java + ) + val datalist: MutableList = mutableListOf() + for (j in xsjjhdatabeanList.indices) { + val datas = ScxjjhBean.data() + datas.scid = xsjjhdatabeanList[j].scid + if (xsjjhdatabeanList[j].dbh != null) { + datas.dbh = xsjjhdatabeanList[j].dbh + } else { + datas.dbh = "" + } + if (xsjjhdatabeanList[j].cjjg == null) { + datas.cbsz = "" + } else { + datas.cbsz = xsjjhdatabeanList[j].cjjg + } + if (xsjjhdatabeanList[j].date == null) { + datas.djsj = "" + } else { + datas.djsj = xsjjhdatabeanList[j].date + } + if (xsjjhdatabeanList[j].smfs != null) { + datas.smfx = xsjjhdatabeanList[j].smfs + } else { + datas.smfx = "" + } + if (xsjjhdatabeanList[j].fxnr != null) { + datas.fxnr = xsjjhdatabeanList[j].fxnr + } else { + datas.fxnr = "" + } + datas.zcmc = SPUtils.get(context, Contans.BZBH, "") as String + datas.cbr = SPUtils.get(context, Contans.USERID, "") as String + datalist.add(datas) + } + scxjjhbean.data = datalist + val json = GsonUtils.GsonString(scxjjhbean) + val url = Contans.IP + Contans.XF_PLAN_BA_UPLOAD + Log.i("app",url) + Log.i("app",json) + val request = NoHttp.createStringRequest( + url, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + queue.add(3, request, object : OnResponseListener { + override fun onStart(what: Int) { + dialog.show() + } + + override fun onSucceed(what: Int, response: Response?) { + val gson = Gson() + val result = response?.get() + if (result != null) { + Log.i("app", gson.toJson(result)) + } + val info = GsonUtils.GsonToBean(result, StatusInfo2::class.java) + if (info != null) { + try { + if (what == 3) { + if (info.state == 1) { + //成功 + showToast("上传数据成功") + DataSupport.deleteAll( + XSJJHXZDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + XSJJHDataBean::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + xjjh.zxid, + username + ) + //刷新计划下载界面 + //刷新页面 + initData() + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //发送广播,刷新任务下载页面 + requireActivity().sendBroadcast(intent) + } else { + showToast("上传数据失败") + } + } + } catch (e: java.lang.Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + override fun onFinish(what: Int) { + dialog.dismiss() + } + }) + } + } + + fun myTString(): String { + val s:String = "mt" + val a = "world" + return "hello $a" + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxSbListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxSbListActivity.java new file mode 100755 index 0000000..d548e38 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxSbListActivity.java @@ -0,0 +1,199 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.ContentValues; +import android.content.Intent; +import android.view.View; +import android.widget.Button; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.weight.ListDialog; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + +public class SxSbListActivity extends BaseActivity3 { + ListView lv; + TextView tvNodata; + Button Btn_Xjsj; + + + private View headView; + private CommonAdapter adapter; + private List xsjjhxzDataBeanList_sb = new ArrayList<>();//工作列表 + Intent intent; + private int pos = -1; + private String state; + + @Override + public int getLayoutId() { + return R.layout.activity_xsxzsbstate; + } + + @Override + public void initView() { + initToolbar("选择设备状态", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + Btn_Xjsj = findViewById(R.id.btn_xjsj); + + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.xsgzsblist_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + initNFC(); + } + + public void initData() { + getDataInSqlite(); + setListData(); + Btn_Xjsj.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (xsjjhxzDataBeanList_sb.isEmpty()) { + showToast("你还没有下载巡检数据!"); + } else { + intent = new Intent(SxSbListActivity.this, SxgzActivity.class); + startActivity(intent); + finish(); + } + } + }); + } + + private void getDataInSqlite() { + xsjjhxzDataBeanList_sb.clear(); + xsjjhxzDataBeanList_sb.addAll(DataSupport.findAll(XSJJHXZDataBean.class)); + Set xsjjhxzDataBeanSet = new TreeSet<>((o1, o2) -> o1.getSbmc().compareTo(o2.getSbmc())); + xsjjhxzDataBeanSet.addAll(xsjjhxzDataBeanList_sb); + xsjjhxzDataBeanList_sb.clear(); + xsjjhxzDataBeanList_sb.addAll(xsjjhxzDataBeanSet); + } + + private void setListData() { + if (adapter == null) { + adapter = new CommonAdapter(context, R.layout.xsgzsblist_item, xsjjhxzDataBeanList_sb) { + @Override + protected void convert(ViewHolder viewHolder, XSJJHXZDataBean item, int position) { + viewHolder.setText(R.id.tv_qymc, item.getSbmc()); + if (item.getSBMCSTATE() == null) { + viewHolder.setText(R.id.tv_sbstate, " "); + } else { + viewHolder.setText(R.id.tv_sbstate, item.getSBMCSTATE() + ""); + } + + } + }; + + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, postion, l) -> { + pos = postion; + List datas = new ArrayList<>(); + datas.add("已运行"); + datas.add("已停用"); + datas.add("大小修"); + ListDialog dialog = new ListDialog(context, datas, (text, position) -> { + state = text; + switch (text) { + case "已运行": { + ContentValues values3 = new ContentValues(); + values3.put("checked", false); + values3.put("CJJG", ""); + values3.put("SBMCSTATE", text); + values3.put("SBMCSTATEVALUE", "5"); + int i = DataSupport.updateAll(XSJJHDataBean.class, values3, "sbmc = ?", xsjjhxzDataBeanList_sb.get(postion - 1).getSbmc()); + if (i != 0) { + showToast("修改设备状态成功"); + } else { + showToast("修改设备状态失败"); + } + break; + } + case "已停用": { + ContentValues values = new ContentValues(); + values.put("checked", true); + values.put("SBMCSTATEVALUE", "3"); + values.put("CJJG", text); + values.put("SBMCSTATE", text); + int i = DataSupport.updateAll(XSJJHDataBean.class, values, "sbmc = ? and TJXJZT = ? ", xsjjhxzDataBeanList_sb.get(postion - 1).getSbmc(), "1");//如果TJXJZT为1 则不需要打点 + if (i != 0) { + showToast("修改设备状态成功"); + } else { + showToast("修改设备状态失败"); + } + break; + } + case "大小修": { + ContentValues values2 = new ContentValues(); + values2.put("checked", true); + values2.put("SBMCSTATEVALUE", "4"); + values2.put("CJJG", text); + values2.put("SBMCSTATE", text); + int i = DataSupport.updateAll(XSJJHDataBean.class, values2, "sbmc = ?", xsjjhxzDataBeanList_sb.get(postion - 1).getSbmc()); + if (i != 0) { + showToast("修改设备状态成功"); + } else { + showToast("修改设备状态失败"); + } + break; + } + + } + ContentValues values2 = new ContentValues(); + switch (text) { + case "已停用": + values2.put("SBMCSTATE", text); + values2.put("SBMCSTATEVALUE", "3"); + break; + case "大小修": + values2.put("SBMCSTATE", text); + values2.put("SBMCSTATEVALUE", "4"); + break; + case "已运行": + values2.put("SBMCSTATE", text); + values2.put("SBMCSTATEVALUE", "5"); + break; + } + + int J = DataSupport.updateAll(XSJJHXZDataBean.class, values2, "sbmc = ? ", xsjjhxzDataBeanList_sb.get(postion - 1).getSbmc()); + if (J != 0) { + showToast("修改设备状态成功"); + } else { + showToast("修改设备状态失败"); + } + }); + dialog.setTvTitle("选择设备状态"); + dialog.show(); + dialog.setOnDismissListener(dialog1 -> { + if (pos != -1) { + xsjjhxzDataBeanList_sb.get(pos - 1).setSBMCSTATE(state); + adapter.notifyDataSetChanged(); +// SetxjSbModel setxjSbModel = new SetxjSbModel(); +// setxjSbModel.setSbId(infos.get(pos - 1).getSbmc()); +// setxjSbModel.setValue(state); +// setxjSbModel.setStatu(true); +// setSbModelList.add(setxjSbModel); + } + }); + }); + } else { + adapter.notifyDataSetChanged(); + } + + + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxgzActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxgzActivity.kt new file mode 100644 index 0000000..66845c0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/SxgzActivity.kt @@ -0,0 +1,749 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.ContentValues +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import android.util.Log +import android.view.View +import android.widget.AdapterView +import android.widget.TextView +import android.widget.Toast +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import com.rehome.scbaxj.DBModel.UploadLocation +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.R +import com.rehome.scbaxj.activity.xfxj.XfYulActivity +import com.rehome.scbaxj.adapter.CommonAdapter +import com.rehome.scbaxj.adapter.ViewHolder +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.base.MipcaActivityCapture +import com.rehome.scbaxj.bean.PointCheckedPersion +import com.rehome.scbaxj.bean.XsRequestInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivitySxgzBinding +import com.rehome.scbaxj.utils.GsonUtils +import com.rehome.scbaxj.utils.HttpListener +import com.rehome.scbaxj.utils.NoProgresshttpUtils +import com.rehome.scbaxj.utils.SPUtils +import com.rehome.scbaxj.weight.BaCheckDialog +import com.rehome.scbaxj.weight.BaCheckDialog.BaCheckDialogListener +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Response +import org.litepal.crud.DataSupport +import java.text.SimpleDateFormat +import java.util.* + +/** + * Create By HuangWenFei + * 创建日期:2023-02-06 16:24 + * 描述:巡检工作 + */ +class SxgzActivity : BaseActivityOaToolbarViewBinding() { + private lateinit var headView: View + private lateinit var tv_djrw: TextView + private val CAMERA_REQUEST_CODE = 3 //请求码 + var nfcValue: String? = null + private lateinit var type: String + private lateinit var username: String + private lateinit var launcherResult: ActivityResultLauncher + + private val xsjjhxzDataBeanList: MutableList = mutableListOf() + private val checkedList: MutableList = mutableListOf() + private val noCheckeList: MutableList = mutableListOf() + private val checkedListBA: MutableList = mutableListOf() + private val noCheckeListBA: MutableList = mutableListOf() + private val qybh: MutableList = mutableListOf() + private val xsjjhDataBeanArrayList: ArrayList = ArrayList()//点检记录列表 + + + private lateinit var adapter: CommonAdapter + + override fun getViewBinding() = ActivitySxgzBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("巡检工作(请使用NFC)", "", {finish() }, { + //动态权限申请 + //动态权限申请 +// if (ContextCompat.checkSelfPermission( +// this, +// Manifest.permission.CAMERA +// ) != PackageManager.PERMISSION_GRANTED +// ) { +// ActivityCompat.requestPermissions( +// this, +// arrayOf(Manifest.permission.CAMERA), +// CAMERA_REQUEST_CODE +// ) +// } else { +// //扫码 +// goScan() +// } + }) + + launcherResult = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + val bundle: Bundle? = it.data?.extras + val ewm = bundle?.getString("result") + if (ewm != null) { + handleTwoCodeCheck(ewm) + } + } + } + + val intent = intent + type = intent.getStringExtra("type")!! + username = SPUtils.get(context, Contans.USERID, "") as String + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(this, R.layout.xsgz_item, null) + headView.findViewById(R.id.head).visibility = View.VISIBLE + tv_djrw = headView.findViewById(R.id.tv_djrw) + if (type == "BA") { + tv_djrw.text = "已检/未检" + } + //NFC初始化 + initNFC() + + binding.llCheck.setOnClickListener(View.OnClickListener { + val intent = Intent(this, CheckedListActivity::class.java) + intent.putExtra("type", type) + startActivity(intent) + }) + binding.llNocheck.setOnClickListener(View.OnClickListener { + val intent = Intent(this, NoCheckedListActivity::class.java) + intent.putExtra("type", type) + startActivity(intent) + }) + } + + override fun initData() { + getDataInSqlite() + setListData() + } + + private fun reloadData() { + getDataInSqlite() + adapter.notifyDataSetChanged() + } + + override fun handleNfc(result: String) { + super.handleNfc(result) + //Log.i("app", "handleNfc") + handleNfcCheck(result) + //handleNfcCheck("048E3FF2257380") + //handleNfcCheck("04B934F2257380") + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (CAMERA_REQUEST_CODE == requestCode) { + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + //扫码 + goScan() + } else { + //权限拒绝 + Toast.makeText(this, "你拒绝了权限申请,无法打开相机扫码哟!", Toast.LENGTH_SHORT).show() + } + } + } + + private fun goScan() { + val intent = Intent(this, MipcaActivityCapture::class.java) + launcherResult.launch(intent) + } + + + //加载数据库中已经下载的计划 + private fun getDataInSqlite() { + xsjjhxzDataBeanList.clear() + checkedListBA.clear() + noCheckeListBA.clear() + checkedList.clear() + noCheckeList.clear() + val planTemp = DataSupport.where("mk = ? and username = ?", type, username).find( + XSJJHXZDataBean::class.java + ) + val planTemp1: MutableList = this.removeDuplicate(planTemp) + xsjjhxzDataBeanList.addAll(planTemp1) + var totalDian:Int = 0 + var checkedCountAll = 0 + Log.i("app", xsjjhxzDataBeanList.size.toString()) + for (i in xsjjhxzDataBeanList.indices) { + val item = xsjjhxzDataBeanList[i] + if (type == "BA") { + if (item.isBAChecked) { + checkedListBA.add(item) + } else { + noCheckeListBA.add(item) + } + }else if (type == "XF") { + var checkedCount = 0 + val xsjjhdatabean = DataSupport.where( + "qybh = ? and mk = ? and username = ?", + item.qybh, + type, + username + ).find( + XSJJHDataBean::class.java + ) + for (j in xsjjhdatabean.indices) { + totalDian++; + if (xsjjhdatabean[j].isChecked) { + checkedCount++ + checkedCountAll++ + checkedList.add(item) + } + } + } else { + var checkedCount = 0 + val xsjjhdatabean = DataSupport.where( + "qybh = ? and mk = ? and username = ?", + item.qybh, + type, + username + ).find( + XSJJHDataBean::class.java + ) + for (j in xsjjhdatabean.indices) { + if (xsjjhdatabean[j].isChecked) { + checkedCount++ + } + } + val a = checkedCount + val b = xsjjhdatabean.size + if (a == b) { + checkedList.add(item) + } else { + noCheckeList.add(item) + } + } + } + + binding.totalPoint.text = xsjjhxzDataBeanList.size.toString() + if (type == "BA") { + binding.totalNoCheck.text = noCheckeListBA.size.toString() + binding.totalChecked.text = checkedListBA.size.toString() + }else if (type == "XF") { + binding.totalPoint.text = totalDian.toString() + if(checkedList.size==totalDian){ + binding.totalNoCheck.text = "0" + }else{ + binding.totalNoCheck.text = (totalDian-checkedList.size).toString() + } + binding.totalChecked.text = checkedList.size.toString() + } else { + binding.totalNoCheck.text = noCheckeList.size.toString() + binding.totalChecked.text = checkedList.size.toString() + } + } + + private fun removeDuplicate(list: MutableList): MutableList { + for (i in 0 until list.size - 1) { + for (j in list.size - 1 downTo i + 1) { + if (list[j].qybh == list[i].qybh) { + list.removeAt(j) + } + } + } + return list + } + + private fun setListData() { + adapter = object : + CommonAdapter(context, R.layout.xsgz_item, xsjjhxzDataBeanList) { + protected override fun convert( + viewHolder: ViewHolder, + item: XSJJHXZDataBean, + position: Int + ) { + if (type == "BA") { + viewHolder.setText(R.id.tv_xh, (position + 1).toString()) + viewHolder.setText(R.id.tv_qymc, item.qymc) + if (item.isBAChecked) { + if (TextUtils.isEmpty(item.fxnr) && TextUtils.isEmpty(item.photos)) { + viewHolder.setText(R.id.tv_djrw, "已检") + } else { + viewHolder.setText(R.id.tv_djrw, "已检(现场记事)") + } + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#00CD00") + ) //已经检查完成绿色 + } else { + viewHolder.setText(R.id.tv_djrw, "未检") + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#FF0000") + ) //未检查完成红色 + } + } else { + var checkedCount = 0 + val xsjjhdatabean = DataSupport.where( + "qybh = ? and mk = ? and username = ?", + item.qybh, + type, + username + ).find( + XSJJHDataBean::class.java + ) + for (i in xsjjhdatabean.indices) { + if (xsjjhdatabean[i].isChecked) { + checkedCount++ + } + } + viewHolder.setText(R.id.tv_xh, (position + 1).toString()) + viewHolder.setText(R.id.tv_qymc, item.qymc) + viewHolder.setText( + R.id.tv_djrw, + checkedCount.toString() + "/" + xsjjhdatabean.size + ) + val a = checkedCount + val b = xsjjhdatabean.size + if (a == b) { + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#00CD00") + ) //已经检查完成绿色 + } else { + viewHolder.setTextColor( + R.id.tv_djrw, + Color.parseColor("#FF0000") + ) //未检查完成红色 + } + } + } + } + binding.lv.addHeaderView(headView, null, false) + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { adapterView: AdapterView<*>?, view: View?, postion: Int, l: Long -> + if (type == "BA") { + //保安巡检 + val itemQY = xsjjhxzDataBeanList[postion - 1] + var content: String? = null + var notice: String? = null + content = itemQY.qymc + notice = itemQY.fxnr + if (content == null) { + content = "" + } + if (notice == null) { + notice = "" + } + val auditDialog = + BaCheckDialog(context, content, object : BaCheckDialogListener { + override fun confirm() {} + override fun cancel() { + val intent = Intent( + context, + ViewRecordEventActivity::class.java + ) + intent.putExtra("scid", itemQY.scid) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + }) + auditDialog.setTvTitle("巡检内容") + auditDialog.setTvMsg(content) + auditDialog.setCancelable(true) + if (TextUtils.isEmpty(itemQY.fxnr) && TextUtils.isEmpty(itemQY.photos)) { + auditDialog.hideBottomClick() + } else { + auditDialog.setBtnLeftText("查看现场记事") + } + auditDialog.show() + }else if (type == "XF") { + showToast("请使用NFC进行巡检") + nfcValue = "click" + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll( + DataSupport.where( + "qybh = ? and mk = ? and username = ?", + xsjjhxzDataBeanList[postion - 1].qybh, + type, + username + ).find( + XSJJHDataBean::class.java + ) + ) + + Log.i("app", xsjjhDataBeanArrayList.size.toString()) + Log.i("app", postion.toString()) + if (xsjjhDataBeanArrayList.size != 0) { + + val bundle = Bundle() + val intent = Intent(context, XfYulActivity::class.java) + bundle.putParcelableArrayList( + "xsjjhDataBeanArrayList", + xsjjhDataBeanArrayList + ) + bundle.putBoolean("edit", false) + bundle.putInt(Contans.KEY_ITEM, 0) + bundle.putInt("itemposition", postion - 1) + bundle.putString("LX", "Click") + bundle.putString("LXResult", "LXResult") + bundle.putString("qybh", xsjjhxzDataBeanList[postion - 1].qybh) + bundle.putString("qymc", xsjjhxzDataBeanList[postion - 1].qymc) + intent.putExtra("type", type) + bundle.putInt("from", 0) + intent.putExtras(bundle) + startActivity(intent) + } + } else { + showToast("请使用NFC进行巡检") + nfcValue = "click" + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll( + DataSupport.where( + "qybh = ? and mk = ? and username = ?", + xsjjhxzDataBeanList[postion - 1].qybh, + type, + username + ).find( + XSJJHDataBean::class.java + ) + ) + + Log.i("app", xsjjhDataBeanArrayList.size.toString()) + Log.i("app", postion.toString()) + if (xsjjhDataBeanArrayList.size != 0) { + + val bundle = Bundle() + val intent = Intent(context, XjYulActivity::class.java) + bundle.putParcelableArrayList( + "xsjjhDataBeanArrayList", + xsjjhDataBeanArrayList + ) + bundle.putBoolean("edit", false) + bundle.putInt(Contans.KEY_ITEM, 0) + bundle.putInt("itemposition", postion - 1) + bundle.putString("LX", "Click") + bundle.putString("LXResult", "LXResult") + bundle.putString("qybh", xsjjhxzDataBeanList[postion - 1].qybh) + bundle.putString("qymc", xsjjhxzDataBeanList[postion - 1].qymc) + intent.putExtra("type", type) + bundle.putInt("from", 0) + intent.putExtras(bundle) + startActivity(intent) + } + } + } + } + + //处理NFC的数据 + private fun handleNfcCheck(result: String) { + Log.i("app", "handleNfcCheck") + if (type == "BA") { + //保安巡检 + val planNFC = + DataSupport.where("nfcbm = ? and mk = ? and username = ?", result, type, username) + .find( + XSJJHXZDataBean::class.java + ) + if (planNFC != null && planNFC.size > 0) { + val itemQY = planNFC[0] + var content: String? = null + var notice: String? = null + //content = itemQY.getXjnr(); + content = itemQY.qymc + notice = itemQY.fxnr + if (content == null) { + content = "" + } + if (notice == null) { + notice = "" + } + val values = ContentValues() + values.put("isBAChecked", true) + values.put("smfs", "N") + values.put("djsj", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())) + values.put("DATE", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())) + if(TextUtils.isEmpty(itemQY.cbsz)){ + values.put("cbsz", "正常") + } + DataSupport.updateAll( + XSJJHXZDataBean::class.java, + values, + "nfcbm = ? and mk = ? and username = ?", + result, + type, + username + ) + reloadData() + val baCheckDialog = BaCheckDialog(context, content, object : BaCheckDialogListener { + override fun confirm() {} + override fun cancel() { + val intent = Intent(context, RecordEventActivity::class.java) + intent.putExtra("scid", itemQY.scid) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + }) + baCheckDialog.setTvTitle("巡检内容") + baCheckDialog.setCancelable(true) + baCheckDialog.show() + } else { + nfcValue = null + showToast("无数据请联系管理员") + } + }else if(type == "XF"){ + //运行,燃料巡检 + val xsjjhDataBeen = + DataSupport.where("nfcbm = ? and mk = ? and username = ?", result, type, username) + .find( + XSJJHDataBean::class.java + ) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen) + if (xsjjhDataBeen.size == 0) { + nfcValue = null + //getLastUploadUser(result); + showToast("无数据请联系管理员") + } else { + val bundle3 = Bundle() + val intent = Intent(context, XfYulActivity::class.java) + bundle3.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayList) + bundle3.putBoolean("edit", true) + bundle3.putInt(Contans.KEY_ITEM, 0) + bundle3.putInt("itemposition", 0) + bundle3.putString("LX", "NFC") + bundle3.putString("LXResult", result) + intent.putExtra("type", type) + intent.putExtra("smfs", "N") + bundle3.putInt("from", 0) + intent.putExtras(bundle3) + startActivity(intent) + } + } else { + //运行,燃料巡检 + val xsjjhDataBeen = + DataSupport.where("nfcbm = ? and mk = ? and username = ?", result, type, username) + .find( + XSJJHDataBean::class.java + ) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen) + if (xsjjhDataBeen.size == 0) { + nfcValue = null + //getLastUploadUser(result); + showToast("无数据请联系管理员") + } else { + val bundle3 = Bundle() + val intent = Intent(context, XjYulActivity::class.java) + bundle3.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayList) + bundle3.putBoolean("edit", true) + bundle3.putInt(Contans.KEY_ITEM, 0) + bundle3.putInt("itemposition", 0) + bundle3.putString("LX", "NFC") + bundle3.putString("LXResult", result) + intent.putExtra("type", type) + intent.putExtra("smfs", "N") + bundle3.putInt("from", 0) + intent.putExtras(bundle3) + startActivity(intent) + } + } + } + + //处理二维码的数据 + private fun handleTwoCodeCheck(result: String?) { + if (type == "BA") { + //保安巡检 + val planNFC = DataSupport.where( + "txm = ? and txm_zt = 1 and mk = ? and username = ?", + result, + type, + username + ).find( + XSJJHXZDataBean::class.java + ) + if (planNFC != null && planNFC.size > 0) { + val itemQY = planNFC[0] + var content: String? = null + var notice: String? = null + content = itemQY.xjnr + notice = itemQY.fxnr + if (content == null) { + content = "" + } + if (notice == null) { + notice = "" + } + val values = ContentValues() + values.put("isBAChecked", true) + values.put("smfs", "E") + values.put("DATE", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())) + values.put("djsj", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())) + DataSupport.updateAll( + XSJJHXZDataBean::class.java, + values, + "txm = ? and txm_zt = 1 and mk = ? and username = ?", + result, + type, + username + ) + reloadData() + val auditDialog = BaCheckDialog(context, content, object : BaCheckDialogListener { + override fun confirm() {} + override fun cancel() {} + }) + auditDialog.setTvTitle("巡检内容") + auditDialog.setCancelable(true) + auditDialog.show() + } else { + nfcValue = null + showToast("无数据请联系管理员") + } + } else { + val scranTwoCodeList = DataSupport.where( + "txm = ? and txm_zt = 1 and mk = ? and username = ?", + result, + type, + username + ).find( + XSJJHXZDataBean::class.java + ) + if (scranTwoCodeList != null && scranTwoCodeList.size <= 0) { + showToast("无数据请联系管理员") + return + } + //运行,燃料巡检 + val xsjjhDataBeen = + DataSupport.where("qybh = ? and mk = ? and username = ?", result, type, username) + .find( + XSJJHDataBean::class.java + ) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen) + if (xsjjhDataBeen.size == 0) { + nfcValue = null + showToast("无数据请联系管理员") + } else { + val bundle3 = Bundle() + val intent = Intent(context, XjYulActivity::class.java) + bundle3.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayList) + bundle3.putBoolean("edit", true) + bundle3.putInt(Contans.KEY_ITEM, 0) + bundle3.putInt("itemposition", 0) + bundle3.putString("LX", "EWM") + bundle3.putString("LXResult", result) + intent.putExtra("type", type) + intent.putExtra("smfs", "E") + bundle3.putInt("from", 0) + intent.putExtras(bundle3) + startActivity(intent) + } + } + } + + private fun uploadLocationByNFC(uploadLocatio: UploadLocation) { + val requestxs = NoHttp.createStringRequest( + Contans.IP + Contans.XJ_UPLOAD_LOCATION_CHECKED, + RequestMethod.POST + ) + requestxs.setDefineRequestBodyForJson(createJsonByUploadLocation(uploadLocatio)) + NoProgresshttpUtils.getInstance().add(this, 1, requestxs, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + val bean = GsonUtils.GsonToBean( + response?.get(), + PointCheckedPersion::class.java + ) + if (bean.state == 1) { + DataSupport.deleteAll( + UploadLocation::class.java, + "nfcbm = ? and username = ?", + uploadLocatio.nfcbm, + uploadLocatio.username + ) + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun createJsonByUploadLocation(uploadLocatio: UploadLocation): String? { + val info = XsRequestInfo() + info.action = "XJ_LOCATION_CHECKED" + info.nfcbm = uploadLocatio.nfcbm + info.djsj = uploadLocatio.djsj + info.username = uploadLocatio.username + return GsonUtils.GsonString(info) + } + + private fun getLastUploadUser(nfcbm: String) { + val requestxs = NoHttp.createStringRequest( + Contans.IP + Contans.LAST_UPLOAD_POINT_CHECKED, + RequestMethod.POST + ) + requestxs.setDefineRequestBodyForJson(createJsonByLastUploadUser(nfcbm)) + NoProgresshttpUtils.getInstance().add(this, 0, requestxs, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + +// Log.i("app","----------------"); +// Log.i("app",response.get()); + val bean = GsonUtils.GsonToBean( + response?.get(), + PointCheckedPersion::class.java + ) + if (bean.state == 1) { + if (bean.data.size > 0) { + var msg = "" + val item = bean.data[0] + if (item.scr != null) { + msg = "当前点已被别人巡检过,最后巡检人是:" + item.scr + showToast(msg) + } else { + if (item.djsj != null) { + msg = "当前点已被别人巡检过,最后巡检时间是:" + item.djsj + showToast(msg) + } + } + } else { + showToast("无数据请联系管理员") + } + } else { + showToast("无数据请联系管理员") + } + } + + override fun onFailed(what: Int, response: Response?) { + showToast("无数据请联系管理员") + } + }) + } + + private fun createJsonByLastUploadUser(nfcbm: String): String? { + val info = XsRequestInfo() + info.action = "XJ_LAST_UPLOAD_POINT_CHECKED" + info.nfcbm = nfcbm + info.type = type + //Log.i("app",json); + return GsonUtils.GsonString(info) + } + + override fun onRestart() { + super.onRestart() + getDataInSqlite() + adapter.notifyDataSetChanged() + } + + override fun onResume() { + super.onResume() + nfcValue = null + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ViewRecordEventActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ViewRecordEventActivity.java new file mode 100644 index 0000000..4ccc1a0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/ViewRecordEventActivity.java @@ -0,0 +1,592 @@ +package com.rehome.scbaxj.activity.sbxj; + + +import static org.litepal.crud.DataSupport.where; +import android.Manifest; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.luck.picture.lib.animators.AnimationType; +import com.luck.picture.lib.basic.PictureSelectionModel; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.PictureSelectionConfig; +import com.luck.picture.lib.config.SelectLimitType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.decoration.GridSpacingItemDecoration; +import com.luck.picture.lib.dialog.RemindDialog; +import com.luck.picture.lib.engine.CompressFileEngine; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.engine.UriToFileTransformEngine; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.entity.MediaExtraInfo; +import com.luck.picture.lib.interfaces.OnCallbackListener; +import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener; +import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener; +import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener; +import com.luck.picture.lib.interfaces.OnPermissionDeniedListener; +import com.luck.picture.lib.interfaces.OnSelectLimitTipsListener; +import com.luck.picture.lib.permissions.PermissionConfig; +import com.luck.picture.lib.permissions.PermissionUtil; +import com.luck.picture.lib.style.PictureSelectorStyle; +import com.luck.picture.lib.style.SelectMainStyle; +import com.luck.picture.lib.style.TitleBarStyle; +import com.luck.picture.lib.utils.DateUtils; +import com.luck.picture.lib.utils.DensityUtil; +import com.luck.picture.lib.utils.MediaUtils; +import com.luck.picture.lib.utils.PictureFileUtils; +import com.luck.picture.lib.utils.SandboxTransformUtils; +import com.luck.picture.lib.utils.StyleUtils; +import com.luck.picture.lib.utils.ToastUtils; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.Listener.FullyGridLayoutManager; +import com.rehome.scbaxj.Listener.GlideEngine; +import com.rehome.scbaxj.Listener.ImageLoaderUtils; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.GridImageNoDeleteAdapter; +import com.rehome.scbaxj.base.BaseActivityViewBinding; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.databinding.ActivityViewRecordEventBinding; +import com.rehome.scbaxj.utils.OAToolbar; +import com.rehome.scbaxj.utils.SPUtils; +import com.yalantis.ucrop.UCrop; +import com.yalantis.ucrop.UCropImageEngine; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import org.litepal.crud.DataSupport; +import top.zibin.luban.CompressionPredicate; +import top.zibin.luban.Luban; +import top.zibin.luban.OnNewCompressListener; +import top.zibin.luban.OnRenameListener; + + +public class ViewRecordEventActivity extends BaseActivityViewBinding { + + private RecyclerView mRecyclerView; + private GridImageNoDeleteAdapter mAdapter; + private int maxSelectNum = 9;//图片数量 + private int chooseMode = SelectMimeType.ofImage(); + private int language = -1; + + private PictureSelectorStyle selectorStyle; + + private List mData = new ArrayList<>(); + private ArrayList finalList; + + private ImageEngine imageEngine; + private ActivityResultLauncher launcherResult; + private final static String TAG = "PictureSelectorTag"; + + private String scid = null; + private String username; + private XSJJHXZDataBean itemQY; + + + @Override + protected ActivityViewRecordEventBinding getViewBinding() { + return ActivityViewRecordEventBinding.inflate(LayoutInflater.from(this)); + } + + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + + @Override + public void initView() { + initToolbar("查看现场记事", "", v -> { + //左边返回按钮点击事件 + finish(); + }, v -> { + //右边返回按钮点击事件 + }); + + scid = getIntent().getStringExtra("scid"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + binding.etYhms.getEditText().setEnabled(false); + + selectorStyle = new PictureSelectorStyle(); + launcherResult = createActivityResultLauncher(); + + finalList = new ArrayList<>(); + mRecyclerView = findViewById(R.id.recycler); + FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); + mRecyclerView.setLayoutManager(manager); + mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, DensityUtil.dip2px(this, 8), false)); + + mAdapter = new GridImageNoDeleteAdapter(getContext(), mData); + mAdapter.setSelectMax(maxSelectNum); + mRecyclerView.setAdapter(mAdapter); + + imageEngine = GlideEngine.createGlideEngine(); + + } + + @Override + public void initData() { + + getDataInSqlite(); + + mAdapter.setOnItemClickListener(new GridImageNoDeleteAdapter.OnItemClickListener() { + @Override + public void onItemClick(View v, int position) { + // 预览图片、视频、音频 + PictureSelector.create(ViewRecordEventActivity.this) + .openPreview() + .setImageEngine(imageEngine) + .setSelectorUIStyle(selectorStyle) + .setLanguage(language) + .isPreviewFullScreenMode(true) + .isPreviewZoomEffect(chooseMode != SelectMimeType.ofAudio(), mRecyclerView) + .startActivityPreview(position, false, mAdapter.getData()); + } + + @Override + public void openPicture() { + + } + }); + + } + + + //加载数据库中已经下载的计划 + private void getDataInSqlite() { + + List planNFC = where("scid = ? and username = ?", scid, username).find(XSJJHXZDataBean.class); + if (planNFC != null && planNFC.size() > 0) { + itemQY = planNFC.get(0); + + if(!TextUtils.isEmpty(itemQY.getFxnr())){ + binding.etYhms.setContentText(itemQY.getFxnr()); + } + + if(!TextUtils.isEmpty(itemQY.getXjnr())){ + binding.tvXjnr.setText(itemQY.getXjnr()); + } + + if(!TextUtils.isEmpty(itemQY.getCbsz())){ + if(itemQY.getCbsz().equals("正常")){ + binding.rb1.setChecked(true); + binding.rb2.setChecked(false); + }else{ + binding.rb1.setChecked(false); + binding.rb2.setChecked(true); + } + } + + + Gson gson=new Gson(); + Log.i("app",gson.toJson(itemQY)); + if(TextUtils.isEmpty(itemQY.getPhotos())){ + Log.i("app","itemQY is null"); + }else{ + Log.i("app","itemQY not null"); + //List mDataTemp = GsonUtils.GsonToList(itemQY.getPhotos(),LocalMedia.class); + List mDataTemp =gson.fromJson(itemQY.getPhotos(), new TypeToken>() {}.getType()); + for(LocalMedia localMedia:mDataTemp){ + Log.i("app",new Gson().toJson(localMedia)); + } + mData.clear(); + mData.addAll(mDataTemp); + mAdapter.getData().clear(); + mAdapter.getData().addAll(mDataTemp); + mAdapter.setSelectMax(mDataTemp.size()); + mAdapter.notifyItemRangeInserted(0, mDataTemp.size()); + } + } + + } + + private void SaveYhData() { + finalList.clear(); + for (LocalMedia media : mData) { + finalList.add(media.getCompressPath()); + Log.i("app",new Gson().toJson(media)); + } + + Log.i("app",finalList.toString().toLowerCase()); + + if(itemQY!=null){ + ContentValues values = new ContentValues(); + values.put("photos",new Gson().toJson(mData)); + if(!TextUtils.isEmpty(binding.etYhms.toString().trim())){ + values.put("fxnr",binding.etYhms.getContentText().toString().trim()); + } + DataSupport.updateAll(XSJJHXZDataBean.class, values, "scid = ? and username = ?", scid, username); + showToast("保存成功"); + } + } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mAdapter != null && mAdapter.getData() != null && mAdapter.getData().size() > 0) { + outState.putParcelableArrayList("selectorList", + (ArrayList) mAdapter.getData()); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + + public Context getContext() { + return this; + } + + private void forSelectResult(PictureSelectionModel model) { + //model.forResult(PictureConfig.CHOOSE_REQUEST); + model.forResult(launcherResult); + } + + /** + * 创建一个ActivityResultLauncher + * + * @return + */ + private ActivityResultLauncher createActivityResultLauncher() { + return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult result) { + int resultCode = result.getResultCode(); + if (resultCode == RESULT_OK) { + ArrayList selectList = PictureSelector.obtainSelectorList(result.getData()); + analyticalSelectResults(selectList); + } else if (resultCode == RESULT_CANCELED) { + Log.i(TAG, "onActivityResult PictureSelector Cancel"); + } + } + }); + } + + /** + * 处理选择结果 + * + * @param result + */ + private void analyticalSelectResults(ArrayList result) { + mData = result; + for (LocalMedia media : result) { + if (media.getWidth() == 0 || media.getHeight() == 0) { + if (PictureMimeType.isHasImage(media.getMimeType())) { + MediaExtraInfo imageExtraInfo = MediaUtils.getImageSize(getContext(), media.getPath()); + media.setWidth(imageExtraInfo.getWidth()); + media.setHeight(imageExtraInfo.getHeight()); + } else if (PictureMimeType.isHasVideo(media.getMimeType())) { + MediaExtraInfo videoExtraInfo = MediaUtils.getVideoSize(getContext(), media.getPath()); + media.setWidth(videoExtraInfo.getWidth()); + media.setHeight(videoExtraInfo.getHeight()); + } + } + Log.i(TAG, "文件名: " + media.getFileName()); + Log.i(TAG, "是否压缩:" + media.isCompressed()); + Log.i(TAG, "压缩:" + media.getCompressPath()); + Log.i(TAG, "初始路径:" + media.getPath()); + Log.i(TAG, "绝对路径:" + media.getRealPath()); + Log.i(TAG, "是否裁剪:" + media.isCut()); + Log.i(TAG, "裁剪路径:" + media.getCutPath()); + Log.i(TAG, "是否开启原图:" + media.isOriginal()); + Log.i(TAG, "原图路径:" + media.getOriginalPath()); + Log.i(TAG, "沙盒路径:" + media.getSandboxPath()); + Log.i(TAG, "水印路径:" + media.getWatermarkPath()); + Log.i(TAG, "视频缩略图:" + media.getVideoThumbnailPath()); + Log.i(TAG, "原始宽高: " + media.getWidth() + "x" + media.getHeight()); + Log.i(TAG, "裁剪宽高: " + media.getCropImageWidth() + "x" + media.getCropImageHeight()); + Log.i(TAG, "文件大小: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize())); + Log.i(TAG, "文件时长: " + media.getDuration()); + } + runOnUiThread(new Runnable() { + @Override + public void run() { + boolean isMaxSize = result.size() == mAdapter.getSelectMax(); + int oldSize = mAdapter.getData().size(); + mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize); + mAdapter.getData().clear(); + mAdapter.getData().addAll(result); + mAdapter.notifyItemRangeInserted(0, result.size()); + } + }); + } + + /** + * 自定义压缩 + */ + private static class ImageFileCompressEngine implements CompressFileEngine { + + @Override + public void onStartCompress(Context context, ArrayList source, OnKeyValueResultCallbackListener call) { + Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() { + @Override + public String rename(String filePath) { + int indexOf = filePath.lastIndexOf("."); + String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg"; + return DateUtils.getCreateFileName("CMP_") + postfix; + } + }).filter(new CompressionPredicate() { + @Override + public boolean apply(String path) { + if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) { + return true; + } + return !PictureMimeType.isUrlHasGif(path); + } + }).setCompressListener(new OnNewCompressListener() { + @Override + public void onStart() { + + } + + @Override + public void onSuccess(String source, File compressFile) { + if (call != null) { + call.onCallback(source, compressFile.getAbsolutePath()); + } + } + + @Override + public void onError(String source, Throwable e) { + if (call != null) { + call.onCallback(source, null); + } + } + }).launch(); + } + } + + /** + * 自定义沙盒文件处理 + */ + private static class MeSandboxFileEngine implements UriToFileTransformEngine { + + @Override + public void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) { + if (call != null) { + call.onCallback(srcPath, SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType)); + } + } + } + + /** + * 拦截自定义提示 + */ + private static class MeOnSelectLimitTipsListener implements OnSelectLimitTipsListener { + + @Override + public boolean onSelectLimitTips(Context context, @Nullable LocalMedia media, PictureSelectionConfig config, int limitType) { + if (limitType == SelectLimitType.SELECT_MIN_SELECT_LIMIT) { + ToastUtils.showToast(context, "图片最少不能低于" + config.minSelectNum + "张"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_VIDEO_SELECT_LIMIT) { + ToastUtils.showToast(context, "视频最少不能低于" + config.minVideoSelectNum + "个"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_AUDIO_SELECT_LIMIT) { + ToastUtils.showToast(context, "音频最少不能低于" + config.minAudioSelectNum + "个"); + return true; + } + return false; + } + } + + /** + * 自定义编辑 + */ + private static class MeOnMediaEditInterceptListener implements OnMediaEditInterceptListener { + private final String outputCropPath; + private final UCrop.Options options; + + public MeOnMediaEditInterceptListener(String outputCropPath, UCrop.Options options) { + this.outputCropPath = outputCropPath; + this.options = options; + } + + @Override + public void onStartMediaEdit(Fragment fragment, LocalMedia currentLocalMedia, int requestCode) { + String currentEditPath = currentLocalMedia.getAvailablePath(); + Uri inputUri = PictureMimeType.isContent(currentEditPath) + ? Uri.parse(currentEditPath) : Uri.fromFile(new File(currentEditPath)); + Uri destinationUri = Uri.fromFile( + new File(outputCropPath, DateUtils.getCreateFileName("CROP_") + ".jpeg")); + UCrop uCrop = UCrop.of(inputUri, destinationUri); + options.setHideBottomControls(false); + uCrop.withOptions(options); + uCrop.setImageEngine(new UCropImageEngine() { + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ImageLoaderUtils.assertValidRequest(context)) { + return; + } + Glide.with(context).load(url).override(180, 180).into(imageView); + } + + @Override + public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener call) { + Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (call != null) { + call.onCall(resource); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + if (call != null) { + call.onCall(null); + } + } + }); + } + }); + uCrop.startEdit(fragment.requireActivity(), fragment, requestCode); + } + } + + /** + * 创建自定义输出目录 + * + * @return + */ + private String getSandboxPath() { + File externalFilesDir = getContext().getExternalFilesDir(""); + File customFile = new File(externalFilesDir.getAbsolutePath(), "Sandbox"); + if (!customFile.exists()) { + customFile.mkdirs(); + } + return customFile.getAbsolutePath() + File.separator; + } + + /** + * 配制UCrop,可根据需求自我扩展 + * + * @return + */ + private UCrop.Options buildOptions() { + UCrop.Options options = new UCrop.Options(); + options.setHideBottomControls(false); + options.setFreeStyleCropEnabled(true); + options.setShowCropFrame(true); + options.setShowCropGrid(false); + options.setCircleDimmedLayer(false); + options.withAspectRatio(0, 0); + options.setCropOutputPathDir(getSandboxPath()); + options.isCropDragSmoothToCenter(false); + options.setSkipCropMimeType(getNotSupportCrop()); + options.isForbidCropGifWebp(true); + options.isForbidSkipMultipleCrop(true); + options.setMaxScaleMultiplier(100); + if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) { + SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle(); + boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack(); + int statusBarColor = mainStyle.getStatusBarColor(); + options.isDarkStatusBarBlack(isDarkStatusBarBlack); + if (StyleUtils.checkStyleValidity(statusBarColor)) { + options.setStatusBarColor(statusBarColor); + options.setToolbarColor(statusBarColor); + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + } + TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle(); + if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) { + options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor()); + } else { + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + return options; + } + + private String[] getNotSupportCrop() { + return new String[]{PictureMimeType.ofGIF(), PictureMimeType.ofWEBP()}; + } + + /** + * 权限拒绝后回调 + */ + private static class MeOnPermissionDeniedListener implements OnPermissionDeniedListener { + + @Override + public void onDenied(Fragment fragment, String[] permissionArray, + int requestCode, OnCallbackListener call) { + String tips; + if (TextUtils.equals(permissionArray[0], PermissionConfig.CAMERA[0])) { + tips = "缺少相机权限\n可能会导致不能使用摄像头功能"; + } else if (TextUtils.equals(permissionArray[0], Manifest.permission.RECORD_AUDIO)) { + tips = "缺少录音权限\n访问您设备上的音频、媒体内容和文件"; + } else { + tips = "缺少存储权限\n访问您设备上的照片、媒体内容和文件"; + } + RemindDialog dialog = RemindDialog.buildDialog(fragment.getContext(), tips); + dialog.setButtonText("去设置"); + dialog.setButtonTextColor(0xFF7D7DFF); + dialog.setContentTextColor(0xFF333333); + dialog.setOnDialogClickListener(new RemindDialog.OnDialogClickListener() { + @Override + public void onClick(View view) { + PermissionUtil.goIntentSetting(fragment, requestCode); + dialog.dismiss(); + } + }); + dialog.show(); + } + } + + /** + * 外部预览监听事件 + */ + private class MyExternalPreviewEventListener implements OnExternalPreviewEventListener { + + @Override + public void onPreviewDelete(int position) { + mAdapter.remove(position); + mAdapter.notifyItemRemoved(position); + } + + @Override + public boolean onLongPressDownload(LocalMedia media) { + return false; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJCJFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJCJFragment.java new file mode 100755 index 0000000..1b30344 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJCJFragment.java @@ -0,0 +1,223 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.text.method.ScrollingMovementMethod; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseFragment; +import com.rehome.scbaxj.weight.ListDialog; +import java.util.Arrays; +import java.util.List; + +public class XJCJFragment extends BaseFragment { + + TextView tvBjmc; + TextView tvSbmc; + TextView tvZczt; + TextView tvXcnr; + TextView textView2; + EditText etJg; + TextView tvYjzj; + TextView tvZt; + Button xjetButton; + EditText etYcFxnr; + LinearLayout ycmsLl; + + + private boolean isEdit; + private XSJJHDataBean info; + private int zj; + private int index; + private String writebleinfo; + private String MRNR; + + public static XJCJFragment newInstance(boolean b, XSJJHDataBean info, int zj, int index) { + Bundle bundle = new Bundle(); + bundle.putBoolean("edit", b); + bundle.putParcelable("info", info); + bundle.putInt("zj", zj); + bundle.putInt("index", index); + XJCJFragment fragment = new XJCJFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public int getContentViewId() { + return R.layout.fragment_xjcj; + } + + @Override + protected void initView() { + tvBjmc = view.findViewById(R.id.tv_bjmc); + tvSbmc = view.findViewById(R.id.tv_sbmc); + tvZczt = view.findViewById(R.id.tv_zczt); + tvXcnr = view.findViewById(R.id.tv_xcnr); + textView2 = view.findViewById(R.id.textView2); + etJg = view.findViewById(R.id.et_jg); + tvYjzj = view.findViewById(R.id.tv_yjzj); + tvZt = view.findViewById(R.id.tv_zt); + xjetButton = view.findViewById(R.id.xjet_button); + etYcFxnr = view.findViewById(R.id.et_yc_fxnr); + ycmsLl = view.findViewById(R.id.ycms_ll); + + Bundle bundle = getArguments(); + if (bundle != null) { + isEdit = bundle.getBoolean("edit"); + info = bundle.getParcelable("info"); + zj = bundle.getInt("zj"); + index = bundle.getInt("index"); + } + + etJg.setEnabled(isEdit); + xjetButton.setEnabled(isEdit); + if(!isEdit){ + etYcFxnr.setEnabled(false); + } + updata(info, index, zj); + tvBjmc.setMovementMethod(ScrollingMovementMethod.getInstance()); + tvZczt.setMovementMethod(ScrollingMovementMethod.getInstance()); + tvXcnr.setMovementMethod(ScrollingMovementMethod.getInstance()); + tvSbmc.setMovementMethod(ScrollingMovementMethod.getInstance()); + } + + @Override + public void initData() { + xjetButton.setOnClickListener(v -> { + ListDialog dialog = new ListDialog(context, stringToList(MRNR), (text, position) -> { + xjetButton.setText(text); + etJg.setText(text); + if (text.equals("正常")){ + ycmsLl.setVisibility(View.GONE); + }else if (text.equals("异常")){ + ycmsLl.setVisibility(View.VISIBLE); + } + }); + dialog.show(); + }); + } + + + public void updateState(String value) { + etJg.setText(value); + xjetButton.setText(value); + } + + public void updatecheck(Boolean value) { + if (value) { + tvZt.setText("已检"); + } else { + tvZt.setText("未检"); + } + } + public void updateFXNR(String value) { etYcFxnr.setText(value); } + + @SuppressLint("SetTextI18n") + public void updata(XSJJHDataBean info, int item, int size) { + tvBjmc.setText(info.getBJMC()); + tvSbmc.setText(info.getSb()); + + tvZczt.setText(info.getZczt()); + tvXcnr.setText(info.getXcnr()); + MRNR = info.getMRNR(); + tvZt.setText(info.isChecked() ? "已检" : "未检"); + tvYjzj.setText(item + "/" + size); + writebleinfo = info.getLRFS(); + if (info.getLRFS().equals("0")) { //当时编辑状态的是 不需要按钮 + xjetButton.setVisibility(View.GONE); + etJg.setVisibility(View.VISIBLE); + ycmsLl.setVisibility(View.GONE); + etYcFxnr.setText(""); + if (info.getCJJG() == null) { + etJg.setText(""); + } else { + switch (info.getCJJG()) { + case "已运行": + etJg.setText(""); + break; + case "大小修": + etJg.setText("大小修"); + break; + case "已停用": + etJg.setText("已停用"); + break; + case "": + etJg.setText(""); + break; + default: + etJg.setText(info.getCJJG()); + break; + } + } + } else if (info.getLRFS().equals("1")) { //不是编辑状态的时候 需要按钮点击弹出菜单 + etJg.setVisibility(View.GONE); + xjetButton.setVisibility(View.VISIBLE); + etYcFxnr.setText(""); + if (info.getCJJG() == null) { + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + } else { + switch (info.getCJJG()) { + case "已运行": + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + break; + case "大小修": + xjetButton.setText("大小修"); + etJg.setText("大小修"); + ycmsLl.setVisibility(View.GONE); + break; + case "已停用": + xjetButton.setText("已停用"); + etJg.setText("已停用"); + ycmsLl.setVisibility(View.GONE); + break; + case "异常": + ycmsLl.setVisibility(View.VISIBLE); + xjetButton.setText("异常"); + etJg.setText("异常"); + etYcFxnr.setText(info.getFxnr()); + break; + case "": + xjetButton.setText("正常"); + etJg.setText("正常"); + ycmsLl.setVisibility(View.GONE); + break; + default: + xjetButton.setText(info.getCJJG()); + etJg.setText(info.getCJJG()); + ycmsLl.setVisibility(View.GONE); + break; + } + } + } + } + + public String getCJJG() { return etJg.getText().toString().trim(); } + public String getYc_Fxnr() { return etYcFxnr.getText().toString().trim(); } + + public void getBlueToothData(String bluetoothdata) { + if (writebleinfo.equals("0")) { + etJg.setText(bluetoothdata); + } else if (writebleinfo.equals("1")) { + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } + + private List stringToList(String strs) { + String[] str = strs.split(";"); + return Arrays.asList(str); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsActivity.java new file mode 100644 index 0000000..b93e5b4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsActivity.java @@ -0,0 +1,305 @@ +package com.rehome.scbaxj.activity.sbxj; + + +import android.content.Intent; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.Profession; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.MyUploadCheckedBean; +import com.rehome.scbaxj.bean.StatisticsBean; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NoProgresshttpUtils; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.ListDialog; +import com.google.gson.Gson; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + + +public class XJStatisticsActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + TextView tv_zc; + TextView checked_count; + TextView tv_total; + TextView tv_hasCheck; + TextView tv_ljds; + TextView tv_hasCheck_rate; + LinearLayout tv_my_upload; + + + private View headView; + private TextView tv_djrw; + private CommonAdapter adapter; + private List dataBeans = new ArrayList<>(); + private List listPro = new ArrayList<>(); + private List professionList = new ArrayList<>(); + ListDialog listDialog; + + //private ArrayList xsjjhDataBeanArrayList = new ArrayList<>();//点检记录列表 + private String type = null; + private String username; + private String professionId = null; + + @Override + public int getLayoutId() { + return R.layout.activity_my_checked; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + tv_zc = findViewById(R.id.tv_zc); + checked_count = findViewById(R.id.checked_count); + tv_total = findViewById(R.id.tv_total); + tv_hasCheck = findViewById(R.id.tv_hasCheck); + tv_ljds = findViewById(R.id.tv_ljds); + tv_hasCheck_rate = findViewById(R.id.tv_hasCheck_rate); + tv_my_upload = findViewById(R.id.tv_my_upload); + + + Intent intent = getIntent(); + type = intent.getStringExtra("type"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.checked_status_xsgz_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + tv_djrw = headView.findViewById(R.id.tv_djrw); + if(type!=null&&type.equals("YX")){ + String zyid = (String) SPUtils.get(context, Contans.ZY, ""); + if(zyid!=null&&(!zyid.equals(""))){ + List zyids = this.stringToList(zyid); + Log.i("app","---------"); + Log.i("app",new Gson().toJson(zyids)); + Log.i("app",zyids.get(0)); + if(zyids.size()>0){ + this.professionId=zyids.get(0); + } + } + + initToolbar("巡检统计", "选择专业", new View.OnClickListener() { + @Override + public void onClick(View v) { + if(type.equals("YX")){ + listDialog.show();; + } + } + }); + professionList = DataSupport.findAll(Profession.class); + if(professionList!=null&&professionList.size()>0){ + for(Profession profession : professionList){ + listPro.add(profession.getZymc()); + } + } + if(listPro!=null&&listPro.size()>0){ + listDialog = new ListDialog(context, listPro, new ListDialog.ListDialogListener() { + @Override + public void selectText(String text, int position) { + if(professionList!=null&&professionList.size()>0){ + Profession profession = professionList.get(position); + Log.i("app",profession.getZyid()); + getStatisticsData(profession.getZyid()); + } + } + }); + listDialog.setTvTitle("请选择专业"); + } + }else{ + initToolbar("巡检统计", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + + tv_my_upload.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(XJStatisticsActivity.this, XJStatisticsMyUploadActivity.class); + intent.putExtra("type",type); + startActivity(intent); + } + }); + } + + public void initData() { + getMyUploadData(); + getStatisticsData(null); + //setListData(); + } + + private List stringToList(String strs) { + String[] str = strs.split(","); + return Arrays.asList(str); + } + + //获取本人上传的巡检数据 + private void getMyUploadData() { + //Log.i("app",Contans.IP + Contans.GET_MY_UPLOAD_CHECKED); + Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.GET_MY_UPLOAD_CHECKED, RequestMethod.POST); + requestxs.setDefineRequestBodyForJson(createJson()); + + NoProgresshttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + +// Log.i("app","----------------"); +// Log.i("app",response.get()); + MyUploadCheckedBean bean = GsonToBean(response.get(), MyUploadCheckedBean.class); + if(bean!=null&&bean.getState()==1){ + List data = bean.getData(); +// Log.i("app",bean.getMsg()); +// Log.i("app",String.valueOf(bean.getState())); +// Log.i("app",String.valueOf(bean.getData().size())); +// Log.i("app",new Gson().toJson(bean.getData())); + XJStatisticsActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + if(type.equals("BA")){ + tv_zc.setText("保安"); + } + if(data!=null&&data.size()>0){ + checked_count.setText(String.valueOf(data.size())); + String zc = data.get(0).getZc(); + if(type.equals("BA")){ + //tv_zc.setText("保安"); + }else{ + if(zc!=null){ + tv_zc.setText(zc+"值"); + } + } + } + } + }); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + //获取本人上传的巡检数据 + private void getStatisticsData(String zyid) { + if(type!=null&&type.equals("YX")){ + if(zyid!=null){ + this.professionId=zyid; + } + } + + Log.i("app",Contans.IP + Contans.GET_STATISTICS_DATA); + Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.GET_STATISTICS_DATA, RequestMethod.POST); + requestxs.setDefineRequestBodyForJson(createJsonStatistics()); + requestxs.setReadTimeout(30000); + + NohttpUtils.getInstance().add(this, 1, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + + Log.i("app","----------------"); + Log.i("app",response.get()); + + StatisticsBean bean = GsonToBean(response.get(), StatisticsBean.class); + if(bean!=null&&bean.getState()==1){ + Log.i("app",String.valueOf(bean.getData().size())); + Log.i("app",new Gson().toJson(bean.getData())); + List data = bean.getData(); + XJStatisticsActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + if(data!=null&&data.size()>0){ + + int countZds = 0; + int countYjds = 0; + int countLjds = 0; + for (StatisticsBean.DataBean item: data) { + String zds = item.getZds(); + String yjds = item.getYjds(); + String ljds = item.getLjds(); + countZds = countZds + Integer.parseInt(zds); + countYjds = countYjds + Integer.parseInt(yjds); + countLjds = countLjds + Integer.parseInt(ljds); + } + tv_total.setText(String.valueOf(countZds)); + tv_hasCheck.setText(String.valueOf(countYjds)); + tv_ljds.setText(String.valueOf(countLjds)); + java.text.DecimalFormat df=new java.text.DecimalFormat("##.#%");//传入格式模板 + String rate=df.format((float)(countYjds)/(float)countZds); + tv_hasCheck_rate.setText(rate); + + setListData(data); + } + } + }); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void setListData(List data) { + adapter = new CommonAdapter(context, R.layout.checked_status_xsgz_item, data) { + + @Override + protected void convert(ViewHolder viewHolder, StatisticsBean.DataBean item, int position) { + viewHolder.setText(R.id.tv_xh, item.getZds()); + viewHolder.setText(R.id.tv_qymc, item.getQymc()); + viewHolder.setText(R.id.tv_djrw, item.getYjds()); + //viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } + }; + lv.setAdapter(adapter); + } + + private String createJson() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("YX_XJGL_MY_UPLOAD"); + info.setUsername(username); + info.setType(type); + String json = GsonUtils.GsonString(info); + Log.i("app",json); + return json; + } + private String createJsonStatistics() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("XJ_STATISTICS_CHECKED"); + if(type!=null&&type.equals("YX")){ + info.setZy(this.professionId); + }else{ + info.setZy(type); + } + String json = GsonUtils.GsonString(info); + Log.i("app",json); + return json; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsMyUploadActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsMyUploadActivity.java new file mode 100644 index 0000000..9308887 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XJStatisticsMyUploadActivity.java @@ -0,0 +1,160 @@ +package com.rehome.scbaxj.activity.sbxj; + + +import android.content.Intent; +import android.graphics.Color; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.MyUploadCheckedBean; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NoProgresshttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.util.ArrayList; +import java.util.List; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + + +public class XJStatisticsMyUploadActivity extends BaseActivity3 { + + + ListView lv; + TextView tvNodata; + TextView tv_zc; + TextView checked_count; + private View headView; + private TextView tv_djrw; + private CommonAdapter adapter; + private List dataBeans = new ArrayList<>(); + + //private ArrayList xsjjhDataBeanArrayList = new ArrayList<>();//点检记录列表 + private String type = null; + private String username; + + @Override + public int getLayoutId() { + return R.layout.activity_myupload_checked; + } + + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + tv_zc = findViewById(R.id.tv_zc); + checked_count = findViewById(R.id.checked_count); + + + Intent intent = getIntent(); + type = intent.getStringExtra("type"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.my_upload_checked_status_xsgz_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + tv_djrw = headView.findViewById(R.id.tv_djrw); + initToolbar("我的上传", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + + } + + public void initData() { + requestDatas(); + //setListData(); + } + + //获取本人上传的巡检数据 + private void requestDatas() { + //Log.i("app",Contans.IP + Contans.GET_MY_UPLOAD_CHECKED); + Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.GET_MY_UPLOAD_CHECKED, RequestMethod.POST); + requestxs.setDefineRequestBodyForJson(createJson()); + + NoProgresshttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + +// Log.i("app","----------------"); +// Log.i("app",response.get()); + MyUploadCheckedBean bean = GsonToBean(response.get(), MyUploadCheckedBean.class); + if(bean!=null&&bean.getState()==1){ + List data = bean.getData(); +// Log.i("app",bean.getMsg()); +// Log.i("app",String.valueOf(bean.getState())); +// Log.i("app",String.valueOf(bean.getData().size())); +// Log.i("app",new Gson().toJson(bean.getData())); + XJStatisticsMyUploadActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + if(data!=null&&data.size()>0){ + checked_count.setText(String.valueOf(data.size())); + String zc = data.get(0).getZc(); + if(type.equals("BA")){ + tv_zc.setText("保安"); + }else{ + if(zc!=null){ + tv_zc.setText(zc+"值"); + } + } + setListData(data); + } + } + }); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void setListData(List data) { + adapter = new CommonAdapter(context, R.layout.my_checked_xsgz_item, data) { + + @Override + protected void convert(ViewHolder viewHolder, MyUploadCheckedBean.DataBean item, int position) { + viewHolder.setText(R.id.tv_xh, String.valueOf(position + 1)); + viewHolder.setText(R.id.tv_qymc, item.getJhmc()+"_"+item.getQymc()); + viewHolder.setText(R.id.tv_djrw, "已检"); + viewHolder.setTextColor(R.id.tv_djrw, Color.parseColor("#00CD00"));//已经检查完成绿色 + } + }; + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + } + + private String createJson() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("YX_XJGL_MY_UPLOAD"); + info.setUsername(username); + info.setType(type); + //info.setUsername("326819"); + // +// info.setZc((String) SPUtils.get(context, Contans.BZBH, "")); +// if(type!=null&&type.equals("YX")){ +// info.setMk("YX"); +// } +// if(type!=null&&type.equals("RL")){ +// info.setMk("RL"); +// } + String json = GsonUtils.GsonString(info); + //Log.i("app",json); + return json; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjMainActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjMainActivity.kt new file mode 100644 index 0000000..363fe16 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjMainActivity.kt @@ -0,0 +1,112 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.Intent +import android.util.Log +import androidx.fragment.app.Fragment +import com.rehome.scbaxj.DBModel.BaRoute +import com.rehome.scbaxj.DBModel.Profession +import com.rehome.scbaxj.activity.sbxdj.FragmentAdapter +import com.rehome.scbaxj.adapter.MyFragmentAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityXjMainBinding +import com.rehome.scbaxj.utils.SPUtils +import com.rehome.scbaxj.weight.ListDialog +import org.litepal.crud.DataSupport + +class XjMainActivity : BaseActivityOaToolbarViewBinding() { + private val fragments: MutableList = mutableListOf() + private lateinit var list: MutableList + private lateinit var adapter: MyFragmentAdapter + private lateinit var type: String + private val listPro: MutableList = mutableListOf() + private var professionList: MutableList = mutableListOf() + private val listRoute: MutableList = mutableListOf() + private var routeList: MutableList = mutableListOf() + override fun getViewBinding() = ActivityXjMainBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + + } + + override fun initData() { + val intent = intent + type = intent.getStringExtra("type")!! + if (type == "YX") { + initToolbar("巡检数据管理", "选择专业", { finish() }, { rightClick() }) + professionList = DataSupport.findAll(Profession::class.java) + if (professionList.size > 0) { + for (profession in professionList) { + listPro.add(profession.zymc) + } + } + }else if (type == "BA") { + initToolbar("巡检数据管理", "选择路线", { finish() }, { rightClick() }) + routeList = DataSupport.findAll(BaRoute::class.java) + if (routeList.size > 0) { + for (route in routeList) { + listRoute.add(route.name) + } + } + } else { + initToolbar("巡检数据管理", "", {finish()},{}) + } + initViewPager() + } + + private fun rightClick(){ + if (type == "YX") { + val listDialog = ListDialog( + context, listPro + ) { _, position -> + if (professionList.size > 0) { + val profession = professionList[position] + //Log.i("app", profession.zyid) + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_PROFESSIONCHANGE) + intent.putExtra("professionId", profession.zyid) + //专业选择改变发送广播,刷新任务下载页面 + sendBroadcast(intent) + } + } + listDialog.setTvTitle("请选择专业") + listDialog.show() + } + if (type == "BA") { + val listDialog = ListDialog( + context, listRoute + ) { _, position -> + if (routeList.size > 0) { + val route = routeList[position] + //Log.i("app", route.lxid) + //val baXjLx = SPUtils.get(context,Contans.BAXJLX,"") as String + SPUtils.put(context,Contans.BAXJLX, route.lxid) + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHDOWNLOADPLAN) + //路线选择改变发送广播,刷新任务下载页面 + sendBroadcast(intent) + } + } + listDialog.setTvTitle("请选择路线") + listDialog.show() + } + } + + private fun initViewPager() { + val titles: MutableList = ArrayList() + titles.add("数据下载") + titles.add("数据上传") + for (i in titles.indices) { + binding.tabs.addTab( binding.tabs.newTab().setText(titles[i])) + } + fragments.add(XzxsjhFragment(type)) + fragments.add(ScxsjhFragment(type)) + val mFragmentAdapter = FragmentAdapter( + supportFragmentManager, fragments, titles + ) + binding.viewpager.adapter = mFragmentAdapter + binding.tabs.setupWithViewPager(binding.viewpager) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjSbListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjSbListActivity.java new file mode 100755 index 0000000..180bb8c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjSbListActivity.java @@ -0,0 +1,258 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.ContentValues; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import com.rehome.scbaxj.adapter.ViewHolder; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.SetxjSbModel; +import com.rehome.scbaxj.bean.sbInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.weight.ListDialog; +import org.litepal.crud.DataSupport; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 设备巡点检管理-巡检设备列表 + */ +public class XjSbListActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + private View headView; + private CommonAdapter adapter; + private ArrayList xsjjhDataBeanArrayList = new ArrayList<>(); + private boolean isEdit = false; + private int item; + private List infos = new ArrayList<>(); + Intent intent; + private int pos = -1;//点击的设备item + private String state, LX, LXResult; + private int itemposition; + private int from;//0-来自工作页面;1-采集页面 + + private ArrayList setSbModelList = new ArrayList<>(); + + + @Override + public int getLayoutId() { + return R.layout.activity_xjsblist; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + lv.setEmptyView(tvNodata); + headView = View.inflate(this, R.layout.djajhsb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + } + + public void initData() { + + initNFC(); + Bundle bundle = XjSbListActivity.this.getIntent().getExtras(); + + xsjjhDataBeanArrayList = new ArrayList<>(); + + xsjjhDataBeanArrayList = bundle.getParcelableArrayList("xsjjhDataBeanArrayList"); + isEdit = bundle.getBoolean("edit"); + item = bundle.getInt(Contans.KEY_ITEM); + itemposition = bundle.getInt("itemposition"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + from = bundle.getInt("from"); + + + if (from == 0) { + initToolbar("当前设备", "巡检内容", new View.OnClickListener() { + @Override + public void onClick(View v) { + if (from == 0) { //工作页面 + finish(); + } else if (from == 1) { //采集页面 + Intent intent = new Intent(XjSbListActivity.this, SbxjcjsbActivity.class); + intent.putParcelableArrayListExtra("setSbModelList", setSbModelList); + setResult(RESULT_OK, intent); + finish(); + } + } + }, new View.OnClickListener() { + @Override + public void onClick(View v) { + intent = new Intent(XjSbListActivity.this, XjYulActivity.class); + Bundle bundle2 = new Bundle(); + bundle2.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayList); + bundle2.putBoolean("edit", isEdit); + bundle2.putInt(Contans.KEY_ITEM, 0); + bundle2.putInt("itemposition", itemposition); + bundle2.putString("LX", LX); + bundle2.putString("LXResult", LXResult); + intent.putExtras(bundle2); + startActivity(intent); + finish(); + } + }); + } else if (from == 1) { + initToolbar("当前设备", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + setListData(); + + + } + + + + private void setListData() { + + Map maps = new HashMap(); + for (XSJJHDataBean rw : xsjjhDataBeanArrayList) { + sbInfo sbinfo = new sbInfo(); + sbinfo.setSbmc(rw.getSb()); + sbinfo.setSbid(rw.getSbid()); + sbinfo.setSbstate(rw.getSBMCSTATE()); + String Key = rw.getSbid() + "_" + rw.getSb(); + sbInfo data = maps.get(Key); + if (data == null) { + maps.put(Key, sbinfo); + } + } + infos.addAll(maps.values()); + + if (adapter == null) { + adapter = new CommonAdapter(context, R.layout.djajhsb_item, infos) { + @Override + protected void convert(ViewHolder viewHolder, sbInfo item, int position) { + viewHolder.setText(R.id.tv_sbmc, item.getSbmc() + ""); + if (item.getSbstate() == null) { + viewHolder.setText(R.id.tv_sbstate, " "); + } else { + viewHolder.setText(R.id.tv_sbstate, item.getSbstate() + ""); + } + + + + } + }; + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + + if (isEdit) { + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, final int postion, long l) { + pos = postion; + + List datas = new ArrayList(); + datas.add("已停用"); + datas.add("大小修"); + ListDialog dialog = new ListDialog(context, datas, new ListDialog.ListDialogListener() { + @Override + public void selectText(String text, int position) { + state = text; + ContentValues values = new ContentValues(); + + values.put("CJJG", text); + + values.put("SBMCSTATE", text); + + if (text.equals("已停用")) { + + values.put("checked", true); + + values.put("SBMCSTATEVALUE", "3"); + + } else if (text.equals("大小修")) { + + values.put("checked", true); + + values.put("SBMCSTATEVALUE", "4"); + + } + + int i = DataSupport.updateAll(XSJJHDataBean.class, values, "sbid = ? ", infos.get(postion - 1).getSbid()); + + if (i != 0) { + showToast("修改设备状态成功"); + } else { + showToast("修改设备状态失败"); + } + + } + + }); + dialog.setTvTitle("选择设备状态"); + dialog.show(); + + dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + if (pos != -1) { + infos.get(pos - 1).setSbstate(state); + adapter.notifyDataSetChanged(); + + SetxjSbModel setxjSbModel = new SetxjSbModel(); + setxjSbModel.setSbId(infos.get(pos - 1).getSbid()); + setxjSbModel.setValue(state); + setxjSbModel.setStatu(true); + setSbModelList.add(setxjSbModel); + } + } + }); + + + } + }); + + } else { + showToast("需要扫描二维码或者贴近NFC才能进入"); + } + } else { + adapter.notifyDataSetChanged(); + } + } + + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { + if (from == 0) {//工作页面 + finish(); + } else if (from == 1) {//采集页面 + Intent intent = new Intent(XjSbListActivity.this, SbxjcjsbActivity.class); + intent.putParcelableArrayListExtra("setSbModelList", setSbModelList); + setResult(RESULT_OK, intent); + finish(); + } + return true; + } + return super.onKeyDown(keyCode, event); + } + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjYulActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjYulActivity.java new file mode 100755 index 0000000..ac95b9b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XjYulActivity.java @@ -0,0 +1,365 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.CheckTemperatureActivity; +import com.rehome.scbaxj.activity.CheckVibrationActivity; +import com.rehome.scbaxj.adapter.DlbAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.bean.DlbInfo; +import com.rehome.scbaxj.bean.SetxjSbModel; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.google.gson.Gson; + +import org.litepal.crud.DataSupport; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import static com.rehome.scbaxj.activity.sbxdj.SbxdjcjsbActivity.Req; +import static org.litepal.crud.DataSupport.where; + +public class XjYulActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + private boolean isEdit = false; + private String qybh; + private ArrayList xsjjhDataBeanArrayList = new ArrayList<>(); + private List infos = new ArrayList<>(); + private View headView; + private DlbAdapter adapter; + private String LX, LXResult; + private ArrayList setxjSbModelArrayList; + //测温 + public static final int REQUEST_CHECK_TEMPERATURE = 1; + //测振 + public static final int REQUEST_CHECK_VIBRATION = 2; + private String type = null; + private String username; + private String smfs; + private Timer timer; + + private BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Contans.ACTION_YULONE.equals(action)) { //更新设备点检页面返回时编辑的item内容 + String name = intent.getStringExtra(Contans.KEY_NAME); + String scid = intent.getStringExtra(Contans.SCID); + if (infos.size() > 0) { + for (int i = 0; i < infos.size(); i++) { + DlbInfo dlbInfo = infos.get(i); + if (dlbInfo.getScid().equals(scid)) { + dlbInfo.setCjjg(name); + dlbInfo.setStatu(true); + } + } + } + if (xsjjhDataBeanArrayList.size() > 0) { + for (int i = 0; i < xsjjhDataBeanArrayList.size(); i++) { + XSJJHDataBean xsjjhDataBean = xsjjhDataBeanArrayList.get(i); + if (xsjjhDataBean.getScid().equals(scid)) { + xsjjhDataBean.setChecked(true); + xsjjhDataBean.setCJJG(name); + } + } + } + } + } + }; + + @Override + public int getLayoutId() { + return R.layout.activity_yul; + } + + @Override + public void initView() { + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + lv.setEmptyView(tvNodata); + headView = View.inflate(context, R.layout.dlb_item, null); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + } + + @Override + public void initData() { + Bundle bundle = getIntent().getExtras(); + isEdit = bundle.getBoolean("edit"); + smfs = bundle.getString("smfs"); + type = bundle.getString("type"); + LX = bundle.getString("LX"); + LXResult = bundle.getString("LXResult"); + qybh = bundle.getString("qybh"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + searchdata(); + setListAdapter(); + IntentFilter filter = new IntentFilter(); + filter.addAction(Contans.ACTION_YULONE); + registerReceiver(myReceiver, filter); + if (isEdit) { + initToolbar("浏览巡检记录", "记录缺陷", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + allCheckNow(); + } else { + initToolbar("浏览巡检记录", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + } + + private void searchdata() { + switch (LX) { + case "Click": + Log.i("app", String.valueOf(qybh == null)); + xsjjhDataBeanArrayList.clear(); + xsjjhDataBeanArrayList.addAll(where("qybh = ? and mk = ? and username = ?", qybh, type, username).find(XSJJHDataBean.class)); //获取当前点击的工作栏对应的点检记录列表 + break; + case "NFC": { + List xsjjhDataBeen = DataSupport.where("nfcbm = ? and mk = ? and username = ?", LXResult, type, username).find(XSJJHDataBean.class); + xsjjhDataBeanArrayList.clear(); + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen); + break; + } + case "EWM": { + List xsjjhDataBeen = DataSupport.where("qybh = ? and mk = ? and username = ?", LXResult, type, username).find(XSJJHDataBean.class); + xsjjhDataBeanArrayList.clear(); + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen); + break; + } + } + } + + private void setListAdapter() { + for (XSJJHDataBean rw : xsjjhDataBeanArrayList) { + DlbInfo info = new DlbInfo(); + info.setScid(rw.getScid()); + info.setSbid(rw.getSbid()); + info.setCjjg(rw.getCJJG()); + info.setDian(rw.getJhmc() + "--" + rw.getSb() + "--" + rw.getBJMC()); + info.setStatu(rw.isChecked()); + infos.add(info); + } + Gson gson1 = new Gson(); + Log.i("app", gson1.toJson(infos)); + Log.i("app", gson1.toJson(xsjjhDataBeanArrayList)); + adapter = new DlbAdapter(context, infos); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapter); + lv.setOnItemClickListener((parent, view, position, id) -> { + Log.i("app", String.valueOf(position)); + Gson gson = new Gson(); + XSJJHDataBean xSJJHDataBean = xsjjhDataBeanArrayList.get(position - 1); + Log.i("app", String.valueOf(xSJJHDataBean.getLRFS())); + Log.i("app", String.valueOf(xSJJHDataBean.getCBLX())); + Log.i("app", gson.toJson(xSJJHDataBean)); + ArrayList xsjjhDataBeanArrayListTran = new ArrayList<>(); + + for (int i = 0; i < xsjjhDataBeanArrayList.size(); i++) { + XSJJHDataBean xSJJHDataBeanTemp = xsjjhDataBeanArrayList.get(i); + if (xSJJHDataBeanTemp.getLRFS().equals("1")) { + xsjjhDataBeanArrayListTran.add(xSJJHDataBeanTemp); + } else { + if (xSJJHDataBeanTemp.getCBLX().equals("")) { + xsjjhDataBeanArrayListTran.add(xSJJHDataBeanTemp); + } + } + } + int positionTemp = 0; + for (int i = 0; i < xsjjhDataBeanArrayListTran.size(); i++) { + XSJJHDataBean xSJJHDataBeanTemp = xsjjhDataBeanArrayListTran.get(i); + if (xSJJHDataBean.getScid().equals(xSJJHDataBeanTemp.getScid())) { + positionTemp = i; + } + } + + Log.i("app", String.valueOf(xsjjhDataBeanArrayListTran.size())); + if (xSJJHDataBean.getLRFS().equals("1")) { + Intent intent = new Intent(XjYulActivity.this, SbxjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayListTran); + bundle.putBoolean("edit", isEdit); + bundle.putString("smfs", smfs); + bundle.putString("type", type); + bundle.putInt(Contans.KEY_ITEM, positionTemp); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivityForResult(intent, Req); + } else { + if (xSJJHDataBean.getLRFS().equals("0") && xSJJHDataBean.getCBLX().equals("W")) { + Intent intentTemplate = new Intent(XjYulActivity.this, CheckTemperatureActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("xSJJHDataBean", xSJJHDataBean); + bundle.putString("checkTip", "日检破碎机,驱动部电机驱动端温度"); + bundle.putString("standerTip", "≤40℃"); + bundle.putString("checkType", "234233"); + bundle.putBoolean("edit", isEdit); + bundle.putString("smfs", smfs); + intentTemplate.putExtras(bundle); + startActivityForResult(intentTemplate, REQUEST_CHECK_TEMPERATURE); + } else if (xSJJHDataBean.getLRFS().equals("0") && xSJJHDataBean.getCBLX().equals("Z")) { + Intent intentTemplate = new Intent(XjYulActivity.this, CheckVibrationActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelable("xSJJHDataBean", xSJJHDataBean); + bundle.putString("checkTip", "日检破碎机,驱动部电机振动"); + bundle.putString("standerTip", "≤11.2mm/s"); + bundle.putString("checkType", "234235"); + bundle.putBoolean("edit", isEdit); + bundle.putString("smfs", smfs); + intentTemplate.putExtras(bundle); + startActivityForResult(intentTemplate, REQUEST_CHECK_VIBRATION); + } else { + Intent intent = new Intent(XjYulActivity.this, SbxjcjsbActivity.class); + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList("xsjjhDataBeanArrayList", xsjjhDataBeanArrayListTran); + bundle.putBoolean("edit", isEdit); + bundle.putString("smfs", smfs); + bundle.putString("type", type); + bundle.putInt(Contans.KEY_ITEM, positionTemp); + bundle.putString("LX", LX); + bundle.putString("LXResult", LXResult); + intent.putExtras(bundle); + startActivityForResult(intent, Req); + } + } + }); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode != RESULT_OK) return; + if (data != null) { + if (Req == requestCode) { + setxjSbModelArrayList = data.getParcelableArrayListExtra("setSbModelList"); + if (setxjSbModelArrayList == null) { + + } else { + for (int i = 0; i < setxjSbModelArrayList.size(); i++) { + for (int j = 0; j < infos.size(); j++) { + if (infos.get(j).getSbid().equals(setxjSbModelArrayList.get(i).getSbId())) + infos.get(j).setCjjg(setxjSbModelArrayList.get(i).getValue()); + } + } + adapter.notifyDataSetChanged(); + } + adapter.notifyDataSetChanged(); + } else { + String temperatureValue = data.getStringExtra("value"); + if (temperatureValue != null) { + //先判断是哪个页面返回过来的 + switch (requestCode) { + case REQUEST_CHECK_TEMPERATURE: + //测温 + //成功了 + Toast.makeText(XjYulActivity.this, temperatureValue, Toast.LENGTH_SHORT).show(); + break; + case REQUEST_CHECK_VIBRATION: + //测振 + //成功了 + Toast.makeText(XjYulActivity.this, temperatureValue, Toast.LENGTH_SHORT).show(); + break; + } + } + } + } + } + + @Override + protected void onResume() { + super.onResume(); + searchdata(); + adapter.notifyDataSetChanged(); + timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + XjYulActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + finish(); + } + }); + } + }, 10 * 1000, 10 * 1000); + } + + @Override + protected void onPause() { + super.onPause(); + timer.cancel(); + } + + + @Override + protected void onRestart() { + super.onRestart(); + adapter.notifyDataSetChanged(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } + + private void allCheckNow() { + + ArrayList xsjjhDataBeanArrayListTran = new ArrayList<>(); + if (xsjjhDataBeanArrayList.size() > 0) { + for (int i = 0; i < xsjjhDataBeanArrayList.size(); i++) { + XSJJHDataBean xSJJHDataBeanTemp = xsjjhDataBeanArrayList.get(i); + if (xSJJHDataBeanTemp.getLRFS().equals("1")) { + xSJJHDataBeanTemp.setChecked(true); + xSJJHDataBeanTemp.setCJJG("正常"); + xsjjhDataBeanArrayListTran.add(xSJJHDataBeanTemp); + } + } + } + if (infos.size() > 0 && xsjjhDataBeanArrayListTran.size() > 0) { + for (int i = 0; i < infos.size(); i++) { + DlbInfo dlbInfo = infos.get(i); + for (int j = 0; j < xsjjhDataBeanArrayListTran.size(); j++) { + XSJJHDataBean xSJJHDataBeanTemp = xsjjhDataBeanArrayListTran.get(j); + if (dlbInfo.getScid().equals(xSJJHDataBeanTemp.getScid())) { + dlbInfo.setCjjg("正常"); + dlbInfo.setStatu(true); + ContentValues values = new ContentValues(); + values.put("checked", true); + values.put("smfs", smfs); + values.put("CJJG", dlbInfo.getCjjg()); + values.put("DATE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + DataSupport.updateAll(XSJJHDataBean.class, values, "scid = ? and mk = ? and username = ? ", dlbInfo.getScid(), type, username); + } + } + } + } + adapter.notifyDataSetChanged(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsBackLogActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsBackLogActivity.java new file mode 100755 index 0000000..449ffbd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsBackLogActivity.java @@ -0,0 +1,163 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.util.Log; +import android.widget.ListView; +import com.rehome.scbaxj.DBModel.Xjjh; +import com.rehome.scbaxj.DBModel.XjjhList; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import org.litepal.crud.DataSupport; +import java.util.List; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + +/** + * 待办任务 + */ +public class XsBackLogActivity extends BaseActivity { + ListView lv; + + @Override + public int getContentViewID() { + return R.layout.activity_xs_back_log; + } + +// private List datas; + +// private XsjhListAdapter adapter; + + @Override + protected void initView() { + lv = findViewById(R.id.lv); + setTitle("待办任务"); + setBack(); + } + + private void requestDatas() { + + +// final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); +// +// requset.setDefineRequestBodyForJson(createJson()); +// +// NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { +// @Override +// public void onSucceed(int what, Response response) { +// +// try { +// XsJhListBean xsJhListBean = GsonUtils.GsonToBean(response.get(), XsJhListBean.class); +// if (xsJhListBean != null) { +// if (xsJhListBean.getState() == 1) { +//// showToast(xsJhListBean.getMsg()); +// datas.clear(); +// datas.addAll(xsJhListBean.getData()); +// setAdapter(); +// } else { +// showToast(xsJhListBean.getMsg()); +// datas.clear(); +// setAdapter(); +// } +// } else { +// showToast(R.string.data_error); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @Override +// public void onFailed(int what, Response response) { +// +// } +// }); + + + final Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + + requestxs.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + Log.e("Data", response.get()); + + XjjhList list = GsonToBean(response.get(), XjjhList.class); + + if (list != null) { + + if (list.getState().equals("1")) { + + List xjjhs = list.getData();//服务器数据 + + DataSupport.deleteAll(Xjjh.class, "download = 0"); + + for (Xjjh xjjh : xjjhs) { + + List dbxjjh = DataSupport.where("zxid = ? and download = ? ", xjjh.getZxid(), "1").find(Xjjh.class); + + if (dbxjjh.size() == 0) { + xjjh.save(); + } + } + } else { + + DataSupport.deleteAll(Xjjh.class, "download = 0"); + } + + + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void setAdapter() { + +// if (adapter == null) { +// adapter = new XsjhListAdapter(context, datas); +// +// lv.setAdapter(adapter); +// +// lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView parent, View view, int position, long id) { +// +// Intent intent = new Intent(XsBackLogActivity.this, XscbqyActivity.class); +// intent.putExtra(Contans.KEY_XSCBJH, datas.get(position)); +// startActivity(intent); +// } +// }); +// +// } else { +// adapter.notifyDataSetChanged(); +// } + } + + private String createJson() { +// XsRequestInfo info = new XsRequestInfo(); +// info.setAction("XSCB_ZXJL_GET"); +// info.setZymc(Contans.YXCB_ZY_ID); +// info.setZc((String) SPUtils.get(context, Contans.BZBH, "")); + String json = ""; + return json; + + + } + + @Override + protected void onRestart() { + super.onRestart(); + requestDatas(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsHistoryActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsHistoryActivity.java new file mode 100755 index 0000000..ab5a836 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XsHistoryActivity.java @@ -0,0 +1,144 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.Intent; +import android.view.View; +import android.widget.ExpandableListView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.XsHistoryExpandableListAdapter; +import com.rehome.scbaxj.bean.XsHistoryListBean; +import com.rehome.scbaxj.bean.XsJhListBean; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.util.ArrayList; +import java.util.List; + + +/** + * 历史抄表 + */ +public class XsHistoryActivity extends BaseActivity { + + ExpandableListView elv; + private List datas; + private XsHistoryExpandableListAdapter adapter; + + @Override + public int getContentViewID() { + return R.layout.activity_xs_history; + } + + @Override + protected void initView() { + + elv = findViewById(R.id.elv); + setTitle("历史抄表"); + setBack(); + + datas = new ArrayList<>(); + requestDatas(); + + } + + private void requestDatas() { + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod. + POST); + + requset.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + try { + XsHistoryListBean xsJhListBean = GsonUtils.GsonToBean(response.get(), XsHistoryListBean.class); + if (xsJhListBean != null) { + if (xsJhListBean.getState() == 1) { + datas.clear(); + datas.addAll(xsJhListBean.getData()); + setAdapter(); + } else { + showToast(xsJhListBean.getMsg()); + datas.clear(); + setAdapter(); + } + } else { + showToast(R.string.data_error); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void setAdapter() { + + if (adapter == null) { + adapter = new XsHistoryExpandableListAdapter(context, datas); + elv.setAdapter(adapter); + elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { + @Override + public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { + + + XsHistoryListBean.DataBeanX.DataBean jh = datas.get(groupPosition).getData().get(childPosition); + + + XsJhListBean.DataBean xsjh = new XsJhListBean.DataBean(); + + + xsjh.setZxid(jh.getZxid()); + xsjh.setJhmc(jh.getJhmc()); + xsjh.setJhlx(jh.getJhlx()); + xsjh.setScsj(jh.getScsj()); + + + Intent intent = new Intent(XsHistoryActivity.this, XscbqyActivity.class); + intent.putExtra(Contans.KEY_XSCBJH, xsjh); + intent.putExtra("QX", datas.get(groupPosition).getXgqx()); + intent.putExtra(Contans.KEY_XS_HISTORY, true); + startActivity(intent); + + return true; + } + }); + + } else { + adapter.notifyDataSetChanged(); + } + } + + private String createJson() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("XSCB_BBGL_GET"); + info.setZc((String) SPUtils.get(context, Contans.BZBH, "")); + info.setRqts("4"); + info.setZymc(Contans.YXCB_ZY_ID); + info.setYhid((String) SPUtils.get(context, Contans.USERID, ""));//抄表人 + String json = GsonUtils.GsonString(info); + + return json; + } + + @Override + protected void onRestart() { + super.onRestart(); + requestDatas(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbglActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbglActivity.kt new file mode 100644 index 0000000..9829ff6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbglActivity.kt @@ -0,0 +1,360 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.text.TextUtils +import android.util.Log +import android.view.View +import android.view.WindowManager +import android.widget.AdapterView +import com.google.gson.Gson +import com.rehome.scbaxj.DBModel.* +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.GridViewAdapter +import com.rehome.scbaxj.base.BaseActivityAutoToolbarViewBinding +import com.rehome.scbaxj.bean.BaRouteBean +import com.rehome.scbaxj.bean.GridViewBean +import com.rehome.scbaxj.bean.XsRequestInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityXscbglBinding +import com.rehome.scbaxj.utils.* +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Request +import com.yolanda.nohttp.rest.Response +import org.litepal.crud.DataSupport + +/** + * Create By HuangWenFei + * 创建日期:2023-02-07 09:38 + * 描述:巡检任务 数据下载列表 + */ +class XscbglActivity : BaseActivityAutoToolbarViewBinding() { + + private val str: MutableList = mutableListOf() + private val imageId: MutableList = mutableListOf() + private val colors: MutableList = mutableListOf() + private lateinit var adapter: GridViewAdapter + private lateinit var type: String + private lateinit var username: String + private lateinit var title: String + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (Contans.ACTION_REFRESHDOWNLOADPLAN == action) { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + //获取下载列表数据 + requestData() + } else { + Log.i("app", "无网络") + } + } + } + } + + override fun getViewBinding() = ActivityXscbglBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + override fun initView() { + val intentType = intent + type = intentType.getStringExtra("type")!! + username = SPUtils.get(context, Contans.USERID, "") as String + + str.add("巡检任务") + imageId.add(R.mipmap.icon_xs1) + colors.add(R.drawable.radius_b1) + + str.add("巡检工作") + imageId.add(R.mipmap.icon6) + colors.add(R.drawable.radius_a4) + +// str.add("巡检统计") +// imageId.add(R.mipmap.icon13) +// colors.add(R.drawable.radius_b1) + + if (type == "YX") { + title = "运行巡检" + str.add("缺陷工单") + imageId.add(R.mipmap.icon9) + colors.add(R.drawable.radius_a2) + } else if (type == "RL") { + title = "燃料巡检" + str.add("缺陷工单") + imageId.add(R.mipmap.icon9) + colors.add(R.drawable.radius_a2) + } else if (type == "XF") { + title = "消防巡检" + } else if (type == "BA") { + title = "保安巡检" + } + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) + StatusBarUtil.transparencyBar(this) + mToolbar.setBackgroundColor(Color.parseColor("#00000000")) + setBack() + binding.toolbarView.title.text = title + adapter = GridViewAdapter(this, getGridViewData(), ArrayList(), true) + binding.gv.selector = ColorDrawable(Color.TRANSPARENT) + binding.gv.adapter = adapter + binding.gv.onItemClickListener = + AdapterView.OnItemClickListener { _: AdapterView<*>?, _: View?, i: Int, _: Long -> + var intent: Intent? = null + when (i) { + 0 -> { + intent = Intent(context, XjMainActivity::class.java) + intent.putExtra("type", type) + } + 1 -> { + intent = Intent(context, SxgzActivity::class.java) + intent.putExtra("type", type) + } + 2 -> { + intent = Intent( + context, + XJStatisticsActivity::class.java + ) + intent.putExtra("type", type) + } + } + if (intent != null) { + startActivity(intent) + } + } + val filter = IntentFilter() + filter.addAction(Contans.ACTION_REFRESHDOWNLOADPLAN) + registerReceiver(myReceiver, filter) + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + if (type == "YX") { + getProfessionData() + } + if (type == "BA") { + //获取路线 + getRouteData() + } else { + //获取下载列表数据 + requestData() + } + } else { + Log.i("app", "无网络") + } + } + + override fun initData() { + + } + + private fun getGridViewData(): MutableList { + val datas: MutableList = mutableListOf() + for (i in str.indices) { + val bean = GridViewBean() + bean.title = str[i] + bean.backgroup = colors[i] + bean.imageid = imageId[i] + bean.isShow = false + datas.add(bean) + } + return datas + } + //请求下载数据 + private fun requestData() { //下载巡检数据 + val request: Request = if (type == "BA") { + NoHttp.createStringRequest(Contans.IP + Contans.BAXJ, RequestMethod.POST) + } else if (type == "XF") { + NoHttp.createStringRequest(Contans.IP + Contans.XFXJ, RequestMethod.POST) + } else { + NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST) + } + if (type == "BA") { + request.setDefineRequestBodyForJson(createJsonBA()) + } else if (type == "XF") { + request.setDefineRequestBodyForJson(createJsonXFXJ()) + } else { + request.setDefineRequestBodyForJson(createJson()) + } + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val list = GsonUtils.GsonToBean(result, XjjhList::class.java) + Log.i("app", list!!.msg) + Log.i("app", list.state) + Log.i("app", list.data.size.toString()) + Log.i("app", "mt") + Log.i("app", "app") + for (i in list.data.indices) { + val xjjh = list.data[i] + Log.i("app", Gson().toJson(xjjh)) + } + if (list.state == "1") { + val xjjhs = list.data //服务器数据 + DataSupport.deleteAll( + Xjjh::class.java, + "download = 0 and username = ?", + username + ) + for (xjjh in xjjhs) { + val dbxjjh = DataSupport.where( + "zxid = ? and download = ? and username = ?", + xjjh.zxid, + "1", + username + ).find( + Xjjh::class.java + ) + if (dbxjjh.size == 0) { + xjjh.username = username + xjjh.save() + } + } + //刷新计划下载界面 + val intent = Intent(Contans.ACTION_REFRESHPLANDOWNLOAD) + //发送广播,刷新任务下载页面 + sendBroadcast(intent) + } else { + DataSupport.deleteAll( + Xjjh::class.java, + "download = 0 and username = ?", + username + ) + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + //获取运行专业数据 + private fun getProfessionData() { + Log.i("app", Contans.IP + Contans.XSCB) + val request = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonZY()) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + Log.i("app", result ?: "") + val list = GsonUtils.GsonToBean( + result, + ProfessionList::class.java + ) + Log.i("app", list.msg) + Log.i("app", list.state) + Log.i("app", list.data.size.toString()) + + //获取数据成功 + if (list.state == "1") { + //服务器数据 + val professions = list.data + DataSupport.deleteAll(Profession::class.java) + for (profession in professions) { + profession.save() + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + //获取保安路线数据 + private fun getRouteData() { + Log.i("app", Contans.IP + Contans.BA_GET_ROUTE_URL) + val request = NoHttp.createStringRequest(Contans.IP + Contans.BA_GET_ROUTE_URL, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonRoute()) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + Log.i("app", result ?: "") + val list = GsonUtils.GsonToBean( + result, + BaRouteBean::class.java + ) +// Log.i("app", list.msg) +// Log.i("app", list.state) +// Log.i("app", list.data.size.toString()) + //获取数据成功 + if (list.state == "1") { + //服务器数据 + val baRouteList = list.data + DataSupport.deleteAll(BaRoute::class.java) + for (baRoute in baRouteList) { + baRoute.save() + } + requestData() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun createJsonBA(): String { + val info = XsRequestInfo() + info.action = "BA_XJGL_RWLB_GET" + val baXjLx = SPUtils.get(context,Contans.BAXJLX,"") as String + if(!TextUtils.isEmpty(baXjLx)){ + info.xjlx = baXjLx + } + val json = GsonUtils.GsonString(info) + //Log.i("app", json) + return json + } + + private fun createJsonXFXJ(): String { + val info = XsRequestInfo() + info.action = "XF_XJGL_RWLB_GET" + val json = GsonUtils.GsonString(info) + //Log.i("app", json) + return json + } + + private fun createJson(): String { + val info = XsRequestInfo() + info.action = "YX_XJGL_RWLB_GET" + if (type == "YX") { + info.mk = "YX" + } + if (type == "RL") { + info.mk = "RL" + } + val json = GsonUtils.GsonString(info) + //Log.i("app", json) + return json + } + + private fun createJsonZY(): String { + val info = XsRequestInfo() + info.action = "YX_XJGL_ZY_GET" + val jsonZY = GsonUtils.GsonString(info) + //Log.i("app", jsonZY) + return jsonZY + } + + private fun createJsonRoute(): String { + val info = XsRequestInfo() + info.action = "BA_XJGL_XJLX_GET" + val jsonRoute = GsonUtils.GsonString(info) + //Log.i("app", jsonRoute) + return jsonRoute + } + + override fun onDestroy() { + super.onDestroy() + unregisterReceiver(myReceiver) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyActivity.java new file mode 100755 index 0000000..87e8453 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyActivity.java @@ -0,0 +1,266 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.XsjhqyAdapter; +import com.rehome.scbaxj.base.MipcaActivityCapture; +import com.rehome.scbaxj.bean.XsJhListBean; +import com.rehome.scbaxj.bean.XsRequestInfo; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 巡视工作区域列表 + */ +public class XscbqyActivity extends BaseActivity { + ListView lv; + private XsJhListBean.DataBean xscbjh; + + private List qys; + + private XsjhqyAdapter adapter; + + private boolean isHistory; + + private String QX; + + private boolean isSHOW; + + @Override + public int getContentViewID() { + return R.layout.activity_xscbqy; + } + + @Override + protected void initView() { + + lv = findViewById(R.id.lv); + xscbjh = (XsJhListBean.DataBean) getIntent().getExtras().get(Contans.KEY_XSCBJH); + isHistory = getIntent().getExtras().getBoolean(Contans.KEY_XS_HISTORY, false); + + if (QX == null){ + + }else { + + QX = getIntent().getExtras().getString("QX");//如果权限为1 可以修改历史记录 + + isSHOW = "0".equals(QX); + + + } + + + + + qys = new ArrayList<>(); + requestDatas(); + setTitle(xscbjh.getJhmc()); + setBack(); + if (!isHistory) { + initNFC(); + } + } + + private void requestDatas() { + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + + requset.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + try { + String json = response.get(); + + XsjhQyBean xsjhQyBean = GsonUtils.GsonToBean(response.get(), XsjhQyBean.class); + + if (xsjhQyBean != null) { + + if (xsjhQyBean.getState() == 1) { + qys.clear(); + qys.addAll(xsjhQyBean.getData()); + setAdapter(); + } + } else { + showToast(R.string.data_error); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private void setAdapter() { + + if (adapter == null) { + adapter = new XsjhqyAdapter(context, qys); + lv.setAdapter(adapter); + + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + /** + * 如果是历史,直接跳转 + */ + if (isHistory) { + + if (xscbjh.getJhlx().equals(XscbqyWorkActivity.JHLX_XS)) { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkXsActivity.class); + intent.putExtra(Contans.KEY_QY, qys.get(position)); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "扫描条码"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); + intent.putExtra(Contans.KEY_IS_HIS, isSHOW); + startActivity(intent); + } else { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkActivity.class); + intent.putExtra(Contans.KEY_QY, qys.get(position)); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "扫描条码"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); + intent.putExtra(Contans.KEY_IS_HIS, isSHOW); + startActivity(intent); + } + + } else { + + /** + * 如果二维码和NFC标签都为空,直接跳转 + */ + if (TextUtils.isEmpty(qys.get(position).getNfcbm()) && TextUtils.isEmpty(qys.get(position).getTxm())) { + + if (xscbjh.getJhlx().equals(XscbqyWorkActivity.JHLX_XS)) { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkXsActivity.class); + intent.putExtra(Contans.KEY_QY, qys.get(position)); + intent.putExtra(Contans.KEY_EWM_OR_NFC, " "); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } else { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkActivity.class); + intent.putExtra(Contans.KEY_QY, qys.get(position)); + intent.putExtra(Contans.KEY_EWM_OR_NFC, " "); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } + + } else { + Intent intent = new Intent(XscbqyActivity.this, MipcaActivityCapture.class); + startActivityForResult(intent, 1); + } + } + } + }); + + } else { + adapter.notifyDataSetChanged(); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch (requestCode) { + case 1: + if (resultCode == RESULT_OK) { + Bundle bundle = data.getExtras(); + String ewm = bundle.getString("result"); + for (XsjhQyBean.DataBeanX qy : qys) { + if (ewm.equals(qy.getTxm())) { + + if (xscbjh.getJhlx().equals(XscbqyWorkActivity.JHLX_XS)) { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkXsActivity.class); + intent.putExtra(Contans.KEY_QY, qy); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "扫描条码"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); +// intent.putExtra(Contans.KEY_IS_HIS, qy.getSczt().equals("1") ? true : false); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } else { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkActivity.class); + intent.putExtra(Contans.KEY_QY, qy); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "扫描条码"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); +// intent.putExtra(Contans.KEY_IS_HIS, qy.getSczt().equals("1") ? true : false); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } + return; + } + } + } + break; + } + } + + private String createJson() { + XsRequestInfo info = new XsRequestInfo(); + info.setAction("XSCB_ZXJHD_GET"); + info.setZxid(xscbjh.getZxid()); + info.setSis(isHistory ? "0" : "1"); + info.setJhid(xscbjh.getJhid()); + String json = GsonUtils.GsonString(info); + return json; + } + + @Override + public void handleNfc(String result) { + super.handleNfc(result); + + for (XsjhQyBean.DataBeanX qy : qys) { + if (result.equals(qy.getNfcbm())) { + if (xscbjh.getJhlx().equals(XscbqyWorkActivity.JHLX_XS)) { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkXsActivity.class); + intent.putExtra(Contans.KEY_QY, qy); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "NFC标签"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); +// intent.putExtra(Contans.KEY_IS_HIS, qy.getSczt().equals("1") ? true : false); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } else { + Intent intent = new Intent(XscbqyActivity.this, XscbqyWorkActivity.class); + intent.putExtra(Contans.KEY_QY, qy); + intent.putExtra(Contans.KEY_EWM_OR_NFC, "NFC标签"); + intent.putExtra(Contans.KEY_JHLX, xscbjh.getJhlx()); +// intent.putExtra(Contans.KEY_IS_HIS, qy.getSczt().equals("1") ? true : false); + intent.putExtra(Contans.KEY_IS_HIS, false); + startActivity(intent); + } + return; + } + } + } + + @Override + protected void onRestart() { + super.onRestart(); + requestDatas(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkActivity.java new file mode 100755 index 0000000..7f5934d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkActivity.java @@ -0,0 +1,225 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.XsjhqyWorkCbAdapter; +import com.rehome.scbaxj.adapter.XsjhqyWorkDjAdapter; +import com.rehome.scbaxj.bean.XsResultBaseBean; +import com.rehome.scbaxj.bean.XsSaveDataInfo; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AutoListView; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 抄表/点检 + */ +public class XscbqyWorkActivity extends BaseActivity { + + public static final String JHLX_XS = "1";//巡视 + public static final String JHLX_CB = "2";//抄表 + public static final String JHLX_DJ = "3";//定检 + + AutoListView lv; + Button btnCommit; + + private XsjhQyBean.DataBeanX qy; + + private String jhlx; + + private List qyds; + + private XsjhqyWorkDjAdapter adapterDj; + + private XsjhqyWorkCbAdapter adapterCb; + + private boolean isHis; + + private String smfx; + + @Override + public int getContentViewID() { + return R.layout.activity_xscbqy_work; + } + + @Override + protected void initView() { + + lv = findViewById(R.id.lv); + btnCommit = findViewById(R.id.btn_commit); + jhlx = (String) getIntent().getExtras().get(Contans.KEY_JHLX); + + qy = (XsjhQyBean.DataBeanX) getIntent().getExtras().get(Contans.KEY_QY); + smfx = getIntent().getExtras().getString(Contans.KEY_EWM_OR_NFC); + isHis = getIntent().getExtras().getBoolean(Contans.KEY_IS_HIS, false); + + if (isHis) { + btnCommit.setVisibility(View.GONE); + } + + btnCommit.setVisibility(isHis ? View.GONE : View.VISIBLE); + + qyds = new ArrayList<>(); + + if (qy != null) { + setTitle(qy.getQymc()); + qyds.addAll(qy.getData()); + + switch (jhlx) { + case JHLX_CB: + setAdapterCb(); + break; + case JHLX_DJ: + setAdapterDj(); + break; + } + } + setBack(); + btnCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setMessage("你确定要提交吗?"); + builder.setTitle("提示"); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + saveData(); + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }); + builder.create(); + builder.show(); + } + }); + } + + private void setAdapterDj() { + + if (adapterDj == null) { + adapterDj = new XsjhqyWorkDjAdapter(context, qyds, isHis); + View headView = View.inflate(context, R.layout.qy_work_dj_item, null); + headView.findViewById(R.id.tv_input).setVisibility(View.VISIBLE); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapterDj); + } else { + adapterDj.notifyDataSetChanged(); + } + } + + private void setAdapterCb() { + + if (adapterCb == null) { + adapterCb = new XsjhqyWorkCbAdapter(context, qyds, isHis); + View headView = View.inflate(context, R.layout.qy_work_cb_item, null); + headView.findViewById(R.id.tv_input).setVisibility(View.VISIBLE); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapterCb); + } else { + adapterCb.notifyDataSetChanged(); + } + } + + private void saveData() { + + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + + requset.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + try { + XsResultBaseBean xsResultBaseBean = GsonUtils.GsonToBean(response.get(), XsResultBaseBean.class); + if (xsResultBaseBean != null) { + showToast(xsResultBaseBean.getMsg()); + if (xsResultBaseBean.getState() == 1) { + finish(); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJson() { + + XsSaveDataInfo info = new XsSaveDataInfo(); + info.setAction("XSCB_ZXJHD_SET"); + info.setZxid(qy.getZxid()); + info.setQybh(qy.getQybh()); + + List dataBeanList = new ArrayList<>(); + for (XsjhQyBean.DataBeanX.DataBean dataBean : qyds) { + + XsSaveDataInfo.DataBean bean = new XsSaveDataInfo.DataBean(); + bean.setDbh(dataBean.getDbh());//点编号 + bean.setCbsz(dataBean.getCbsz());//抄表数值 + bean.setDjsj(dataBean.getDjsj());//点检时间 + bean.setScid(dataBean.getScid()); + + + if (!TextUtils.isEmpty(dataBean.getCbsz())) { + if (TextUtils.isEmpty(dataBean.getDjsj())) { + bean.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + } else { + bean.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + if (!TextUtils.isEmpty(dataBean.getSisData())) { + bean.setCbsz(dataBean.getSisData()); + } + } + + + bean.setZcmc((String) SPUtils.get(context, Contans.BZBH, ""));//班组 + + bean.setCbr((String) SPUtils.get(context, Contans.USERID, ""));//抄表人 + + bean.setFxnr("");//分析内容 + bean.setSmfx(smfx);//扫描方式 + dataBeanList.add(bean); + } + + info.setData(dataBeanList); + + String json = GsonUtils.GsonString(info); + +// Log.e("#########",json); + + return json; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkXsActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkXsActivity.java new file mode 100755 index 0000000..cc2d4be --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XscbqyWorkXsActivity.java @@ -0,0 +1,205 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.XsjhqyWorkXsAdapter; +import com.rehome.scbaxj.bean.XsResultBaseBean; +import com.rehome.scbaxj.bean.XsSaveDataInfo; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.AutoListView; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 巡视 + */ +public class XscbqyWorkXsActivity extends BaseActivity { + + private static final String JHLX_XS = "1";//巡视 + private static final String JHLX_CB = "2";//抄表 + private static final String JHLX_DJ = "3";//定检 + + AutoListView lv; + Button btnCommit; + + private XsjhQyBean.DataBeanX qy; + + private String jhlx; + + private List qyds; + private XsjhqyWorkXsAdapter adapterXs; + + private boolean isHis; + + private String smfx; + + @Override + public int getContentViewID() { + return R.layout.activity_xscbqy_work; + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void initView() { + + lv = findViewById(R.id.lv); + btnCommit = findViewById(R.id.btn_commit); + jhlx = (String) getIntent().getExtras().get(Contans.KEY_JHLX); + + qy = (XsjhQyBean.DataBeanX) getIntent().getExtras().get(Contans.KEY_QY); + smfx = getIntent().getExtras().getString(Contans.KEY_EWM_OR_NFC); + isHis = getIntent().getExtras().getBoolean(Contans.KEY_IS_HIS, false); + + if (isHis) { + btnCommit.setVisibility(View.GONE); + } + + btnCommit.setVisibility(isHis ? View.GONE : View.VISIBLE); + + qyds = new ArrayList<>(); + + if (qy != null) { + setTitle(qy.getQymc()); + qyds.addAll(qy.getData()); + setAdapterXs(); + } + setBack(); + + btnCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setMessage("你确定要提交吗?"); + builder.setTitle("提示"); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + saveData(); + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }); + builder.create(); + builder.show(); + } + }); + } + + private void setAdapterXs() { + + if (adapterXs == null) { + adapterXs = new XsjhqyWorkXsAdapter(context, qyds, isHis); + View headView = View.inflate(context, R.layout.qy_work_xs_item, null); + headView.findViewById(R.id.tv_input).setVisibility(View.VISIBLE); + headView.findViewById(R.id.head).setVisibility(View.VISIBLE); + lv.addHeaderView(headView, null, false); + lv.setAdapter(adapterXs); + } else { + adapterXs.notifyDataSetChanged(); + } + } + + private void saveData() { + + + final Request requset = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + + requset.setDefineRequestBodyForJson(createJson()); + + NohttpUtils.getInstance().add(this, 0, requset, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + try { + XsResultBaseBean xsResultBaseBean = GsonUtils.GsonToBean(response.get(), XsResultBaseBean.class); + if (xsResultBaseBean != null) { + showToast(xsResultBaseBean.getMsg()); + if (xsResultBaseBean.getState() == 1) { + finish(); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }); + } + + private String createJson() { + + XsSaveDataInfo info = new XsSaveDataInfo(); + info.setAction("XSCB_ZXJHD_SET"); + info.setZxid(qy.getZxid()); + info.setQybh(qy.getQybh()); + + List dataBeanList = new ArrayList<>(); + + for (XsjhQyBean.DataBeanX.DataBean dataBean : qyds) { + + XsSaveDataInfo.DataBean bean = new XsSaveDataInfo.DataBean(); + bean.setDbh(dataBean.getDbh());//点编号 + bean.setCbsz(dataBean.getCbsz());//抄表数值 + bean.setDjsj(dataBean.getDjsj());//点检时间 + bean.setScid(dataBean.getScid()); + + if (!TextUtils.isEmpty(dataBean.getCbsz())) { + if (TextUtils.isEmpty(dataBean.getDjsj())) { + bean.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + } else { + bean.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + if (!TextUtils.isEmpty(dataBean.getSisData())) { + bean.setCbsz(dataBean.getSisData()); + } + } + + bean.setZcmc((String) SPUtils.get(context, Contans.BZBH, ""));//班组 + + bean.setCbr((String) SPUtils.get(context, Contans.USERID, ""));//抄表人 + bean.setFxnr("");//分析内容 + bean.setSmfx(smfx);//扫描方式 + dataBeanList.add(bean); + } + + info.setData(dataBeanList); + + String json = GsonUtils.GsonString(info); + + + Log.e("#########", json); + + return json; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XzxsjhFragment.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XzxsjhFragment.kt new file mode 100644 index 0000000..bd692ed --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/XzxsjhFragment.kt @@ -0,0 +1,809 @@ +package com.rehome.scbaxj.activity.sbxj + +import android.content.* +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.CheckBox +import androidx.appcompat.app.AlertDialog +import com.google.gson.Gson +import com.rehome.scbaxj.DBModel.XSJJHXZBean +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean +import com.rehome.scbaxj.DBModel.Xjjh +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.XzxsjhAdapter +import com.rehome.scbaxj.base.BaseFragmentViewBinding +import com.rehome.scbaxj.bean.XsRequestInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.FragmentXzxsjhBinding +import com.rehome.scbaxj.utils.* +import com.rehome.scbaxj.weight.WaitDialog +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.OnResponseListener +import com.yolanda.nohttp.rest.RequestQueue +import com.yolanda.nohttp.rest.Response +import org.litepal.crud.DataSupport +import java.util.* + +/** + * Create By HuangWenFei + * 创建日期:2023-02-07 13:40 + * 描述: + */ +class XzxsjhFragment(var type: String) : BaseFragmentViewBinding() { + private lateinit var dialog: WaitDialog + private lateinit var mActivity: XjMainActivity + private lateinit var headView: View + private lateinit var head: View + private lateinit var adapter: XzxsjhAdapter + private lateinit var cb: CheckBox + private var xjjhs: MutableList = mutableListOf() + private var selectCount = 0 + private var requestCount = 0 + private val zxids: MutableList = mutableListOf() + private val jhmcs: MutableList = mutableListOf() + private lateinit var queue: RequestQueue + private lateinit var professionId: String + private lateinit var username: String + private lateinit var zyids: MutableList + private lateinit var xsjjhxzBean: XSJJHXZBean + private var firstInit = true + + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (Contans.ACTION_REFRESHPLANDOWNLOAD == action) { + //刷新页面 + initData() + } + if (Contans.ACTION_PROFESSIONCHANGE == action) { + professionId = intent.getStringExtra("professionId")!! + Log.i("app", professionId) + Log.i("app", "initData") + firstInit = false + //刷新页面 + initData() + } + } + } + + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentXzxsjhBinding.inflate(inflater) + + override fun initView() { + binding.lv.emptyView = binding.tvNodata + mActivity = (activity as XjMainActivity?)!! + headView = View.inflate(context, R.layout.xzxsjh_item, null) + head = headView.findViewById(R.id.head) + head.visibility = View.VISIBLE + cb = headView.findViewById(R.id.cb) + cb.setOnClickListener { + if (cb.isChecked) { + for (i in xjjhs.indices) { + xjjhs[i].isChecked = true + adapter.notifyDataSetChanged() + } + } else { + for (i in xjjhs.indices) { + xjjhs[i].isChecked = false + adapter.notifyDataSetChanged() + } + } + } + binding.lv.addHeaderView(headView, null, false) + username = SPUtils.get(context, Contans.USERID, "") as String + val zyid = SPUtils.get(context, Contans.ZY, "") as String + if (zyid != "") { + zyids = this.stringToList(zyid) + Log.i("app", "---------") + Log.i("app", Gson().toJson(zyids)) + if (zyids.isNotEmpty()) { + if (type == "BA") { + } else { + professionId = zyids[0] + } + } + } + val filter = IntentFilter() + filter.addAction(Contans.ACTION_REFRESHPLANDOWNLOAD) + filter.addAction(Contans.ACTION_PROFESSIONCHANGE) + requireActivity().registerReceiver(myReceiver, filter) + downloadBtnClick() + deleteBtnClick() + } + + override fun initData() { + queue = NoHttp.newRequestQueue(1) + dialog = WaitDialog(activity, "加载中...") + dialog.setCancelable(false) + cb.isChecked = false + //如果数据库中有数据 + //如果数据库中有数据 + if (DataSupport.count("Xjjh") != 0) { + var xjjhListall: MutableList = mutableListOf() + xjjhListall = if (type == "YX") { + if (zyids.size == 1) { + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } else { + if (firstInit) { + //页面第一次进来初始化 + if (zyids.size > 1) { + val sb = StringBuffer() + val iterator: Iterator = zyids.iterator() + while (iterator.hasNext()) { + val string = iterator.next() as String + val oneCase = "'$string'" + sb.append(oneCase) + if (iterator.hasNext()) { + sb.append(",") + } + } + val inConditions = sb.toString() + //Log.i("app",inConditions); + DataSupport.where( + String.format( + "zyid in (%s) and download = ? and mk =? and username = ?", + inConditions + ), "0", type, username + ).find( + Xjjh::class.java + ) + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + } else { + //切换专业 + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } + } + } else if (type == "XF") { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + xjjhs.clear() + xjjhs.addAll(xjjhListall) + setListData() + } else { + binding.tvNodata.setText("暂无数据") + binding.LL.visibility = View.GONE + } + } + + private fun stringToList(strs: String): MutableList { + val str = strs.split(",".toRegex()).toTypedArray() + val item: MutableList = mutableListOf() + item.addAll(str) + return item + } + + private fun setListData() { + adapter = XzxsjhAdapter(context, xjjhs) { view -> + val checkBox = view as CheckBox + val index = checkBox.tag as Int + xjjhs[index].isChecked = checkBox.isChecked + var count = 0 + for (a in xjjhs.indices) { + if (xjjhs[a].isChecked) { + count++ + } + } + cb.isChecked = count == xjjhs.size + adapter.notifyDataSetChanged() + } + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { _: AdapterView<*>?, view: View?, i: Int, l: Long -> + xjjhs[i - 1].isChecked = !xjjhs[i - 1].isChecked + var count = 0 + for (a in xjjhs.indices) { + if (xjjhs[a].isChecked) { + count++ + } + } + cb.isChecked = count == xjjhs.size + adapter.notifyDataSetChanged() + } + } + + override fun onDestroyView() { + super.onDestroyView() + requireActivity().unregisterReceiver(myReceiver) + } + + private fun downloadBtnClick() { + binding.btnXz.setOnClickListener { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + if (xjjhs.size != 0) { + zxids.clear() + jhmcs.clear() + for (i in xjjhs.indices) { + if (xjjhs[i].isChecked) { + if (!dialog.isShowing) { + dialog.setMessage("下载计划中...") + dialog.show() + } + if (type == "BA") { + //保安计划下载 + downDataBA(xjjhs[i].zxid) + }else if (type == "XF") { + //消防计划下载 + downDataXF(xjjhs[i].zxid, xjjhs[i].jhmc) + } else { + //运行,燃料计划下载 + downData(xjjhs[i].zxid, xjjhs[i].jhmc) + } + zxids.add(xjjhs[i].zxid) + } + } + } else { + showToast("没有可下载计划") + } + } else { + showToast("无法连接到服务器,请检查wifi网络") + } + } + } + + private fun deleteBtnClick() { + binding.btnDelete.setOnClickListener { + if (xjjhs.size != 0) { + val builder = AlertDialog.Builder(context) + builder.setTitle("提示") + builder.setTitle("你确定要删除?") + builder.setNegativeButton( + "取消" + ) { dialog, which -> dialog.dismiss() } + builder.setPositiveButton("确定") { dialog, which -> + val delete: MutableList = ArrayList() + for (i in xjjhs.indices) { + if (xjjhs[i].isChecked) { + delete.add(xjjhs[i]) + DataSupport.deleteAll( + Xjjh::class.java, + "zxid = ? and username = ?", + xjjhs[i].zxid, + username + ) + } + } + xjjhs.removeAll(delete) + adapter.notifyDataSetChanged() + } + builder.show() + } else { + showToast("没有可删除计划") + } + } + } + + //运行,燃料计划下载 + private fun downData(zxid: String, jhmc: String) { + selectCount++ + Log.i("app", Contans.IP + Contans.XSCB_PLAN_DOWNLOAD) + val request = + NoHttp.createStringRequest(Contans.IP + Contans.XSCB_PLAN_DOWNLOAD, RequestMethod.POST) + request.setDefineRequestBodyForJson(createZyJson(zxid, jhmc)) + queue.add( + 1, + request, + object : OnResponseListener { + override fun onSucceed(what: Int, response: Response?) { + try { + if (what == 1) { + ++requestCount + val result = response?.get() + Log.i("app", result ?: "") + if (result != null) { + val gson = Gson() + xsjjhxzBean = GsonUtils.GsonToBean(result, XSJJHXZBean::class.java) + Log.i("app", xsjjhxzBean.data.size.toString()) + if (xsjjhxzBean.state == 1) { + val xsjjhxzDataBeanList = xsjjhxzBean.data + val values = ContentValues() + values.put("download", 1) + if (xsjjhxzDataBeanList != null && xsjjhxzDataBeanList.size > 0) { + for (i in xsjjhxzDataBeanList.indices) { + val xsjjhxzDataBean = xsjjhxzDataBeanList[i] + Log.i("app", gson.toJson(xsjjhxzDataBean)) + } + DataSupport.updateAll( + Xjjh::class.java, + values, + "zxid = ? and mk = ? and username = ?", + xsjjhxzDataBeanList[0].zxid, + type, + username + ) + val xjjhTemp = DataSupport.where( + "mk = ? and zxid = ? and username = ?", + type, + xsjjhxzDataBeanList[0].zxid, + username + ).find( + Xjjh::class.java + ) + var jhmc: String? = "" + if (xjjhTemp != null && xjjhTemp.size > 0) { + jhmc = xjjhTemp[0].jhmc + } + for (i in xsjjhxzDataBeanList.indices) { + xsjjhxzDataBeanList[i].sn = i + 1 + xsjjhxzDataBeanList[i].username = username + xsjjhxzDataBeanList[i].jhmc = jhmc + Log.i("app", "--------") + Log.i("app", gson.toJson(xsjjhxzDataBeanList[i])) + val getData = xsjjhxzDataBeanList[i].data + for (j in getData.indices) { + val bean = getData[j] + bean.username = username + bean.jhmc = jhmc + } + DataSupport.saveAll(getData) + } + DataSupport.saveAll(xsjjhxzDataBeanList) + } + } else { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + if (requestCount == selectCount && requestCount != 0) { + requestCount = 0 + selectCount = 0 + binding.tvNodata.text = "暂无数据" + requestCount = 0 + selectCount = 0 + dialog.cancel() + xjjhs.clear() + var xjjhListall: List? = ArrayList() + xjjhListall = if (type == "YX") { + if (zyids.size == 1) { + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } else { + if (firstInit) { + //页面第一次进来初始化 + if (zyids != null && zyids.size > 1) { + val sb = StringBuffer() + val iterator: Iterator = zyids.iterator() + while (iterator.hasNext()) { + val oneCase = "'${iterator.next()}'" + sb.append(oneCase) + if (iterator.hasNext()) { + sb.append(",") + } + } + val inConditions = sb.toString() + //Log.i("app",inConditions); + DataSupport.where( + String.format( + "zyid in (%s) and download = ? and mk =? and username = ?", + inConditions + ), "0", type, username + ).find( + Xjjh::class.java + ) + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + } else { + //切换专业 + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } + } + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + xjjhs.addAll(xjjhListall) + cb.isChecked = false + adapter.notifyDataSetChanged() + showToast("下载成功") + val intent = Intent(Contans.ACTION_REFRESHPLANUPLOAD) + //发送广播,刷新任务上传页面 + requireActivity().sendBroadcast(intent) + dialog.dismiss() + } + } catch (e: Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + dialog.dismiss() + } + } + + override fun onFailed(what: Int, response: Response?) { + if (dialog.isShowing) { + dialog.dismiss() + } + } + + override fun onStart(what: Int) { + + } + + override fun onFinish(what: Int) { + + } + + } + ) + } + + //保安计划下载 + private fun downDataBA(zxid: String) { + selectCount++ + Log.i("app", Contans.IP + Contans.XSCB_PLAN_BA_DOWNLOAD) + val request = NoHttp.createStringRequest( + Contans.IP + Contans.XSCB_PLAN_BA_DOWNLOAD, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(createZyJsonBA(zxid)) + queue.add( + 2, + request, + object : OnResponseListener { + override fun onSucceed(what: Int, response: Response?) { + try { + if (what == 2) { + ++requestCount + val result = response?.get() + Log.i("app", result ?: "") + if (result != null) { + xsjjhxzBean = GsonUtils.GsonToBean(result, XSJJHXZBean::class.java) + Log.i("app", (xsjjhxzBean != null).toString()) + if (xsjjhxzBean.state == 1) { + val xsjjhxzDataBeanList = xsjjhxzBean.data + val values = ContentValues() + values.put("download", 1) + Log.i("app", "--------") + if (xsjjhxzDataBeanList != null && xsjjhxzDataBeanList.size > 0) { + Log.i("app", xsjjhxzDataBeanList.size.toString()) + DataSupport.updateAll( + Xjjh::class.java, + values, + "zxid = ? and mk = ? and username = ?", + xsjjhxzDataBeanList[0].zxid, + type, + username + ) + } + val dataCount = DataSupport.count(XSJJHXZDataBean::class.java) + var index: Int = 0 //序号 + index = dataCount + for (i in xsjjhxzDataBeanList!!.indices) { + xsjjhxzDataBeanList[i].sn = ++index + xsjjhxzDataBeanList[i].username = username + } + DataSupport.saveAll(xsjjhxzDataBeanList) + } else { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + if (requestCount == selectCount && requestCount != 0) { + requestCount = 0 + selectCount = 0 + binding.tvNodata.setText("暂无数据") + requestCount = 0 + selectCount = 0 + dialog.cancel() + xjjhs.clear() + xjjhs.addAll( + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + ) + cb.isChecked = false + adapter.notifyDataSetChanged() + showToast("下载成功") + val intent = Intent(Contans.ACTION_REFRESHPLANUPLOAD) + //发送广播,刷新任务上传页面 + requireActivity().sendBroadcast(intent) + dialog.dismiss() + } + } catch (e: java.lang.Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + dialog.dismiss() + } + } + + override fun onFailed(what: Int, response: Response?) { + if (dialog.isShowing) { + dialog.dismiss() + } + } + + override fun onStart(what: Int) { + + } + + override fun onFinish(what: Int) { + + } + + } + ) + } + + //消防计划下载 + private fun downDataXF(zxid: String, jhmc: String) { + selectCount++ + Log.i("app", Contans.IP + Contans.XFXJ_PLAN_DOWNLOAD) + val request = + NoHttp.createStringRequest(Contans.IP + Contans.XFXJ_PLAN_DOWNLOAD, RequestMethod.POST) + request.setDefineRequestBodyForJson(createXFJson(zxid, jhmc)) + queue.add( + 1, + request, + object : OnResponseListener { + override fun onSucceed(what: Int, response: Response?) { + try { + if (what == 1) { + ++requestCount + val result = response?.get() + Log.i("app", result ?: "") + if (result != null) { + val gson = Gson() + xsjjhxzBean = GsonUtils.GsonToBean(result, XSJJHXZBean::class.java) + Log.i("app", xsjjhxzBean.data.size.toString()) + if (xsjjhxzBean.state == 1) { + val xsjjhxzDataBeanList = xsjjhxzBean.data + val values = ContentValues() + values.put("download", 1) + if (xsjjhxzDataBeanList != null && xsjjhxzDataBeanList.size > 0) { + for (i in xsjjhxzDataBeanList.indices) { + val xsjjhxzDataBean = xsjjhxzDataBeanList[i] + Log.i("app", gson.toJson(xsjjhxzDataBean)) + } + DataSupport.updateAll( + Xjjh::class.java, + values, + "zxid = ? and mk = ? and username = ?", + xsjjhxzDataBeanList[0].zxid, + type, + username + ) + val xjjhTemp = DataSupport.where( + "mk = ? and zxid = ? and username = ?", + type, + xsjjhxzDataBeanList[0].zxid, + username + ).find( + Xjjh::class.java + ) + var jhmc: String? = "" + if (xjjhTemp != null && xjjhTemp.size > 0) { + jhmc = xjjhTemp[0].jhmc + } + for (i in xsjjhxzDataBeanList.indices) { + xsjjhxzDataBeanList[i].sn = i + 1 + xsjjhxzDataBeanList[i].username = username + xsjjhxzDataBeanList[i].jhmc = jhmc + Log.i("app", "--------") + Log.i("app", gson.toJson(xsjjhxzDataBeanList[i])) + val getData = xsjjhxzDataBeanList[i].data + for (j in getData.indices) { + val bean = getData[j] + bean.username = username + bean.jhmc = jhmc + } + DataSupport.saveAll(getData) + } + DataSupport.saveAll(xsjjhxzDataBeanList) + } + } else { + showToast(UiUtlis.getString(context, R.string.data_error)) + } + } + } + if (requestCount == selectCount && requestCount != 0) { + requestCount = 0 + selectCount = 0 + binding.tvNodata.text = "暂无数据" + requestCount = 0 + selectCount = 0 + dialog.cancel() + xjjhs.clear() + var xjjhListall: List? = ArrayList() + xjjhListall = if (type == "YX") { + if (zyids.size == 1) { + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } else { + if (firstInit) { + //页面第一次进来初始化 + if (zyids != null && zyids.size > 1) { + val sb = StringBuffer() + val iterator: Iterator = zyids.iterator() + while (iterator.hasNext()) { + val oneCase = "'${iterator.next()}'" + sb.append(oneCase) + if (iterator.hasNext()) { + sb.append(",") + } + } + val inConditions = sb.toString() + //Log.i("app",inConditions); + DataSupport.where( + String.format( + "zyid in (%s) and download = ? and mk =? and username = ?", + inConditions + ), "0", type, username + ).find( + Xjjh::class.java + ) + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + } else { + //切换专业 + DataSupport.where( + "download = ? and mk = ? and zyid = ? and username = ?", + "0", + type, + professionId, + username + ).find( + Xjjh::class.java + ) + } + } + } else { + DataSupport.where( + "download = ? and mk = ? and username = ?", + "0", + type, + username + ).find( + Xjjh::class.java + ) + } + xjjhs.addAll(xjjhListall) + cb.isChecked = false + adapter.notifyDataSetChanged() + showToast("下载成功") + val intent = Intent(Contans.ACTION_REFRESHPLANUPLOAD) + //发送广播,刷新任务上传页面 + requireActivity().sendBroadcast(intent) + dialog.dismiss() + } + } catch (e: Exception) { + showToast(UiUtlis.getString(context, R.string.data_error)) + dialog.dismiss() + } + } + + override fun onFailed(what: Int, response: Response?) { + if (dialog.isShowing) { + dialog.dismiss() + } + } + + override fun onStart(what: Int) { + + } + + override fun onFinish(what: Int) { + + } + + } + ) + } + + private fun createZyJson(zxid: String, jhmc: String): String { + val info = XsRequestInfo() + info.action = "YX_XJGL_RWXZ_GET" + info.zxid = zxid + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + + private fun createXFJson(zxid: String, jhmc: String): String { + val info = XsRequestInfo() + info.action = "XF_XJGL_RWXZ_GET" + info.zxid = zxid + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + + private fun createZyJsonBA(zxid: String): String { + val info = XsRequestInfo() + info.action = "BA_XJGL_RWXZ_GET" + info.zxid = zxid + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/YxrlinfoActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/YxrlinfoActivity.java new file mode 100644 index 0000000..66f1a86 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/sbxj/YxrlinfoActivity.java @@ -0,0 +1,135 @@ +package com.rehome.scbaxj.activity.sbxj; + +import android.os.Bundle; + +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.RlinfoAdapter; +import com.rehome.scbaxj.base.BaseActivity; +import com.rehome.scbaxj.bean.RlinfoBean; +import com.rehome.scbaxj.bean.RlresultBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.xuexiang.xui.widget.dialog.DialogLoader; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + +public class YxrlinfoActivity extends BaseActivity { + RecyclerView recyclerView; + private List datas; + RlinfoAdapter adapter; + + @Override + public int getContentViewID() { + return R.layout.activity_rlzqinfo; + } + + @Override + protected void initView() { + recyclerView = findViewById(R.id.recycler_view); + setTitle("燃料周期信息管理"); + setBack(); + datas = new ArrayList<>(); + + recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext())); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setAdapter(adapter = new RlinfoAdapter()); + GetDatas(); + adapter.setOnItemClickListener((itemView, item, position) -> { + DialogLoader.getInstance().showSingleChoiceDialog(context, "燃料巡检周期设置", R.array.router_choice_entry, + 0, (dialogInterface, i) -> { + if (i == 0) { + UploadDatas(datas.get(position).getJHID(), "4", "4"); + } else if (i == 1) { + UploadDatas(datas.get(position).getJHID(), "24", "8"); + } + + }, "确定", "取消"); + + }); + } + + private void GetDatas() { + final Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + requestxs.setDefineRequestBodyForJson(createJson()); + NohttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + RlinfoBean list = GsonToBean(response.get(), RlinfoBean.class); + if (list != null) { + datas = list.getData(); + adapter.refresh(datas); + } + } + + @Override + public void onFailed(int what, Response response) { + } + }); + } + + private String createJson() { + String json = ""; + Map map = new HashMap<>(); + map.put("action", "XSCB_JHGL_GET"); + map.put("jhid", ""); + json = GsonUtils.GsonString(map); + return json; + } + + private void UploadDatas(String jhid, String jhzq, String zxsc) { + final Request requestxs = NoHttp.createStringRequest(Contans.IP + Contans.XSCB, RequestMethod.POST); + requestxs.setDefineRequestBodyForJson(createJson1(jhid, jhzq, zxsc)); + NohttpUtils.getInstance().add(this, 0, requestxs, new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + RlresultBean list = GsonToBean(response.get(), RlresultBean.class); + if (list != null) { + if (list.getState() == 1) { + showToast(list.getMsg()); + GetDatas(); + } else { + showToast(list.getMsg()); + } + } + } + + @Override + public void onFailed(int what, Response response) { + } + }); + } + + private String createJson1(String jhid, String jhzq, String zxsc) { + String json = ""; + Map map = new HashMap<>(); + map.put("action", "XSCB_JHGL_SET"); + map.put("jhid", jhid); + map.put("jhzq", jhzq); + map.put("zxsc", zxsc); + map.put("zxid", ""); + map.put("xgr", (String) SPUtils.get(context, Contans.USERNAME, "")); + json = GsonUtils.GsonString(map); + return json; + } + + @Override + protected void onResume() { + super.onResume(); + GetDatas(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitAuditActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitAuditActivity.kt new file mode 100644 index 0000000..03f4050 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitAuditActivity.kt @@ -0,0 +1,12 @@ +package com.rehome.scbaxj.activity.xfxj + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.rehome.scbaxj.R + +class VisitAuditActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_visit_audit) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitFkAuditActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitFkAuditActivity.java new file mode 100644 index 0000000..e37a27c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/VisitFkAuditActivity.java @@ -0,0 +1,340 @@ +package com.rehome.scbaxj.activity.xfxj; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.util.Base64; +import android.view.LayoutInflater; +import android.view.View; +import android.webkit.WebSettings; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.MainActivity; +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.databinding.ActivityMainBinding; +import com.rehome.scbaxj.databinding.ActivityVisitFkAuditBinding; +import com.rehome.scbaxj.utils.OAToolbar; +import com.rehome.scbaxj.utils.SPUtils; + +import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; + +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.text.TextUtils; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.view.animation.Animation; +import android.view.animation.LinearInterpolator; +import android.webkit.CookieManager; +import android.webkit.JavascriptInterface; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient; +import android.webkit.WebResourceError; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.AppCompatActivity; +import androidx.constraintlayout.widget.ConstraintLayout; + +public class VisitFkAuditActivity extends BaseActivityOaToolbarViewBinding { + + private final static int FILE_CHOOSER_RESULT_CODE = 10000; + + + private String username; + private ValueCallback uploadMessage; + private ValueCallback uploadMessageAboveL; + + @NonNull + @Override + protected ActivityVisitFkAuditBinding getViewBinding() { + return ActivityVisitFkAuditBinding.inflate(LayoutInflater.from(this)); + } + + @NonNull + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + @SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"}) + @Override + protected void initView() { + initToolbar("访客审核", "", new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + + username = (String) SPUtils.get(context, Contans.USERID, ""); + + WebSettings settings = binding.webview.getSettings(); + settings.setUseWideViewPort(true); + settings.setLoadWithOverviewMode(true); + settings.setAllowFileAccess(true); + settings.setSupportZoom(true); + settings.setJavaScriptEnabled(true); + settings.setDomStorageEnabled(true); + settings.setAllowUniversalAccessFromFileURLs(true); + settings.setJavaScriptCanOpenWindowsAutomatically(true); + try { + Class clazz = binding.webview.getSettings().getClass(); + Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class); + method.invoke(binding.webview.getSettings(), true); + } catch (Exception e) { + e.printStackTrace(); + } + settings.setPluginState(WebSettings.PluginState.ON); + // 1.設置WebChromeClient,重寫文件上傳回調 + binding.webview.setWebChromeClient(new MyWebChromeClient()); + + binding.webview.setWebViewClient(new WebViewClient() { + + //在开始加载网页时会回调 + @Override + public void onPageStarted(WebView webView, String s, Bitmap bitmap) { + super.onPageStarted(webView, s, bitmap); + } + + //加载错误的时候会回调 + @Override + public void onReceivedError(WebView webView, int i, String s, String s1) { + super.onReceivedError(webView, i, s, s1); + + } + + //加载错误的时候会回调 + @Override + public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) { + super.onReceivedError(webView, webResourceRequest, webResourceError); + + } + + //加载完成的时候会回调 + @Override + public void onPageFinished(WebView webView, String s) { + + } + + @Override + public boolean shouldOverrideUrlLoading(WebView webView, String url) { + WebView.HitTestResult hitTestResult = webView.getHitTestResult(); + //hitTestResult==null解决重定向问题(刷新后不能退出的bug) + if (!TextUtils.isEmpty(url) && hitTestResult == null) { + return true; + } + return super.shouldOverrideUrlLoading(webView, url); + } + }); + + binding.webview.addJavascriptInterface(VisitFkAuditActivity.this, "android"); + String usernameBase64 = Base64.encodeToString(username.getBytes(StandardCharsets.UTF_8),Base64.DEFAULT); + String url = Contans.VISITURL+usernameBase64; +// Log.i("app","-------------"); +// Log.i("app",url); +// Log.i("app",usernameBase64); + //String url = "https://www.baidu.com"; + // String url = "http://192.168.2.9:18082/mobile"; + // String url = "http://192.168.2.9:1700/mobile"; + // String url = "http://175.178.186.77:1701/mobile"; + settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); + CookieManager cookieManager = CookieManager.getInstance(); + cookieManager.setCookie(url, "android"); + cookieManager.setAcceptCookie(true); + + //加載本地網頁 + binding.webview.clearCache(true); + binding.webview.canGoBack(); + binding.webview.canGoForward(); + binding.webview.loadUrl(url); + + } + + @Override + protected void initData() { + + } + + // 2.回調方法觸發本地選擇文件 + private void openImageChooserActivity() { + Intent i = new Intent(Intent.ACTION_GET_CONTENT); + i.addCategory(Intent.CATEGORY_OPENABLE); + i.setType("image/*");//圖片上傳 + // i.setType("file/*");//文件上傳 + //i.setType("*/*");//文件上傳 + startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE); + } + + // 3.選擇圖片後處理 + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == FILE_CHOOSER_RESULT_CODE) { + Uri result = data == null || resultCode != RESULT_OK ? null : data.getData(); + // Uri result = (((data == null) || (resultCode != RESULT_OK)) ? null : data.getData()); + onActivityResultAboveL(requestCode, resultCode, data); + } else { + //這裏uploadMessage跟uploadMessageAboveL在不同系統版本下分別持有了 + //WebView對象,在用戶取消文件選擇器的情況下,需給onReceiveValue傳null返回值 + //否則WebView在未收到返回值的情況下,無法進行任何操作,文件選擇器會失效 + if (uploadMessage != null) { + uploadMessage.onReceiveValue(null); + uploadMessage = null; + } else if (uploadMessageAboveL != null) { + uploadMessageAboveL.onReceiveValue(null); + uploadMessageAboveL = null; + } + } + } + + // 4. 選擇內容回調到Html頁面 + private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) { + if (requestCode != FILE_CHOOSER_RESULT_CODE) return; + Uri[] results = null; + if (resultCode == Activity.RESULT_OK) { + if (intent != null) { + String dataString = intent.getDataString(); + ClipData clipData = intent.getClipData(); + if (clipData != null) { + results = new Uri[clipData.getItemCount()]; + for (int i = 0; i < clipData.getItemCount(); i++) { + ClipData.Item item = clipData.getItemAt(i); + results[i] = item.getUri(); + } + } + if (dataString != null) results = new Uri[]{Uri.parse(dataString)}; + } + } + uploadMessageAboveL.onReceiveValue(results); + uploadMessageAboveL = null; + } + + @Override + public void onConfigurationChanged(@NonNull Configuration config) { + super.onConfigurationChanged(config); + switch (config.orientation) { + case Configuration.ORIENTATION_LANDSCAPE: + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + break; + case Configuration.ORIENTATION_PORTRAIT: + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + break; + case Configuration.ORIENTATION_SQUARE: + case Configuration.ORIENTATION_UNDEFINED: + break; + } + } + + private void fullScreen() { + if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + Log.i("ToVmp", "横屏"); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + Log.i("ToVmp", "竖屏"); + } + } + + @Override + protected void onDestroy() { + binding.webview.destroy(); + super.onDestroy(); + } + + private class MyWebChromeClient extends WebChromeClient { + WebChromeClient.CustomViewCallback mCallback; + + @Override + public void onShowCustomView(View view, CustomViewCallback callback) { + Log.i("ToVmp", "onShowCustomView"); + fullScreen(); + mCallback = callback; + super.onShowCustomView(view, callback); + } + + @Override + public void onHideCustomView() { + Log.i("ToVmp", "onHideCustomView"); + fullScreen(); + super.onHideCustomView(); + + } + + // For Android < 3.0 + public void openFileChooser(ValueCallback valueCallback) { + uploadMessage = valueCallback; + openImageChooserActivity(); + } + + // For Android >= 3.0 + public void openFileChooser(ValueCallback valueCallback, String acceptType) { + uploadMessage = valueCallback; + openImageChooserActivity(); + } + + //For Android >= 4.1 + public void openFileChooser(ValueCallback valueCallback, String acceptType, String capture) { + uploadMessage = valueCallback; + openImageChooserActivity(); + } + + // For Android >= 5.0 + @Override + public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { + uploadMessageAboveL = filePathCallback; + openImageChooserActivity(); + return true; + } + + } + + private long exitTime = 0; + + @Override + public void onBackPressed() { + if (System.currentTimeMillis() - exitTime > 2000) { + exitTime = System.currentTimeMillis(); + Toast toast = Toast.makeText(getApplicationContext(), "再按一次返回键退出程序", Toast.LENGTH_SHORT); + toast.setGravity(Gravity.CENTER, 100, 0); + toast.show(); + } else { + finish(); + } + /*Intent home = new Intent(Intent.ACTION_MAIN); + home.addCategory(Intent.CATEGORY_HOME); + startActivity(home);*/ + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfRecordEventActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfRecordEventActivity.java new file mode 100644 index 0000000..54d4754 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfRecordEventActivity.java @@ -0,0 +1,711 @@ +package com.rehome.scbaxj.activity.xfxj; + + +import static org.litepal.crud.DataSupport.where; +import android.Manifest; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.luck.picture.lib.animators.AnimationType; +import com.luck.picture.lib.basic.PictureSelectionModel; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.PictureSelectionConfig; +import com.luck.picture.lib.config.SelectLimitType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.config.SelectModeConfig; +import com.luck.picture.lib.decoration.GridSpacingItemDecoration; +import com.luck.picture.lib.dialog.RemindDialog; +import com.luck.picture.lib.engine.CompressFileEngine; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.engine.UriToFileTransformEngine; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.entity.MediaExtraInfo; +import com.luck.picture.lib.interfaces.OnCallbackListener; +import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener; +import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener; +import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener; +import com.luck.picture.lib.interfaces.OnPermissionDeniedListener; +import com.luck.picture.lib.interfaces.OnQueryFilterListener; +import com.luck.picture.lib.interfaces.OnSelectLimitTipsListener; +import com.luck.picture.lib.permissions.PermissionConfig; +import com.luck.picture.lib.permissions.PermissionUtil; +import com.luck.picture.lib.style.PictureSelectorStyle; +import com.luck.picture.lib.style.SelectMainStyle; +import com.luck.picture.lib.style.TitleBarStyle; +import com.luck.picture.lib.utils.DateUtils; +import com.luck.picture.lib.utils.DensityUtil; +import com.luck.picture.lib.utils.MediaUtils; +import com.luck.picture.lib.utils.PictureFileUtils; +import com.luck.picture.lib.utils.SandboxTransformUtils; +import com.luck.picture.lib.utils.StyleUtils; +import com.luck.picture.lib.utils.ToastUtils; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.Listener.FullyGridLayoutManager; +import com.rehome.scbaxj.Listener.GlideEngine; +import com.rehome.scbaxj.Listener.ImageLoaderUtils; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.GridImageAdapter; +import com.rehome.scbaxj.base.BaseActivityViewBinding; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.databinding.ActivityRecordEventBinding; +import com.rehome.scbaxj.databinding.ActivityXfRecordEventBinding; +import com.rehome.scbaxj.utils.OAToolbar; +import com.rehome.scbaxj.utils.SPUtils; +import com.rehome.scbaxj.weight.ConfirmDialog; +import com.yalantis.ucrop.UCrop; +import com.yalantis.ucrop.UCropImageEngine; +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import org.litepal.crud.DataSupport; +import top.zibin.luban.CompressionPredicate; +import top.zibin.luban.Luban; +import top.zibin.luban.OnNewCompressListener; +import top.zibin.luban.OnRenameListener; + + +public class XfRecordEventActivity extends BaseActivityViewBinding { + + + + private RecyclerView mRecyclerView; + private GridImageAdapter mAdapter; + private int maxSelectNum = 9;//图片数量 + //private int themeId; + //private int chooseMode = PictureMimeType.ofAll(); + private int chooseMode = SelectMimeType.ofImage(); + + private boolean isUpward; + private int language = -1; + + private PictureSelectorStyle selectorStyle; + + private List mData = new ArrayList<>(); + private ArrayList finalList; + + private ImageEngine imageEngine; + private ActivityResultLauncher launcherResult; + private final static String TAG = "PictureSelectorTag"; + + private int animationMode = AnimationType.DEFAULT_ANIMATION; + + private String scid = null; + private String username; + private String smfs = null; + private String type; + private XSJJHDataBean itemQY; + + + @Override + protected ActivityXfRecordEventBinding getViewBinding() { + return ActivityXfRecordEventBinding.inflate(LayoutInflater.from(this)); + } + + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + + @Override + public void initView() { + initToolbar("现场巡检", "保存", v -> { + //左边返回按钮点击事件 + finish(); + }, v -> { + mData.clear(); + mData.addAll(mAdapter.getData()); + //右边返回按钮点击事件 + SaveYhData();//数据保存到数据库中 + }); + + scid = getIntent().getStringExtra("scid"); + smfs = getIntent().getStringExtra("smfs"); + type = getIntent().getStringExtra("type"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + selectorStyle = new PictureSelectorStyle(); + launcherResult = createActivityResultLauncher(); + + finalList = new ArrayList<>(); + mRecyclerView = findViewById(R.id.recycler); + FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); + mRecyclerView.setLayoutManager(manager); + mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, DensityUtil.dip2px(this, 8), false)); + + mAdapter = new GridImageAdapter(getContext(), mData); + mAdapter.setSelectMax(maxSelectNum); + mRecyclerView.setAdapter(mAdapter); + + imageEngine = GlideEngine.createGlideEngine(); + + } + + @Override + public void initData() { + + getDataInSqlite(); + + mAdapter.setOnItemClickListener(new GridImageAdapter.OnItemClickListener() { + @Override + public void onItemClick(View v, int position) { + // 预览图片、视频、音频 + PictureSelector.create(XfRecordEventActivity.this) + .openPreview() + .setImageEngine(imageEngine) + .setSelectorUIStyle(selectorStyle) + .setLanguage(language) + .isPreviewFullScreenMode(true) + .setExternalPreviewEventListener(new MyExternalPreviewEventListener()) + .isPreviewZoomEffect(chooseMode != SelectMimeType.ofAudio(), mRecyclerView) + .startActivityPreview(position, false, mAdapter.getData()); + } + + @Override + public void openPicture() { + // 进入相册 + PictureSelectionModel selectionModel = PictureSelector.create(getContext()) + .openGallery(chooseMode) + .setSelectorUIStyle(selectorStyle) + .setImageEngine(imageEngine) + .setCompressEngine(new ImageFileCompressEngine()) + .setSandboxFileEngine(new MeSandboxFileEngine()) + .setSelectLimitTipsListener(new MeOnSelectLimitTipsListener()) + .setEditMediaInterceptListener(new MeOnMediaEditInterceptListener(getSandboxPath(), buildOptions())) + .setPermissionDeniedListener(new MeOnPermissionDeniedListener()) + .isPageSyncAlbumCount(true) + .setQueryFilterListener(new OnQueryFilterListener() { + @Override + public boolean onFilter(LocalMedia media) { + return false; + } + }) + .setSelectionMode(SelectModeConfig.MULTIPLE) + .setLanguage(language) + //.setQuerySortOrder("") + .isDisplayTimeAxis(true) + .isOnlyObtainSandboxDir(false) + .isPageStrategy(true) + .isOriginalControl(false) + .isDisplayCamera(true) + .isFastSlidingSelect(true) + .isPreviewFullScreenMode(true) + .isPreviewZoomEffect(true) + .isPreviewImage(true) + .isMaxSelectEnabledMask(true) + .setMaxSelectNum(maxSelectNum) + .setRecyclerAnimationMode(animationMode) + .setSelectedData(mAdapter.getData()); + forSelectResult(selectionModel); + } + }); + + } + + + //加载数据库中已经下载的计划 + private void getDataInSqlite() { + + List planNFC = where("scid = ? and username = ?", scid, username).find(XSJJHDataBean.class); + if (planNFC != null && planNFC.size() > 0) { + itemQY = planNFC.get(0); + + if(!TextUtils.isEmpty(itemQY.getFxnr())){ + binding.etYhms.setContentText(itemQY.getFxnr()); + } + if(!TextUtils.isEmpty(itemQY.getXjnr())){ + binding.tvXjnr.setText(itemQY.getXjnr()); + } + if(!TextUtils.isEmpty(itemQY.getCJJG())){ + if(itemQY.getCJJG().equals("正常")){ + binding.rb1.setChecked(true); + binding.rb2.setChecked(false); + }else{ + binding.rb1.setChecked(false); + binding.rb2.setChecked(true); + } + } + + + Gson gson=new Gson(); + Log.i("app",gson.toJson(itemQY)); + if(TextUtils.isEmpty(itemQY.getPhotos())){ + Log.i("app","itemQY is null"); + }else{ + Log.i("app","itemQY not null"); + //List mDataTemp = GsonUtils.GsonToList(itemQY.getPhotos(),LocalMedia.class); + List mDataTemp =gson.fromJson(itemQY.getPhotos(), new TypeToken>() {}.getType()); + for(LocalMedia localMedia:mDataTemp){ + Log.i("app",new Gson().toJson(localMedia)); + } + mData.clear(); + mData.addAll(mDataTemp); + mAdapter.getData().clear(); + mAdapter.getData().addAll(mDataTemp); + mAdapter.notifyItemRangeInserted(0, mDataTemp.size()); + } + } + + } + + // private GridImageAdapter.onAddPicClickListener onAddPicClickListener = new GridImageAdapter.onAddPicClickListener() { +// @Override +// public void onAddPicClick() { +// +// PictureSelector.create(YhpcTakePhotoActivity.this) +// .openGallery(chooseMode)// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio() +// .loadImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎,必传项 +// .theme(themeId)// 主题样式设置 具体参考 values/styles 用法:R.style.picture.white.style v2.3.3后 建议使用setPictureStyle()动态方式 +// .isWeChatStyle(false)// 是否开启微信图片选择风格 +// .isUseCustomCamera(false)// 是否使用自定义相机 +// .setLanguage(language)// 设置语言,默认中文 +// .setPictureStyle(mPictureParameterStyle)// 动态自定义相册主题 +// .setPictureCropStyle(mCropParameterStyle)// 动态自定义裁剪主题 +// .isWithVideoImage(true)// 图片和视频是否可以同选,只在ofAll模式下有效 +// .maxSelectNum(maxSelectNum)// 最大图片选择数量 +// .minSelectNum(1)// 最小选择数量 +// .maxVideoSelectNum(1) // 视频最大选择数量,如果没有单独设置的需求则可以不设置,同用maxSelectNum字段 +// .imageSpanCount(4)// 每行显示个数 +// .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回 +// .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)// 设置相册Activity方向,不设置默认使用系统 +// .isOriginalImageControl(false)// 是否显示原图控制按钮,如果设置为true则用户可以自由选择是否使用原图,压缩、裁剪功能将会失效 +// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 +// .isSingleDirectReturn(false)// 单选模式下是否直接返回,PictureConfig.SINGLE模式下有效 +// .previewImage(true)// 是否可预览图片 +// .previewVideo(true)// 是否可预览视频 +// .enablePreviewAudio(true) // 是否可播放音频 +// .isCamera(true)// 是否显示拍照按钮 +// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true +// .enableCrop(false)// 是否裁剪 +// .compress(true)// 是否压缩 +// .synOrAsy(true)//同步true或异步false 压缩 默认同步 +// .hideBottomControls(false)// 是否显示uCrop工具栏,默认不显示 +// .isGif(false)// 是否显示gif图片 +// .freeStyleCropEnabled(false)// 裁剪框是否可拖拽 +// .circleDimmedLayer(false)// 是否圆形裁剪 +// .showCropFrame(false)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false +// .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false +// .openClickSound(false)// 是否开启点击声音 +// .selectionMedia(mAdapter.getData())// 是否传入已选图片 +// .cutOutQuality(90)// 裁剪输出质量 默认100 +// .minimumCompressSize(100)// 小于100kb的图片不压缩 +// .forResult(result -> { +// mAdapter.setList(result); +// mAdapter.notifyDataSetChanged(); +// PhotoListData = result; +// }); +// +// } +// }; + private void SaveYhData() { + finalList.clear(); + for (LocalMedia media : mData) { + finalList.add(media.getCompressPath()); + Log.i("app",new Gson().toJson(media)); + } + + Log.i("app",finalList.toString().toLowerCase()); + + if(scid!=null){ + Log.i("app",String.valueOf(mData.size())); + + ContentValues values = new ContentValues(); + values.put("checked", true); + values.put("smfs", smfs); + if(binding.rb1.isChecked()){ + values.put("CJJG", "正常"); + }if(binding.rb2.isChecked()){ + values.put("CJJG", "异常"); + } + values.put("DATE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + + values.put("photos",new Gson().toJson(mData)); + if(!TextUtils.isEmpty(binding.etYhms.toString().trim())){ + values.put("fxnr",binding.etYhms.getContentText().toString().trim()); + } + DataSupport.updateAll(XSJJHDataBean.class, values, "scid = ? and mk = ? and username = ? ", scid, type, username); + ConfirmDialog confirmDialog = new ConfirmDialog(context, "保存成功", new ConfirmDialog.ConfirmDialogListener() { + @Override + public void confirm() { + finish(); + } + }); + confirmDialog.setTvTitle("巡检内容"); + confirmDialog.setCancelable(true); + confirmDialog.show(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mAdapter != null && mAdapter.getData() != null && mAdapter.getData().size() > 0) { + outState.putParcelableArrayList("selectorList", + (ArrayList) mAdapter.getData()); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + + public Context getContext() { + return this; + } + + private void forSelectResult(PictureSelectionModel model) { + //model.forResult(PictureConfig.CHOOSE_REQUEST); + model.forResult(launcherResult); + } + + /** + * 创建一个ActivityResultLauncher + * + * @return + */ + private ActivityResultLauncher createActivityResultLauncher() { + return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult result) { + int resultCode = result.getResultCode(); + if (resultCode == RESULT_OK) { + ArrayList selectList = PictureSelector.obtainSelectorList(result.getData()); + analyticalSelectResults(selectList); + } else if (resultCode == RESULT_CANCELED) { + Log.i(TAG, "onActivityResult PictureSelector Cancel"); + } + } + }); + } + + /** + * 处理选择结果 + * + * @param result + */ + private void analyticalSelectResults(ArrayList result) { + mData = result; + for (LocalMedia media : result) { + if (media.getWidth() == 0 || media.getHeight() == 0) { + if (PictureMimeType.isHasImage(media.getMimeType())) { + MediaExtraInfo imageExtraInfo = MediaUtils.getImageSize(getContext(), media.getPath()); + media.setWidth(imageExtraInfo.getWidth()); + media.setHeight(imageExtraInfo.getHeight()); + } else if (PictureMimeType.isHasVideo(media.getMimeType())) { + MediaExtraInfo videoExtraInfo = MediaUtils.getVideoSize(getContext(), media.getPath()); + media.setWidth(videoExtraInfo.getWidth()); + media.setHeight(videoExtraInfo.getHeight()); + } + } + Log.i(TAG, "文件名: " + media.getFileName()); + Log.i(TAG, "是否压缩:" + media.isCompressed()); + Log.i(TAG, "压缩:" + media.getCompressPath()); + Log.i(TAG, "初始路径:" + media.getPath()); + Log.i(TAG, "绝对路径:" + media.getRealPath()); + Log.i(TAG, "是否裁剪:" + media.isCut()); + Log.i(TAG, "裁剪路径:" + media.getCutPath()); + Log.i(TAG, "是否开启原图:" + media.isOriginal()); + Log.i(TAG, "原图路径:" + media.getOriginalPath()); + Log.i(TAG, "沙盒路径:" + media.getSandboxPath()); + Log.i(TAG, "水印路径:" + media.getWatermarkPath()); + Log.i(TAG, "视频缩略图:" + media.getVideoThumbnailPath()); + Log.i(TAG, "原始宽高: " + media.getWidth() + "x" + media.getHeight()); + Log.i(TAG, "裁剪宽高: " + media.getCropImageWidth() + "x" + media.getCropImageHeight()); + Log.i(TAG, "文件大小: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize())); + Log.i(TAG, "文件时长: " + media.getDuration()); + } + runOnUiThread(new Runnable() { + @Override + public void run() { + boolean isMaxSize = result.size() == mAdapter.getSelectMax(); + int oldSize = mAdapter.getData().size(); + mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize); + mAdapter.getData().clear(); + mAdapter.getData().addAll(result); + mAdapter.notifyItemRangeInserted(0, result.size()); + } + }); + } + + /** + * 自定义压缩 + */ + private static class ImageFileCompressEngine implements CompressFileEngine { + + @Override + public void onStartCompress(Context context, ArrayList source, OnKeyValueResultCallbackListener call) { + Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() { + @Override + public String rename(String filePath) { + int indexOf = filePath.lastIndexOf("."); + String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg"; + return DateUtils.getCreateFileName("CMP_") + postfix; + } + }).filter(new CompressionPredicate() { + @Override + public boolean apply(String path) { + if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) { + return true; + } + return !PictureMimeType.isUrlHasGif(path); + } + }).setCompressListener(new OnNewCompressListener() { + @Override + public void onStart() { + + } + + @Override + public void onSuccess(String source, File compressFile) { + if (call != null) { + call.onCallback(source, compressFile.getAbsolutePath()); + } + } + + @Override + public void onError(String source, Throwable e) { + if (call != null) { + call.onCallback(source, null); + } + } + }).launch(); + } + } + + /** + * 自定义沙盒文件处理 + */ + private static class MeSandboxFileEngine implements UriToFileTransformEngine { + + @Override + public void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) { + if (call != null) { + call.onCallback(srcPath, SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType)); + } + } + } + + /** + * 拦截自定义提示 + */ + private static class MeOnSelectLimitTipsListener implements OnSelectLimitTipsListener { + + @Override + public boolean onSelectLimitTips(Context context, @Nullable LocalMedia media, PictureSelectionConfig config, int limitType) { + if (limitType == SelectLimitType.SELECT_MIN_SELECT_LIMIT) { + ToastUtils.showToast(context, "图片最少不能低于" + config.minSelectNum + "张"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_VIDEO_SELECT_LIMIT) { + ToastUtils.showToast(context, "视频最少不能低于" + config.minVideoSelectNum + "个"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_AUDIO_SELECT_LIMIT) { + ToastUtils.showToast(context, "音频最少不能低于" + config.minAudioSelectNum + "个"); + return true; + } + return false; + } + } + + /** + * 自定义编辑 + */ + private static class MeOnMediaEditInterceptListener implements OnMediaEditInterceptListener { + private final String outputCropPath; + private final UCrop.Options options; + + public MeOnMediaEditInterceptListener(String outputCropPath, UCrop.Options options) { + this.outputCropPath = outputCropPath; + this.options = options; + } + + @Override + public void onStartMediaEdit(Fragment fragment, LocalMedia currentLocalMedia, int requestCode) { + String currentEditPath = currentLocalMedia.getAvailablePath(); + Uri inputUri = PictureMimeType.isContent(currentEditPath) + ? Uri.parse(currentEditPath) : Uri.fromFile(new File(currentEditPath)); + Uri destinationUri = Uri.fromFile( + new File(outputCropPath, DateUtils.getCreateFileName("CROP_") + ".jpeg")); + UCrop uCrop = UCrop.of(inputUri, destinationUri); + options.setHideBottomControls(false); + uCrop.withOptions(options); + uCrop.setImageEngine(new UCropImageEngine() { + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ImageLoaderUtils.assertValidRequest(context)) { + return; + } + Glide.with(context).load(url).override(180, 180).into(imageView); + } + + @Override + public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener call) { + Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (call != null) { + call.onCall(resource); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + if (call != null) { + call.onCall(null); + } + } + }); + } + }); + uCrop.startEdit(fragment.requireActivity(), fragment, requestCode); + } + } + + /** + * 创建自定义输出目录 + * + * @return + */ + private String getSandboxPath() { + File externalFilesDir = getContext().getExternalFilesDir(""); + File customFile = new File(externalFilesDir.getAbsolutePath(), "Sandbox"); + if (!customFile.exists()) { + customFile.mkdirs(); + } + return customFile.getAbsolutePath() + File.separator; + } + + /** + * 配制UCrop,可根据需求自我扩展 + * + * @return + */ + private UCrop.Options buildOptions() { + UCrop.Options options = new UCrop.Options(); + options.setHideBottomControls(false); + options.setFreeStyleCropEnabled(true); + options.setShowCropFrame(true); + options.setShowCropGrid(false); + options.setCircleDimmedLayer(false); + options.withAspectRatio(0, 0); + options.setCropOutputPathDir(getSandboxPath()); + options.isCropDragSmoothToCenter(false); + options.setSkipCropMimeType(getNotSupportCrop()); + options.isForbidCropGifWebp(true); + options.isForbidSkipMultipleCrop(true); + options.setMaxScaleMultiplier(100); + if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) { + SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle(); + boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack(); + int statusBarColor = mainStyle.getStatusBarColor(); + options.isDarkStatusBarBlack(isDarkStatusBarBlack); + if (StyleUtils.checkStyleValidity(statusBarColor)) { + options.setStatusBarColor(statusBarColor); + options.setToolbarColor(statusBarColor); + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + } + TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle(); + if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) { + options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor()); + } else { + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + return options; + } + + private String[] getNotSupportCrop() { + return new String[]{PictureMimeType.ofGIF(), PictureMimeType.ofWEBP()}; + } + + /** + * 权限拒绝后回调 + */ + private static class MeOnPermissionDeniedListener implements OnPermissionDeniedListener { + + @Override + public void onDenied(Fragment fragment, String[] permissionArray, + int requestCode, OnCallbackListener call) { + String tips; + if (TextUtils.equals(permissionArray[0], PermissionConfig.CAMERA[0])) { + tips = "缺少相机权限\n可能会导致不能使用摄像头功能"; + } else if (TextUtils.equals(permissionArray[0], Manifest.permission.RECORD_AUDIO)) { + tips = "缺少录音权限\n访问您设备上的音频、媒体内容和文件"; + } else { + tips = "缺少存储权限\n访问您设备上的照片、媒体内容和文件"; + } + RemindDialog dialog = RemindDialog.buildDialog(fragment.getContext(), tips); + dialog.setButtonText("去设置"); + dialog.setButtonTextColor(0xFF7D7DFF); + dialog.setContentTextColor(0xFF333333); + dialog.setOnDialogClickListener(new RemindDialog.OnDialogClickListener() { + @Override + public void onClick(View view) { + PermissionUtil.goIntentSetting(fragment, requestCode); + dialog.dismiss(); + } + }); + dialog.show(); + } + } + + /** + * 外部预览监听事件 + */ + private class MyExternalPreviewEventListener implements OnExternalPreviewEventListener { + + @Override + public void onPreviewDelete(int position) { + mAdapter.remove(position); + mAdapter.notifyItemRemoved(position); + } + + @Override + public boolean onLongPressDownload(LocalMedia media) { + return false; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfViewRecordEventActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfViewRecordEventActivity.java new file mode 100644 index 0000000..bf78f2a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfViewRecordEventActivity.java @@ -0,0 +1,595 @@ +package com.rehome.scbaxj.activity.xfxj; + +import static org.litepal.crud.DataSupport.where; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.Manifest; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.luck.picture.lib.basic.PictureSelectionModel; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.PictureSelectionConfig; +import com.luck.picture.lib.config.SelectLimitType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.decoration.GridSpacingItemDecoration; +import com.luck.picture.lib.dialog.RemindDialog; +import com.luck.picture.lib.engine.CompressFileEngine; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.engine.UriToFileTransformEngine; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.entity.MediaExtraInfo; +import com.luck.picture.lib.interfaces.OnCallbackListener; +import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener; +import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener; +import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener; +import com.luck.picture.lib.interfaces.OnPermissionDeniedListener; +import com.luck.picture.lib.interfaces.OnSelectLimitTipsListener; +import com.luck.picture.lib.permissions.PermissionConfig; +import com.luck.picture.lib.permissions.PermissionUtil; +import com.luck.picture.lib.style.PictureSelectorStyle; +import com.luck.picture.lib.style.SelectMainStyle; +import com.luck.picture.lib.style.TitleBarStyle; +import com.luck.picture.lib.utils.DateUtils; +import com.luck.picture.lib.utils.DensityUtil; +import com.luck.picture.lib.utils.MediaUtils; +import com.luck.picture.lib.utils.PictureFileUtils; +import com.luck.picture.lib.utils.SandboxTransformUtils; +import com.luck.picture.lib.utils.StyleUtils; +import com.luck.picture.lib.utils.ToastUtils; +import com.rehome.scbaxj.DBModel.XSJJHDataBean; +import com.rehome.scbaxj.DBModel.XSJJHXZDataBean; +import com.rehome.scbaxj.Listener.FullyGridLayoutManager; +import com.rehome.scbaxj.Listener.GlideEngine; +import com.rehome.scbaxj.Listener.ImageLoaderUtils; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.sbxj.ViewRecordEventActivity; +import com.rehome.scbaxj.adapter.GridImageNoDeleteAdapter; +import com.rehome.scbaxj.base.BaseActivityViewBinding; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.databinding.ActivityViewRecordEventBinding; +import com.rehome.scbaxj.databinding.ActivityXfViewRecordEventBinding; +import com.rehome.scbaxj.utils.OAToolbar; +import com.rehome.scbaxj.utils.SPUtils; +import com.yalantis.ucrop.UCrop; +import com.yalantis.ucrop.UCropImageEngine; + +import org.litepal.crud.DataSupport; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import top.zibin.luban.CompressionPredicate; +import top.zibin.luban.Luban; +import top.zibin.luban.OnNewCompressListener; +import top.zibin.luban.OnRenameListener; + +public class XfViewRecordEventActivity extends BaseActivityViewBinding { + + private RecyclerView mRecyclerView; + private GridImageNoDeleteAdapter mAdapter; + private int maxSelectNum = 9;//图片数量 + private int chooseMode = SelectMimeType.ofImage(); + private int language = -1; + + private PictureSelectorStyle selectorStyle; + + private List mData = new ArrayList<>(); + private ArrayList finalList; + + private ImageEngine imageEngine; + private ActivityResultLauncher launcherResult; + private final static String TAG = "PictureSelectorTag"; + + private String scid = null; + private String username; + private XSJJHDataBean itemQY; + + @Override + protected void initView() { + initToolbar("浏览现场巡检", "", v -> { + //左边返回按钮点击事件 + finish(); + }, v -> { + //右边返回按钮点击事件 + }); + + scid = getIntent().getStringExtra("scid"); + username = (String) SPUtils.get(context, Contans.USERID, ""); + + binding.etYhms.getEditText().setEnabled(false); + + selectorStyle = new PictureSelectorStyle(); + launcherResult = createActivityResultLauncher(); + + finalList = new ArrayList<>(); + mRecyclerView = findViewById(R.id.recycler); + FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); + mRecyclerView.setLayoutManager(manager); + mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, DensityUtil.dip2px(this, 8), false)); + + mAdapter = new GridImageNoDeleteAdapter(getContext(), mData); + mAdapter.setSelectMax(maxSelectNum); + mRecyclerView.setAdapter(mAdapter); + + imageEngine = GlideEngine.createGlideEngine(); + } + + @Override + protected void initData() { + getDataInSqlite(); + + mAdapter.setOnItemClickListener(new GridImageNoDeleteAdapter.OnItemClickListener() { + @Override + public void onItemClick(View v, int position) { + // 预览图片、视频、音频 + PictureSelector.create(XfViewRecordEventActivity.this) + .openPreview() + .setImageEngine(imageEngine) + .setSelectorUIStyle(selectorStyle) + .setLanguage(language) + .isPreviewFullScreenMode(true) + .isPreviewZoomEffect(chooseMode != SelectMimeType.ofAudio(), mRecyclerView) + .startActivityPreview(position, false, mAdapter.getData()); + } + + @Override + public void openPicture() { + + } + }); + } + + @Override + protected ActivityXfViewRecordEventBinding getViewBinding() { + return ActivityXfViewRecordEventBinding.inflate(LayoutInflater.from(this)); + } + + @Override + protected OAToolbar getToolbar() { + return binding.toolbarView.toolbar; + } + + //加载数据库中已经下载的计划 + private void getDataInSqlite() { + + List planNFC = where("scid = ? and username = ?", scid, username).find(XSJJHDataBean.class); + if (planNFC != null && planNFC.size() > 0) { + itemQY = planNFC.get(0); + + if(!TextUtils.isEmpty(itemQY.getFxnr())){ + binding.etYhms.setContentText(itemQY.getFxnr()); + } + if(!TextUtils.isEmpty(itemQY.getXjnr())){ + binding.tvXjnr.setText(itemQY.getXjnr()); + } + if(!TextUtils.isEmpty(itemQY.getCJJG())){ + if(itemQY.getCJJG().equals("正常")){ + binding.rb1.setChecked(true); + binding.rb2.setChecked(false); + }if(itemQY.getCJJG().equals("异常")){ + binding.rb1.setChecked(false); + binding.rb2.setChecked(true); + } + }else{ + binding.rb1.setChecked(false); + binding.rb2.setChecked(false); + } + + + Gson gson=new Gson(); + Log.i("app",gson.toJson(itemQY)); + if(TextUtils.isEmpty(itemQY.getPhotos())){ + Log.i("app","itemQY is null"); + mAdapter.setSelectMax(0); + mAdapter.notifyItemRangeInserted(0, 0); + }else{ + Log.i("app","itemQY not null"); + //List mDataTemp = GsonUtils.GsonToList(itemQY.getPhotos(),LocalMedia.class); + List mDataTemp =gson.fromJson(itemQY.getPhotos(), new TypeToken>() {}.getType()); + for(LocalMedia localMedia:mDataTemp){ + Log.i("app",new Gson().toJson(localMedia)); + } + mData.clear(); + mData.addAll(mDataTemp); + mAdapter.getData().clear(); + mAdapter.getData().addAll(mDataTemp); + mAdapter.setSelectMax(mDataTemp.size()); + mAdapter.notifyItemRangeInserted(0, mDataTemp.size()); + } + } + } + + private void SaveYhData() { + finalList.clear(); + for (LocalMedia media : mData) { + finalList.add(media.getCompressPath()); + Log.i("app",new Gson().toJson(media)); + } + + Log.i("app",finalList.toString().toLowerCase()); + + if(itemQY!=null){ + ContentValues values = new ContentValues(); + values.put("photos",new Gson().toJson(mData)); + if(!TextUtils.isEmpty(binding.etYhms.toString().trim())){ + values.put("fxnr",binding.etYhms.getContentText().toString().trim()); + } + DataSupport.updateAll(XSJJHXZDataBean.class, values, "scid = ? and username = ?", scid, username); + showToast("保存成功"); + } + } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mAdapter != null && mAdapter.getData() != null && mAdapter.getData().size() > 0) { + outState.putParcelableArrayList("selectorList", + (ArrayList) mAdapter.getData()); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + + public Context getContext() { + return this; + } + + private void forSelectResult(PictureSelectionModel model) { + //model.forResult(PictureConfig.CHOOSE_REQUEST); + model.forResult(launcherResult); + } + + /** + * 创建一个ActivityResultLauncher + * + * @return + */ + private ActivityResultLauncher createActivityResultLauncher() { + return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult result) { + int resultCode = result.getResultCode(); + if (resultCode == RESULT_OK) { + ArrayList selectList = PictureSelector.obtainSelectorList(result.getData()); + analyticalSelectResults(selectList); + } else if (resultCode == RESULT_CANCELED) { + Log.i(TAG, "onActivityResult PictureSelector Cancel"); + } + } + }); + } + + /** + * 处理选择结果 + * + * @param result + */ + private void analyticalSelectResults(ArrayList result) { + mData = result; + for (LocalMedia media : result) { + if (media.getWidth() == 0 || media.getHeight() == 0) { + if (PictureMimeType.isHasImage(media.getMimeType())) { + MediaExtraInfo imageExtraInfo = MediaUtils.getImageSize(getContext(), media.getPath()); + media.setWidth(imageExtraInfo.getWidth()); + media.setHeight(imageExtraInfo.getHeight()); + } else if (PictureMimeType.isHasVideo(media.getMimeType())) { + MediaExtraInfo videoExtraInfo = MediaUtils.getVideoSize(getContext(), media.getPath()); + media.setWidth(videoExtraInfo.getWidth()); + media.setHeight(videoExtraInfo.getHeight()); + } + } + Log.i(TAG, "文件名: " + media.getFileName()); + Log.i(TAG, "是否压缩:" + media.isCompressed()); + Log.i(TAG, "压缩:" + media.getCompressPath()); + Log.i(TAG, "初始路径:" + media.getPath()); + Log.i(TAG, "绝对路径:" + media.getRealPath()); + Log.i(TAG, "是否裁剪:" + media.isCut()); + Log.i(TAG, "裁剪路径:" + media.getCutPath()); + Log.i(TAG, "是否开启原图:" + media.isOriginal()); + Log.i(TAG, "原图路径:" + media.getOriginalPath()); + Log.i(TAG, "沙盒路径:" + media.getSandboxPath()); + Log.i(TAG, "水印路径:" + media.getWatermarkPath()); + Log.i(TAG, "视频缩略图:" + media.getVideoThumbnailPath()); + Log.i(TAG, "原始宽高: " + media.getWidth() + "x" + media.getHeight()); + Log.i(TAG, "裁剪宽高: " + media.getCropImageWidth() + "x" + media.getCropImageHeight()); + Log.i(TAG, "文件大小: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize())); + Log.i(TAG, "文件时长: " + media.getDuration()); + } + runOnUiThread(new Runnable() { + @Override + public void run() { + boolean isMaxSize = result.size() == mAdapter.getSelectMax(); + int oldSize = mAdapter.getData().size(); + mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize); + mAdapter.getData().clear(); + mAdapter.getData().addAll(result); + mAdapter.notifyItemRangeInserted(0, result.size()); + } + }); + } + + /** + * 自定义压缩 + */ + private static class ImageFileCompressEngine implements CompressFileEngine { + + @Override + public void onStartCompress(Context context, ArrayList source, OnKeyValueResultCallbackListener call) { + Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() { + @Override + public String rename(String filePath) { + int indexOf = filePath.lastIndexOf("."); + String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg"; + return DateUtils.getCreateFileName("CMP_") + postfix; + } + }).filter(new CompressionPredicate() { + @Override + public boolean apply(String path) { + if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) { + return true; + } + return !PictureMimeType.isUrlHasGif(path); + } + }).setCompressListener(new OnNewCompressListener() { + @Override + public void onStart() { + + } + + @Override + public void onSuccess(String source, File compressFile) { + if (call != null) { + call.onCallback(source, compressFile.getAbsolutePath()); + } + } + + @Override + public void onError(String source, Throwable e) { + if (call != null) { + call.onCallback(source, null); + } + } + }).launch(); + } + } + + /** + * 自定义沙盒文件处理 + */ + private static class MeSandboxFileEngine implements UriToFileTransformEngine { + + @Override + public void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) { + if (call != null) { + call.onCallback(srcPath, SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType)); + } + } + } + + /** + * 拦截自定义提示 + */ + private static class MeOnSelectLimitTipsListener implements OnSelectLimitTipsListener { + + @Override + public boolean onSelectLimitTips(Context context, @Nullable LocalMedia media, PictureSelectionConfig config, int limitType) { + if (limitType == SelectLimitType.SELECT_MIN_SELECT_LIMIT) { + ToastUtils.showToast(context, "图片最少不能低于" + config.minSelectNum + "张"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_VIDEO_SELECT_LIMIT) { + ToastUtils.showToast(context, "视频最少不能低于" + config.minVideoSelectNum + "个"); + return true; + } else if (limitType == SelectLimitType.SELECT_MIN_AUDIO_SELECT_LIMIT) { + ToastUtils.showToast(context, "音频最少不能低于" + config.minAudioSelectNum + "个"); + return true; + } + return false; + } + } + + /** + * 自定义编辑 + */ + private static class MeOnMediaEditInterceptListener implements OnMediaEditInterceptListener { + private final String outputCropPath; + private final UCrop.Options options; + + public MeOnMediaEditInterceptListener(String outputCropPath, UCrop.Options options) { + this.outputCropPath = outputCropPath; + this.options = options; + } + + @Override + public void onStartMediaEdit(Fragment fragment, LocalMedia currentLocalMedia, int requestCode) { + String currentEditPath = currentLocalMedia.getAvailablePath(); + Uri inputUri = PictureMimeType.isContent(currentEditPath) + ? Uri.parse(currentEditPath) : Uri.fromFile(new File(currentEditPath)); + Uri destinationUri = Uri.fromFile( + new File(outputCropPath, DateUtils.getCreateFileName("CROP_") + ".jpeg")); + UCrop uCrop = UCrop.of(inputUri, destinationUri); + options.setHideBottomControls(false); + uCrop.withOptions(options); + uCrop.setImageEngine(new UCropImageEngine() { + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ImageLoaderUtils.assertValidRequest(context)) { + return; + } + Glide.with(context).load(url).override(180, 180).into(imageView); + } + + @Override + public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener call) { + Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (call != null) { + call.onCall(resource); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + if (call != null) { + call.onCall(null); + } + } + }); + } + }); + uCrop.startEdit(fragment.requireActivity(), fragment, requestCode); + } + } + + /** + * 创建自定义输出目录 + * + * @return + */ + private String getSandboxPath() { + File externalFilesDir = getContext().getExternalFilesDir(""); + File customFile = new File(externalFilesDir.getAbsolutePath(), "Sandbox"); + if (!customFile.exists()) { + customFile.mkdirs(); + } + return customFile.getAbsolutePath() + File.separator; + } + + /** + * 配制UCrop,可根据需求自我扩展 + * + * @return + */ + private UCrop.Options buildOptions() { + UCrop.Options options = new UCrop.Options(); + options.setHideBottomControls(false); + options.setFreeStyleCropEnabled(true); + options.setShowCropFrame(true); + options.setShowCropGrid(false); + options.setCircleDimmedLayer(false); + options.withAspectRatio(0, 0); + options.setCropOutputPathDir(getSandboxPath()); + options.isCropDragSmoothToCenter(false); + options.setSkipCropMimeType(getNotSupportCrop()); + options.isForbidCropGifWebp(true); + options.isForbidSkipMultipleCrop(true); + options.setMaxScaleMultiplier(100); + if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) { + SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle(); + boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack(); + int statusBarColor = mainStyle.getStatusBarColor(); + options.isDarkStatusBarBlack(isDarkStatusBarBlack); + if (StyleUtils.checkStyleValidity(statusBarColor)) { + options.setStatusBarColor(statusBarColor); + options.setToolbarColor(statusBarColor); + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + } + TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle(); + if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) { + options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor()); + } else { + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + } else { + options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey)); + options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white)); + } + return options; + } + + private String[] getNotSupportCrop() { + return new String[]{PictureMimeType.ofGIF(), PictureMimeType.ofWEBP()}; + } + + /** + * 权限拒绝后回调 + */ + private static class MeOnPermissionDeniedListener implements OnPermissionDeniedListener { + + @Override + public void onDenied(Fragment fragment, String[] permissionArray, + int requestCode, OnCallbackListener call) { + String tips; + if (TextUtils.equals(permissionArray[0], PermissionConfig.CAMERA[0])) { + tips = "缺少相机权限\n可能会导致不能使用摄像头功能"; + } else if (TextUtils.equals(permissionArray[0], Manifest.permission.RECORD_AUDIO)) { + tips = "缺少录音权限\n访问您设备上的音频、媒体内容和文件"; + } else { + tips = "缺少存储权限\n访问您设备上的照片、媒体内容和文件"; + } + RemindDialog dialog = RemindDialog.buildDialog(fragment.getContext(), tips); + dialog.setButtonText("去设置"); + dialog.setButtonTextColor(0xFF7D7DFF); + dialog.setContentTextColor(0xFF333333); + dialog.setOnDialogClickListener(new RemindDialog.OnDialogClickListener() { + @Override + public void onClick(View view) { + PermissionUtil.goIntentSetting(fragment, requestCode); + dialog.dismiss(); + } + }); + dialog.show(); + } + } + + /** + * 外部预览监听事件 + */ + private class MyExternalPreviewEventListener implements OnExternalPreviewEventListener { + + @Override + public void onPreviewDelete(int position) { + mAdapter.remove(position); + mAdapter.notifyItemRemoved(position); + } + + @Override + public boolean onLongPressDownload(LocalMedia media) { + return false; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfYulActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfYulActivity.kt new file mode 100644 index 0000000..8c8ac5c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfYulActivity.kt @@ -0,0 +1,268 @@ +package com.rehome.scbaxj.activity.xfxj + + +import android.content.* +import android.os.Bundle +import android.util.Log +import android.view.View +import android.widget.AdapterView +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import com.google.gson.Gson +import com.rehome.scbaxj.DBModel.XSJJHDataBean +import com.rehome.scbaxj.R +import com.rehome.scbaxj.activity.sbxdj.SbxdjcjsbActivity +import com.rehome.scbaxj.activity.sbxj.SbxjcjsbActivity +import com.rehome.scbaxj.adapter.DlbAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.bean.DlbInfo +import com.rehome.scbaxj.bean.SetxjSbModel +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityXfYulBinding +import com.rehome.scbaxj.utils.SPUtils +import org.litepal.crud.DataSupport +import java.text.SimpleDateFormat +import java.util.* + +class XfYulActivity : BaseActivityOaToolbarViewBinding() { + + private lateinit var launcherResult: ActivityResultLauncher + + private var isEdit = false + private var qybh: String? = null + private var xsjjhDataBeanArrayList = mutableListOf() + private val infos = mutableListOf() + private lateinit var headView: View + private lateinit var adapter: DlbAdapter + private lateinit var LX: String + private lateinit var LXResult: String + + private lateinit var type: String + private lateinit var username: String + private var smfs: String? = null + + private var setxjSbModelArrayList: ArrayList? = null; + + //录入和选择 + val Req = 101 + + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (Contans.ACTION_YULONE == action) { //更新设备点检页面返回时编辑的item内容 + val name = intent.getStringExtra(Contans.KEY_NAME) + val scid = intent.getStringExtra(Contans.SCID) + if (infos.isNotEmpty()) { + for (i in infos.indices) { + val dlbInfo = infos[i] + if (dlbInfo.scid == scid) { + dlbInfo.cjjg = name + dlbInfo.isStatu = true + } + } + } + if (xsjjhDataBeanArrayList.size > 0) { + for (i in xsjjhDataBeanArrayList.indices) { + val xsjjhDataBean = xsjjhDataBeanArrayList[i] + if (xsjjhDataBean.scid == scid) { + xsjjhDataBean.isChecked = true + xsjjhDataBean.cjjg = name + } + } + } + } + } + } + + override fun getViewBinding() = ActivityXfYulBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(context, R.layout.dlb_item, null) + headView.findViewById(R.id.head).visibility = View.VISIBLE + + launcherResult = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + val bundle: Bundle? = it.data?.extras + setxjSbModelArrayList = + bundle?.getParcelableArrayList("setSbModelList") + if (setxjSbModelArrayList != null) { + for (i in setxjSbModelArrayList!!.indices) { + for (j in infos.indices) { + if (infos[j].sbid == setxjSbModelArrayList!![i].sbId + ) infos[j].cjjg = setxjSbModelArrayList!![i].value + } + } + adapter.notifyDataSetChanged() + } + } + } + } + + override fun initData() { + val bundle = intent.extras + isEdit = bundle!!.getBoolean("edit") + smfs = bundle.getString("smfs") + type = bundle.getString("type")!! + LX = bundle.getString("LX")!! + LXResult = bundle.getString("LXResult")!! + qybh = bundle.getString("qybh") + username = SPUtils.get(context, Contans.USERID, "") as String + searchData() + setListAdapter() + val filter = IntentFilter() + filter.addAction(Contans.ACTION_YULONE) + registerReceiver(myReceiver, filter) + if (isEdit) { + initToolbar("消防现场巡检", "") { } + //allCheckNow() + } else { + initToolbar("浏览巡检记录", "") { } + } + } + + private fun searchData() { + when (LX) { + "Click" -> { + Log.i("app", (qybh == null).toString()) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll( + DataSupport.where("qybh = ? and mk = ? and username = ?", qybh, type, username) + .find( + XSJJHDataBean::class.java + ) + ) //获取当前点击的工作栏对应的点检记录列表 + } + "NFC" -> { + val xsjjhDataBeen = DataSupport.where( + "nfcbm = ? and mk = ? and username = ?", + LXResult, + type, + username + ).find( + XSJJHDataBean::class.java + ) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen) + } + "EWM" -> { + val xsjjhDataBeen = DataSupport.where( + "qybh = ? and mk = ? and username = ?", + LXResult, + type, + username + ).find( + XSJJHDataBean::class.java + ) + xsjjhDataBeanArrayList.clear() + xsjjhDataBeanArrayList.addAll(xsjjhDataBeen) + } + } + } + + private fun setListAdapter() { + infos.clear() + for (rw in xsjjhDataBeanArrayList) { + val info = DlbInfo() + info.scid = rw.scid + info.sbid = rw.sbid + info.cjjg = rw.cjjg + info.dian = rw.dlxmc + info.isStatu = rw.isChecked + infos.add(info) + } + val gson1 = Gson() + Log.i("app", gson1.toJson(infos)) + Log.i("app", gson1.toJson(xsjjhDataBeanArrayList)) + adapter = DlbAdapter(context, infos) + binding.lv.addHeaderView(headView, null, false) + binding.lv.adapter = adapter + binding.lv.onItemClickListener = + AdapterView.OnItemClickListener { parent: AdapterView<*>?, view: View?, position: Int, id: Long -> + Log.i("app", position.toString()) + val gson = Gson() + val xSJJHDataBean = xsjjhDataBeanArrayList[position - 1] + Log.i("app", xSJJHDataBean.lrfs.toString()) + Log.i("app", xSJJHDataBean.cblx.toString()) + Log.i("app", gson.toJson(xSJJHDataBean)) + if (isEdit) { + val intent = Intent(context, XfRecordEventActivity::class.java) + intent.putExtra("scid", xSJJHDataBean.scid) + intent.putExtra("smfs", smfs) + intent.putExtra("type", type) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } else { + val intent = Intent(context, XfViewRecordEventActivity::class.java) + intent.putExtra("scid", xSJJHDataBean.scid) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + } + } + + private fun allCheckNow() { + val xsjjhDataBeanArrayListTran = ArrayList() + if (xsjjhDataBeanArrayList.size > 0) { + for (i in xsjjhDataBeanArrayList.indices) { + val xSJJHDataBeanTemp = xsjjhDataBeanArrayList[i] + if (xSJJHDataBeanTemp.lrfs == "1") { + xSJJHDataBeanTemp.isChecked = true + xSJJHDataBeanTemp.cjjg = "正常" + xsjjhDataBeanArrayListTran.add(xSJJHDataBeanTemp) + } + } + } + if (infos.size > 0 && xsjjhDataBeanArrayListTran.size > 0) { + for (i in infos.indices) { + val dlbInfo = infos[i] + for (j in xsjjhDataBeanArrayListTran.indices) { + val xSJJHDataBeanTemp = xsjjhDataBeanArrayListTran[j] + if (dlbInfo.scid == xSJJHDataBeanTemp.scid) { + dlbInfo.cjjg = "正常" + dlbInfo.isStatu = true + val values = ContentValues() + values.put("checked", true) + values.put("smfs", smfs) + values.put("CJJG", dlbInfo.cjjg) + values.put("DATE", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())) + DataSupport.updateAll( + XSJJHDataBean::class.java, + values, + "scid = ? and mk = ? and username = ? ", + dlbInfo.scid, + type, + username + ) + } + } + } + } + adapter.notifyDataSetChanged() + } + + override fun onRestart() { + super.onRestart() + Log.i("app", "onRestart") + searchData() + infos.clear() + for (rw in xsjjhDataBeanArrayList) { + val info = DlbInfo() + info.scid = rw.scid + info.sbid = rw.sbid + info.cjjg = rw.cjjg + info.dian = rw.dlxmc + info.isStatu = rw.isChecked + infos.add(info) + } + adapter.notifyDataSetChanged() + } + + override fun onDestroy() { + super.onDestroy() + unregisterReceiver(myReceiver) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfmjActivity.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfmjActivity.kt new file mode 100644 index 0000000..97e3555 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/xfxj/XfmjActivity.kt @@ -0,0 +1,213 @@ +package com.rehome.scbaxj.activity.xfxj + +import android.text.TextUtils +import android.util.Log +import android.view.View +import android.widget.CheckBox +import android.widget.TextView +import com.rehome.scbaxj.R +import com.rehome.scbaxj.adapter.BamjAdapter +import com.rehome.scbaxj.base.BaseActivityOaToolbarViewBinding +import com.rehome.scbaxj.bean.MjList +import com.rehome.scbaxj.bean.MjRequestInfo +import com.rehome.scbaxj.bean.XsRequestInfo +import com.rehome.scbaxj.contans.Contans +import com.rehome.scbaxj.databinding.ActivityXfmjBinding +import com.rehome.scbaxj.utils.* +import com.rehome.scbaxj.weight.MjEditDialog +import com.rehome.scbaxj.weight.WaitDialog +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Request +import com.yolanda.nohttp.rest.RequestQueue +import com.yolanda.nohttp.rest.Response + +class XfmjActivity : BaseActivityOaToolbarViewBinding() { + + private val mjList: MutableList = mutableListOf() + private lateinit var adapter: BamjAdapter + private lateinit var headView: View + private lateinit var head: View + private lateinit var tv_yjzj: TextView + private lateinit var xj_cb: CheckBox + private lateinit var dialog: WaitDialog + private lateinit var queue: RequestQueue + private lateinit var username: String + + override fun getViewBinding() = ActivityXfmjBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("消防免检管理", "提交", { finish() }, { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + if (mjList.size > 0) { + var isChecked = false + val mjCheckList: MutableList = mutableListOf() + for (i in mjList.indices) { + if (mjList[i].isChecked) { + isChecked = true + mjCheckList.add(mjList[i]) + } + } + if (isChecked) { + val dialog = MjEditDialog(this, object : MjEditDialog.DialogListener { + override fun onYesClick(noCheckReason: String) { + if(!TextUtils.isEmpty(noCheckReason)){ + upLoadBaMj(noCheckReason,mjCheckList) + }else{ + showToast("免检原因必填") + } + } + + override fun onNoClick() { + + } + + }) + dialog.show() + } else { + showToast("请选择要免检的计划") + } + } + } else { + Log.i("app", "无网络") + showToast("无wifi网络连接,请先连接到wifi网络") + } + }) + queue = NoHttp.newRequestQueue(1) + username = SPUtils.get(context, Contans.USERID, "") as String + binding.lv.emptyView = binding.tvNodata + dialog = WaitDialog(context, "上传数据中...请稍等...") + dialog.setCancelable(false) + headView = View.inflate(context, R.layout.scxscb_item, null) + head = headView.findViewById(R.id.head) + tv_yjzj = headView.findViewById(R.id.tv_yjzj) + tv_yjzj.text = "总点数" + xj_cb = headView.findViewById(R.id.xj_cb) + binding.lv.addHeaderView(headView, null, false) + xj_cb.setOnClickListener { + if (xj_cb.isChecked) { + for (i in mjList.indices) { + mjList[i].isChecked = true + adapter.notifyDataSetChanged() + } + } else { + for (i in mjList.indices) { + mjList[i].isChecked = false + adapter.notifyDataSetChanged() + } + } + } + + adapter = BamjAdapter(this, mjList) { view: View -> + val checkBox = view as CheckBox + val index = checkBox.tag as Int + mjList[index].isChecked = checkBox.isChecked + var count = 0 + for (a in mjList.indices) { + if (mjList[a].isChecked) { + count++ + } + } + xj_cb.isChecked = count == mjList.size + adapter.notifyDataSetChanged() + } + binding.lv.adapter = adapter + } + + override fun initData() { + if (NetworkUtil.hasNetWorkStatus(context, true)) { + Log.i("app", "有wifi网络") + requestData() + } else { + Log.i("app", "无网络") + } + } + + private fun requestData() { //下载巡检数据 + val request: Request = + NoHttp.createStringRequest(Contans.IP + Contans.XF_Download_MJ_URL, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonBaMjDown()) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, MjList::class.java) + Log.i("app", bean!!.msg) + Log.i("app", bean.state) + Log.i("app", bean.data.size.toString()) + if (bean.state == "1") { + if (bean.data != null && bean.data.size > 0) { + mjList.clear() + val list = bean.data //服务器数据 + mjList.addAll(list) + adapter.notifyDataSetChanged() + }else{ + mjList.clear() + adapter.notifyDataSetChanged() + } + }else{ + mjList.clear() + adapter.notifyDataSetChanged() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun upLoadBaMj(noCheckReason: String?,mjCheckList: MutableList) { + Log.i("app", Contans.IP + Contans.XF_UPLOAD_MJ_URL) + val request: Request = + NoHttp.createStringRequest(Contans.IP + Contans.XF_UPLOAD_MJ_URL, RequestMethod.POST) + request.setDefineRequestBodyForJson(createJsonBaMjUp(noCheckReason,mjCheckList)) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "") + val bean = GsonUtils.GsonToBean(result, MjList::class.java) + Log.i("app", bean!!.msg) + Log.i("app", bean.state) + if (bean.state == "1") { + showToast("操作成功") + initData() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + + private fun createJsonBaMjDown(): String { + val info = XsRequestInfo() + info.action = "XF_XJGL_XFKH_GET" + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } + + private fun createJsonBaMjUp(noCheckReason: String?,mjCheckList: MutableList): String { + val info = MjRequestInfo() + info.action = "XF_XJGL_XFKHSC_SET" + if (noCheckReason != null) { + info.bz = noCheckReason + } else { + info.bz = "" + } + info.scr = username + info.data = mjCheckList + val json = GsonUtils.GsonString(info) + Log.i("app", json) + return json + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhpcDataListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhpcDataListActivity.java new file mode 100644 index 0000000..253401c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhpcDataListActivity.java @@ -0,0 +1,329 @@ +package com.rehome.scbaxj.activity.yhpc; + +import android.app.AlertDialog; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.DataBaseYhpc; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.YhpcListAdapter; +import com.rehome.scbaxj.base.BaseActivity3; +import com.rehome.scbaxj.base.BaseCallBack; +import com.rehome.scbaxj.bean.ResultBean3; +import com.rehome.scbaxj.bean.YhpcResultBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.Api; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.RetrofitHttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import org.litepal.crud.DataSupport; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import retrofit2.Call; +import retrofit2.Response; + +public class YhpcDataListActivity extends BaseActivity3 { + + ListView lv; + TextView tvNodata; + FrameLayout FLLL; + Button btnSc; + Button btnDel; + LinearLayout xmll; + + + private List list;//本地数据库拿出来显示在listview上 + private List removesavelist;//已上传的任务 + private List Uploadlist;//要上传的集合 + private YhpcListAdapter adapter; + private View headView; + private View head; + private CheckBox cb; + private String SCR; + + + @Override + public int getLayoutId() { + return R.layout.activity_yhpcdatalist; + } + + @Override + public void initView() { + initToolbar("隐患排查上传", "新增", new View.OnClickListener() { + @Override + public void onClick(View v) { + //startActivity(YhpcTakePhotoActivity.class); + } + }); + SCR = (String) SPUtils.get(context, Contans.USERID, ""); + + lv = findViewById(R.id.lv); + tvNodata = findViewById(R.id.tv_nodata); + FLLL = findViewById(R.id.FLLL); + btnSc = findViewById(R.id.btn_sc); + btnDel = findViewById(R.id.btn_del); + xmll = findViewById(R.id.xmll); + + + + + list = new ArrayList<>(); + removesavelist = new ArrayList<>(); + Uploadlist = new ArrayList<>(); + + headView = View.inflate(context, R.layout.item_yhpclist, null); + head = headView.findViewById(R.id.head); + lv.addHeaderView(headView, null, false); + + cb = headView.findViewById(R.id.cb); + cb.setOnClickListener(view -> { + + if (cb.isChecked()) { + for (int i = 0; i < list.size(); i++) { + list.get(i).setChecked(true); + adapter.notifyDataSetChanged(); + } + } else { + for (int i = 0; i < list.size(); i++) { + list.get(i).setChecked(false); + adapter.notifyDataSetChanged(); + } + } + }); + + head.setVisibility(View.VISIBLE); + lv.setEmptyView(tvNodata); + getDataInSQL(); + if (adapter == null) { + setListData(); + } else { + adapter.notifyDataSetChanged(); + } + } + + /** + * 数据库查询获取数据 + */ + private void getDataInSQL() { + + list.clear(); + List uploadaqjcsaveList = DataSupport.findAll(DataBaseYhpc.class); + if (uploadaqjcsaveList.size() != 0) { + list.addAll(uploadaqjcsaveList); + FLLL.setVisibility(View.VISIBLE); + xmll.setVisibility(View.VISIBLE); + } else { + FLLL.setVisibility(View.GONE); + xmll.setVisibility(View.GONE); + } + + } + + /** + * 把数据库的数据显示在listview + */ + private void setListData() { + adapter = new YhpcListAdapter(context, list, view -> { + CheckBox checkBox = (CheckBox) view; + int index = (int) checkBox.getTag(); + list.get(index).setChecked(checkBox.isChecked()); + int count = 0; + for (int a = 0; a < list.size(); a++) { + if (list.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == list.size()); + adapter.notifyDataSetChanged(); + }); + + + lv.setAdapter(adapter); + lv.setOnItemClickListener((adapterView, view, i, l) -> { + list.get(i - 1).setChecked(!list.get(i - 1).isChecked()); + int count = 0; + for (int a = 0; a < list.size(); a++) { + if (list.get(a).isChecked()) { + count++; + } + } + cb.setChecked(count == list.size()); + adapter.notifyDataSetChanged(); + }); + } + + /** + * 把数据库的数据上传给服务器 + */ + + private void UploadData() { + Uploadlist.clear(); + removesavelist.clear(); + for (int i = 0; i < list.size(); i++) { + if (list.get(i).isChecked()) { + Uploadlist.add(list.get(i)); + removesavelist.add(list.get(i)); + } + } + for (DataBaseYhpc dataBaseYhpc : Uploadlist) { + Map map = new HashMap<>(); + map.put("Action", "DJGL_YHPC_SC"); + map.put("TJR", SCR); + map.put("TJSJ", dataBaseYhpc.getLRSJ()); + map.put("YHWZ", dataBaseYhpc.getWTQY()); + map.put("YHMS", dataBaseYhpc.getWTMS()); + map.put("YHDJ", dataBaseYhpc.getYHDJ()); + + String json = GsonUtils.GsonString(map); + String photopatglist = dataBaseYhpc.getPhotopatglist(); + String yhwz = dataBaseYhpc.getWTQY(); + + + Api api = RetrofitHttpUtils.getApi(); + RequestBody body = RequestBody.create(MediaType.parse("application/json"), json); + api.upload_yhpcxx(body).enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + YhpcResultBean bean = response.body(); + if (bean.getState() == 1) {//如果成功返回 得到ID + String ID_Phont = bean.getData(); + UploadData_photo(ID_Phont, photopatglist, yhwz); + } else { + showToast("数据出错" + bean.getMsg()); + } + } + + @Override + public void onError(Call call, Throwable t) { + } + }); + } + + + } + + public void UploadData_photo(String ID, String photopatglist, String yhwz) { + MultipartBody.Builder builder; + String substring = photopatglist.substring(1, photopatglist.length() - 1); + if (substring.contains(",")) { //多张 + builder = new MultipartBody.Builder(); + builder.setType(MultipartBody.FORM); + String[] split = substring.split(","); + for (String imagePath : split) { + File file = new File(imagePath.trim()); + RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + builder.addFormDataPart("file", file.getName(), imageBody); + } + } else {//单张 + builder = new MultipartBody.Builder(); + builder.setType(MultipartBody.FORM); + File file = new File(substring); + RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + builder.addFormDataPart("file", file.getName(), imageBody); + } + RetrofitHttpUtils.getApi().upload_yhpcPhoto(ID, "0", SCR, builder.build()).enqueue(new BaseCallBack(context) { + @Override + public void onSuccess(Call call, Response response) { + ResultBean3 resultBean = response.body(); + if (resultBean != null) { + if (resultBean.getState().equals("1")) { + showToast(yhwz + "隐患情况上传成功..."); + removeData();//上传成功删除本地的数据 + Uploadlist.clear();//上传成功清除数据 + } else { + showToast(resultBean.getMsg()); + } + } + } + + @Override + public void onError(Call call, Throwable t) { + + } + }); + + } + + @Override + public void initData() { + onclick(); + } + + + private void onclick() { + btnSc.setOnClickListener(v -> UploadData());//上传数据 + btnDel.setOnClickListener(v -> deleteData());//删除数据 + + } + @Override + protected void onResume() { + super.onResume(); + getDataInSQL(); + if (adapter != null) { + cb.setChecked(false); + adapter.notifyDataSetChanged(); + } + } + + //移除上传成功的数据 + private void removeData() { + + for (DataBaseYhpc uploadaqjcsave : removesavelist) { + DataSupport.deleteAll(DataBaseYhpc.class, "LRSJ = ?", uploadaqjcsave.getLRSJ()); + } + + getDataInSQL(); + if (adapter != null) { + cb.setChecked(false); + adapter.notifyDataSetChanged(); + } + } + + //删除选中的数据 + public void deleteData() { + final List deletes = new ArrayList<>(); + int select = 0; + for (int i = 0; i < list.size(); i++) { + if (list.get(i).isChecked()) { + deletes.add(list.get(i)); + select++; + } + } + + if (select != 0) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("提示"); + builder.setTitle("你确定要删除?"); + builder.setNegativeButton("取消", (dialog, which) -> dialog.dismiss()); + builder.setPositiveButton("确定", (dialog, which) -> { + //删除数据 + for (DataBaseYhpc uploadaqjcsave : deletes) { + DataSupport.deleteAll(DataBaseYhpc.class, "LRSJ = ?", uploadaqjcsave.getLRSJ()); + + } + //刷新界面 + getDataInSQL(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + }); + builder.show(); + } else { + showToast("你还没有选择项目"); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhzgDataListActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhzgDataListActivity.java new file mode 100644 index 0000000..88031d7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/activity/yhpc/YhzgDataListActivity.java @@ -0,0 +1,32 @@ +package com.rehome.scbaxj.activity.yhpc; + + +import android.view.View; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; + +public class YhzgDataListActivity extends BaseActivity3 { + + + @Override + public int getLayoutId() { + return R.layout.activity_yhpcdatalist; + } + + @Override + public void initView() { + initToolbar("隐患整改上传", "新增", new View.OnClickListener() { + @Override + public void onClick(View v) { + //startActivity(YhpcTakePhotoActivity.class); + } + }); + + } + + + @Override + public void initData() { + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjclbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjclbAdapter.java new file mode 100755 index 0000000..348d288 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjclbAdapter.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.AqjclbBean; +import java.util.List; + + +/** + * Created by ruihong on 2017/12/28. + */ + +public class AqjclbAdapter extends CommonAdapter { + + + private List datas; + + + public AqjclbAdapter(Context context, List datas) { + super(context, R.layout.item_aqjclb, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, AqjclbBean.DataBean item, int position) { + TextView tvJHMC = viewHolder.getView(R.id.tv_JHMC); + TextView tvST = viewHolder.getView(R.id.tv_ST); + TextView tvET = viewHolder.getView(R.id.tv_ET); + TextView tvLCFW = viewHolder.getView(R.id.tv_LCFW); + TextView tvTJR = viewHolder.getView(R.id.tv_TJR); + TextView tvTJSJ = viewHolder.getView(R.id.tv_TJSJ); + + tvJHMC.setText("计划名称: " + item.getJHMC()); + tvST.setText("开始时间: " + item.getST()); + tvET.setText("结束时间: " + item.getET()); + tvLCFW.setText("联查范围: " + item.getJCFW()); + tvTJR.setText("提交人: " + item.getTJR()); + tvTJSJ.setText("提交时间: " + item.getTJSJ()); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjcrwlbListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjcrwlbListAdapter.java new file mode 100755 index 0000000..d06c405 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/AqjcrwlbListAdapter.java @@ -0,0 +1,36 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.AqjcrwListBean; + +import java.util.List; + +/** + * Created by ruihong on 2018/1/20. + */ + +public class AqjcrwlbListAdapter extends CommonAdapter { + + private List datas; + + public AqjcrwlbListAdapter(Context context, List datas) { + super(context, R.layout.item_sqjcrwlist, datas); + this.datas = datas; + } + + @Override + protected void convert(ViewHolder viewHolder, AqjcrwListBean.DataBean item, int position) { + + + viewHolder.setText(R.id.tv_JHMC, "计划名称: " + item.getJHMC()); + viewHolder.setText(R.id.tv_WTQY, "问题区域: " + item.getWTQY()); + viewHolder.setText(R.id.tv_WTMS, "问题描述: " + item.getWTMS()); + viewHolder.setText(R.id.tv_FXLB, "风险类别: " + item.getFXLB()); + viewHolder.setText(R.id.tv_ZRBM, "责任部门: " + item.getZRBM()); + viewHolder.setText(R.id.tv_ZGZRR, "整改人: " + item.getZGR()); + + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BamjAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BamjAdapter.java new file mode 100644 index 0000000..1552cc6 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BamjAdapter.java @@ -0,0 +1,94 @@ +package com.rehome.scbaxj.adapter; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; +import com.rehome.scbaxj.DBModel.Xjjh; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.MjList; +import com.zhy.autolayout.utils.AutoUtils; +import java.util.List; + +/** + * Create By HuangWenFei + * 创建日期:2023-03-03 16:34 + * 描述:保安免检计划适配器 + */ + +public class BamjAdapter extends BaseAdapter { + + private Context context; + private List mjjh; + private CallBack mCallBack; + + public BamjAdapter(Context context, List mjjh, CallBack mCallBack) { + this.context = context; + this.mCallBack = mCallBack; + this.mjjh=mjjh; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return mjjh.size(); + } + + @Override + public Object getItem(int i) { + return mjjh.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.scxscb_item, viewGroup, false); + holder.xj_cb = view.findViewById(R.id.xj_cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_yjzj = view.findViewById(R.id.tv_yjzj); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.xj_cb.setChecked(mjjh.get(i).isChecked()); + holder.tv_gwmc.setText(mjjh.get(i).getKhmc()); + holder.tv_yjzj.setText(mjjh.get(i).getZds()); + + + + holder.xj_cb.setTag(i); + holder.xj_cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox xj_cb; + TextView tv_gwmc; + TextView tv_yjzj; + + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BpbjinfoAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BpbjinfoAdapter.java new file mode 100755 index 0000000..eca973f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/BpbjinfoAdapter.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.Qfkccxbean; + +import java.util.List; + +/** + * Created by ruihong on 2018/3/28. + */ + +public class BpbjinfoAdapter extends CommonAdapter { + private List datas; + + public BpbjinfoAdapter(Context context, List datas) { + super(context, R.layout.item_bpbjinfo, datas); + this.datas = datas; + } + + @Override + protected void convert(ViewHolder viewHolder, Qfkccxbean.DataBean item, int position) { + TextView tv_WZBM = viewHolder.getView(R.id.tv_wzbm); + TextView tv_CKH = viewHolder.getView(R.id.tv_ckh); + TextView tv_WZMC = viewHolder.getView(R.id.tv_wzmc); + TextView tv_SL = viewHolder.getView(R.id.tv_sl); + TextView tv_dw = viewHolder.getView(R.id.tv_dw); + TextView tv_dj = viewHolder.getView(R.id.tv_dj); + TextView tv_cc = viewHolder.getView(R.id.tv_cc); + + + tv_WZBM.setText(item.getWZBM()); + tv_CKH.setText(item.getCKH()); + tv_WZMC.setText(item.getWZMC()); + tv_SL.setText(item.getSL()); + tv_dw.setText(item.getDW()); + tv_dj.setText(item.getDJ()); + tv_cc.setText(item.getCC()); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CheckScxsAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CheckScxsAdapter.java new file mode 100644 index 0000000..cb457da --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CheckScxsAdapter.java @@ -0,0 +1,76 @@ +package com.rehome.scbaxj.adapter; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Xjjh; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class CheckScxsAdapter extends BaseAdapter { + + private Context context; + //private List list; + private List dbxjjh; + + public CheckScxsAdapter(Context context, List dbxjjh) { + this.context = context; + this.dbxjjh=dbxjjh; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return dbxjjh.size(); + } + + @Override + public Object getItem(int i) { + return dbxjjh.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.no_checkbox_scxscb_item, viewGroup, false); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_yjzj = view.findViewById(R.id.tv_yjzj); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + holder.tv_gwmc.setText(dbxjjh.get(i).getJhmc()); + holder.tv_yjzj.setText(dbxjjh.get(i).getCountPercent()+"/"+dbxjjh.get(i).getJhds()); + return view; + } + + static class ViewHolder { + TextView tv_gwmc; + TextView tv_yjzj; + + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CommonAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CommonAdapter.java new file mode 100755 index 0000000..b26cbc2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CommonAdapter.java @@ -0,0 +1,38 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; + +import java.util.List; + +public abstract class CommonAdapter extends MultiItemTypeAdapter +{ + + public CommonAdapter(Context context, final int layoutId, List datas) + { + super(context, datas); + + addItemViewDelegate(new ItemViewDelegate() + { + @Override + public int getItemViewLayoutId() + { + return layoutId; + } + + @Override + public boolean isForViewType(T item, int position) + { + return true; + } + + @Override + public void convert(ViewHolder holder, T t, int position) + { + CommonAdapter.this.convert(holder, t, position); + } + }); + } + + protected abstract void convert(ViewHolder viewHolder, T item, int position); + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ContactAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ContactAdapter.java new file mode 100755 index 0000000..f1a5468 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ContactAdapter.java @@ -0,0 +1,113 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.ContactListBean; +import com.rehome.scbaxj.contans.Contans; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/5. + * 通讯录adapter + */ + +public class ContactAdapter extends BaseAdapter { + + private Context context; + private List datas; + + public ContactAdapter(Context context, List datas) { + + this.context = context; + this.datas = datas; + } + + @Override + public int getCount() { + return datas.size(); + } + + @Override + public ContactListBean.RowsBean.OrderlistBean getItem(int position) { + return datas.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + ContactListBean.RowsBean.OrderlistBean item = datas.get(position); + ViewHolder holder; + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_contact1, null); + holder = new ViewHolder(); + holder.tvName = convertView.findViewById(R.id.tv_name); + holder.tvDeptName = convertView.findViewById(R.id.tv_dept_name); + holder.tvPhone1 = convertView.findViewById(R.id.tv_phone1); + holder.tvPhone2 = convertView.findViewById(R.id.tv_phone2); + holder.ll = convertView.findViewById(R.id.ll); + holder.headView = convertView.findViewById(R.id.headView); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + if (!TextUtils.isEmpty(item.getName())) { + holder.ll.setVisibility(View.VISIBLE); + holder.tvDeptName.setVisibility(View.GONE); + holder.tvName.setText(item.getName()); + holder.tvPhone1.setText(item.getTelephone()); + holder.tvPhone2.setText(item.getAddress_tel()); + +// Log.e("#############",Contans.BASE_URL + item.getAccount_head()); + + if (!item.getAccount_head().equals("")){ + Glide.with(context).load(Contans.IP + item.getAccount_head()).into(holder.headView); + }else { + holder.headView.setImageResource(R.drawable.head_photo); + } + + + + } else { + + if (position == 0) { + holder.tvDeptName.setVisibility(View.GONE); + holder.ll.setVisibility(View.GONE); + } else { + holder.tvDeptName.setText(item.getGroupName()); + holder.ll.setVisibility(View.GONE); + holder.tvDeptName.setVisibility(View.VISIBLE); + } + } + + AutoUtils.auto(convertView); + + return convertView; + } + + public static class ViewHolder { + TextView tvName; + TextView tvDeptName; + TextView tvPhone1; + TextView tvPhone2; + ImageView headView; + LinearLayout ll; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CxzjrwAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CxzjrwAdapter.java new file mode 100755 index 0000000..62cb626 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/CxzjrwAdapter.java @@ -0,0 +1,30 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.DxxZjrwBean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/3. + */ + +public class CxzjrwAdapter extends CommonAdapter { + + public CxzjrwAdapter(Context context, List datas) { + super(context, R.layout.cxzjrw_item, datas); + } + + @Override + protected void convert(ViewHolder viewHolder, DxxZjrwBean.DataBean item, int position) { + viewHolder.setText(R.id.tv_JHTITLE, item.getJHTITLE()); + viewHolder.setText(R.id.tv_wjb, item.getFILEBAGTITLE()); + viewHolder.setText(R.id.tv_zjdms, item.getZJDNAME()); + viewHolder.setText(R.id.tv_xmfzr, item.getPROUSERNAME()); + viewHolder.setText(R.id.tv_sbs, item.getWZJSBCOUNT()); + + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapter.java new file mode 100644 index 0000000..fc3ce53 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapter.java @@ -0,0 +1,122 @@ +package com.rehome.scbaxj.adapter; + + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.DeviceTreeBean; +import java.util.List; + +/** + * Created by huangwenfei on 2022/4/7. + */ + +public class DeviceTreeAdapter extends RecyclerView.Adapter{ + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public DeviceTreeAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_device_tree, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + if(datas.get(position).getISLEAF().equals("1")){ + holder.iv_subDevice.setVisibility(View.GONE); + holder.cb.setVisibility(View.GONE); + }else{ + holder.iv_subDevice.setVisibility(View.VISIBLE); + holder.cb.setVisibility(View.GONE); + } + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + + holder.tv_smmc.setText("["+datas.get(position).getID()+"]" + "-" +"[" +datas.get(position).getNNAME()+"]"); + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(DeviceTreeBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + ImageView iv_subDevice; + LinearLayout itemViewDevice; + + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + iv_subDevice = view.findViewById(R.id.subDevice); + itemViewDevice = view.findViewById(R.id.itemViewDevice); + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapterBase.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapterBase.java new file mode 100644 index 0000000..53f0925 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DeviceTreeAdapterBase.java @@ -0,0 +1,44 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.View; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.DeviceTreeBean; +import java.util.List; + + +/** + * Created by ruihong on 2017/12/28. + */ + + +public class DeviceTreeAdapterBase extends CommonAdapter{ + private List datas; + + + public DeviceTreeAdapterBase(Context context, List datas) { + super(context, R.layout.item_device_tree, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, DeviceTreeBean.DataBean item, int position) { + CheckBox cb = viewHolder.getView(R.id.cb); + TextView tv_smmc = viewHolder.getView(R.id.tv_smmc); + ImageView iv_subDevice = viewHolder.getView(R.id.subDevice); + + cb.setChecked(item.isSelected()); + if(item.getISLEAF().equals("1")){ + iv_subDevice.setVisibility(View.GONE); + cb.setVisibility(View.GONE); + }else{ + iv_subDevice.setVisibility(View.VISIBLE); + cb.setVisibility(View.GONE); + } + tv_smmc.setText("["+datas.get(position).getID()+"]" + "-" +"[" +datas.get(position).getNNAME()+"]"); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DlbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DlbAdapter.java new file mode 100755 index 0000000..0decdf0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DlbAdapter.java @@ -0,0 +1,107 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.DlbInfo; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * 点列表适配器 + */ +public class DlbAdapter extends BaseAdapter { + + private Context context; + // private List list; + private List list; + + public DlbAdapter(Context context, List list) { + this.context = context; + this.list = list; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.dlb_item, viewGroup, false); + holder.tv_d = view.findViewById(R.id.tv_d); + holder.tv_cjjg = view.findViewById(R.id.tv_cjjg); + holder.tv_zt = view.findViewById(R.id.tv_zt); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.tv_d.setText(list.get(i).getDian()); + holder.tv_cjjg.setText(list.get(i).getCjjg()); + + + if (list.get(i).getCjjg() != null) { + if (list.get(i).getCjjg().equals("异常")) { + holder.tv_cjjg.setTextColor(Color.RED); + } else if (list.get(i).getCjjg().equals("已停用")) { + holder.tv_cjjg.setTextColor(Color.RED); + } else if (list.get(i).getCjjg().equals("不正常")) { + holder.tv_cjjg.setTextColor(Color.RED); + } else { + holder.tv_cjjg.setTextColor(Color.GRAY); + } + + } + + + if (list.get(i).getCjjg() == null) { + + } else if (list.get(i).getCjjg().equals("已停用")) { + holder.tv_zt.setText("已检"); + holder.tv_zt.setTextColor(Color.GREEN); + } else { + holder.tv_zt.setText("未检"); + holder.tv_zt.setTextColor(Color.RED); + + } + + if (list.get(i).isStatu()) { + holder.tv_zt.setText("已检"); + holder.tv_zt.setTextColor(Color.GREEN); + } else { + holder.tv_zt.setText("未检"); + holder.tv_zt.setTextColor(Color.RED); + } + return view; + } + + static class ViewHolder { + TextView tv_cjjg; + TextView tv_d; + TextView tv_zt; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DqgzDownloadAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DqgzDownloadAdapter.java new file mode 100644 index 0000000..9a59b4c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/DqgzDownloadAdapter.java @@ -0,0 +1,93 @@ +package com.rehome.scbaxj.adapter; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class DqgzDownloadAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public DqgzDownloadAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.xzxsjh_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_gwds = view.findViewById(R.id.tv_gwds); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_gwmc.setText(list.get(i).getZX_MC()); + if(list.get(i).isWorkChecked()){ + holder.tv_gwds.setText("已检"); + }else{ + holder.tv_gwds.setText("未检"); + } + + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_gwmc; + TextView tv_gwds; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageAdapter.java new file mode 100644 index 0000000..87b80da --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageAdapter.java @@ -0,0 +1,228 @@ +package com.rehome.scbaxj.adapter; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 15:39 + * 描述: + */ + + +import android.content.Context; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.utils.DateUtils; +import com.rehome.scbaxj.Listener.OnItemLongClickListener; +import com.rehome.scbaxj.R; +import java.util.ArrayList; +import java.util.List; + + +/** + * @author:luck + * @date:2016-7-27 23:02 + * @describe:GridImageAdapter + */ +public class GridImageAdapter extends RecyclerView.Adapter { + public static final String TAG = "PictureSelector"; + public static final int TYPE_CAMERA = 1; + public static final int TYPE_PICTURE = 2; + private final LayoutInflater mInflater; + private final ArrayList list = new ArrayList<>(); + private int selectMax = 9; + + /** + * 删除 + */ + public void delete(int position) { + try { + + if (position != RecyclerView.NO_POSITION && list.size() > position) { + list.remove(position); + notifyItemRemoved(position); + notifyItemRangeChanged(position, list.size()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public GridImageAdapter(Context context, List result) { + this.mInflater = LayoutInflater.from(context); + this.list.addAll(result); + } + + public void setSelectMax(int selectMax) { + this.selectMax = selectMax; + } + + public int getSelectMax() { + return selectMax; + } + + public ArrayList getData() { + return list; + } + + public void remove(int position) { + if (position < list.size()) { + list.remove(position); + } + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + + ImageView mImg; + ImageView mIvDel; + TextView tvDuration; + + public ViewHolder(View view) { + super(view); + mImg = view.findViewById(R.id.fiv); + mIvDel = view.findViewById(R.id.iv_del); + tvDuration = view.findViewById(R.id.tv_duration); + } + } + + @Override + public int getItemCount() { + if (list.size() < selectMax) { + return list.size() + 1; + } else { + return list.size(); + } + } + + @Override + public int getItemViewType(int position) { + if (isShowAddItem(position)) { + return TYPE_CAMERA; + } else { + return TYPE_PICTURE; + } + } + + /** + * 创建ViewHolder + */ + @Override + public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + View view = mInflater.inflate(R.layout.gv_filter_image, viewGroup, false); + return new ViewHolder(view); + } + + private boolean isShowAddItem(int position) { + int size = list.size(); + return position == size; + } + + /** + * 设置值 + */ + @Override + public void onBindViewHolder(final ViewHolder viewHolder, final int position) { + //少于MaxSize张,显示继续添加的图标 + if (getItemViewType(position) == TYPE_CAMERA) { + viewHolder.mImg.setImageResource(R.drawable.ic_add_image); + viewHolder.mImg.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (mItemClickListener != null) { + mItemClickListener.openPicture(); + } + } + }); + viewHolder.mIvDel.setVisibility(View.INVISIBLE); + } else { + viewHolder.mIvDel.setVisibility(View.VISIBLE); + viewHolder.mIvDel.setOnClickListener(view -> { + int index = viewHolder.getAbsoluteAdapterPosition(); + if (index != RecyclerView.NO_POSITION && list.size() > index) { + list.remove(index); + notifyItemRemoved(index); + notifyItemRangeChanged(index, list.size()); + } + }); + LocalMedia media = list.get(position); + int chooseModel = media.getChooseModel(); + String path = media.getAvailablePath(); + long duration = media.getDuration(); + viewHolder.tvDuration.setVisibility(PictureMimeType.isHasVideo(media.getMimeType()) + ? View.VISIBLE : View.GONE); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.tvDuration.setVisibility(View.VISIBLE); + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.drawable.ps_ic_audio, 0, 0, 0); + + } else { + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.drawable.ps_ic_video, 0, 0, 0); + } + viewHolder.tvDuration.setText(DateUtils.formatDurationTime(duration)); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder); + } else { + Glide.with(viewHolder.itemView.getContext()) + .load(PictureMimeType.isContent(path) && !media.isCut() && !media.isCompressed() ? Uri.parse(path) + : path) + .centerCrop() + .placeholder(R.color.app_color_f6) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(viewHolder.mImg); + } + //itemView 的点击事件 + if (mItemClickListener != null) { + viewHolder.itemView.setOnClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemClickListener.onItemClick(v, adapterPosition); + }); + } + + if (mItemLongClickListener != null) { + viewHolder.itemView.setOnLongClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v); + return true; + }); + } + } + } + + private OnItemClickListener mItemClickListener; + + public void setOnItemClickListener(OnItemClickListener l) { + this.mItemClickListener = l; + } + + public interface OnItemClickListener { + /** + * Item click event + * + * @param v + * @param position + */ + void onItemClick(View v, int position); + + /** + * Open PictureSelector + */ + void openPicture(); + } + + private OnItemLongClickListener mItemLongClickListener; + + public void setItemLongClickListener(OnItemLongClickListener l) { + this.mItemLongClickListener = l; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageNoDeleteAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageNoDeleteAdapter.java new file mode 100644 index 0000000..8fdcb0c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridImageNoDeleteAdapter.java @@ -0,0 +1,223 @@ +package com.rehome.scbaxj.adapter; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-12 10:04 + * 描述: + */ + + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 15:39 + * 描述: + */ + + +import android.content.Context; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.utils.DateUtils; +import com.rehome.scbaxj.Listener.OnItemLongClickListener; +import com.rehome.scbaxj.R; +import java.util.ArrayList; +import java.util.List; + + +/** + * @author:luck + * @date:2016-7-27 23:02 + * @describe:GridImageAdapter + */ +public class GridImageNoDeleteAdapter extends RecyclerView.Adapter { + public static final String TAG = "PictureSelector"; + public static final int TYPE_CAMERA = 1; + public static final int TYPE_PICTURE = 2; + private final LayoutInflater mInflater; + private final ArrayList list = new ArrayList<>(); + private int selectMax = 9; + + /** + * 删除 + */ + public void delete(int position) { + try { + + if (position != RecyclerView.NO_POSITION && list.size() > position) { + list.remove(position); + notifyItemRemoved(position); + notifyItemRangeChanged(position, list.size()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public GridImageNoDeleteAdapter(Context context, List result) { + this.mInflater = LayoutInflater.from(context); + this.list.addAll(result); + } + + public void setSelectMax(int selectMax) { + this.selectMax = selectMax; + } + + public int getSelectMax() { + return selectMax; + } + + public ArrayList getData() { + return list; + } + + public void remove(int position) { + if (position < list.size()) { + list.remove(position); + } + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + + ImageView mImg; + TextView tvDuration; + + public ViewHolder(View view) { + super(view); + mImg = view.findViewById(R.id.fiv); + tvDuration = view.findViewById(R.id.tv_duration); + } + } + + @Override + public int getItemCount() { + if (list.size() < selectMax) { + return list.size() + 1; + } else { + return list.size(); + } + } + + @Override + public int getItemViewType(int position) { + if (isShowAddItem(position)) { + return TYPE_CAMERA; + } else { + return TYPE_PICTURE; + } + } + + /** + * 创建ViewHolder + */ + @Override + public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + View view = mInflater.inflate(R.layout.gv_filter_image, viewGroup, false); + return new ViewHolder(view); + } + + private boolean isShowAddItem(int position) { + int size = list.size(); + return position == size; + } + + /** + * 设置值 + */ + @Override + public void onBindViewHolder(final ViewHolder viewHolder, final int position) { + //少于MaxSize张,显示继续添加的图标 + if (getItemViewType(position) == TYPE_CAMERA) { + viewHolder.mImg.setImageResource(R.drawable.ic_add_image); + viewHolder.mImg.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (mItemClickListener != null) { + mItemClickListener.openPicture(); + } + } + }); + } else { + LocalMedia media = list.get(position); + int chooseModel = media.getChooseModel(); + String path = media.getAvailablePath(); + long duration = media.getDuration(); + viewHolder.tvDuration.setVisibility(PictureMimeType.isHasVideo(media.getMimeType()) + ? View.VISIBLE : View.GONE); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.tvDuration.setVisibility(View.VISIBLE); + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.drawable.ps_ic_audio, 0, 0, 0); + + } else { + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.drawable.ps_ic_video, 0, 0, 0); + } + viewHolder.tvDuration.setText(DateUtils.formatDurationTime(duration)); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder); + } else { + Glide.with(viewHolder.itemView.getContext()) + .load(PictureMimeType.isContent(path) && !media.isCut() && !media.isCompressed() ? Uri.parse(path) + : path) + .centerCrop() + .placeholder(R.color.app_color_f6) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(viewHolder.mImg); + } + //itemView 的点击事件 + if (mItemClickListener != null) { + viewHolder.itemView.setOnClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemClickListener.onItemClick(v, adapterPosition); + }); + } + + if (mItemLongClickListener != null) { + viewHolder.itemView.setOnLongClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v); + return true; + }); + } + } + } + + private OnItemClickListener mItemClickListener; + + public void setOnItemClickListener(OnItemClickListener l) { + this.mItemClickListener = l; + } + + public interface OnItemClickListener { + /** + * Item click event + * + * @param v + * @param position + */ + void onItemClick(View v, int position); + + /** + * Open PictureSelector + */ + void openPicture(); + } + + private OnItemLongClickListener mItemLongClickListener; + + public void setItemLongClickListener(OnItemLongClickListener l) { + this.mItemLongClickListener = l; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridViewAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridViewAdapter.java new file mode 100755 index 0000000..b876955 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GridViewAdapter.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.GridViewBean; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * gridview适配器 + */ +public class GridViewAdapter extends BaseAdapter { + + private Context context; + + private List datas; + + private int item = 0; + + private List items;//通过传入一些item,让传入的item不可以点击 + + private boolean flag; + + public GridViewAdapter(Context context, List datas, List items, boolean flag) { + this.context = context; + this.items = items; + this.flag = flag; + this.datas = datas; + } + + @Override + public int getCount() { + + return datas.size(); + } + + @Override + public GridViewBean getItem(int i) { + return datas.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int position, View view, ViewGroup viewGroup) { + + ViewHolder holder; + + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.gridview_item, viewGroup, false); + holder.iv = view.findViewById(R.id.iv); + holder.tv = view.findViewById(R.id.tv); + holder.ll = view.findViewById(R.id.ll); + holder.red_dot = view.findViewById(R.id.iv_reddot); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + GridViewBean bean = getItem(position); + +// holder.ll.setBackgroundColor(context.getResources().getColor(bean.getBackgroup())); + + holder.ll.setBackgroundResource(bean.getBackgroup()); + holder.red_dot.setVisibility(bean.isShow() ? View.VISIBLE : View.GONE); + + if (bean.getTitle() != " ") { + holder.iv.setImageResource(bean.getImageid()); + } + holder.tv.setText(bean.getTitle()); + return view; + } + + public static class ViewHolder { + public TextView tv; + ImageView iv; + LinearLayout ll; + ImageView red_dot; + } + + //重写isEnabled,传入哪个position, + @Override + public boolean isEnabled(int position) { + + if (!flag) { + for (int i = 0; i < items.size(); i++) { + if (position == items.get(i)) { + return true; + } + } + return false; + } + return true; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GwfxListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GwfxListAdapter.java new file mode 100755 index 0000000..77c1611 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GwfxListAdapter.java @@ -0,0 +1,45 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.QYAQFXDATABean; +import com.rehome.scbaxj.R; + +import java.util.List; + +/** + * Created by ruihong on 2017/11/23. + */ + +public class GwfxListAdapter extends CommonAdapter { + + + private List datas; + + + public GwfxListAdapter(Context context, List datas) { + super(context, R.layout.item_fxts, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, QYAQFXDATABean item, int position) { + + + TextView tv_fxlx = viewHolder.getView(R.id.tv_fxlx); +// TextView tv_fxms = viewHolder.getView(R.id.tv_fxms); +// TextView tv_fhcs = viewHolder.getView(R.id.tv_fhcs); + + + tv_fxlx.setText(item.getFXLX()); + tv_fxlx.setTextColor(Color.parseColor("#FF0000")); +// tv_fxms.setText("风险描述: " + item.getFXMS()); +// tv_fhcs.setText("风险措施: " + item.getFHCS()); + + + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GzbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GzbAdapter.java new file mode 100755 index 0000000..bf96ca8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/GzbAdapter.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.GzbBean; +import java.util.List; + +/** + * Created by ruihong on 2018/3/28. + */ + +public class GzbAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public GzbAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_gzblist, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + holder.tv_smmc.setText(datas.get(position).getBHMS()); + + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(GzbBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegate.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegate.java new file mode 100755 index 0000000..e5bcc43 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegate.java @@ -0,0 +1,18 @@ +package com.rehome.scbaxj.adapter; + + +/** + * Created by zhy on 16/6/22. + */ +public interface ItemViewDelegate +{ + + int getItemViewLayoutId(); + + boolean isForViewType(T item, int position); + + void convert(ViewHolder holder, T t, int position); + + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegateManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegateManager.java new file mode 100755 index 0000000..32b6b53 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ItemViewDelegateManager.java @@ -0,0 +1,130 @@ +package com.rehome.scbaxj.adapter; + +import androidx.collection.SparseArrayCompat; + +/** + * Created by zhy on 16/6/22. + */ +public class ItemViewDelegateManager +{ + SparseArrayCompat> delegates = new SparseArrayCompat(); + + public int getItemViewDelegateCount() + { + return delegates.size(); + } + + public ItemViewDelegateManager addDelegate(ItemViewDelegate delegate) + { + int viewType = delegates.size(); + if (delegate != null) + { + delegates.put(viewType, delegate); + viewType++; + } + return this; + } + + public ItemViewDelegateManager addDelegate(int viewType, ItemViewDelegate delegate) + { + if (delegates.get(viewType) != null) + { + throw new IllegalArgumentException( + "An ItemViewDelegate is already registered for the viewType = " + + viewType + + ". Already registered ItemViewDelegate is " + + delegates.get(viewType)); + } + delegates.put(viewType, delegate); + return this; + } + + public ItemViewDelegateManager removeDelegate(ItemViewDelegate delegate) + { + if (delegate == null) + { + throw new NullPointerException("ItemViewDelegate is null"); + } + int indexToRemove = delegates.indexOfValue(delegate); + + if (indexToRemove >= 0) + { + delegates.removeAt(indexToRemove); + } + return this; + } + + public ItemViewDelegateManager removeDelegate(int itemType) + { + int indexToRemove = delegates.indexOfKey(itemType); + + if (indexToRemove >= 0) + { + delegates.removeAt(indexToRemove); + } + return this; + } + + public int getItemViewType(T item, int position) + { + int delegatesCount = delegates.size(); + for (int i = delegatesCount - 1; i >= 0; i--) + { + ItemViewDelegate delegate = delegates.valueAt(i); + if (delegate.isForViewType(item, position)) + { + return delegates.keyAt(i); + } + } + throw new IllegalArgumentException( + "No ItemViewDelegate added that matches position=" + position + " in data source"); + } + + public void convert(ViewHolder holder, T item, int position) + { + int delegatesCount = delegates.size(); + for (int i = 0; i < delegatesCount; i++) + { + ItemViewDelegate delegate = delegates.valueAt(i); + + if (delegate.isForViewType(item, position)) + { + delegate.convert(holder, item, position); + return; + } + } + throw new IllegalArgumentException( + "No ItemViewDelegateManager added that matches position=" + position + " in data source"); + } + + + public int getItemViewLayoutId(int viewType) + { + return delegates.get(viewType).getItemViewLayoutId(); + } + + public int getItemViewType(ItemViewDelegate itemViewDelegate) + { + return delegates.indexOfValue(itemViewDelegate); + } + + public ItemViewDelegate getItemViewDelegate(T item, int position) + { + int delegatesCount = delegates.size(); + for (int i = delegatesCount - 1; i >= 0; i--) + { + ItemViewDelegate delegate = delegates.valueAt(i); + if (delegate.isForViewType(item, position)) + { + return delegate; + } + } + throw new IllegalArgumentException( + "No ItemViewDelegate added that matches position=" + position + " in data source"); + } + + public int getItemViewLayoutId(T item, int position) + { + return getItemViewDelegate(item,position).getItemViewLayoutId(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MultiItemTypeAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MultiItemTypeAdapter.java new file mode 100755 index 0000000..a9fce2b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MultiItemTypeAdapter.java @@ -0,0 +1,102 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +public class MultiItemTypeAdapter extends BaseAdapter { + protected Context mContext; + protected List mDatas; + + private ItemViewDelegateManager mItemViewDelegateManager; + + + public MultiItemTypeAdapter(Context context, List datas) { + this.mContext = context; + this.mDatas = datas; + mItemViewDelegateManager = new ItemViewDelegateManager(); + } + + public MultiItemTypeAdapter addItemViewDelegate(ItemViewDelegate itemViewDelegate) { + mItemViewDelegateManager.addDelegate(itemViewDelegate); + return this; + } + + private boolean useItemViewDelegateManager() { + return mItemViewDelegateManager.getItemViewDelegateCount() > 0; + } + + @Override + public int getViewTypeCount() { + if (useItemViewDelegateManager()) + return mItemViewDelegateManager.getItemViewDelegateCount(); + return super.getViewTypeCount(); + } + + @Override + public int getItemViewType(int position) { + if (useItemViewDelegateManager()) { + int viewType = mItemViewDelegateManager.getItemViewType(mDatas.get(position), position); + return viewType; + } + return super.getItemViewType(position); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ItemViewDelegate itemViewDelegate = mItemViewDelegateManager.getItemViewDelegate(mDatas.get(position), position); + int layoutId = itemViewDelegate.getItemViewLayoutId(); + ViewHolder viewHolder = null ; + if (convertView == null) + { + View itemView = LayoutInflater.from(mContext).inflate(layoutId, parent, + false); + + AutoUtils.autoSize(itemView); + + viewHolder = new ViewHolder(mContext, itemView, parent, position); + viewHolder.mLayoutId = layoutId; + onViewHolderCreated(viewHolder,viewHolder.getConvertView()); + } else + { + viewHolder = (ViewHolder) convertView.getTag(); + viewHolder.mPosition = position; + } + + + convert(viewHolder, getItem(position), position); + return viewHolder.getConvertView(); + } + + protected void convert(ViewHolder viewHolder, T item, int position) { + mItemViewDelegateManager.convert(viewHolder, item, position); + } + + public void onViewHolderCreated(ViewHolder holder , View itemView ) + {} + + @Override + public int getCount() { + return mDatas.size(); + } + + @Override + public T getItem(int position) { + return mDatas.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + public List getDatas() { + return mDatas; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MyFragmentAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MyFragmentAdapter.java new file mode 100755 index 0000000..d91d49a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/MyFragmentAdapter.java @@ -0,0 +1,37 @@ +package com.rehome.scbaxj.adapter; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; +import android.view.ViewGroup; + +import java.util.List; + +/** + * fragment适配器 + */ +public class MyFragmentAdapter extends FragmentPagerAdapter { + + List mFragments; + + public MyFragmentAdapter(FragmentManager fm, List mFragments) { + super(fm); + this.mFragments = mFragments; + } + + @Override + public Fragment getItem(int position) { + return mFragments.get(position); + } + + @Override + public int getCount() { + return mFragments.size(); + } + + //注释掉那就话,就不会销毁fragment + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + //super.destroyItem(container, position, object); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/Q4UploadGridAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/Q4UploadGridAdapter.java new file mode 100644 index 0000000..f33772f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/Q4UploadGridAdapter.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.adapter; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; + +import com.rehome.scbaxj.R; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.request.RequestOptions; + +import java.util.ArrayList; + +public class Q4UploadGridAdapter extends BaseAdapter { + private ArrayList listUrls; + private LayoutInflater inflater; + Context context; + private OnItemDelClickListener onItemDelClickListener; + + public interface OnItemDelClickListener { + void onClick(int position); + } + + public Q4UploadGridAdapter(ArrayList listUrls, Context context, OnItemDelClickListener onItemDelClickListener) { + this.listUrls = listUrls; + this.context=context; + this.onItemDelClickListener=onItemDelClickListener; + if (listUrls.size() == 7) { + listUrls.remove(listUrls.size() - 1); + } + //这个意思就是 如果最后返回的列表有7哥 就把最后一个移除了 + inflater = LayoutInflater.from(context); + } + + public int getCount() { + return listUrls.size(); + } + + @Override + public String getItem(int position) { + return listUrls.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder = null; + if (convertView == null) { + holder = new ViewHolder(); + convertView = inflater.inflate(R.layout.sblcsave_item, parent, false); + holder.image = (ImageView) convertView.findViewById(R.id.imageView); + holder.ll_del = (LinearLayout) convertView.findViewById(R.id.ll_del); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + final String path = listUrls.get(position); + //这里是如果取到path的值是paizhao 就显示加好 如果不是 就是返回的那个图片 + if (path.equals("paizhao")) { + holder.image.setImageResource(R.mipmap.find_add_img); + holder.ll_del.setVisibility(View.GONE); + } else { + holder.ll_del.setVisibility(View.VISIBLE); + RequestOptions options = new RequestOptions() + .centerCrop() + .placeholder(R.color.color_f6) + .diskCacheStrategy(DiskCacheStrategy.ALL); + Glide.with(context) + .load(path) + .apply(options) + .into(holder.image); + +// +// Glide.with(TjqxdActivity.this) +// .load(path) +// .placeholder(R.mipmap.default_error) +// .error(R.mipmap.default_error) +// .centerCrop() +// .into(holder.image); + } + + holder.ll_del.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onItemDelClickListener!=null){ + onItemDelClickListener.onClick(position); + } + } + }); + + return convertView; + } + + class ViewHolder { + ImageView image; + LinearLayout ll_del; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfBmlbinfoAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfBmlbinfoAdapter.java new file mode 100755 index 0000000..530c941 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfBmlbinfoAdapter.java @@ -0,0 +1,113 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QfbmlistBean; + +import java.util.List; + +/** + * Created by ruihong on 2018/3/28. + */ + +public class QfBmlbinfoAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public QfBmlbinfoAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + //重写构造方法 + //绑定子项布局 + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_qfsblist, null,false); + return new ViewHolder(inflate); + } + + //为每个子项绑定数据 + @Override + public void onBindViewHolder(@NonNull ViewHolder viewHolder, @SuppressLint("RecyclerView") int i) { + viewHolder.cb.setChecked(datas.get(i).isSelected()); + viewHolder.cb.setOnClickListener(new View.OnClickListener() { + @SuppressLint("NotifyDataSetChanged") + @Override + public void onClick(View v) { + datas.get(mSelectedPos).setSelected(false); + mSelectedPos = i; + datas.get(mSelectedPos).setSelected(true); + notifyDataSetChanged(); + } + }); + + viewHolder.tv_smmc.setText(datas.get(i).getBMMC()); + viewHolder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(i)); + } + }); + + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(QfbmlistBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfPmListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfPmListAdapter.java new file mode 100755 index 0000000..83bd88c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfPmListAdapter.java @@ -0,0 +1,41 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.PminfoBean2; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/28. + */ + +public class QfPmListAdapter extends CommonAdapter { + + + private List datas; + + + public QfPmListAdapter(Context context, List datas) { + super(context, R.layout.item_qfgdlist, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, PminfoBean2.DataBean item, int position) { + TextView tv_zrmb = viewHolder.getView(R.id.tv_zrmb); + TextView tv_sbmc = viewHolder.getView(R.id.tv_sbmc); + TextView tv_gzzt = viewHolder.getView(R.id.tv_gzzt); + TextView tv_bgr = viewHolder.getView(R.id.tv_bgr); + + + tv_zrmb.setText("责任部门: " + item.getZRBM()); + tv_sbmc.setText("设备名称: " + item.getSBMC()); + tv_bgr.setText("报告人: " + item.getBGR()); + tv_gzzt.setText(item.getGZZT()); + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfSblbinfoAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfSblbinfoAdapter.java new file mode 100755 index 0000000..451c7d9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfSblbinfoAdapter.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QfsblistBean; +import java.util.List; + + +/** + * Created by ruihong on 2018/3/28. + */ + +public class QfSblbinfoAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public QfSblbinfoAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_qfsblist, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + holder.tv_smmc.setText(datas.get(position).getSBMC() + "-" + datas.get(position).getSBID()); + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(QfsblistBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfdjAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfdjAdapter.java new file mode 100755 index 0000000..97a937d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfdjAdapter.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QfdjBean; +import java.util.List; + + +/** + * Created by ruihong on 2018/3/28. + */ + +public class QfdjAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public QfdjAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_qfsblist, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + holder.tv_smmc.setText(datas.get(position).getDJMC()); + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(QfdjBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QffzrAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QffzrAdapter.java new file mode 100755 index 0000000..9958402 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QffzrAdapter.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QfFzrBean; +import java.util.List; + + +/** + * Created by ruihong on 2018/3/28. + */ + +public class QffzrAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public QffzrAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_qfsblist, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + holder.tv_smmc.setText(datas.get(position).getYHMC()); + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(QfFzrBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfgdztinfoAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfgdztinfoAdapter.java new file mode 100755 index 0000000..a7aa5c9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QfgdztinfoAdapter.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QfgdztlistBean; +import java.util.List; + + +/** + * Created by ruihong on 2018/3/28. + */ + +public class QfgdztinfoAdapter extends RecyclerView.Adapter { + + private LayoutInflater mLayoutInflater; + private List datas; + private Context mContext; + + private int mSelectedPos = 0; //实现单选,保存当前选中的position + + private OnChildItemClickListener onChildItemClickListener; + + + public QfgdztinfoAdapter(Context context, List data) { + mLayoutInflater = LayoutInflater.from(context); + this.mContext = context; + this.datas = data; + for (int i = 0; i < data.size(); i++) { + if (data.get(i).isSelected()) { + mSelectedPos = i; + } + } + } + + public List getDatas() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View inflate = mLayoutInflater.inflate(R.layout.item_qfsblist, null); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) { + + holder.cb.setChecked(datas.get(position).isSelected()); + + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + datas.get(mSelectedPos).setSelected(false); + + mSelectedPos = position; + + datas.get(mSelectedPos).setSelected(true); + + notifyDataSetChanged(); + } + }); + + holder.tv_smmc.setText(datas.get(position).getGDZTMC()); + holder.tv_smmc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildItemClickListener.onClick(datas.get(position)); + } + }); + } + + @Override + public int getItemCount() { + return datas.size(); + } + + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener) { //接口回调 + this.onChildItemClickListener = onChildItemClickListener; + } + + public interface OnChildItemClickListener { + void onClick(QfgdztlistBean.DataBean dataBean); + } + + //ViewHolder类将子项布局中所有控件绑定为一个对象,该对象包含子项布局的所有控件 + static class ViewHolder extends RecyclerView.ViewHolder { + CheckBox cb; + TextView tv_smmc; + public static int anInt = 0; + + public ViewHolder(View view) { + //父类构造函数 + super(view); + //获取RecyclerView布局的子项布局中的所有控件id,本次实验只有TextView这一种控件 + cb = view.findViewById(R.id.cb); + tv_smmc = view.findViewById(R.id.tv_smmc); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QxdAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QxdAdapter.java new file mode 100755 index 0000000..7c6b4ab --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/QxdAdapter.java @@ -0,0 +1,49 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.QxdBean; +import java.util.List; + + +/** + * Created by ruihong on 2017/12/28. + */ + +public class QxdAdapter extends CommonAdapter { + + private List datas; + + + public QxdAdapter(Context context, List datas) { + super(context, R.layout.item_qxdinfo, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, QxdBean.DataBean item, int position) { + TextView tv_JDBH = viewHolder.getView(R.id.tv_JDBH); + TextView tv_SBMC = viewHolder.getView(R.id.tv_SBMC); + TextView tv_QXMS = viewHolder.getView(R.id.tv_QXMS); + TextView tv_GZMS = viewHolder.getView(R.id.tv_GZMS); + TextView tv_ZT = viewHolder.getView(R.id.tv_ZT); + TextView tv_yxj = viewHolder.getView(R.id.tv_yxj); + TextView tv_ZRBZ = viewHolder.getView(R.id.tv_ZRBZ); + TextView tv_XMFZR = viewHolder.getView(R.id.tv_XMFZR); + TextView tv_JXBZ = viewHolder.getView(R.id.tv_JXBZ); + + + tv_JDBH.setText("工单编号: " + item.getPl_wk_wn_p()); + tv_SBMC.setText("设备名称: " + item.getEq_ma_de()); + tv_QXMS.setText("缺陷描述: " + item.getPl_wk_fd()); + tv_GZMS.setText("工作描述: " + item.getPl_wk_de()); + tv_ZT.setText("状态: " + item.getWo_st_de()); + tv_yxj.setText("优先级: " + item.getPriorityclass()); + tv_ZRBZ.setText("责任班组: " + item.getRe_tm_de()); + tv_XMFZR.setText("项目负责人: " + item.getPl_wk_do()); + tv_JXBZ.setText("检修班组: " + item.getPl_wk_wg()); + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/RlinfoAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/RlinfoAdapter.java new file mode 100644 index 0000000..4db91be --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/RlinfoAdapter.java @@ -0,0 +1,32 @@ +package com.rehome.scbaxj.adapter; + +import androidx.annotation.NonNull; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.RlinfoBean; +import com.xuexiang.xui.adapter.recyclerview.BaseRecyclerAdapter; +import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder; + +public class RlinfoAdapter extends BaseRecyclerAdapter { + @Override + protected int getItemLayoutId(int viewType) { + return R.layout.item_rlinfo; + } + + @Override + protected void bindData(@NonNull RecyclerViewHolder holder, int position, RlinfoBean.DataBean item) { + if (item != null) { + holder.text(R.id.tv_jhmc, item.getJHMC()); + holder.text(R.id.tv_zcmc, item.getZCMC()); + holder.text(R.id.tv_xzsc, item.getZXSC() + "小时"); + holder.text(R.id.tv_xlzxsj, item.getNEXTTIME()); + holder.text(R.id.tv_xgr, item.getXGR()); + holder.text(R.id.tv_xgsj, item.getXGSJ()); + holder.text(R.id.tv_xlzxsj, item.getNEXTTIME()); + holder.text(R.id.tv_blkssj, item.getST()); + holder.text(R.id.tv_bljssj, item.getET()); + holder.text(R.id.tv_jhzq, "计划周期:" + item.getJHZQ() + "小时"); + + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScjhAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScjhAdapter.java new file mode 100755 index 0000000..28121b7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScjhAdapter.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.XDJJHXZDataBean; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class ScjhAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public ScjhAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.scjh_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_yjzj = view.findViewById(R.id.tv_yjzj); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_gwmc.setText(list.get(i).getGWMC()); + holder.tv_yjzj.setText(list.get(i).getCountPercent()); + + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_gwmc; + TextView tv_yjzj; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScxsAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScxsAdapter.java new file mode 100755 index 0000000..08f48d9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ScxsAdapter.java @@ -0,0 +1,94 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Xjjh; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class ScxsAdapter extends BaseAdapter { + + private Context context; + //private List list; + private List dbxjjh; + private CallBack mCallBack; + + public ScxsAdapter(Context context, List dbxjjh, CallBack mCallBack) { + this.context = context; + //this.list = list; + this.mCallBack = mCallBack; + this.dbxjjh=dbxjjh; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return dbxjjh.size(); + } + + @Override + public Object getItem(int i) { + return dbxjjh.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.scxscb_item, viewGroup, false); + holder.xj_cb = view.findViewById(R.id.xj_cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_yjzj = view.findViewById(R.id.tv_yjzj); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.xj_cb.setChecked(dbxjjh.get(i).isChecked()); + holder.tv_gwmc.setText(dbxjjh.get(i).getJhmc()); + holder.tv_yjzj.setText(dbxjjh.get(i).getCountPercent()+"/"+dbxjjh.get(i).getJhds()); + + + + holder.xj_cb.setTag(i); + holder.xj_cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox xj_cb; + TextView tv_gwmc; + TextView tv_yjzj; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/TimerTaskAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/TimerTaskAdapter.java new file mode 100644 index 0000000..da9bcd9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/TimerTaskAdapter.java @@ -0,0 +1,77 @@ +package com.rehome.scbaxj.adapter; + + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Dqgz; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * 点列表适配器 + */ +public class TimerTaskAdapter extends BaseAdapter { + + private Context context; + private List list; + + public TimerTaskAdapter(Context context, List list) { + this.context = context; + this.list = list; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.dqzg_check_item, viewGroup, false); + holder.tv_d = view.findViewById(R.id.tv_d); + holder.tv_zt = view.findViewById(R.id.tv_zt); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + holder.tv_d.setText(list.get(i).getZX_MC()); + + if (list.get(i).isWorkChecked()) { + holder.tv_zt.setText("已检"); + holder.tv_zt.setTextColor(Color.GREEN); + } else { + holder.tv_zt.setText("未检"); + holder.tv_zt.setTextColor(Color.RED); + } + return view; + } + + static class ViewHolder { + TextView tv_d; + TextView tv_zt; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ViewHolder.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ViewHolder.java new file mode 100755 index 0000000..7b63d88 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ViewHolder.java @@ -0,0 +1,291 @@ +package com.rehome.scbaxj.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Paint; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.text.util.Linkify; +import android.util.SparseArray; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.AlphaAnimation; +import android.widget.Checkable; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.RatingBar; +import android.widget.TextView; + +public class ViewHolder +{ + private SparseArray mViews; + public int mPosition; + private View mConvertView; + private Context mContext; + public int mLayoutId; + + public ViewHolder(Context context, View itemView, ViewGroup parent, int position) + { + mContext = context; + mConvertView = itemView; + mPosition = position; + mViews = new SparseArray(); + mConvertView.setTag(this); + } + + + public static ViewHolder get(Context context, View convertView, + ViewGroup parent, int layoutId, int position) + { + if (convertView == null) + { + View itemView = LayoutInflater.from(context).inflate(layoutId, parent, + false); + ViewHolder holder = new ViewHolder(context, itemView, parent, position); + holder.mLayoutId = layoutId; + return holder; + } else + { + ViewHolder holder = (ViewHolder) convertView.getTag(); + holder.mPosition = position; + return holder; + } + } + + + /** + * 通过viewId获取控件 + * + * @param viewId + * @return + */ + public T getView(int viewId) + { + View view = mViews.get(viewId); + if (view == null) + { + view = mConvertView.findViewById(viewId); + mViews.put(viewId, view); + } + return (T) view; + } + + public View getConvertView() + { + return mConvertView; + } + + public int getLayoutId() + { + return mLayoutId; + } + + public void updatePosition(int position) + { + mPosition = position; + } + + public int getItemPosition() + { + return mPosition; + } + + + /****以下为辅助方法*****/ + + /** + * 设置TextView的值 + * + * @param viewId + * @param text + * @return + */ + public ViewHolder setText(int viewId, String text) + { + TextView tv = getView(viewId); + tv.setText(text); + return this; + } + + public ViewHolder setImageResource(int viewId, int resId) + { + ImageView view = getView(viewId); + view.setImageResource(resId); + return this; + } + + public ViewHolder setImageBitmap(int viewId, Bitmap bitmap) + { + ImageView view = getView(viewId); + view.setImageBitmap(bitmap); + return this; + } + + public ViewHolder setImageDrawable(int viewId, Drawable drawable) + { + ImageView view = getView(viewId); + view.setImageDrawable(drawable); + return this; + } + + public ViewHolder setBackgroundColor(int viewId, int color) + { + View view = getView(viewId); + view.setBackgroundColor(color); + return this; + } + + public ViewHolder setBackgroundRes(int viewId, int backgroundRes) + { + View view = getView(viewId); + view.setBackgroundResource(backgroundRes); + return this; + } + + public ViewHolder setTextColor(int viewId, int textColor) + { + TextView view = getView(viewId); + view.setTextColor(textColor); + return this; + } + + public ViewHolder setTextColorRes(int viewId, int textColorRes) + { + TextView view = getView(viewId); + view.setTextColor(mContext.getResources().getColor(textColorRes)); + return this; + } + + @SuppressLint("NewApi") + public ViewHolder setAlpha(int viewId, float value) + { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + getView(viewId).setAlpha(value); + } else + { + // Pre-honeycomb hack to set Alpha value + AlphaAnimation alpha = new AlphaAnimation(value, value); + alpha.setDuration(0); + alpha.setFillAfter(true); + getView(viewId).startAnimation(alpha); + } + return this; + } + + public ViewHolder setVisible(int viewId, boolean visible) + { + View view = getView(viewId); + view.setVisibility(visible ? View.VISIBLE : View.GONE); + return this; + } + + public ViewHolder linkify(int viewId) + { + TextView view = getView(viewId); + Linkify.addLinks(view, Linkify.ALL); + return this; + } + + public ViewHolder setTypeface(Typeface typeface, int... viewIds) + { + for (int viewId : viewIds) + { + TextView view = getView(viewId); + view.setTypeface(typeface); + view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); + } + return this; + } + + public ViewHolder setProgress(int viewId, int progress) + { + ProgressBar view = getView(viewId); + view.setProgress(progress); + return this; + } + + public ViewHolder setProgress(int viewId, int progress, int max) + { + ProgressBar view = getView(viewId); + view.setMax(max); + view.setProgress(progress); + return this; + } + + public ViewHolder setMax(int viewId, int max) + { + ProgressBar view = getView(viewId); + view.setMax(max); + return this; + } + + public ViewHolder setRating(int viewId, float rating) + { + RatingBar view = getView(viewId); + view.setRating(rating); + return this; + } + + public ViewHolder setRating(int viewId, float rating, int max) + { + RatingBar view = getView(viewId); + view.setMax(max); + view.setRating(rating); + return this; + } + + public ViewHolder setTag(int viewId, Object tag) + { + View view = getView(viewId); + view.setTag(tag); + return this; + } + + public ViewHolder setTag(int viewId, int key, Object tag) + { + View view = getView(viewId); + view.setTag(key, tag); + return this; + } + + public ViewHolder setChecked(int viewId, boolean checked) + { + Checkable view = getView(viewId); + view.setChecked(checked); + return this; + } + + /** + * 关于事件的 + */ + public ViewHolder setOnClickListener(int viewId, + View.OnClickListener listener) + { + View view = getView(viewId); + view.setOnClickListener(listener); + return this; + } + + public ViewHolder setOnTouchListener(int viewId, + View.OnTouchListener listener) + { + View view = getView(viewId); + view.setOnTouchListener(listener); + return this; + } + + public ViewHolder setOnLongClickListener(int viewId, + View.OnLongClickListener listener) + { + View view = getView(viewId); + view.setOnLongClickListener(listener); + return this; + } + + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjDetailsListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjDetailsListAdapter.java new file mode 100755 index 0000000..fd04ed8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjDetailsListAdapter.java @@ -0,0 +1,118 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.WjbjxitemList; +import com.rehome.scbaxj.DBModel.WjbzjdList; +import com.rehome.scbaxj.R; + +import java.util.List; + +/** + * author: Johnny Chen + * Date: 2018/7/28 + */ +public class WjDetailsListAdapter extends BaseExpandableListAdapter { + + private Context mContext; + private LayoutInflater mInflater; + private List wjbzjdListBeans; + + + public WjDetailsListAdapter(Context mContext, List wjbzjdListBeans) { + this.mContext = mContext; + this.wjbzjdListBeans = wjbzjdListBeans; + mInflater = LayoutInflater.from(mContext); + } + + @Override + public int getGroupCount() { + return wjbzjdListBeans == null ? 0 : wjbzjdListBeans.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return wjbzjdListBeans.get(groupPosition).getJxitem().size(); + } + + @Override + public Object getGroup(int groupPosition) { + return wjbzjdListBeans.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return wjbzjdListBeans.get(groupPosition).getJxitem().get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + + GroupHolder groupHolder; + if (convertView == null) { + groupHolder = new GroupHolder(); + convertView = mInflater.inflate(R.layout.item_group_wj_details, null); + groupHolder.WjDetailsItemGroupTv = convertView.findViewById(R.id.WjDetails_item_group_tv); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupHolder) convertView.getTag(); + } + + groupHolder.WjDetailsItemGroupTv.setText(wjbzjdListBeans.get(groupPosition).getName()); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildHolder childHolder; + if (convertView == null) { + childHolder = new ChildHolder(); + convertView = mInflater.inflate(R.layout.item_child_wj_details, null); + childHolder.WjDetailsItemChildIndexTv = convertView.findViewById(R.id.WjDetails_item_child_index_tv); + childHolder.WjDetailsItemChildContentTv = convertView.findViewById(R.id.WjDetails_item_child_content_tv); + convertView.setTag(childHolder); + } else { + childHolder = (ChildHolder) convertView.getTag(); + } + + List wjbjxitemListBeans = wjbzjdListBeans.get(groupPosition).getJxitem(); + + childHolder.WjDetailsItemChildIndexTv.setText(childPosition + 1 + ":"); + childHolder.WjDetailsItemChildContentTv.setText(wjbjxitemListBeans.get(childPosition).getItemname()); + return convertView; + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + class GroupHolder { + TextView WjDetailsItemGroupTv; + } + + class ChildHolder { + TextView WjDetailsItemChildIndexTv; + TextView WjDetailsItemChildContentTv; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjbxjAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjbxjAdapter.java new file mode 100755 index 0000000..0fd60f1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/WjbxjAdapter.java @@ -0,0 +1,87 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.WjbrwinfoList; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/23. + */ + +public class WjbxjAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public WjbxjAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.wjbxz_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_wjb = view.findViewById(R.id.tv_wjb); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_wjb.setText(list.get(i).getFILEBAGTITLE() + list.get(i).getJHTITLE() + "---文件包号:" + list.get(i).getFILEBAGID()); + + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + + } + + + static class ViewHolder { + CheckBox cb; + TextView tv_wjb; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsHistoryExpandableListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsHistoryExpandableListAdapter.java new file mode 100755 index 0000000..f4b129b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsHistoryExpandableListAdapter.java @@ -0,0 +1,173 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsHistoryListBean; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/26. + */ + +public class XsHistoryExpandableListAdapter extends BaseExpandableListAdapter { + + private Context context; + + + List datas; + + public XsHistoryExpandableListAdapter(Context context, List datas) { + this.datas = datas; + this.context = context; + } + + /** + * 父项的数量 + * + * @return + */ + @Override + public int getGroupCount() { + return datas.size(); + } + + /** + * 子项的数量 + * + * @param groupPosition + * @return + */ + @Override + public int getChildrenCount(int groupPosition) { + return datas.get(groupPosition).getData().size(); + } + + /** + * 获得父项 + * + * @param groupPosition + * @return + */ + @Override + public Object getGroup(int groupPosition) { + return datas.get(groupPosition); + } + + /** + * 获得子项 + * + * @param groupPosition + * @param childPosition + * @return + */ + @Override + public Object getChild(int groupPosition, int childPosition) { + return datas.get(groupPosition).getData().get(childPosition); + } + + /** + * 获得父项ID + * + * @param groupPosition + * @return + */ + @Override + public long getGroupId(int groupPosition) { + return 0; + } + + + /** + * 获得子项ID + * + * @param groupPosition + * @param childPosition + * @return + */ + @Override + public long getChildId(int groupPosition, int childPosition) { + return 0; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + + GroupViewHolder holder; + + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_parent, null); + holder = new GroupViewHolder(); + holder.ivLeft = convertView.findViewById(R.id.iv_left); + holder.tvTitle = convertView.findViewById(R.id.tv_title); + convertView.setTag(holder); + } else { + holder = (GroupViewHolder) convertView.getTag(); + } + + holder.tvTitle.setText(datas.get(groupPosition).getRq()+"数据"); + if (isExpanded) { + holder.ivLeft.setImageResource(R.mipmap.unfold); + } else { + holder.ivLeft.setImageResource(R.mipmap.packup); + } + + AutoUtils.auto(convertView); + + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + + ChildViewHolder holder; + + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_child, null); + holder = new ChildViewHolder(); + holder.tvTitle = convertView.findViewById(R.id.tv_title); + holder.time_TX = convertView.findViewById(R.id.time_TX); + + + convertView.setTag(holder); + } else { + holder = (ChildViewHolder) convertView.getTag(); + } + + holder.tvTitle.setText(datas.get(groupPosition).getData().get(childPosition).getJhmc()); + + holder.time_TX.setText(datas.get(groupPosition).getData().get(childPosition).getScsj()); + + AutoUtils.auto(convertView); + + return convertView; + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + class GroupViewHolder { + ImageView ivLeft; + TextView tvTitle; + } + + class ChildViewHolder { + TextView tvTitle; + TextView time_TX; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhListAdapter.java new file mode 100755 index 0000000..dd62e58 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhListAdapter.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsJhListBean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + */ + +public class XsjhListAdapter extends CommonAdapter { + + private List datas; + + public XsjhListAdapter(Context context, List datas) { + super(context, R.layout.xsjh_item2, datas); + this.datas = datas; + } + + @Override + protected void convert(ViewHolder viewHolder, XsJhListBean.DataBean item, int position) { + + viewHolder.setText(R.id.tv_jhmc, item.getJhmc()); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyAdapter.java new file mode 100755 index 0000000..1383880 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyAdapter.java @@ -0,0 +1,45 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.graphics.Color; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsjhQyBean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + */ + +public class XsjhqyAdapter extends CommonAdapter { + + private List datas; + + public XsjhqyAdapter(Context context, List datas) { + super(context, R.layout.xsjhqy_item, datas); + this.datas = datas; + } + + @Override + protected void convert(ViewHolder viewHolder, XsjhQyBean.DataBeanX item, int position) { + + viewHolder.setText(R.id.tv_qy, item.getQymc()); + + if (item.getSczt().equals("0")) { //未上传 + + viewHolder.setTextColor(R.id.tv_qy, Color.BLACK); + + } else if (item.getSczt().equals("1")) { //已上传 + + viewHolder.setTextColor(R.id.tv_qy, Color.BLUE); + + } else { + + viewHolder.setTextColor(R.id.tv_qy, Color.BLACK); + + } + + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkCbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkCbAdapter.java new file mode 100755 index 0000000..b3bc5cd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkCbAdapter.java @@ -0,0 +1,141 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.weight.ListDialog; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + */ + +public class XsjhqyWorkCbAdapter extends CommonAdapter { + + private Context context; + private List datas; + private boolean history; + + public XsjhqyWorkCbAdapter(Context context, List datas, boolean history) { + super(context, R.layout.qy_work_cb_item, datas); + this.datas = datas; + this.context = context; + this.history = history; + } + + @Override + protected void convert(ViewHolder viewHolder, final XsjhQyBean.DataBeanX.DataBean item, int position) { +// viewHolder.setText(R.id.tv_qy, item.getQymc()); + + EditText etEnter = viewHolder.getView(R.id.et_enter); + final TextView tvEnter = viewHolder.getView(R.id.tv_enter); + TextView tvInput = viewHolder.getView(R.id.tv_input); + tvInput.setVisibility(View.GONE); + + viewHolder.setText(R.id.tv_mc, item.getSb() + item.getDw()); + viewHolder.setText(R.id.tv_dbjz, item.getDz()); + viewHolder.setText(R.id.tv_gbjz, item.getGz()); + viewHolder.setText(R.id.tv_zcz, item.getZczt()); + + if (TextUtils.isEmpty(item.getXcnr())) {//如果不是选择的 + etEnter.setVisibility(View.VISIBLE); + tvEnter.setVisibility(View.GONE); + } else { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + } + + final String[] items = item.getXcnr().split(";"); + + if (TextUtils.isEmpty(item.getCbsz())) { + tvEnter.setText(items[0]); + item.setCbsz(items[0]); + } else { + tvEnter.setText(item.getCbsz()); + } + + if (!history) { + tvEnter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lists = new ArrayList(); + for (String str : items) { + lists.add(str); + } + final ListDialog dialog = new ListDialog(context, lists, new ListDialog.ListDialogListener() { + @Override + public void selectText(String str, int position) { + tvEnter.setText(str); + item.setCbsz(str); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + }); + dialog.show(); + } + }); + } + + etEnter.clearFocus(); + + if (etEnter.getTag() instanceof TextWatcher) { + etEnter.removeTextChangedListener((TextWatcher) etEnter.getTag()); + } + + if (history) { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + tvEnter.setText(datas.get(position).getCbsz()); + } else { + if (TextUtils.isEmpty(datas.get(position).getSisData())) { + etEnter.setText(datas.get(position).getCbsz()); + } else { + etEnter.setText(datas.get(position).getSisData()); + } + } + + final TextWatcher watcher = new MyTextWatcher() { + @Override + public void beforeTextChange(String s) { + + if (TextUtils.isEmpty(s)) { + item.setCbsz(""); + } else { + item.setCbsz(s); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + } + }; + + etEnter.addTextChangedListener(watcher); + etEnter.setTag(watcher); + } + + public abstract class MyTextWatcher implements TextWatcher { + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + beforeTextChange(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + } + + public abstract void beforeTextChange(String s); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkDjAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkDjAdapter.java new file mode 100755 index 0000000..ef5c42b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkDjAdapter.java @@ -0,0 +1,141 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.weight.ListDialog; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + */ + +public class XsjhqyWorkDjAdapter extends CommonAdapter { + + private Context context; + private List datas; + private boolean history; + + public XsjhqyWorkDjAdapter(Context context, List datas, boolean history) { + super(context, R.layout.qy_work_dj_item, datas); + this.datas = datas; + this.context = context; + this.history = history; + } + + @Override + protected void convert(ViewHolder viewHolder, final XsjhQyBean.DataBeanX.DataBean item, int position) { +// viewHolder.setText(R.id.tv_qy, item.getQymc()); + + EditText etEnter = viewHolder.getView(R.id.et_enter); + final TextView tvEnter = viewHolder.getView(R.id.tv_enter); + TextView tvInput = viewHolder.getView(R.id.tv_input); + tvInput.setVisibility(View.GONE); + + viewHolder.setText(R.id.tv_mc, item.getSb() + item.getDw()); + viewHolder.setText(R.id.tv_dbjz, item.getBsyl()); + viewHolder.setText(R.id.tv_gbjz, item.getBqyl()); + viewHolder.setText(R.id.tv_zcz, item.getZczt()); + + if (TextUtils.isEmpty(item.getXcnr())) {//如果不是选择的 + etEnter.setVisibility(View.VISIBLE); + tvEnter.setVisibility(View.GONE); + } else { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + } + + final String[] items = item.getXcnr().split(";"); + + if (TextUtils.isEmpty(item.getCbsz())) { + tvEnter.setText(items[0]); + item.setCbsz(items[0]); + } else { + tvEnter.setText(item.getCbsz()); + } + + if (!history) { + tvEnter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lists = new ArrayList(); + for (String str : items) { + lists.add(str); + } + final ListDialog dialog = new ListDialog(context, lists, new ListDialog.ListDialogListener() { + @Override + public void selectText(String str, int position) { + tvEnter.setText(str); + item.setCbsz(str); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + }); + dialog.show(); + } + }); + } + + etEnter.clearFocus(); + + if (etEnter.getTag() instanceof TextWatcher) { + etEnter.removeTextChangedListener((TextWatcher) etEnter.getTag()); + } + + if (history) { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + tvEnter.setText(datas.get(position).getCbsz()); + } else { + if (TextUtils.isEmpty(datas.get(position).getSisData())) { + etEnter.setText(datas.get(position).getCbsz()); + } else { + etEnter.setText(datas.get(position).getSisData()); + } + } + + final TextWatcher watcher = new MyTextWatcher() { + @Override + public void beforeTextChange(String s) { + + if (TextUtils.isEmpty(s)) { + item.setCbsz(""); + } else { + item.setCbsz(s); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + } + }; + + etEnter.addTextChangedListener(watcher); + etEnter.setTag(watcher); + } + + public abstract class MyTextWatcher implements TextWatcher { + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + beforeTextChange(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + } + + public abstract void beforeTextChange(String s); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkXsAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkXsAdapter.java new file mode 100755 index 0000000..fce229a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XsjhqyWorkXsAdapter.java @@ -0,0 +1,155 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.XsjhQyBean; +import com.rehome.scbaxj.weight.ListDialog; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + */ + +public class XsjhqyWorkXsAdapter extends CommonAdapter { + + + private Context context; + private List datas; + private boolean histroy; + + public XsjhqyWorkXsAdapter(Context context, List datas, boolean histroy) { + super(context, R.layout.qy_work_xs_item, datas); + this.datas = datas; + this.context = context; + this.histroy = histroy; + } + + @Override + protected void convert(ViewHolder viewHolder, final XsjhQyBean.DataBeanX.DataBean item, int position) { +// viewHolder.setText(R.id.tv_qy, item.getQymc()); + + EditText etEnter = viewHolder.getView(R.id.et_enter); + final TextView tvEnter = viewHolder.getView(R.id.tv_enter); + TextView tvInput = viewHolder.getView(R.id.tv_input); + tvInput.setVisibility(View.GONE); + + viewHolder.setText(R.id.tv_mc, item.getSb() + item.getDw()); + viewHolder.setText(R.id.tv_dbjz, item.getDz()); + viewHolder.setText(R.id.tv_gbjz, item.getGz()); + viewHolder.setText(R.id.tv_zcz, item.getZczt()); + + + + if (item.getLRFS().equals("0")) {//如果不是选择的 + etEnter.setVisibility(View.VISIBLE); + tvEnter.setVisibility(View.GONE); + + } else { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + } + +// +// if (TextUtils.isEmpty(item.getXcnr())) {//如果不是选择的 +// etEnter.setVisibility(View.VISIBLE); +// tvEnter.setVisibility(View.GONE); +// +// } else { +// etEnter.setVisibility(View.GONE); +// tvEnter.setVisibility(View.VISIBLE); +// } + + final String[] items = item.getMRNR().split(";"); + + if (TextUtils.isEmpty(item.getCbsz())) { + tvEnter.setText(items[0]); + item.setCbsz(items[0]); + } else { + tvEnter.setText(item.getCbsz()); + } + + if (!histroy) { + tvEnter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lists = new ArrayList(); + for (String str : items) { + lists.add(str); + } + final ListDialog dialog = new ListDialog(context, lists, new ListDialog.ListDialogListener() { + @Override + public void selectText(String str, int position) { + tvEnter.setText(str); + item.setCbsz(str); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + }); + dialog.show(); + } + }); + } + + etEnter.clearFocus(); + + if (etEnter.getTag() instanceof TextWatcher) { + etEnter.removeTextChangedListener((TextWatcher) etEnter.getTag()); + } + + if (histroy) { + etEnter.setVisibility(View.GONE); + tvEnter.setVisibility(View.VISIBLE); + tvEnter.setText(datas.get(position).getCbsz()); + } else { + if (TextUtils.isEmpty(datas.get(position).getSisData())) { + etEnter.setText(datas.get(position).getCbsz()); + } else { + etEnter.setText(datas.get(position).getSisData()); + } + } + + final TextWatcher watcher = new MyTextWatcher() { + @Override + public void beforeTextChange(String s) { + + if (TextUtils.isEmpty(s)) { + item.setCbsz(""); + } else { + item.setCbsz(s); + item.setDjsj(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); + } + } + }; + + etEnter.addTextChangedListener(watcher); + etEnter.setTag(watcher); + } + + public abstract class MyTextWatcher implements TextWatcher { + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + beforeTextChange(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + } + + public abstract void beforeTextChange(String s); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzjhAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzjhAdapter.java new file mode 100755 index 0000000..290eb54 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzjhAdapter.java @@ -0,0 +1,99 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Djjh; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class XzjhAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public XzjhAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.xzjh_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_gwds = view.findViewById(R.id.tv_gwds); + holder.tv_zrr = view.findViewById(R.id.tv_zrr); + +// holder.tv_xh = (TextView) view.findViewById(R.id.tv_xh); +// holder.tv_xzr = (TextView) view.findViewById(R.id.tv_xzr); +// holder.tv_xzsj = (TextView) view.findViewById(R.id.tv_xzsj); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_gwmc.setText(list.get(i).getGWMC()); + holder.tv_gwds.setText(list.get(i).getGWDS()); + + +// holder.tv_xzr.setText(list.get(i).getXZR()); +// holder.tv_xzsj.setText(list.get(i).getXZSJ()); +// holder.tv_xh.setText(i + 1 + ""); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_gwmc; + TextView tv_gwds; + TextView tv_zrr; +// TextView tv_jhlx; +// TextView tv_xzr; +// TextView tv_xzsj; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzxsjhAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzxsjhAdapter.java new file mode 100755 index 0000000..4c8decc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/XzxsjhAdapter.java @@ -0,0 +1,87 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Xjjh; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class XzxsjhAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public XzxsjhAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.xzxsjh_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_gwmc = view.findViewById(R.id.tv_gwmc); + holder.tv_gwds = view.findViewById(R.id.tv_gwds); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_gwmc.setText(list.get(i).getJhmc()); + holder.tv_gwds.setText(list.get(i).getJhds()); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_gwmc; + TextView tv_gwds; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/YhpcListAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/YhpcListAdapter.java new file mode 100644 index 0000000..df6298e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/YhpcListAdapter.java @@ -0,0 +1,82 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.DataBaseYhpc; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +public class YhpcListAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public YhpcListAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.item_yhpclist, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_savetime = view.findViewById(R.id.tv_savetime); + holder.tv_st = view.findViewById(R.id.tv_st); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_savetime.setText(list.get(i).getWTQY()); + holder.tv_st.setText(list.get(i).getLRSJ()); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_savetime; + TextView tv_st; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZgrwSaveAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZgrwSaveAdapter.java new file mode 100755 index 0000000..0068945 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZgrwSaveAdapter.java @@ -0,0 +1,85 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Uploadzgjg; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/27. + */ + +public class ZgrwSaveAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + + public ZgrwSaveAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.sblcsavedata_item2, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_savetime = view.findViewById(R.id.tv_savetime); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_savetime.setText(list.get(i).getZGJG()); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_savetime; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjbAdapter.java new file mode 100755 index 0000000..d7cbd37 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjbAdapter.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.ZjbBean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/3. + */ + +public class ZjbAdapter extends CommonAdapter { + + public ZjbAdapter(Context context, List datas) { + super(context, R.layout.zjb_item, datas); + } + + @Override + protected void convert(ViewHolder viewHolder, ZjbBean.DataBean item, int position) { + viewHolder.setText(R.id.tv_JHTITLE, item.getJHTITLE()); + viewHolder.setText(R.id.tv_wjb, item.getFILEBAGTITLE()); + viewHolder.setText(R.id.tv_zjdms, item.getRWDS()); + + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjdscAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjdscAdapter.java new file mode 100755 index 0000000..042db7e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjdscAdapter.java @@ -0,0 +1,93 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Zjrwdata; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + + +/** + * 下载计划适配器 + */ +public class ZjdscAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public ZjdscAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.sczjdrw_item, viewGroup, false); + holder.zjd_cb = view.findViewById(R.id.zjd_cb); + holder.tv_zjd = view.findViewById(R.id.tv_zjd); + holder.tv_yjzj = view.findViewById(R.id.tv_yjzj); + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.zjd_cb.setChecked(list.get(i).isChecked()); + + holder.tv_zjd.setText(list.get(i).getTitle() + "-" + list.get(i).getName() + "-" + list.get(i).getProusername()); + + holder.tv_yjzj.setText(list.get(i).getCountPercent()); + + + holder.zjd_cb.setTag(i); + holder.zjd_cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox zjd_cb; + TextView tv_zjd; + TextView tv_yjzj; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwAdapter.java new file mode 100755 index 0000000..d953e35 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwAdapter.java @@ -0,0 +1,55 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.ZjrwBean; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/28. + */ + +public class ZjrwAdapter extends CommonAdapter { + + private List datas; + + public ZjrwAdapter(Context context, List datas) { + super(context, R.layout.item_zjrw, datas); + this.datas = datas; + + } + + @Override + protected void convert(ViewHolder viewHolder, ZjrwBean.DataBean item, int position) { + TextView tv_RWMC = viewHolder.getView(R.id.tv_RWMC); + TextView tv_RWKSSJ = viewHolder.getView(R.id.tv_RWKSSJ); + TextView tv_RWJSSJ = viewHolder.getView(R.id.tv_RWJSSJ); + TextView tv_YJWCSJ = viewHolder.getView(R.id.tv_YJWCSJ); + TextView tv_RWLX = viewHolder.getView(R.id.tv_RWLX); + TextView tv_RWZT = viewHolder.getView(R.id.tv_RWZT); + TextView tv_TJR = viewHolder.getView(R.id.tv_TJR); + TextView tv_TJSJ = viewHolder.getView(R.id.tv_TJSJ); + TextView tv_XGR = viewHolder.getView(R.id.tv_XGR); + TextView tv_XGSJ = viewHolder.getView(R.id.tv_XGSJ); + TextView tv_BZSM = viewHolder.getView(R.id.tv_BZSM); + TextView tv_ZJJZ = viewHolder.getView(R.id.tv_ZJJZ); + + + tv_RWMC.setText("任务名称: " + item.getRWMC()); + tv_RWKSSJ.setText("任务开始时间: " + item.getRWST()); + tv_RWJSSJ.setText("任务结束时间: " + item.getRWET()); + tv_YJWCSJ.setText("预计完成时间 : " + item.getYJWCSJ()); + tv_RWLX.setText("任务类型: " + item.getRWLX()); + tv_RWZT.setText("任务状态: " + item.getRWZT()); + tv_TJR.setText("添加人: " + item.getTJR()); + tv_TJSJ.setText("添加时间: " + item.getTJSJ()); + tv_XGR.setText("修改人: " + item.getXGR()); + tv_XGSJ.setText("修改时间: " + item.getXGSJ()); + tv_BZSM.setText("备注说明: " + item.getBZSM()); + tv_ZJJZ.setText("质检机组: " + item.getZJJZ()); + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwxjAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwxjAdapter.java new file mode 100755 index 0000000..a896d22 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZjrwxjAdapter.java @@ -0,0 +1,110 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Xjzjrw; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.SPUtils; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/23. + */ + +public class ZjrwxjAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public ZjrwxjAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.zjrwxj_item, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_zjd = view.findViewById(R.id.tv_zjd); + holder.tv_sbs = view.findViewById(R.id.tv_sbs); + holder.tv_zyfzr = view.findViewById(R.id.tv_zyfzr); + holder.tv_zjsj = view.findViewById(R.id.tv_zjsj); + + + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_zjd.setText(list.get(i).getWjbmc() + " - " + list.get(i).getTitle()); + holder.tv_sbs.setText(list.get(i).getSbnum()); + holder.tv_zyfzr.setText(list.get(i).getProusername()); + holder.tv_zjsj.setText(list.get(i).getZjtime()); + + String YHID = (String) SPUtils.get(context, Contans.USERID, ""); + + if (list.get(i).getProuserid().equals(YHID)) {//当前用户是主要负责人则可以下载 + holder.cb.setEnabled(true); + } else { + + holder.cb.setChecked(false); + holder.cb.setEnabled(false); + + } + + + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + + } + + + static class ViewHolder { + CheckBox cb; + TextView tv_zjd; + TextView tv_sbs; + TextView tv_zyfzr; + TextView tv_zjsj; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZkdAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZkdAdapter.java new file mode 100755 index 0000000..7f8409c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/ZkdAdapter.java @@ -0,0 +1,86 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.bean.ZkdInfo; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * 质控点适配器 + */ +public class ZkdAdapter extends BaseAdapter { + + private Context context; + private List list; + + public ZkdAdapter(Context context, List list) { + this.context = context; + this.list = list; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public ZkdInfo getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ZkdInfo info; + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.zkd_item, viewGroup,false); + holder.tv_xh = view.findViewById(R.id.tv_xh); + holder.tv_gx = view.findViewById(R.id.tv_gx); + holder.tv_zt = view.findViewById(R.id.tv_zt); + holder.tv_fl = view.findViewById(R.id.tv_zjdfl); + holder.tv_aj = view.findViewById(R.id.tv_ajzjy); + holder.tv_bj = view.findViewById(R.id.tv_bjzjy); + holder.tv_cj = view.findViewById(R.id.tv_cjzjy); + holder.tv_jl = view.findViewById(R.id.tv_jlgcs); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + info = getItem(i); + holder.tv_xh.setText(info.getXh()+""); + holder.tv_gx.setText(info.getGx()); + holder.tv_zt.setText(info.getZt()); + holder.tv_fl.setText(info.getFl()); + holder.tv_aj.setText(info.getAj()); + holder.tv_bj.setText(info.getBj()); + holder.tv_cj.setText(info.getCj()); + holder.tv_jl.setText(info.getJl()); + return view; + } + + static class ViewHolder { + TextView tv_xh; + TextView tv_gx; + TextView tv_zt; + TextView tv_fl; + TextView tv_aj; + TextView tv_bj; + TextView tv_cj; + TextView tv_jl; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/aqjcsaveAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/aqjcsaveAdapter.java new file mode 100755 index 0000000..bc53c7a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/aqjcsaveAdapter.java @@ -0,0 +1,88 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Uploadaqjcsave; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/23. + */ + +public class aqjcsaveAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public aqjcsaveAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.sblcsavedata_item_wtqy, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_savetime = view.findViewById(R.id.tv_savetime); + holder.tv_st = view.findViewById(R.id.tv_st); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_savetime.setText(list.get(i).getWTQY()); + holder.tv_st.setText(list.get(i).getLRSJ()); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_savetime; + TextView tv_st; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/othersbAdapter.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/othersbAdapter.java new file mode 100755 index 0000000..36dd6fe --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/adapter/othersbAdapter.java @@ -0,0 +1,88 @@ +package com.rehome.scbaxj.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.rehome.scbaxj.DBModel.Othersbsave; +import com.rehome.scbaxj.R; +import com.zhy.autolayout.utils.AutoUtils; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/23. + */ + +public class othersbAdapter extends BaseAdapter { + + private Context context; + private List list; + private CallBack mCallBack; + + public othersbAdapter(Context context, List list, CallBack mCallBack) { + this.context = context; + this.list = list; + this.mCallBack = mCallBack; + } + + + public interface CallBack { + void Click(View view); + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = LayoutInflater.from(context).inflate(R.layout.sblcsavedata_item_wtqy, viewGroup, false); + holder.cb = view.findViewById(R.id.cb); + holder.tv_savetime = view.findViewById(R.id.tv_savetime); + holder.tv_st = view.findViewById(R.id.tv_st); + view.setTag(holder); + AutoUtils.autoSize(view); + } else { + holder = (ViewHolder) view.getTag(); + } + + + holder.cb.setChecked(list.get(i).isChecked()); + holder.tv_savetime.setText(list.get(i).getWTQY()); + holder.tv_st.setText(list.get(i).getLRSJ()); + holder.cb.setTag(i); + holder.cb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mCallBack.Click(view); + } + }); + return view; + } + + static class ViewHolder { + CheckBox cb; + TextView tv_savetime; + TextView tv_st; + + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity.java new file mode 100755 index 0000000..a8dd940 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity.java @@ -0,0 +1,200 @@ +package com.rehome.scbaxj.base; + +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NdefMessage; +import android.nfc.NdefRecord; +import android.nfc.NfcAdapter; +import android.nfc.tech.IsoDep; +import android.nfc.tech.MifareClassic; +import android.nfc.tech.MifareUltralight; +import android.nfc.tech.NfcA; +import android.nfc.tech.NfcB; +import android.nfc.tech.NfcF; +import android.nfc.tech.NfcV; +import android.os.Build; +import android.os.Bundle; +import android.os.Parcelable; +import android.view.View; +import android.view.WindowManager; +import android.widget.TextView; +import android.widget.Toast; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.utils.ControllerActivity; +import com.zhy.autolayout.AutoLayoutActivity; +import java.nio.charset.StandardCharsets; +import androidx.annotation.LayoutRes; +import androidx.appcompat.widget.Toolbar; + + +/** + * Created by Administrator on 2016/8/3. + */ +public abstract class BaseActivity extends AutoLayoutActivity { + public Toolbar mToolbar; + public TextView title; + public Context context; + private NfcAdapter nfcAdapter; + private String readResult = ""; + private PendingIntent pendingIntent; + private IntentFilter[] mFilters; + private String[][] mTechLists; + private boolean isFirst = true; + private IntentFilter ndef; + public abstract int getContentViewID(); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + setContentView(getContentViewID()); + context = this; + ControllerActivity.getAppManager().addActivity(this); + mToolbar = findViewById(R.id.toolbar); + title = findViewById(R.id.title); + mToolbar.setTitle(""); + setSupportActionBar(mToolbar); + initView(); + initData(); + } + @Override + public void setContentView(@LayoutRes int layoutResID) { + super.setContentView(layoutResID); + } + protected abstract void initView(); + public void initData() { + } + @Override + protected void onDestroy() { + super.onDestroy(); + ControllerActivity.getAppManager().finishActivity(this); + context = null; + } + public void showToast(String text) { + if (text != null && !text.trim().equals("")) { + Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); + } + } + public void showToast(int id) { + Toast.makeText(this, id, Toast.LENGTH_SHORT).show(); + } + public void setTitle(String title) { + this.title.setText(title); + } + public void setBack() { + mToolbar.setNavigationIcon(R.mipmap.back); + mToolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } + private Boolean ifNFCUse() { + if (nfcAdapter == null) { +// Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show(); + return false; + } + if (!nfcAdapter.isEnabled()) { + Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show(); + return false; + } + return true; + } + public void initNFC() { + + //NFC适配器,所有的关于NFC的操作从该适配器进行 + nfcAdapter = NfcAdapter.getDefaultAdapter(this); + if (!ifNFCUse()) { + return; + } + //将被调用的Intent,用于重复被Intent触发后将要执行的跳转 + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + } else { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + } + //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型 + ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); + ndef.addCategory("*/*"); + mFilters = new IntentFilter[]{ndef};// 过滤器 + mTechLists = new String[][]{new String[]{NfcA.class.getName()}, + new String[]{NfcF.class.getName()}, + new String[]{NfcB.class.getName()}, + new String[]{NfcV.class.getName()}, + new String[]{MifareClassic.class.getName()}, + new String[]{MifareUltralight.class.getName()}, + new String[]{IsoDep.class.getName()}};// 允许扫描的标签类型 + + if (isFirst) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent() + .getAction())) { + ndef = new IntentFilter(); + if (readFromTag(getIntent())) { + Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show(); + } + } + isFirst = false; + } + } + private String ByteArrayToHexString(byte[] inarray) { //converts byte arrays to string + int i, j, in; + String[] hex = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}; + String out = ""; + for (j = 0; j < inarray.length; ++j) { + in = (int) inarray[j] & 0xff; + i = (in >> 4) & 0x0f; + out += hex[i]; + i = in & 0x0f; + out += hex[i]; + } + return out; + } + @Override + protected void onPause() { + super.onPause(); + if (nfcAdapter != null) { + nfcAdapter.disableForegroundDispatch(this); + } + } + @Override + protected void onResume() { + super.onResume(); + if (nfcAdapter != null && pendingIntent != null && mFilters != null && mTechLists != null) { + nfcAdapter.enableForegroundDispatch(this, pendingIntent, mFilters, + mTechLists); + } + } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) || + NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { + String id = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + if (id != null) { + handleNfc(id); + } + } + } + private boolean readFromTag(Intent intent) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { + Parcelable[] rawArray = intent + .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); + if (rawArray != null) { + NdefMessage mNdefMsg = (NdefMessage) rawArray[0]; + NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; + if (mNdefRecord != null) { + readResult = new String(mNdefRecord.getPayload(), StandardCharsets.UTF_8); + return true; + } + } + return false; + } + return false; + } + public void handleNfc(String result) { + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity3.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity3.java new file mode 100755 index 0000000..f6c28d4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivity3.java @@ -0,0 +1,236 @@ +package com.rehome.scbaxj.base; + +import android.app.Activity; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NdefMessage; +import android.nfc.NdefRecord; +import android.nfc.NfcAdapter; +import android.nfc.tech.IsoDep; +import android.nfc.tech.MifareClassic; +import android.nfc.tech.MifareUltralight; +import android.nfc.tech.NfcA; +import android.nfc.tech.NfcB; +import android.nfc.tech.NfcF; +import android.nfc.tech.NfcV; +import android.os.Bundle; +import android.os.Parcelable; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.utils.AppManager; +import com.rehome.scbaxj.utils.OAToolbar; +import com.zhy.autolayout.AutoLayoutActivity; +import java.nio.charset.StandardCharsets; +import androidx.annotation.Nullable; + + +/** + * Created by ruihong on 2017/12/23. + */ + +public abstract class BaseActivity3 extends AutoLayoutActivity { + + OAToolbar toolbar; + public Context context; + private NfcAdapter nfcAdapter; + private String readResult = ""; + private PendingIntent pendingIntent; + private IntentFilter[] mFilters; + private String[][] mTechLists; + private boolean isFirst = true; + private IntentFilter ndef; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(getLayoutId()); + toolbar = findViewById(R.id.toolbar); + AppManager.getAppManager().addActivity(this); + context = this; + initView(); + initData(); + } + private Boolean ifNFCUse() { + if (nfcAdapter == null) { +// Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show(); + return false; + } + if (!nfcAdapter.isEnabled()) { + Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show(); + return false; + } + return true; + } + public void startActivity(Class cls) { + startActivity(new Intent(this, cls)); + } + public void initNFC() { + + //NFC适配器,所有的关于NFC的操作从该适配器进行 + nfcAdapter = NfcAdapter.getDefaultAdapter(this); + if (!ifNFCUse()) { + return; + } + //将被调用的Intent,用于重复被Intent触发后将要执行的跳转 + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + } else { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + } + //pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型 + ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); + ndef.addCategory("*/*"); + mFilters = new IntentFilter[]{ndef};// 过滤器 + mTechLists = new String[][]{new String[]{NfcA.class.getName()}, + new String[]{NfcF.class.getName()}, + new String[]{NfcB.class.getName()}, + new String[]{NfcV.class.getName()}, + new String[]{MifareClassic.class.getName()}, + new String[]{MifareUltralight.class.getName()}, + new String[]{IsoDep.class.getName()}};// 允许扫描的标签类型 + + if (isFirst) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent() + .getAction())) { + ndef = new IntentFilter(); + if (readFromTag(getIntent())) { + Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show(); + } + } + isFirst = false; + } + } + private String ByteArrayToHexString(byte[] inarray) { //converts byte arrays to string + int i, j, in; + String[] hex = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}; + String out = ""; + for (j = 0; j < inarray.length; ++j) { + in = (int) inarray[j] & 0xff; + i = (in >> 4) & 0x0f; + out += hex[i]; + i = in & 0x0f; + out += hex[i]; + } + return out; + } + @Override + protected void onPause() { + super.onPause(); + if (nfcAdapter != null) { + nfcAdapter.disableForegroundDispatch(this); + } + } + @Override + protected void onResume() { + super.onResume(); + + // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权. + if (nfcAdapter != null && pendingIntent != null && mFilters != null && mTechLists != null) { + nfcAdapter.enableForegroundDispatch(this, pendingIntent, mFilters, + mTechLists); + } + + } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) || + NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { + + String id = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + + if (id != null) { + handleNfc(id); + } + +// if (readFromTag(intent)) { +// Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); +// handleNfc(readResult); +// } else { +// Toast.makeText(this, "ID:" + id + " 标签数据为空", Toast.LENGTH_SHORT).show(); +// } + } + } + private boolean readFromTag(Intent intent) { + + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { + + Parcelable[] rawArray = intent + .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); + if (rawArray != null) { + NdefMessage mNdefMsg = (NdefMessage) rawArray[0]; + NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; + if (mNdefRecord != null) { + readResult = new String(mNdefRecord.getPayload(), StandardCharsets.UTF_8); + return true; + } + //return false; + } + return false; + } + return false; + } + //处理NFC + public void handleNfc(String result) { + //showToast(result); + //Toast.makeText(this, result, Toast.LENGTH_LONG).show(); + } + public abstract int getLayoutId(); + public abstract void initView(); + public abstract void initData(); + @Override + protected void onDestroy() { + super.onDestroy(); + AppManager.getAppManager().finishActivity(this); + } + public void showToast(String msg) { + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); + } + public void initToolbar(String title) { + toolbar.setTvTitleText(title); + } + public void initToolbar(String title, String rightText, View.OnClickListener listener) { + toolbar.setTvTitleText(title); + toolbar.setTvRightText(rightText); + toolbar.setTvRightOnClickListener(listener); + setLeftOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + public void initToolbar(String title, String rightText, View.OnClickListener listenerLeftBtnClick, View.OnClickListener listener) { + toolbar.setTvTitleText(title); + toolbar.setTvRightText(rightText); + toolbar.setTvRightOnClickListener(listener); + setLeftOnClickListener(listenerLeftBtnClick); + } + public void initToolbar(String title, int rightTextId, View.OnClickListener listener) { + toolbar.setTvTitleText(title); + toolbar.setTvRightText(rightTextId); + toolbar.setTvRightOnClickListener(listener); + setLeftOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + public void setLeftOnClickListener(View.OnClickListener listener) { + toolbar.setIvLeftOnClickListener(listener); + toolbar.setIvLeftIcon(R.mipmap.ac_back_icon); + } + public String getText(EditText editText) { + return editText.getText().toString(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityAutoToolbarViewBinding.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityAutoToolbarViewBinding.kt new file mode 100644 index 0000000..767391d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityAutoToolbarViewBinding.kt @@ -0,0 +1,255 @@ +package com.rehome.scbaxj.base + +import android.app.Activity +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.nfc.NdefMessage +import android.nfc.NfcAdapter +import android.nfc.tech.* +import android.os.Build +import android.os.Bundle +import android.view.View +import android.widget.Toast +import androidx.viewbinding.ViewBinding +import com.rehome.scbaxj.R +import com.rehome.scbaxj.utils.AutoToolbar +import com.rehome.scbaxj.utils.ControllerActivity +import com.rehome.scbaxj.utils.StatusBarUtil +import com.zhy.autolayout.AutoLayoutActivity +import java.nio.charset.StandardCharsets +import java.util.* + +/** + * Create By HuangWenFei + * 创建日期:2023-01-17 14:04 + * 描述:基类使用ViewBinding,ButterKnife已被作者废弃,不再维护 + */ +abstract class BaseActivityAutoToolbarViewBinding : AutoLayoutActivity() { + protected lateinit var binding: T + protected lateinit var mToolbar: AutoToolbar + protected lateinit var context: Context + private var nfcAdapter: NfcAdapter? = null + private var readResult = "" + private var pendingIntent: PendingIntent? = null + private lateinit var mFilters: Array + private lateinit var mTechLists: Array> + private var isFirst = true + private var ndef: IntentFilter? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = getViewBinding() + mToolbar = getToolbar() + setContentView(binding.root) + context = this + ControllerActivity.getAppManager().addActivity(this) + initView() + initData() + } + + protected abstract fun getViewBinding(): T + protected abstract fun getToolbar(): AutoToolbar + + //初始化View + protected abstract fun initView() + + //初始化数据 + protected abstract fun initData() + + + fun startActivity(cls: Class?) { + val intent = Intent(this, cls) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + + override fun onPause() { + super.onPause() + if (nfcAdapter != null) { + nfcAdapter!!.disableForegroundDispatch(this) + } + } + + /* + * 重写onResume回调函数的意义在于处理多次读取NFC标签时的情况 + */ + override fun onResume() { + super.onResume() + + // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权. + if (nfcAdapter != null && pendingIntent != null) { + nfcAdapter!!.enableForegroundDispatch( + this, pendingIntent, mFilters, + mTechLists + ) + } + } + + override fun onDestroy() { + super.onDestroy() + ControllerActivity.getAppManager().finishActivity(this) + } + + /** + * 显示toast + * + * @param text + */ + fun showToast(text: String?) { + if (text != null && text.trim { it <= ' ' } != "") { + Toast.makeText(this, text, Toast.LENGTH_SHORT).show() + } + } + + fun showToast(id: Int) { + Toast.makeText(this, id, Toast.LENGTH_SHORT).show() + } + + /** + * 检测工作,判断设备的NFC支持情况 + * + * @return + */ + private fun ifNFCUse(): Boolean { + if (nfcAdapter == null) { + Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show() + return false + } + if (!nfcAdapter!!.isEnabled) { + Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show() + return false + } + return true + } + + /** + * 初始化过程 + */ + fun initNFC() { + + //NFC适配器,所有的关于NFC的操作从该适配器进行 + nfcAdapter = NfcAdapter.getDefaultAdapter(this) + if (!ifNFCUse()) { + return + } + //将被调用的Intent,用于重复被Intent触发后将要执行的跳转 + pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.getActivity( + this, + 0, + Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + } else { + PendingIntent.getActivity( + this, + 0, + Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), + 0 + ) + } + + + //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型 + ndef = IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED) + ndef!!.addCategory("*/*") + mFilters = arrayOf(ndef!!) // 过滤器 + mTechLists = arrayOf( + arrayOf(NfcA::class.java.name), arrayOf( + NfcF::class.java.name + ), arrayOf(NfcB::class.java.name), arrayOf( + NfcV::class.java.name + ), arrayOf(MifareClassic::class.java.name), arrayOf( + MifareUltralight::class.java.name + ), arrayOf(IsoDep::class.java.name) + ) // 允许扫描的标签类型 + if (isFirst) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent + .action + ) { + ndef = IntentFilter() + if (readFromTag(intent)) { + Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show() + } + } + isFirst = false + } + } + + /** + * 2进制to 16进制 + * @param src + * @return + */ + private fun bytesToHex(src: ByteArray?): String { + val sb = StringBuffer() + if (src == null || src.isEmpty()) { + return "" + } + var sTemp: String + for (i in src.indices) { + sTemp = Integer.toHexString(0xFF and src[i].toInt()) + if (sTemp.length < 2) { + sb.append(0) + } + sb.append(sTemp.uppercase(Locale.getDefault())) + } + return sb.toString() + } + + /* + * 有必要要了解onNewIntent回调函数的调用时机,请自行上网查询 + */ + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action || NfcAdapter.ACTION_TECH_DISCOVERED == intent.action) { + val id = bytesToHex(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)) + handleNfc(id) + +// if (readFromTag(intent)) { +// Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); +// handleNfc(readResult); +// } else { +// Toast.makeText(this, "ID:" + id + " 标签数据为空", Toast.LENGTH_SHORT).show(); +// } + } + } + + /** + * 读取NFC标签数据的操作 + */ + private fun readFromTag(intent: Intent): Boolean { + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) { + val rawArray = intent + .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES) + if (rawArray != null) { + val mNdefMsg = rawArray[0] as NdefMessage + val mNdefRecord = mNdefMsg.records[0] + if (mNdefRecord != null) { + readResult = String(mNdefRecord.payload, StandardCharsets.UTF_8) + return true + } + //return false; + } + return false + } + return false + } + + //处理NFC + open fun handleNfc(result: String?) { + //showToast(result); + } + + open fun setBack() { + mToolbar.setNavigationIcon(R.mipmap.ac_back_icon) + mToolbar.setNavigationOnClickListener { finish() } + } + + protected open fun setStatusBar() { + StatusBarUtil.setColor(this, resources.getColor(R.color.colorPrimary)) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityOaToolbarViewBinding.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityOaToolbarViewBinding.kt new file mode 100644 index 0000000..91cf851 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityOaToolbarViewBinding.kt @@ -0,0 +1,263 @@ +package com.rehome.scbaxj.base + + +import android.app.Activity +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.nfc.NdefMessage +import android.nfc.NfcAdapter +import android.nfc.tech.* +import android.os.Build +import android.os.Bundle +import android.view.View +import android.widget.Toast +import androidx.viewbinding.ViewBinding +import com.rehome.scbaxj.R +import com.rehome.scbaxj.utils.ControllerActivity +import com.rehome.scbaxj.utils.OAToolbar +import com.zhy.autolayout.AutoLayoutActivity +import java.nio.charset.StandardCharsets +import java.util.* + + +/** + * Create By HuangWenFei + * 创建日期:2023-01-17 14:40 + * 描述:基类使用ViewBinding,ButterKnife已被作者废弃,不再维护 + */ +abstract class BaseActivityOaToolbarViewBinding : AutoLayoutActivity() { + protected lateinit var binding: T + protected lateinit var mToolbar: OAToolbar + protected lateinit var context: Context + private var nfcAdapter: NfcAdapter? = null + private var readResult = "" + private var pendingIntent: PendingIntent? = null + private lateinit var mFilters: Array + private lateinit var mTechLists: Array> + private var isFirst = true + private var ndef: IntentFilter? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = getViewBinding() + mToolbar = getToolbar() + setContentView(binding.root) + context = this + ControllerActivity.getAppManager().addActivity(this) + initView() + initData() + } + //初始化ViewBinding + protected abstract fun getViewBinding(): T + //初始化OAToolbar + protected abstract fun getToolbar(): OAToolbar + //初始化View + protected abstract fun initView() + //初始化数据 + protected abstract fun initData() + + + fun startActivity(cls: Class?) { + val intent = Intent(this, cls) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + + override fun onPause() { + super.onPause() + if (nfcAdapter != null) { + nfcAdapter!!.disableForegroundDispatch(this) + } + } + + /* + * 重写onResume回调函数的意义在于处理多次读取NFC标签时的情况 + */ + override fun onResume() { + super.onResume() + + // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权. + if (nfcAdapter != null && pendingIntent != null) { + nfcAdapter!!.enableForegroundDispatch( + this, pendingIntent, mFilters, + mTechLists + ) + } + } + + override fun onDestroy() { + super.onDestroy() + ControllerActivity.getAppManager().finishActivity(this) + } + + /** + * 显示toast + * + * @param text + */ + fun showToast(text: String?) { + if (text != null && text.trim { it <= ' ' } != "") { + Toast.makeText(this, text, Toast.LENGTH_SHORT).show() + } + } + + fun showToast(id: Int) { + Toast.makeText(this, id, Toast.LENGTH_SHORT).show() + } + + /** + * 检测工作,判断设备的NFC支持情况 + * + * @return + */ + private fun ifNFCUse(): Boolean { + if (nfcAdapter == null) { + Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show() + return false + } + if (!nfcAdapter!!.isEnabled) { + Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show() + return false + } + return true + } + + /** + * 初始化过程 + */ + fun initNFC() { + + //NFC适配器,所有的关于NFC的操作从该适配器进行 + nfcAdapter = NfcAdapter.getDefaultAdapter(this) + if (!ifNFCUse()) { + return + } + //将被调用的Intent,用于重复被Intent触发后将要执行的跳转 + pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.getActivity( + this, + 0, + Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + } else { + PendingIntent.getActivity( + this, + 0, + Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), + 0 + ) + } + + + //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型 + ndef = IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED) + ndef!!.addCategory("*/*") + mFilters = arrayOf(ndef!!) // 过滤器 + mTechLists = arrayOf( + arrayOf(NfcA::class.java.name), arrayOf( + NfcF::class.java.name + ), arrayOf(NfcB::class.java.name), arrayOf( + NfcV::class.java.name + ), arrayOf(MifareClassic::class.java.name), arrayOf( + MifareUltralight::class.java.name + ), arrayOf(IsoDep::class.java.name) + ) // 允许扫描的标签类型 + if (isFirst) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent + .action + ) { + ndef = IntentFilter() + if (readFromTag(intent)) { + Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show() + } + } + isFirst = false + } + } + + /** + * 2进制to 16进制 + * @param src + * @return + */ + private fun bytesToHex(src: ByteArray?): String { + val sb = StringBuffer() + if (src == null || src.isEmpty()) { + return "" + } + var sTemp: String + for (i in src.indices) { + sTemp = Integer.toHexString(0xFF and src[i].toInt()) + if (sTemp.length < 2) { + sb.append(0) + } + sb.append(sTemp.uppercase(Locale.getDefault())) + } + return sb.toString() + } + + /* + * 有必要要了解onNewIntent回调函数的调用时机,请自行上网查询 + */ + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action || NfcAdapter.ACTION_TECH_DISCOVERED == intent.action) { + val id = bytesToHex(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)) + handleNfc(id) + } + } + + /** + * 读取NFC标签数据的操作 + */ + private fun readFromTag(intent: Intent): Boolean { + if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) { + val rawArray = intent + .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES) + if (rawArray != null) { + val mNdefMsg = rawArray[0] as NdefMessage + val mNdefRecord = mNdefMsg.records[0] + if (mNdefRecord != null) { + readResult = String(mNdefRecord.payload, StandardCharsets.UTF_8) + return true + } + } + return false + } + return false + } + + //处理NFC + open fun handleNfc(result: String) { + //showToast(result); + } + + fun initToolbar( + title: String, + rightText: String, + listenerLeftClick: View.OnClickListener, + listenerRightClick: View.OnClickListener + ) { + mToolbar.setTvTitleText(title) + mToolbar.setTvRightText(rightText) + mToolbar.setIvLeftIcon(R.mipmap.ac_back_icon) + mToolbar.setIvLeftOnClickListener(listenerLeftClick) + mToolbar.setTvRightOnClickListener(listenerRightClick) + } + + fun initToolbar( + title: String, + rightText: String, + listenerRightClick: View.OnClickListener + ) { + mToolbar.setTvTitleText(title) + mToolbar.setTvRightText(rightText) + mToolbar.setIvLeftIcon(R.mipmap.ac_back_icon) + mToolbar.setIvLeftOnClickListener { finish() } + mToolbar.setTvRightOnClickListener(listenerRightClick) + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityViewBinding.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityViewBinding.java new file mode 100644 index 0000000..b0fb57b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseActivityViewBinding.java @@ -0,0 +1,261 @@ +package com.rehome.scbaxj.base; + + + +import android.app.Activity; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NdefMessage; +import android.nfc.NdefRecord; +import android.nfc.NfcAdapter; +import android.nfc.tech.IsoDep; +import android.nfc.tech.MifareClassic; +import android.nfc.tech.MifareUltralight; +import android.nfc.tech.NfcA; +import android.nfc.tech.NfcB; +import android.nfc.tech.NfcF; +import android.nfc.tech.NfcV; +import android.os.Bundle; +import android.os.Parcelable; +import androidx.viewbinding.ViewBinding; +import android.view.View; +import android.widget.Toast; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.utils.ControllerActivity; +import com.rehome.scbaxj.utils.OAToolbar; +import com.zhy.autolayout.AutoLayoutActivity; +import java.nio.charset.StandardCharsets; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 14:25 + * 描述:基类使用ViewBinding,ButterKnife已被作者废弃,不再维护 + */ +public abstract class BaseActivityViewBinding extends AutoLayoutActivity { + + + protected T binding; + OAToolbar mToolbar; + public Context context; + + private NfcAdapter nfcAdapter; + private String readResult = ""; + private PendingIntent pendingIntent; + private IntentFilter[] mFilters; + private String[][] mTechLists; + private boolean isFirst = true; + private IntentFilter ndef; + + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = getViewBinding(); + mToolbar = getToolbar(); + setContentView(binding.getRoot()); + context = this; + ControllerActivity.getAppManager().addActivity(this); + + initView(); + initData(); + } + + //初始化View + protected abstract void initView(); + //初始化数据 + protected abstract void initData(); + protected abstract T getViewBinding(); + protected abstract OAToolbar getToolbar(); + + + public void startActivity(Class cls) { + Intent intent = new Intent(this, cls); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); + startActivity(intent); + } + + @Override + protected void onPause() { + super.onPause(); + if (nfcAdapter != null) { + nfcAdapter.disableForegroundDispatch(this); + } + } + + /* + * 重写onResume回调函数的意义在于处理多次读取NFC标签时的情况 + */ + @Override + protected void onResume() { + super.onResume(); + + // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权. + if (nfcAdapter != null && pendingIntent != null && mFilters != null && mTechLists != null) { + nfcAdapter.enableForegroundDispatch(this, pendingIntent, mFilters, + mTechLists); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + ControllerActivity.getAppManager().finishActivity(this); + context = null; + } + + /** + * 显示toast + * + * @param text + */ + public void showToast(String text) { + if (text != null && !text.trim().equals("")) { + Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); + } + } + + public void showToast(int id) { + Toast.makeText(this, id, Toast.LENGTH_SHORT).show(); + } + + + /** + * 检测工作,判断设备的NFC支持情况 + * + * @return + */ + private Boolean ifNFCUse() { + if (nfcAdapter == null) { + Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show(); + return false; + } + if (!nfcAdapter.isEnabled()) { + Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show(); + return false; + } + return true; + } + + /** + * 初始化过程 + */ + public void initNFC() { + + //NFC适配器,所有的关于NFC的操作从该适配器进行 + nfcAdapter = NfcAdapter.getDefaultAdapter(this); + if (!ifNFCUse()) { + return; + } + //将被调用的Intent,用于重复被Intent触发后将要执行的跳转 + + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + } else { + pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + } + + + //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型 + ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); + ndef.addCategory("*/*"); + mFilters = new IntentFilter[]{ndef};// 过滤器 + mTechLists = new String[][]{new String[]{NfcA.class.getName()}, + new String[]{NfcF.class.getName()}, + new String[]{NfcB.class.getName()}, + new String[]{NfcV.class.getName()}, + new String[]{MifareClassic.class.getName()}, + new String[]{MifareUltralight.class.getName()}, + new String[]{IsoDep.class.getName()}};// 允许扫描的标签类型 + + if (isFirst) { + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent() + .getAction())) { + ndef = new IntentFilter(); + if (readFromTag(getIntent())) { + Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show(); + } + } + isFirst = false; + } + } + + private String ByteArrayToHexString(byte[] inarray) { //converts byte arrays to string + int i, j, in; + String[] hex = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}; + String out = ""; + for (j = 0; j < inarray.length; ++j) { + in = (int) inarray[j] & 0xff; + i = (in >> 4) & 0x0f; + out += hex[i]; + i = in & 0x0f; + out += hex[i]; + } + return out; + } + + /* + * 有必要要了解onNewIntent回调函数的调用时机,请自行上网查询 + */ + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) || + NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { + + String id = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + + if (id != null) { + handleNfc(id); + } + +// if (readFromTag(intent)) { +// Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show(); +// handleNfc(readResult); +// } else { +// Toast.makeText(this, "ID:" + id + " 标签数据为空", Toast.LENGTH_SHORT).show(); +// } + } + } + + /** + * 读取NFC标签数据的操作 + */ + private boolean readFromTag(Intent intent) { + + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { + + Parcelable[] rawArray = intent + .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); + if (rawArray != null) { + NdefMessage mNdefMsg = (NdefMessage) rawArray[0]; + NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; + if (mNdefRecord != null) { + readResult = new String(mNdefRecord.getPayload(), StandardCharsets.UTF_8); + return true; + } + //return false; + } + return false; + } + return false; + } + + //处理NFC + public void handleNfc(String result) { + //showToast(result); + } + public void initToolbar(String title, String rightText, View.OnClickListener listenerLeftClick,View.OnClickListener listenerRightClick) { + mToolbar.setTvTitleText(title); + mToolbar.setTvRightText(rightText); + mToolbar.setIvLeftIcon(R.mipmap.ac_back_icon); + mToolbar.setIvLeftOnClickListener(listenerLeftClick); + mToolbar.setTvRightOnClickListener(listenerRightClick); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseAdapterViewBinding.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseAdapterViewBinding.java new file mode 100644 index 0000000..0dabd35 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseAdapterViewBinding.java @@ -0,0 +1,51 @@ +package com.rehome.scbaxj.base; + + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import androidx.viewbinding.ViewBinding; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 15:17 + * 描述: + */ + +public abstract class BaseAdapterViewBinding extends BaseAdapter { + + private final LayoutInflater inflater; + public BaseAdapterViewBinding(Context context) { + inflater = LayoutInflater.from(context); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + if (null == convertView) { + T binding = getBinding(inflater, parent); + holder = new ViewHolder(binding); + convertView = binding.getRoot(); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + handleData(position, holder.binding); + return convertView; + } + + protected abstract void handleData(int position, T binding); + + protected abstract T getBinding(LayoutInflater inflater, ViewGroup parent); + + class ViewHolder { + + private final T binding; + public ViewHolder(T binding) { + this.binding = binding; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBack.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBack.java new file mode 100755 index 0000000..a20880c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBack.java @@ -0,0 +1,46 @@ +package com.rehome.scbaxj.base; + +import android.content.Context; +import android.widget.Toast; + +import com.rehome.scbaxj.weight.LoadDialog; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * Created by ruihong on 2017/12/22. + */ + +public abstract class BaseCallBack implements Callback { + + private Context context; + + private LoadDialog dialog; + + public BaseCallBack(Context context) { + this.context = context; + dialog = new LoadDialog(context, false, "正在加载中..."); + dialog.show(); + } + + @Override + public void onResponse(Call call, Response response) { + dialog.dismiss(); + onSuccess(call, response); + } + + @Override + public void onFailure(Call call, Throwable t) { + if(dialog!=null){ + dialog.dismiss(); + } + Toast.makeText(context, "网络连接失败" , Toast.LENGTH_SHORT).show(); + onError(call, t); + } + + public abstract void onSuccess(Call call, Response response); + + public abstract void onError(Call call, Throwable t); +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBackNoProgress.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBackNoProgress.java new file mode 100644 index 0000000..bdef531 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseCallBackNoProgress.java @@ -0,0 +1,35 @@ +package com.rehome.scbaxj.base; + + +import android.content.Context; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * Created by ruihong on 2022/03/03. + */ + +public abstract class BaseCallBackNoProgress implements Callback { + + private Context context; + + public BaseCallBackNoProgress(Context context) { + this.context = context; + } + + @Override + public void onResponse(Call call, Response response) { + onSuccess(call, response); + } + + @Override + public void onFailure(Call call, Throwable t) { + //Toast.makeText(context, "网络连接失败" , Toast.LENGTH_SHORT).show(); + onError(call, t); + } + + public abstract void onSuccess(Call call, Response response); + + public abstract void onError(Call call, Throwable t); +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragment.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragment.java new file mode 100755 index 0000000..41af637 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragment.java @@ -0,0 +1,69 @@ +package com.rehome.scbaxj.base; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + + +/** + * Created by Administrator on 2016/9/icon5. + */ +public abstract class BaseFragment extends Fragment { + + + public abstract int getContentViewId(); + public Activity mActivity; + public View view; + public Context context; + + + @Override + public void onAttach(Context context) { + super.onAttach(context); + this.context = context; + mActivity = getActivity(); + } + + @Override + public void onDetach() { + super.onDetach(); + this.context = null; + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + view = inflater.inflate(getContentViewId(), container, false); + return view; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initView(); + initData(); + } + + + protected abstract void initView(); + + public void initData() { + } + + public void showToast(String msg) { + Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show(); + } + + public void showToast(int strId) { + Toast.makeText(getContext(), strId, Toast.LENGTH_SHORT).show(); + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentKotlinViewBinding.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentKotlinViewBinding.kt new file mode 100644 index 0000000..ce27ac7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentKotlinViewBinding.kt @@ -0,0 +1,30 @@ +package com.rehome.scbaxj.base + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 15:13 + * 描述: + */ +abstract class BaseFragmentKotlinViewBinding : Fragment() { + protected var binding: T? = null + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = getBinding(inflater, container) + return binding!!.root + } + + protected abstract fun getBinding(inflater: LayoutInflater?, container: ViewGroup?): T + override fun onDestroyView() { + super.onDestroyView() + binding = null + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentViewBinding.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentViewBinding.java new file mode 100644 index 0000000..1211c32 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/BaseFragmentViewBinding.java @@ -0,0 +1,78 @@ +package com.rehome.scbaxj.base; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.viewbinding.ViewBinding; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-11 15:13 + * 描述: + */ +public abstract class BaseFragmentViewBinding extends Fragment { + + protected Context context; + + protected T binding; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + binding = getBinding(inflater, container); + return binding.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initView(); + initData(); + } + + protected abstract T getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container); + /** + * 初始化视图 + */ + protected abstract void initView(); + + /** + * 初始化数据 + */ + protected abstract void initData(); + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + this.context = context; + } + + @Override + public void onDetach() { + super.onDetach(); + this.context = null; + } + + public void showToast(String msg) { + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); + } + + public void showToast(int strId) { + Toast.makeText(context, strId, Toast.LENGTH_SHORT).show(); + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/MipcaActivityCapture.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/MipcaActivityCapture.java new file mode 100755 index 0000000..1e6bd6b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/MipcaActivityCapture.java @@ -0,0 +1,268 @@ +package com.rehome.scbaxj.base; + +import android.content.Intent; +import android.content.res.AssetFileDescriptor; +import android.graphics.Bitmap; +import android.hardware.Camera; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.MediaPlayer.OnCompletionListener; +import android.os.Bundle; +import android.os.Handler; +import android.os.Vibrator; +import android.view.SurfaceHolder; +import android.view.SurfaceHolder.Callback; +import android.view.SurfaceView; +import android.view.View; +import android.widget.Button; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.zxing.camera.CameraManager; +import com.rehome.scbaxj.zxing.decoding.CaptureActivityHandler; +import com.rehome.scbaxj.zxing.decoding.InactivityTimer; +import com.rehome.scbaxj.zxing.view.ViewfinderView; +import java.io.IOException; +import java.util.Vector; + + +/** + * 二维码扫描界面 + */ +public class MipcaActivityCapture extends BaseActivity implements Callback { + + Button flashlightButton; + private CaptureActivityHandler handler; + private ViewfinderView viewfinderView; + private boolean hasSurface; + private Vector decodeFormats; + private String characterSet; + private InactivityTimer inactivityTimer; + private MediaPlayer mediaPlayer; + private boolean playBeep; + private static final float BEEP_VOLUME = 0.10f; + private boolean vibrate; + private static Camera camera; + private Camera.Parameters params; + private boolean isOpen = true; + + @Override + public int getContentViewID() { + return R.layout.activity_capture; + } + + @Override + protected void initView() { + CameraManager.init(getApplication()); + viewfinderView = findViewById(R.id.viewfinder_view); + hasSurface = false; + inactivityTimer = new InactivityTimer(this); + + title = findViewById(R.id.title); + flashlightButton = findViewById(R.id.flashlightButton); + title.setText("二维码/条码扫描"); + mToolbar = findViewById(R.id.toolbar); + mToolbar.setNavigationIcon(R.mipmap.back); + mToolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + + flashlightButton.setOnClickListener(openListener); + + + } + + private View.OnClickListener openListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + //获取到ZXing相机管理器创建的camera + camera = CameraManager.getCamera(); + params = camera.getParameters(); + // TODO 开灯 + if (isOpen) { + flashlightButton.setText("关闭闪光灯"); + params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); + camera.setParameters(params); + isOpen = false; + } else { // 关灯 + flashlightButton.setText("打开闪光灯"); + params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); + camera.setParameters(params); + isOpen = true; + } + } + }; + + + @Override + protected void onResume() { + super.onResume(); + SurfaceView surfaceView = findViewById(R.id.preview_view); + SurfaceHolder surfaceHolder = surfaceView.getHolder(); + if (hasSurface) { + initCamera(surfaceHolder); + } else { + surfaceHolder.addCallback(this); + surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + } + decodeFormats = null; + characterSet = null; + + playBeep = true; + AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE); + if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { + playBeep = false; + } + initBeepSound(); + vibrate = true; + + } + + @Override + protected void onPause() { + super.onPause(); + if (handler != null) { + handler.quitSynchronously(); + handler = null; + } + CameraManager.get().closeDriver(); + } + + @Override + protected void onDestroy() { + inactivityTimer.shutdown(); + super.onDestroy(); + } + + /** + * ����ɨ���� + * + * @param result + * @param barcode + */ + public void handleDecode(Result result, Bitmap barcode) { + + + inactivityTimer.onActivity(); + + + playBeepSoundAndVibrate(); + + String[] b = result.getText().split("\\t"); + + String Result = b[0]; + + if (Result.equals("")) { + + showToast("Scan failed!"); + + } else { + + Intent resultIntent = new Intent(); + + Bundle bundle = new Bundle(); + + bundle.putString("result", Result); + + resultIntent.putExtras(bundle); + + setResult(RESULT_OK, resultIntent); + } + finish(); + } + + private void initCamera(SurfaceHolder surfaceHolder) { + try { + CameraManager.get().openDriver(surfaceHolder); + } catch (IOException ioe) { + return; + } catch (RuntimeException e) { + return; + } + if (handler == null) { + handler = new CaptureActivityHandler(this, decodeFormats, characterSet); + } + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, + int height) { + + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + if (!hasSurface) { + hasSurface = true; + initCamera(holder); + } + + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + hasSurface = false; + + } + + public ViewfinderView getViewfinderView() { + return viewfinderView; + } + + public Handler getHandler() { + return handler; + } + + public void drawViewfinder() { + viewfinderView.drawViewfinder(); + + } + + private void initBeepSound() { + if (playBeep && mediaPlayer == null) { + // The volume on STREAM_SYSTEM is not adjustable, and users found it + // too loud, + // so we now play on the music stream. + setVolumeControlStream(AudioManager.STREAM_MUSIC); + mediaPlayer = new MediaPlayer(); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mediaPlayer.setOnCompletionListener(beepListener); + + AssetFileDescriptor file = getResources().openRawResourceFd( + R.raw.beep); + try { + mediaPlayer.setDataSource(file.getFileDescriptor(), + file.getStartOffset(), file.getLength()); + file.close(); + mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); + mediaPlayer.prepare(); + } catch (IOException e) { + mediaPlayer = null; + } + } + } + + private static final long VIBRATE_DURATION = 200L; + + private void playBeepSoundAndVibrate() { + if (playBeep && mediaPlayer != null) { + mediaPlayer.start(); + } + if (vibrate) { + Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); + vibrator.vibrate(VIBRATE_DURATION); + } + } + + /** + * When the beep has finished playing, rewind to queue up another one. + */ + private final OnCompletionListener beepListener = new OnCompletionListener() { + public void onCompletion(MediaPlayer mediaPlayer) { + mediaPlayer.seekTo(0); + } + }; +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/NfcTestActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/NfcTestActivity.java new file mode 100644 index 0000000..ee1dd1c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/base/NfcTestActivity.java @@ -0,0 +1,145 @@ +package com.rehome.scbaxj.base; + +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.AppCompatActivity; + +import android.annotation.SuppressLint; +import android.app.PendingIntent; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NfcAdapter; +import android.nfc.Tag; +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import android.widget.TextView; + +import com.rehome.scbaxj.R; + +/** + * @author Flash + * 创建时间:2021-07-30 11:14 + */ +public class NfcTestActivity extends AppCompatActivity { + + NfcAdapter mNfcAdapter; + PendingIntent pIntent; + TextView nfc; + + @SuppressLint("MissingInflatedId") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_nfc_test); + nfc = findViewById(R.id.tv_nfc); + initNfc(); + Log.i("FlashTestNFC", "onCreate"); + } + + @Override + protected void onStop() { + super.onStop(); + Log.i("FlashTestNFC", "onStop"); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + Log.i("FlashTestNFC", "onDestroy"); + } + + /** + * 初始化 + */ + private void initNfc(){ + mNfcAdapter = NfcAdapter.getDefaultAdapter(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + pIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + }else{ + pIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + } + //pIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + + //在Manifest里或者这里设置当前activity启动模式,否则每次向阳NFC事件,activity会重复创建 + // 当然也要按照具体情况来,你设置成singleTask也不是不行, + //pIntent = PendingIntent.getActivity(this, 0,new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + //这里必须setIntent,set NFC事件响应后的intent才能拿到数据 + setIntent(intent); + Log.i("FlashTestNFC", "onNewIntent"); + Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG); + + //TODO 获取数据进行下一步处理 + if(tag!=null){ + Log.i("FlashTestNFC--Tag", bytesToHex(tag.getId())); + nfc.setText(bytesToHex(tag.getId())); + }else{ + Log.i("FlashTestNFC--Tag", "tag.getId() is null"); + } + + + } + + @Override + protected void onResume() { + super.onResume(); + Log.i("FlashTestNFC", "onResume"); + if (mNfcAdapter != null) { + //添加intent-filter + IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); + IntentFilter tag = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); + IntentFilter tech = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); + IntentFilter[] filters = new IntentFilter[]{ndef, tag, tech}; + + //添加 ACTION_TECH_DISCOVERED 情况下所能读取的NFC格式,这里列的比较全,实际我这里是没有用到的,因为测试的卡是NDEF的 + String[][] techList = new String[][]{ + new String[]{ + "android.nfc.tech.Ndef", + "android.nfc.tech.NfcA", + "android.nfc.tech.NfcB", + "android.nfc.tech.NfcF", + "android.nfc.tech.NfcV", + "android.nfc.tech.NdefFormatable", + "android.nfc.tech.MifareClassic", + "android.nfc.tech.MifareUltralight", + "android.nfc.tech.NfcBarcode" + } + }; + mNfcAdapter.enableForegroundDispatch(this, pIntent, filters, techList); + } + } + + @Override + protected void onPause() { + super.onPause(); + Log.i("FlashTestNFC", "onPause"); + if (mNfcAdapter != null) { + mNfcAdapter.disableForegroundDispatch(this); + } + } + + /** + * 2进制to 16进制 + * @param src + * @return + */ + private static String bytesToHex(byte[] src){ + StringBuffer sb = new StringBuffer(); + if (src == null || src.length <= 0) { + return null; + } + String sTemp; + for (int i = 0; i < src.length; i++) { + sTemp = Integer.toHexString(0xFF & src[i]); + if (sTemp.length() < 2){ + sb.append(0); + } + sb.append(sTemp.toUpperCase()); + } + return sb.toString(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ApkUpdateBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ApkUpdateBean.java new file mode 100755 index 0000000..39ae5fd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ApkUpdateBean.java @@ -0,0 +1,74 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +public class ApkUpdateBean { + + private String Total; + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + + private String versionname="1.0.0"; + private String versioncode="1"; + private String apkurl=""; + private String bz=""; + private String appdesc=""; + + public String getVersionname() { + return versionname; + } + + public void setVersionname(String versionname) { + this.versionname = versionname; + } + + public String getVersioncode() { + return versioncode; + } + + public void setVersioncode(String versioncode) { + this.versioncode = versioncode; + } + + public String getApkurl() { + return apkurl; + } + + public void setApkurl(String apkurl) { + this.apkurl = apkurl; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getAppdesc() { + return appdesc; + } + + public void setAppdesc(String appdesc) { + this.appdesc = appdesc; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjclbBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjclbBean.java new file mode 100755 index 0000000..15450da --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjclbBean.java @@ -0,0 +1,222 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2017/12/28. + */ + +public class AqjclbBean implements Parcelable { + /** + * state : 1 + * msg : + * data : [{"JHID":"jh00000000061","JHMC":"TEST1","ST":"2017/12/20 0:00:00","ET":"2017/12/30 0:00:00","JCFW":"123123","TJR":"SH_Admin","TJSJ":"2017/12/21 16:38:57","XGR":"","XGSJ":""},{"JHID":"jh00000000072","JHMC":"test9","ST":"2017/12/13 0:00:00","ET":"2017/12/30 0:00:00","JCFW":"123","TJR":"SH_Admin","TJSJ":"2017/12/22 13:41:44","XGR":"SH_Admin","XGSJ":"2017/12/22 13:41:48"},{"JHID":"jh00000000075","JHMC":"TEST13","ST":"2017/12/7 0:00:00","ET":"2017/12/29 0:00:00","JCFW":"123","TJR":"SH_Admin","TJSJ":"2017/12/22 13:50:24","XGR":"","XGSJ":""},{"JHID":"jh00000000064","JHMC":"TEST4","ST":"2017/12/16 0:00:00","ET":"2017/12/30 0:00:00","JCFW":"123123","TJR":"SH_Admin","TJSJ":"2017/12/22 9:31:48","XGR":"","XGSJ":""},{"JHID":"jh00000000066","JHMC":"TEST5","ST":"2017/12/21 0:00:00","ET":"2018/1/6 0:00:00","JCFW":"123","TJR":"SH_Admin","TJSJ":"2017/12/22 9:56:35","XGR":"","XGSJ":""},{"JHID":"jh00000000068","JHMC":"TEST6","ST":"2017/12/22 0:00:00","ET":"2017/12/29 0:00:00","JCFW":"1111","TJR":"SH_Admin","TJSJ":"2017/12/22 10:16:42","XGR":"","XGSJ":""}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean implements Parcelable { + /** + * JHID : jh00000000061 + * JHMC : TEST1 + * ST : 2017/12/20 0:00:00 + * ET : 2017/12/30 0:00:00 + * JCFW : 123123 + * TJR : SH_Admin + * TJSJ : 2017/12/21 16:38:57 + * XGR : + * XGSJ : + */ + + private String JHID; + private String JHMC; + private String ST; + private String ET; + private String JCFW; + private String TJR; + private String TJSJ; + private String XGR; + private String XGSJ; + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getET() { + return ET; + } + + public void setET(String ET) { + this.ET = ET; + } + + public String getJCFW() { + return JCFW; + } + + public void setJCFW(String JCFW) { + this.JCFW = JCFW; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getXGR() { + return XGR; + } + + public void setXGR(String XGR) { + this.XGR = XGR; + } + + public String getXGSJ() { + return XGSJ; + } + + public void setXGSJ(String XGSJ) { + this.XGSJ = XGSJ; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.JHID); + dest.writeString(this.JHMC); + dest.writeString(this.ST); + dest.writeString(this.ET); + dest.writeString(this.JCFW); + dest.writeString(this.TJR); + dest.writeString(this.TJSJ); + dest.writeString(this.XGR); + dest.writeString(this.XGSJ); + } + + public DataBean() { + } + + protected DataBean(Parcel in) { + this.JHID = in.readString(); + this.JHMC = in.readString(); + this.ST = in.readString(); + this.ET = in.readString(); + this.JCFW = in.readString(); + this.TJR = in.readString(); + this.TJSJ = in.readString(); + this.XGR = in.readString(); + this.XGSJ = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.state); + dest.writeString(this.msg); + dest.writeList(this.data); + } + + public AqjclbBean() { + } + + protected AqjclbBean(Parcel in) { + this.state = in.readInt(); + this.msg = in.readString(); + this.data = new ArrayList(); + in.readList(this.data, DataBean.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public AqjclbBean createFromParcel(Parcel source) { + return new AqjclbBean(source); + } + + @Override + public AqjclbBean[] newArray(int size) { + return new AqjclbBean[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjcrwListBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjcrwListBean.java new file mode 100755 index 0000000..d319f89 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/AqjcrwListBean.java @@ -0,0 +1,358 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +/** + * Created by ruihong on 2018/1/20. + */ + +public class AqjcrwListBean { + /** + * state : 1 + * msg : + * data : [{"RWID":"RW00000000071","RWZT":"2","RWZT_NAME":"整改中","JHID":"jh00000000101","JHMC":"TEST1","WTQY":"13123123123123123131","WTMS":"234213546432134","FXLB":"","YHDJ":"","ZRBM":"BM00003","LRR":"管理员","LRSJ":"2018/1/20 10:21:38","SCSJ":"2018/1/20 10:20:41","TJSJ":"2018/1/20 10:21:35","APR":"管理员","APSJ":"2018/1/20 10:21:51","ZGJG":"","ZGR":"管理员","ZGSJ":"","QRR":"","QRSJ":"","QRBZ":"","IMG":[{"IMGLX":"0","IMGURL":"AQJC_IMG/jh00000000101/B18B074D8B8E4CB4B6C4515258A25E22.jpg"}]},{"RWID":"RW00000000072","RWZT":"2","RWZT_NAME":"整改中","JHID":"jh00000000101","JHMC":"TEST1","WTQY":"如意","WTMS":"测试","FXLB":"","YHDJ":"","ZRBM":"BM00003","LRR":"管理员","LRSJ":"2018/1/20 10:21:56","SCSJ":"2018/1/20 10:20:59","TJSJ":"2018/1/20 10:21:12","APR":"管理员","APSJ":"2018/1/20 10:21:30","ZGJG":"","ZGR":"管理员","ZGSJ":"","QRR":"","QRSJ":"","QRBZ":"","IMG":[{"IMGLX":"0","IMGURL":"AQJC_IMG/jh00000000101/7BF8F27227F94BC5A8B28381F0065555.jpg"}]}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean implements Parcelable { + + + private String RWID; + private String RWZT; + private String RWZT_NAME; + private String JHID; + private String JHMC; + private String WTQY; + private String WTMS; + private String FXLB; + private String YHDJ; + private String ZRBM; + private String LRR; + private String LRSJ; + private String SCSJ; + private String TJSJ; + private String APR; + private String APSJ; + private String ZGJG; + private String ZGR; + private String ZGSJ; + private String QRR; + private String QRSJ; + private String QRBZ; + private List IMG; + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getRWZT() { + return RWZT; + } + + public void setRWZT(String RWZT) { + this.RWZT = RWZT; + } + + public String getRWZT_NAME() { + return RWZT_NAME; + } + + public void setRWZT_NAME(String RWZT_NAME) { + this.RWZT_NAME = RWZT_NAME; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getWTQY() { + return WTQY; + } + + public void setWTQY(String WTQY) { + this.WTQY = WTQY; + } + + public String getWTMS() { + return WTMS; + } + + public void setWTMS(String WTMS) { + this.WTMS = WTMS; + } + + public String getFXLB() { + return FXLB; + } + + public void setFXLB(String FXLB) { + this.FXLB = FXLB; + } + + public String getYHDJ() { + return YHDJ; + } + + public void setYHDJ(String YHDJ) { + this.YHDJ = YHDJ; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getLRR() { + return LRR; + } + + public void setLRR(String LRR) { + this.LRR = LRR; + } + + public String getLRSJ() { + return LRSJ; + } + + public void setLRSJ(String LRSJ) { + this.LRSJ = LRSJ; + } + + public String getSCSJ() { + return SCSJ; + } + + public void setSCSJ(String SCSJ) { + this.SCSJ = SCSJ; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getAPR() { + return APR; + } + + public void setAPR(String APR) { + this.APR = APR; + } + + public String getAPSJ() { + return APSJ; + } + + public void setAPSJ(String APSJ) { + this.APSJ = APSJ; + } + + public String getZGJG() { + return ZGJG; + } + + public void setZGJG(String ZGJG) { + this.ZGJG = ZGJG; + } + + public String getZGR() { + return ZGR; + } + + public void setZGR(String ZGR) { + this.ZGR = ZGR; + } + + public String getZGSJ() { + return ZGSJ; + } + + public void setZGSJ(String ZGSJ) { + this.ZGSJ = ZGSJ; + } + + public String getQRR() { + return QRR; + } + + public void setQRR(String QRR) { + this.QRR = QRR; + } + + public String getQRSJ() { + return QRSJ; + } + + public void setQRSJ(String QRSJ) { + this.QRSJ = QRSJ; + } + + public String getQRBZ() { + return QRBZ; + } + + public void setQRBZ(String QRBZ) { + this.QRBZ = QRBZ; + } + + public List getIMG() { + return IMG; + } + + public void setIMG(List IMG) { + this.IMG = IMG; + } + + public static class IMGBean { + /** + * IMGLX : 0 + * IMGURL : AQJC_IMG/jh00000000101/B18B074D8B8E4CB4B6C4515258A25E22.jpg + */ + + private String IMGLX; + private String IMGURL; + + public String getIMGLX() { + return IMGLX; + } + + public void setIMGLX(String IMGLX) { + this.IMGLX = IMGLX; + } + + public String getIMGURL() { + return IMGURL; + } + + public void setIMGURL(String IMGURL) { + this.IMGURL = IMGURL; + } + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.RWID); + dest.writeString(this.RWZT); + dest.writeString(this.RWZT_NAME); + dest.writeString(this.JHID); + dest.writeString(this.JHMC); + dest.writeString(this.WTQY); + dest.writeString(this.WTMS); + dest.writeString(this.FXLB); + dest.writeString(this.YHDJ); + dest.writeString(this.ZRBM); + dest.writeString(this.LRR); + dest.writeString(this.LRSJ); + dest.writeString(this.SCSJ); + dest.writeString(this.TJSJ); + dest.writeString(this.APR); + dest.writeString(this.APSJ); + dest.writeString(this.ZGJG); + dest.writeString(this.ZGR); + dest.writeString(this.ZGSJ); + dest.writeString(this.QRR); + dest.writeString(this.QRSJ); + dest.writeString(this.QRBZ); + } + + public DataBean() { + } + + protected DataBean(Parcel in) { + this.RWID = in.readString(); + this.RWZT = in.readString(); + this.RWZT_NAME = in.readString(); + this.JHID = in.readString(); + this.JHMC = in.readString(); + this.WTQY = in.readString(); + this.WTMS = in.readString(); + this.FXLB = in.readString(); + this.YHDJ = in.readString(); + this.ZRBM = in.readString(); + this.LRR = in.readString(); + this.LRSJ = in.readString(); + this.SCSJ = in.readString(); + this.TJSJ = in.readString(); + this.APR = in.readString(); + this.APSJ = in.readString(); + this.ZGJG = in.readString(); + this.ZGR = in.readString(); + this.ZGSJ = in.readString(); + this.QRR = in.readString(); + this.QRSJ = in.readString(); + this.QRBZ = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BaRouteBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BaRouteBean.java new file mode 100644 index 0000000..f9e10c8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BaRouteBean.java @@ -0,0 +1,42 @@ +package com.rehome.scbaxj.bean; + +import com.rehome.scbaxj.DBModel.BaRoute; +import com.rehome.scbaxj.DBModel.Profession; + +import java.util.ArrayList; +import java.util.List; + +/** + * Create By HuangWenFei + * 创建日期:2023-04-23 15:07 + * 描述:保安路线接口 + */ +public class BaRouteBean { + private String state; + private String msg; + private List data = new ArrayList<>(); + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BasicDataBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BasicDataBean.java new file mode 100755 index 0000000..699543c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BasicDataBean.java @@ -0,0 +1,71 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/27. + */ + +public class BasicDataBean { + + + /** + * state : 1 + * msg : 获取成功 + * data : [{"id":"7","name":"灰控"},{"id":"6","name":"脱硫"},{"id":"5","name":"#2汽机"},{"id":"4","name":"#1汽机"},{"id":"3","name":"#2锅炉"},{"id":"2","name":"#1锅炉"},{"id":"1","name":"电气网控"},{"id":"8","name":"化学"},{"id":"9","name":"厂用电"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * id : 7 + * name : 灰控 + */ + + private String id; + private String name; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmBean.java new file mode 100755 index 0000000..f6ae775 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmBean.java @@ -0,0 +1,64 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/20. + */ + +public class BmBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * BMID : 121790701 + * BMMC : 策划分部 + */ + + private String BMID; + private String BMMC; + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + public String getBMMC() { + return BMMC; + } + + public void setBMMC(String BMMC) { + this.BMMC = BMMC; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmidBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmidBean.java new file mode 100755 index 0000000..c151c54 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/BmidBean.java @@ -0,0 +1,61 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/5/10. + */ + +public class BmidBean { + + + /** + * Rows : [{"re_tm_no_p":"91","re_tm_de":"策划分部"}] + * Total : 1 + */ + + private String Total; + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + /** + * re_tm_no_p : 91 + * re_tm_de : 策划分部 + */ + + private String re_tm_no_p; + private String re_tm_de; + + public String getRe_tm_no_p() { + return re_tm_no_p; + } + + public void setRe_tm_no_p(String re_tm_no_p) { + this.re_tm_no_p = re_tm_no_p; + } + + public String getRe_tm_de() { + return re_tm_de; + } + + public void setRe_tm_de(String re_tm_de) { + this.re_tm_de = re_tm_de; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ContactListBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ContactListBean.java new file mode 100755 index 0000000..daf3751 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ContactListBean.java @@ -0,0 +1,128 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/4. + *

+ * 通讯录 + */ + +public class ContactListBean { + + + private List Rows; + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + /** + * DeptName : 厂领导 + * orderlist : [{"name":"高苑辉","telephone":"","address_tel":""},{"name":"张洪刚","telephone":"","address_tel":""},{"name":"石喜光","telephone":"","address_tel":""},{"name":"齐晓波","telephone":"","address_tel":""},{"name":"陈运强","telephone":"","address_tel":""}] + */ + + private String DeptName; + private List orderlist; + + public String getDeptName() { + return DeptName; + } + + public void setDeptName(String DeptName) { + this.DeptName = DeptName; + } + + public List getOrderlist() { + return orderlist; + } + + public void setOrderlist(List orderlist) { + this.orderlist = orderlist; + } + + public static class OrderlistBean { + /** + * name : 高苑辉 + * telephone : + * address_tel : + */ + + private String name; + private String telephone; + private String address_tel; + private String groupName; + private String man_id; + private String account_head; + + public OrderlistBean(String name, String telephone, String address_tel, String groupName, String account_head) { + this.name = name; + this.telephone = telephone; + this.address_tel = address_tel; + this.groupName = groupName; + this.account_head = account_head; + } + + public OrderlistBean(String groupName) { + this.groupName = groupName; + } + + public OrderlistBean() { + + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getAddress_tel() { + return address_tel; + } + + public void setAddress_tel(String address_tel) { + this.address_tel = address_tel; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getMan_id() { + return man_id; + } + + public void setMan_id(String man_id) { + this.man_id = man_id; + } + + public String getAccount_head() { + return account_head; + } + + public void setAccount_head(String account_head) { + this.account_head = account_head; + } + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DeviceTreeBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DeviceTreeBean.java new file mode 100644 index 0000000..d2f72cd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DeviceTreeBean.java @@ -0,0 +1,188 @@ +package com.rehome.scbaxj.bean; + + + +import android.os.Parcel; +import android.os.Parcelable; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/4/17. + * 设备列表 + */ + +public class DeviceTreeBean implements Parcelable { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean implements Parcelable{ + /** + * 设备数据 + */ + private String ID; // 7241, //账号id + private String NNAME; // "用户原因", //原因名称 + private String PARENTID; // 0, //父id 0表示父节点 + private String ISLEAF; //0, //是否是叶子节点 1为叶子节点 + private int DISPLAY_ORDER; // 1 //同一个级别的显示顺序 + private boolean isExpand = false; //是否展开了 + private boolean isSelected = false; //是否选中了 + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } + + public String getNNAME() { + return NNAME; + } + + public void setNNAME(String NNAME) { + this.NNAME = NNAME; + } + + public String getPARENTID() { + return PARENTID; + } + + public void setPARENTID(String PARENTID) { + this.PARENTID = PARENTID; + } + + public String getISLEAF() { + return ISLEAF; + } + + public void setISLEAF(String ISLEAF) { + this.ISLEAF = ISLEAF; + } + + public int getDISPLAY_ORDER() { + return DISPLAY_ORDER; + } + + public void setDISPLAY_ORDER(int DISPLAY_ORDER) { + this.DISPLAY_ORDER = DISPLAY_ORDER; + } + + public boolean isExpand() { + return isExpand; + } + + public void setExpand(boolean expand) { + isExpand = expand; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.ID); + dest.writeString(this.NNAME); + dest.writeString(this.PARENTID); + dest.writeString(this.ISLEAF); + dest.writeInt(this.DISPLAY_ORDER); + dest.writeByte((byte)(this.isExpand ?1:0)); + dest.writeByte((byte)(this.isSelected ?1:0)); + } + + public DataBean() { + } + + protected DataBean(Parcel in) { + this.ID = in.readString(); + this.NNAME = in.readString(); + this.PARENTID = in.readString(); + this.ISLEAF = in.readString(); + this.DISPLAY_ORDER = in.readInt(); + this.isExpand = in.readByte()!=0; + this.isSelected = in.readByte()!=0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.state); + dest.writeString(this.msg); + dest.writeList(this.data); + } + + public DeviceTreeBean() { + } + + protected DeviceTreeBean(Parcel in) { + this.state = in.readInt(); + this.msg = in.readString(); + this.data = new ArrayList(); + in.readList(this.data, DataBean.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DeviceTreeBean createFromParcel(Parcel source) { + return new DeviceTreeBean(source); + } + + @Override + public DeviceTreeBean[] newArray(int size) { + return new DeviceTreeBean[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DjAjhGzInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DjAjhGzInfo.java new file mode 100755 index 0000000..7487d3c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DjAjhGzInfo.java @@ -0,0 +1,37 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by gzw on 2016/11/10. + */ + +public class DjAjhGzInfo { + + private String xh; + private String qy; + private String djrw; + + public String getXh() { + return xh; + } + + public void setXh(String xh) { + this.xh = xh; + } + + public String getQy() { + return qy; + } + + public void setQy(String qy) { + this.qy = qy; + } + + public String getDjrw() { + return djrw; + } + + public void setDjrw(String djrw) { + this.djrw = djrw; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DlbInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DlbInfo.java new file mode 100755 index 0000000..24c06be --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DlbInfo.java @@ -0,0 +1,76 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Administrator on 2016/8/22. + */ +public class DlbInfo { + + private int xh; + private String dian; + private boolean statu; + private String cjjg; + private String sbid;//后来加上的设备id + + + + private String scid; + + + public DlbInfo() { + } + + public DlbInfo(int xh, String dian, boolean statu, String sbid) { + this.xh = xh; + this.dian = dian; + this.statu = statu; + this.sbid = sbid; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getCjjg() { + return cjjg; + } + + public void setCjjg(String cjjg) { + this.cjjg = cjjg; + } + + public int getXh() { + return xh; + } + + public void setXh(int xh) { + this.xh = xh; + } + + public String getDian() { + return dian; + } + + public void setDian(String dian) { + this.dian = dian; + } + + public boolean isStatu() { + return statu; + } + + public void setStatu(boolean statu) { + this.statu = statu; + } + + public String getSbid() { + return sbid; + } + + public void setSbid(String sbid) { + this.sbid = sbid; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzRequestInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzRequestInfo.java new file mode 100644 index 0000000..14f5003 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzRequestInfo.java @@ -0,0 +1,86 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Rehome-rjb1 on 2021/12/09. + * 定期工作请求数据 + */ +public class DqgzRequestInfo { + /** + * action : DQGZ_RWLB_GET + * zc : 值次(班组编号) + * jhid : 计划ID + */ + private String action; + private String BZ; + private String ZY; + private String JZ; + private String QY; + private String RWLX; + private String MK; + //RWZT=0 是查所有未执行的 传空或其他条件是查询历史记录的 + private Integer RWZT; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getBZ() { + return BZ; + } + + public void setBZ(String BZ) { + this.BZ = BZ; + } + + public String getZY() { + return ZY; + } + + public void setZY(String ZY) { + this.ZY = ZY; + } + + public String getJZ() { + return JZ; + } + + public void setJZ(String JZ) { + this.JZ = JZ; + } + + public String getQY() { + return QY; + } + + public void setQY(String QY) { + this.QY = QY; + } + + public String getRWLX() { + return RWLX; + } + + public void setRWLX(String RWLX) { + this.RWLX = RWLX; + } + + public String getMK() { + return MK; + } + + public void setMK(String MK) { + this.MK = MK; + } + + public Integer getRWZT() { + return RWZT; + } + + public void setRWZT(Integer RWZT) { + this.RWZT = RWZT; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzUpLoadBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzUpLoadBean.java new file mode 100644 index 0000000..1d113c2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DqgzUpLoadBean.java @@ -0,0 +1,71 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +public class DqgzUpLoadBean { + private String action; + private String SCR; + private List data; + public static class data { + private String RWID; + private String SCNR; + private String SCBZ; + private String DATE; + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getSCNR() { + return SCNR; + } + + public void setSCNR(String SCNR) { + this.SCNR = SCNR; + } + + public String getSCBZ() { + return SCBZ; + } + + public void setSCBZ(String SCBZ) { + this.SCBZ = SCBZ; + } + + public String getDATE() { + return DATE; + } + + public void setDATE(String DATE) { + this.DATE = DATE; + } + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getSCR() { + return SCR; + } + + public void setSCR(String SCR) { + this.SCR = SCR; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbListBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbListBean.java new file mode 100755 index 0000000..43ba35a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbListBean.java @@ -0,0 +1,97 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/3. + */ + +public class DxxSbListBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String ID; + private String JZ; + private String JZNAME; + private String SBNAME; + private String TYPE; + private String DEPTNAME; + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } + + public String getJZ() { + return JZ; + } + + public void setJZ(String JZ) { + this.JZ = JZ; + } + + public String getJZNAME() { + return JZNAME; + } + + public void setJZNAME(String JZNAME) { + this.JZNAME = JZNAME; + } + + public String getSBNAME() { + return SBNAME; + } + + public void setSBNAME(String SBNAME) { + this.SBNAME = SBNAME; + } + + public String getTYPE() { + return TYPE; + } + + public void setTYPE(String TYPE) { + this.TYPE = TYPE; + } + + public String getDEPTNAME() { + return DEPTNAME; + } + + public void setDEPTNAME(String DEPTNAME) { + this.DEPTNAME = DEPTNAME; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbUploadBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbUploadBean.java new file mode 100755 index 0000000..15a983c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxSbUploadBean.java @@ -0,0 +1,356 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/4. + */ + +public class DxxSbUploadBean { + private String Action; + private String FID; + private String ZJTIME; + private String TITLE; + private String NEXTATUSER; + private String ISAUDIT; + private String EDITTIME; + private String WORKUSERID; + private String JLUSERID; + private String CJUSERID; + private String ISBHG; + private String ISWC; + private String WCINTRO; + private String EDITUSERID; + private String CLASSID; + private String NODEID; + private String PRENODEID; + private String DEPTID; + private String ADDUSERID; + private String ADDTIME; + private String AUDITDEPTID; + private String AUDITUSERID; + private String AUDITTIME; + private String AUDITSTATE; + private String NODETYPE; + private String SIGNCOUNT; + private String SIGNATCOUNT; + private String ISRUN; + private String PROUSERID; + private String STATE; + private String DataTotal; + private List ZJDSBLIST; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getFID() { + return FID; + } + + public void setFID(String FID) { + this.FID = FID; + } + + public String getZJTIME() { + return ZJTIME; + } + + public void setZJTIME(String ZJTIME) { + this.ZJTIME = ZJTIME; + } + + public String getTITLE() { + return TITLE; + } + + public void setTITLE(String TITLE) { + this.TITLE = TITLE; + } + + public String getNEXTATUSER() { + return NEXTATUSER; + } + + public void setNEXTATUSER(String NEXTATUSER) { + this.NEXTATUSER = NEXTATUSER; + } + + public String getISAUDIT() { + return ISAUDIT; + } + + public void setISAUDIT(String ISAUDIT) { + this.ISAUDIT = ISAUDIT; + } + + public String getEDITTIME() { + return EDITTIME; + } + + public void setEDITTIME(String EDITTIME) { + this.EDITTIME = EDITTIME; + } + + public String getWORKUSERID() { + return WORKUSERID; + } + + public void setWORKUSERID(String WORKUSERID) { + this.WORKUSERID = WORKUSERID; + } + + public String getJLUSERID() { + return JLUSERID; + } + + public void setJLUSERID(String JLUSERID) { + this.JLUSERID = JLUSERID; + } + + public String getCJUSERID() { + return CJUSERID; + } + + public void setCJUSERID(String CJUSERID) { + this.CJUSERID = CJUSERID; + } + + public String getISBHG() { + return ISBHG; + } + + public void setISBHG(String ISBHG) { + this.ISBHG = ISBHG; + } + + public String getISWC() { + return ISWC; + } + + public void setISWC(String ISWC) { + this.ISWC = ISWC; + } + + public String getWCINTRO() { + return WCINTRO; + } + + public void setWCINTRO(String WCINTRO) { + this.WCINTRO = WCINTRO; + } + + public String getEDITUSERID() { + return EDITUSERID; + } + + public void setEDITUSERID(String EDITUSERID) { + this.EDITUSERID = EDITUSERID; + } + + public String getCLASSID() { + return CLASSID; + } + + public void setCLASSID(String CLASSID) { + this.CLASSID = CLASSID; + } + + public String getNODEID() { + return NODEID; + } + + public void setNODEID(String NODEID) { + this.NODEID = NODEID; + } + + public String getPRENODEID() { + return PRENODEID; + } + + public void setPRENODEID(String PRENODEID) { + this.PRENODEID = PRENODEID; + } + + public String getDEPTID() { + return DEPTID; + } + + public void setDEPTID(String DEPTID) { + this.DEPTID = DEPTID; + } + + public String getADDUSERID() { + return ADDUSERID; + } + + public void setADDUSERID(String ADDUSERID) { + this.ADDUSERID = ADDUSERID; + } + + public String getADDTIME() { + return ADDTIME; + } + + public void setADDTIME(String ADDTIME) { + this.ADDTIME = ADDTIME; + } + + public String getAUDITDEPTID() { + return AUDITDEPTID; + } + + public void setAUDITDEPTID(String AUDITDEPTID) { + this.AUDITDEPTID = AUDITDEPTID; + } + + public String getAUDITUSERID() { + return AUDITUSERID; + } + + public void setAUDITUSERID(String AUDITUSERID) { + this.AUDITUSERID = AUDITUSERID; + } + + public String getAUDITTIME() { + return AUDITTIME; + } + + public void setAUDITTIME(String AUDITTIME) { + this.AUDITTIME = AUDITTIME; + } + + public String getAUDITSTATE() { + return AUDITSTATE; + } + + public void setAUDITSTATE(String AUDITSTATE) { + this.AUDITSTATE = AUDITSTATE; + } + + public String getNODETYPE() { + return NODETYPE; + } + + public void setNODETYPE(String NODETYPE) { + this.NODETYPE = NODETYPE; + } + + public String getSIGNCOUNT() { + return SIGNCOUNT; + } + + public void setSIGNCOUNT(String SIGNCOUNT) { + this.SIGNCOUNT = SIGNCOUNT; + } + + public String getSIGNATCOUNT() { + return SIGNATCOUNT; + } + + public void setSIGNATCOUNT(String SIGNATCOUNT) { + this.SIGNATCOUNT = SIGNATCOUNT; + } + + public String getISRUN() { + return ISRUN; + } + + public void setISRUN(String ISRUN) { + this.ISRUN = ISRUN; + } + + public String getPROUSERID() { + return PROUSERID; + } + + public void setPROUSERID(String PROUSERID) { + this.PROUSERID = PROUSERID; + } + + public String getSTATE() { + return STATE; + } + + public void setSTATE(String STATE) { + this.STATE = STATE; + } + + public String getDataTotal() { + return DataTotal; + } + + public void setDataTotal(String dataTotal) { + DataTotal = dataTotal; + } + + public List getZJDSBLIST() { + return ZJDSBLIST; + } + + public void setZJDSBLIST(List ZJDSBLIST) { + this.ZJDSBLIST = ZJDSBLIST; + } + + public static class ZJDSBLIST { + private String SBID; + private String FID; + private String TYPE; + private String JZ; + private String SBCODE; + private String SBNAME; + + public String getSBID() { + return SBID; + } + + public void setSBID(String SBID) { + this.SBID = SBID; + } + + public String getFID() { + return FID; + } + + public void setFID(String FID) { + this.FID = FID; + } + + public String getTYPE() { + return TYPE; + } + + public void setTYPE(String TYPE) { + this.TYPE = TYPE; + } + + public String getJZ() { + return JZ; + } + + public void setJZ(String JZ) { + this.JZ = JZ; + } + + public String getSBCODE() { + return SBCODE; + } + + public void setSBCODE(String SBCODE) { + this.SBCODE = SBCODE; + } + + public String getSBNAME() { + return SBNAME; + } + + public void setSBNAME(String SBNAME) { + this.SBNAME = SBNAME; + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxZjrwBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxZjrwBean.java new file mode 100755 index 0000000..95fba8b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/DxxZjrwBean.java @@ -0,0 +1,161 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/3. + */ + +public class DxxZjrwBean { + + + /** + * state : 0 + * msg : + * data : [{"JHTITLE":"307B#3机组B级检修","FILEBAGTITLE":"油漆防腐项目作业指导书(第二版)","FILEBAGID":"587","ZJDNAME":"见证点W-1","PROUSERID":"280865","PROUSERNAME":"黎立威(点检定修策划工程师)","ZJDID":"2471","WZJSBCOUNT":"0","WORKUSERID":"130636","CJUSERID":"","JLUSERID":""},{"JHTITLE":"307B#3机组B级检修","FILEBAGTITLE":"油漆防腐项目作业指导书(第二版)","FILEBAGID":"587","ZJDNAME":"停工待检点H-2","PROUSERID":"280865","PROUSERNAME":"黎立威(点检定修策划工程师)","ZJDID":"2473","WZJSBCOUNT":"0","WORKUSERID":"","CJUSERID":"","JLUSERID":""},{"JHTITLE":"307B#3机组B级检修","FILEBAGTITLE":"油漆防腐项目作业指导书(第二版)","FILEBAGID":"587","ZJDNAME":"停工待检点H-3","PROUSERID":"280865","PROUSERNAME":"黎立威(点检定修策划工程师)","ZJDID":"2474","WZJSBCOUNT":"21","WORKUSERID":"","CJUSERID":"","JLUSERID":""}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * JHTITLE : 307B#3机组B级检修 + * FILEBAGTITLE : 油漆防腐项目作业指导书(第二版) + * FILEBAGID : 587 + * ZJDNAME : 见证点W-1 + * PROUSERID : 280865 + * PROUSERNAME : 黎立威(点检定修策划工程师) + * ZJDID : 2471 + * WZJSBCOUNT : 0 + * WORKUSERID : 130636 + * CJUSERID : + * JLUSERID : + */ + + private String JHTITLE; + private String FILEBAGTITLE; + private String FILEBAGID; + private String ZJDNAME; + private String PROUSERID; + private String PROUSERNAME; + private String ZJDID; + private String WZJSBCOUNT; + private String WORKUSERID; + private String CJUSERID; + private String JLUSERID; + + public String getJHTITLE() { + return JHTITLE; + } + + public void setJHTITLE(String JHTITLE) { + this.JHTITLE = JHTITLE; + } + + public String getFILEBAGTITLE() { + return FILEBAGTITLE; + } + + public void setFILEBAGTITLE(String FILEBAGTITLE) { + this.FILEBAGTITLE = FILEBAGTITLE; + } + + public String getFILEBAGID() { + return FILEBAGID; + } + + public void setFILEBAGID(String FILEBAGID) { + this.FILEBAGID = FILEBAGID; + } + + public String getZJDNAME() { + return ZJDNAME; + } + + public void setZJDNAME(String ZJDNAME) { + this.ZJDNAME = ZJDNAME; + } + + public String getPROUSERID() { + return PROUSERID; + } + + public void setPROUSERID(String PROUSERID) { + this.PROUSERID = PROUSERID; + } + + public String getPROUSERNAME() { + return PROUSERNAME; + } + + public void setPROUSERNAME(String PROUSERNAME) { + this.PROUSERNAME = PROUSERNAME; + } + + public String getZJDID() { + return ZJDID; + } + + public void setZJDID(String ZJDID) { + this.ZJDID = ZJDID; + } + + public String getWZJSBCOUNT() { + return WZJSBCOUNT; + } + + public void setWZJSBCOUNT(String WZJSBCOUNT) { + this.WZJSBCOUNT = WZJSBCOUNT; + } + + public String getWORKUSERID() { + return WORKUSERID; + } + + public void setWORKUSERID(String WORKUSERID) { + this.WORKUSERID = WORKUSERID; + } + + public String getCJUSERID() { + return CJUSERID; + } + + public void setCJUSERID(String CJUSERID) { + this.CJUSERID = CJUSERID; + } + + public String getJLUSERID() { + return JLUSERID; + } + + public void setJLUSERID(String JLUSERID) { + this.JLUSERID = JLUSERID; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GridViewBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GridViewBean.java new file mode 100755 index 0000000..91f46a4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GridViewBean.java @@ -0,0 +1,46 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Rehome-rjb1 on 2017/3/29. + */ + +public class GridViewBean { + + private String title; + private int imageid; + private int backgroup; + private boolean isShow; + + public int getImageid() { + return imageid; + } + + public void setImageid(int imageid) { + this.imageid = imageid; + } + + public int getBackgroup() { + return backgroup; + } + + public void setBackgroup(int backgroup) { + this.backgroup = backgroup; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + + public boolean isShow() { + return isShow; + } + + public void setShow(boolean show) { + isShow = show; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzbBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzbBean.java new file mode 100755 index 0000000..a58e557 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzbBean.java @@ -0,0 +1,76 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/23. + */ + +public class GzbBean { + + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * BHBH : WW000040 + * BHMS : 机务分部待指定维护项目 + */ + + private String BHBH; + private String BHMS; + private boolean isSelected = false; //是否选中的标识 + + + public String getBHBH() { + return BHBH; + } + + public void setBHBH(String BHBH) { + this.BHBH = BHBH; + } + + public String getBHMS() { + return BHMS; + } + + public void setBHMS(String BHMS) { + this.BHMS = BHMS; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Gzqk.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Gzqk.java new file mode 100755 index 0000000..9b7ef4d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Gzqk.java @@ -0,0 +1,130 @@ +package com.rehome.scbaxj.bean; + + +import java.io.Serializable; + +/** + * Created by Rehome-rjb1 on 2017/4/11. + */ + +public class Gzqk implements Serializable { + + private String id; + private String ggtime_s; //工作开始时间 + private String ggplace; //工作地点 + private String ggcontent; //工作内容描述 + private String lrr; //录入人 + private String lrrname;//录入人名字 + private String addtime; //录入时间 + private String bm; //部门 + private String ggtime_e;//工作结束时间 + private String rwstate;//任务状态 + private String is_del; + private String tbtime; + private String cbs;//承包商 + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getGgtime_s() { + return ggtime_s; + } + + public void setGgtime_s(String ggtime_s) { + this.ggtime_s = ggtime_s; + } + + public String getGgplace() { + return ggplace; + } + + public void setGgplace(String ggplace) { + this.ggplace = ggplace; + } + + public String getGgcontent() { + return ggcontent; + } + + public void setGgcontent(String ggcontent) { + this.ggcontent = ggcontent; + } + + public String getLrr() { + return lrr; + } + + public void setLrr(String lrr) { + this.lrr = lrr; + } + + public String getAddtime() { + return addtime; + } + + public void setAddtime(String addtime) { + this.addtime = addtime; + } + + public String getBm() { + return bm; + } + + public void setBm(String bm) { + this.bm = bm; + } + + public String getGgtime_e() { + return ggtime_e; + } + + public void setGgtime_e(String ggtime_e) { + this.ggtime_e = ggtime_e; + } + + public String getRwstate() { + return rwstate; + } + + public void setRwstate(String rwstate) { + this.rwstate = rwstate; + } + + public String getIs_del() { + return is_del; + } + + public void setIs_del(String is_del) { + this.is_del = is_del; + } + + public String getTbtime() { + return tbtime; + } + + public void setTbtime(String tbtime) { + this.tbtime = tbtime; + } + + public String getLrrname() { + return lrrname; + } + + public void setLrrname(String llrname) { + this.lrrname = llrname; + } + + public String getCbs() { + return cbs; + } + + public void setCbs(String cbs) { + this.cbs = cbs; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzqkInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzqkInfo.java new file mode 100755 index 0000000..85aa02c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/GzqkInfo.java @@ -0,0 +1,36 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/4/12. + */ + +public class GzqkInfo { + + + /** + * Rows : [{"id":"201704110942207293","ggtime_s":"2017/4/5 18:00:00","ggtime_e":"","ggplace":"煤场D","ggcontent":"隐患排查发现问题310194","lrr":"张三杰","addtime":"2017/4/1 18:00:00","bm":"燃料部","rwstate":"0","is_del":"0","tbtime":""},{"id":"201704110942074272","ggtime_s":"2017/4/5 18:00:00","ggtime_e":"2017/4/11 10:07:20","ggplace":"煤场Dccccccc","ggcontent":"隐患排查发现问题310194","lrr":"张三杰","addtime":"2017/4/11 9:46:33","bm":"燃料部","rwstate":"0","is_del":"0","tbtime":"2017/4/11 13:46:03"}] + * Total : 2 + */ + + private String Total; + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/JzBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/JzBean.java new file mode 100644 index 0000000..e91f0d3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/JzBean.java @@ -0,0 +1,39 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +public class JzBean { + + private List result; + + public List getResult() { + return result; + } + + public void setResult(List result) { + this.result = result; + } + + public static class ResultBean { + + + private String description; + private String value; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MessageEvent.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MessageEvent.java new file mode 100755 index 0000000..3c50205 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MessageEvent.java @@ -0,0 +1,33 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/4/18. + */ + +public class MessageEvent { + + private String message; + private String messageid; + + + public MessageEvent(String message, String messageid) { + this.message = message; + this.messageid = messageid; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getMessageid() { + return messageid; + } + + public void setMessageid(String messageid) { + this.messageid = messageid; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjList.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjList.java new file mode 100644 index 0000000..8d7fd83 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjList.java @@ -0,0 +1,144 @@ +package com.rehome.scbaxj.bean; + +import com.rehome.scbaxj.DBModel.Xjjh; + +import java.util.ArrayList; +import java.util.List; + +/** + * Create By HuangWenFei + * 创建日期:2023-03-03 15:32 + * 描述: + */ +public class MjList { + private String state; + private String msg; + private List data; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String zxid; + + private String khmc; + + private String st; + + private String et; + + private String zds; + + private String yjds; + + private String ljds; + + private String mjds; + + private String mk; + + private boolean checked;//0:未选中,1:已选中 + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getKhmc() { + return khmc; + } + + public void setKhmc(String khmc) { + this.khmc = khmc; + } + + public String getSt() { + return st; + } + + public void setSt(String st) { + this.st = st; + } + + public String getEt() { + return et; + } + + public void setEt(String et) { + this.et = et; + } + + public String getZds() { + return zds; + } + + public void setZds(String zds) { + this.zds = zds; + } + + public String getYjds() { + return yjds; + } + + public void setYjds(String yjds) { + this.yjds = yjds; + } + + public String getLjds() { + return ljds; + } + + public void setLjds(String ljds) { + this.ljds = ljds; + } + + public String getMjds() { + return mjds; + } + + public void setMjds(String mjds) { + this.mjds = mjds; + } + + public String getMk() { + return mk; + } + + public void setMk(String mk) { + this.mk = mk; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjRequestInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjRequestInfo.java new file mode 100644 index 0000000..70249ae --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MjRequestInfo.java @@ -0,0 +1,47 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Create By HuangWenFei + * 创建日期:2023-03-06 09:52 + * 描述:免检管理上传请求数据 + */ +public class MjRequestInfo { + private String action; + private String bz; + private String scr; + private List data; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getScr() { + return scr; + } + + public void setScr(String scr) { + this.scr = scr; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MyUploadCheckedBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MyUploadCheckedBean.java new file mode 100644 index 0000000..725d319 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/MyUploadCheckedBean.java @@ -0,0 +1,140 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by huangwenfei on 2022/2/26 09:58:02 + */ + +public class MyUploadCheckedBean { + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String zxid; + + private String scid; + + private String qybh; + + private String qymc; + + private String nfcbm; + + private String jhmc; + + private String sb; + + private String djsj; + + private String scsj; + + private String zc; + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getSb() { + return sb; + } + + public void setSb(String sb) { + this.sb = sb; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMChangeRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMChangeRequestBean.java new file mode 100755 index 0000000..3feb653 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMChangeRequestBean.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class PMChangeRequestBean { + + private String Action; + private String YHID; + private String GDID; + private String GDZT_NO; + private String GDZT_SO; + private String ZHBZ; + private String XGYY; + private String FSRQ; + private String WCBG; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGDID() { + return GDID; + } + + public void setGDID(String GDID) { + this.GDID = GDID; + } + + public String getGDZT_NO() { + return GDZT_NO; + } + + public void setGDZT_NO(String GDZT_NO) { + this.GDZT_NO = GDZT_NO; + } + + public String getGDZT_SO() { + return GDZT_SO; + } + + public void setGDZT_SO(String GDZT_SO) { + this.GDZT_SO = GDZT_SO; + } + + public String getZHBZ() { + return ZHBZ; + } + + public void setZHBZ(String ZHBZ) { + this.ZHBZ = ZHBZ; + } + + public String getXGYY() { + return XGYY; + } + + public void setXGYY(String XGYY) { + this.XGYY = XGYY; + } + + public String getFSRQ() { + return FSRQ; + } + + public void setFSRQ(String FSRQ) { + this.FSRQ = FSRQ; + } + + public String getWCBG() { + return WCBG; + } + + public void setWCBG(String WCBG) { + this.WCBG = WCBG; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMRequestBean.java new file mode 100755 index 0000000..79a2d63 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PMRequestBean.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class PMRequestBean { + + private String Action; + private String YHID; + private String GZZT; + private String ZRBM; + private String GZYXJ; + private String SBBH; + private String GZDH; + private String PM_ST; + private String PM_ET; + private String ZRR; + private String ID; + + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getGZZT() { + return GZZT; + } + + public void setGZZT(String GZZT) { + this.GZZT = GZZT; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getGZYXJ() { + return GZYXJ; + } + + public void setGZYXJ(String GZYXJ) { + this.GZYXJ = GZYXJ; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGZDH() { + return GZDH; + } + + public void setGZDH(String GZDH) { + this.GZDH = GZDH; + } + + public String getZRR() { + return ZRR; + } + + public void setZRR(String ZRR) { + this.ZRR = ZRR; + } + + public String getPM_ST() { + return PM_ST; + } + + public void setPM_ST(String PM_ST) { + this.PM_ST = PM_ST; + } + + public String getPM_ET() { + return PM_ET; + } + + public void setPM_ET(String PM_ET) { + this.PM_ET = PM_ET; + } + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PhoneInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PhoneInfo.java new file mode 100755 index 0000000..7e8bbe4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PhoneInfo.java @@ -0,0 +1,99 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Administrator on 2016/9/13. + */ +public class PhoneInfo { + + /** + * Rows : [{"phonemodel":"MX5","sysversion":"wwwww","imeinum":"55484848","phonenum":"48524848","username":"454545","password":"sfasf"}] + * Total : 1 + */ + + private int Total; + /** + * phonemodel : MX5 + * sysversion : wwwww + * imeinum : 55484848 + * phonenum : 48524848 + * username : 454545 + * password : sfasf + */ + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class UserInfo { + private String phonemodel;//手机类型 + private String sysversion;//系统版本 + private String imeinum;//imei + private String phonenum;//手机号码 + private String username;//用户名 + private String password;//密码 + + public String getPhonemodel() { + return phonemodel; + } + + public void setPhonemodel(String phonemodel) { + this.phonemodel = phonemodel; + } + + public String getSysversion() { + return sysversion; + } + + public void setSysversion(String sysversion) { + this.sysversion = sysversion; + } + + public String getImeinum() { + return imeinum; + } + + public void setImeinum(String imeinum) { + this.imeinum = imeinum; + } + + public String getPhonenum() { + return phonenum; + } + + public void setPhonenum(String phonenum) { + this.phonenum = phonenum; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean.java new file mode 100755 index 0000000..e20bd73 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean.java @@ -0,0 +1,333 @@ +package com.rehome.scbaxj.bean; + +import com.bin.david.form.annotation.SmartColumn; +import com.bin.david.form.annotation.SmartTable; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + + +public class PminfoBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + @SmartTable(name = "PM工单查询") + public static class DataBean { + + @SmartColumn(id = 1, name = "工作单号") + private String GZDH; + + @SmartColumn(id = 2, name = "工作状态") + private String GZZT; + + @SmartColumn(id = 3, name = "责任部门") + private String ZRBM; + + @SmartColumn(id = 4, name = "工作先级") + private String GZYXJ; + + @SmartColumn(id = 5, name = "设备编号") + private String SBBH; + + @SmartColumn(id = 6, name = "设备名称") + private String SBMC; + + @SmartColumn(id = 7, name = "缺陷描述") + private String QXMS; + + @SmartColumn(id = 8, name = "工作描述") + private String GZMS; + + @SmartColumn(id = 9, name = "提交人") + private String TJR; + + @SmartColumn(id = 10, name = "提交人名") + private String TJR_NAME; + + @SmartColumn(id = 11, name = "提交日期") + private String TJRQ; + + @SmartColumn(id = 12, name = "提交时间") + private String TJSJ; + + @SmartColumn(id = 13, name = "报告人") + private String BGR; + + @SmartColumn(id = 14, name = "报告人名") + private String BGR_NAME; + + @SmartColumn(id = 15, name = "报告日期") + private String BGRQ; + + @SmartColumn(id = 16, name = "报告时间") + private String BGSJ; + + @SmartColumn(id = 17, name = "安排人") + private String APR; + + @SmartColumn(id = 18, name = "安排人名") + private String APR_NAME; + + @SmartColumn(id = 19, name = "安排日期") + private String APRQ; + + @SmartColumn(id = 20, name = "安排时间") + private String ARSJ; + + @SmartColumn(id = 21, name = "批准人") + private String PZR; + + @SmartColumn(id = 22, name = "批准人名") + private String PZR_NAME; + + @SmartColumn(id = 23, name = "批准日期") + private String PZRQ; + + @SmartColumn(id = 24, name = "批准时间") + private String PZSJ; + + @SmartColumn(id = 25, name = "项目负责人") + private String XMFZR; + + @SmartColumn(id = 26, name = "录入方式") + private String LRFS; + + public String getGZDH() { + return GZDH; + } + + public void setGZDH(String GZDH) { + this.GZDH = GZDH; + } + + public String getGZZT() { + return GZZT; + } + + public void setGZZT(String GZZT) { + this.GZZT = GZZT; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getGZYXJ() { + return GZYXJ; + } + + public void setGZYXJ(String GZYXJ) { + this.GZYXJ = GZYXJ; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getQXMS() { + return QXMS; + } + + public void setQXMS(String QXMS) { + this.QXMS = QXMS; + } + + public String getGZMS() { + return GZMS; + } + + public void setGZMS(String GZMS) { + this.GZMS = GZMS; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getTJR_NAME() { + return TJR_NAME; + } + + public void setTJR_NAME(String TJR_NAME) { + this.TJR_NAME = TJR_NAME; + } + + public String getTJRQ() { + return TJRQ; + } + + public void setTJRQ(String TJRQ) { + this.TJRQ = TJRQ; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getBGR() { + return BGR; + } + + public void setBGR(String BGR) { + this.BGR = BGR; + } + + public String getBGR_NAME() { + return BGR_NAME; + } + + public void setBGR_NAME(String BGR_NAME) { + this.BGR_NAME = BGR_NAME; + } + + public String getBGRQ() { + return BGRQ; + } + + public void setBGRQ(String BGRQ) { + this.BGRQ = BGRQ; + } + + public String getBGSJ() { + return BGSJ; + } + + public void setBGSJ(String BGSJ) { + this.BGSJ = BGSJ; + } + + public String getAPR() { + return APR; + } + + public void setAPR(String APR) { + this.APR = APR; + } + + public String getAPR_NAME() { + return APR_NAME; + } + + public void setAPR_NAME(String APR_NAME) { + this.APR_NAME = APR_NAME; + } + + public String getAPRQ() { + return APRQ; + } + + public void setAPRQ(String APRQ) { + this.APRQ = APRQ; + } + + public String getARSJ() { + return ARSJ; + } + + public void setARSJ(String ARSJ) { + this.ARSJ = ARSJ; + } + + public String getPZR() { + return PZR; + } + + public void setPZR(String PZR) { + this.PZR = PZR; + } + + public String getPZR_NAME() { + return PZR_NAME; + } + + public void setPZR_NAME(String PZR_NAME) { + this.PZR_NAME = PZR_NAME; + } + + public String getPZRQ() { + return PZRQ; + } + + public void setPZRQ(String PZRQ) { + this.PZRQ = PZRQ; + } + + public String getPZSJ() { + return PZSJ; + } + + public void setPZSJ(String PZSJ) { + this.PZSJ = PZSJ; + } + + public String getXMFZR() { + return XMFZR; + } + + public void setXMFZR(String XMFZR) { + this.XMFZR = XMFZR; + } + + public String getLRFS() { + return LRFS; + } + + public void setLRFS(String LRFS) { + this.LRFS = LRFS; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean2.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean2.java new file mode 100755 index 0000000..f931520 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoBean2.java @@ -0,0 +1,336 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + + +public class PminfoBean2 { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * GZDH : WK181110.8007 + * GZZT : 已提出 + * ZRBM : 策划分部 + * GZYXJ : A(等机会或停机) + * SBBH : 1 + * SBMC : #1机组 + * QXMS : Test + * GZMS : Test1111 + * TJR : 300075 + * TJR_NAME : 罗玉环 + * TJRQ : 2018/11/10 0:00:00 + * TJSJ : 2018/11/10 9:18:50 + * BGR : 300075 + * BGR_NAME : 罗玉环 + * BGRQ : + * BGSJ : + * APR : + * APR_NAME : + * APRQ : + * ARSJ : + * PZR : + * PZR_NAME : + * PZRQ : + * PZSJ : + * XMFZR : 280865 + * XMFZR_Name : 黎立威 + * JXBZ : 策划分部 + * JXFZR : 黎立威 + * LRFS : + */ + + private String GZDH; + private String GZZT; + private String ZRBM; + private String GZYXJ; + private String SBBH; + private String SBMC; + private String QXMS; + private String GZMS; + private String TJR; + private String TJR_NAME; + private String TJRQ; + private String TJSJ; + private String BGR; + private String BGR_NAME; + private String BGRQ; + private String BGSJ; + private String APR; + private String APR_NAME; + private String APRQ; + private String ARSJ; + private String PZR; + private String PZR_NAME; + private String PZRQ; + private String PZSJ; + private String XMFZR; + private String XMFZR_Name; + private String JXBZ; + private String JXFZR; + private String LRFS; + + public String getGZDH() { + return GZDH; + } + + public void setGZDH(String GZDH) { + this.GZDH = GZDH; + } + + public String getGZZT() { + return GZZT; + } + + public void setGZZT(String GZZT) { + this.GZZT = GZZT; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getGZYXJ() { + return GZYXJ; + } + + public void setGZYXJ(String GZYXJ) { + this.GZYXJ = GZYXJ; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getQXMS() { + return QXMS; + } + + public void setQXMS(String QXMS) { + this.QXMS = QXMS; + } + + public String getGZMS() { + return GZMS; + } + + public void setGZMS(String GZMS) { + this.GZMS = GZMS; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getTJR_NAME() { + return TJR_NAME; + } + + public void setTJR_NAME(String TJR_NAME) { + this.TJR_NAME = TJR_NAME; + } + + public String getTJRQ() { + return TJRQ; + } + + public void setTJRQ(String TJRQ) { + this.TJRQ = TJRQ; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getBGR() { + return BGR; + } + + public void setBGR(String BGR) { + this.BGR = BGR; + } + + public String getBGR_NAME() { + return BGR_NAME; + } + + public void setBGR_NAME(String BGR_NAME) { + this.BGR_NAME = BGR_NAME; + } + + public String getBGRQ() { + return BGRQ; + } + + public void setBGRQ(String BGRQ) { + this.BGRQ = BGRQ; + } + + public String getBGSJ() { + return BGSJ; + } + + public void setBGSJ(String BGSJ) { + this.BGSJ = BGSJ; + } + + public String getAPR() { + return APR; + } + + public void setAPR(String APR) { + this.APR = APR; + } + + public String getAPR_NAME() { + return APR_NAME; + } + + public void setAPR_NAME(String APR_NAME) { + this.APR_NAME = APR_NAME; + } + + public String getAPRQ() { + return APRQ; + } + + public void setAPRQ(String APRQ) { + this.APRQ = APRQ; + } + + public String getARSJ() { + return ARSJ; + } + + public void setARSJ(String ARSJ) { + this.ARSJ = ARSJ; + } + + public String getPZR() { + return PZR; + } + + public void setPZR(String PZR) { + this.PZR = PZR; + } + + public String getPZR_NAME() { + return PZR_NAME; + } + + public void setPZR_NAME(String PZR_NAME) { + this.PZR_NAME = PZR_NAME; + } + + public String getPZRQ() { + return PZRQ; + } + + public void setPZRQ(String PZRQ) { + this.PZRQ = PZRQ; + } + + public String getPZSJ() { + return PZSJ; + } + + public void setPZSJ(String PZSJ) { + this.PZSJ = PZSJ; + } + + public String getXMFZR() { + return XMFZR; + } + + public void setXMFZR(String XMFZR) { + this.XMFZR = XMFZR; + } + + public String getXMFZR_Name() { + return XMFZR_Name; + } + + public void setXMFZR_Name(String XMFZR_Name) { + this.XMFZR_Name = XMFZR_Name; + } + + public String getJXBZ() { + return JXBZ; + } + + public void setJXBZ(String JXBZ) { + this.JXBZ = JXBZ; + } + + public String getJXFZR() { + return JXFZR; + } + + public void setJXFZR(String JXFZR) { + this.JXFZR = JXFZR; + } + + public String getLRFS() { + return LRFS; + } + + public void setLRFS(String LRFS) { + this.LRFS = LRFS; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoNewBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoNewBean.java new file mode 100755 index 0000000..89f45fe --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PminfoNewBean.java @@ -0,0 +1,157 @@ +package com.rehome.scbaxj.bean; + +import com.bin.david.form.annotation.SmartColumn; +import com.bin.david.form.annotation.SmartTable; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + + +public class PminfoNewBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + @SmartTable(name = "PM工单查询") + public static class DataBean { + + @SmartColumn(id = 1, name = "PM单号") + private String ta_pm_no_p; + + @SmartColumn(id = 2, name = "设备描述") + private String eq_ma_de; + +// @SmartColumn(id = 3, name = "工作规范代码") + private String ta_pm_sn; + +// @SmartColumn(id = 4, name = "工作规范类型") + private String ta_ws_ca; + + @SmartColumn(id = 3, name = "工作规范描述") + private String ta_ws_de; + + @SmartColumn(id = 4, name = "数据日期") + private String ta_pm_ld; + + @SmartColumn(id = 5, name = "下次到期") + private String ta_pm_nextdue; + + @SmartColumn(id = 6, name = "PM状态") + private String ta_pm_fl; + + @SmartColumn(id = 7, name = "责任单位") + private String re_tm_de; + + @SmartColumn(id = 8, name = "类型") + private String ta_md_de; + + public String getTa_pm_no_p() { + return ta_pm_no_p; + } + + public void setTa_pm_no_p(String ta_pm_no_p) { + this.ta_pm_no_p = ta_pm_no_p; + } + + public String getEq_ma_de() { + return eq_ma_de; + } + + public void setEq_ma_de(String eq_ma_de) { + this.eq_ma_de = eq_ma_de; + } + + public String getTa_pm_sn() { + return ta_pm_sn; + } + + public void setTa_pm_sn(String ta_pm_sn) { + this.ta_pm_sn = ta_pm_sn; + } + + public String getTa_ws_ca() { + return ta_ws_ca; + } + + public void setTa_ws_ca(String ta_ws_ca) { + this.ta_ws_ca = ta_ws_ca; + } + + public String getTa_ws_de() { + return ta_ws_de; + } + + public void setTa_ws_de(String ta_ws_de) { + this.ta_ws_de = ta_ws_de; + } + + public String getTa_pm_ld() { + return ta_pm_ld; + } + + public void setTa_pm_ld(String ta_pm_ld) { + this.ta_pm_ld = ta_pm_ld; + } + + public String getTa_pm_nextdue() { + return ta_pm_nextdue; + } + + public void setTa_pm_nextdue(String ta_pm_nextdue) { + this.ta_pm_nextdue = ta_pm_nextdue; + } + + public String getTa_pm_fl() { + return ta_pm_fl; + } + + public void setTa_pm_fl(String ta_pm_fl) { + this.ta_pm_fl = ta_pm_fl; + } + + public String getRe_tm_de() { + return re_tm_de; + } + + public void setRe_tm_de(String re_tm_de) { + this.re_tm_de = re_tm_de; + } + + public String getTa_md_de() { + return ta_md_de; + } + + public void setTa_md_de(String ta_md_de) { + this.ta_md_de = ta_md_de; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PointCheckedPersion.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PointCheckedPersion.java new file mode 100644 index 0000000..47cf160 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PointCheckedPersion.java @@ -0,0 +1,154 @@ +package com.rehome.scbaxj.bean; + + +import java.util.List; + +/** + * Created by ruihong on 2022/03/03 + */ + + +public class PointCheckedPersion { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String zxid; + + private String scid; + + private String qybh; + + private String qymc; + + private String nfcbm; + + private String jhmc; + + private String sb; + + private String djsj; + + private String scsj; + + private String zc; + + private String scr; + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getSb() { + return sb; + } + + public void setSb(String sb) { + this.sb = sb; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getScr() { + return scr; + } + + public void setScr(String scr) { + this.scr = scr; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PushInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PushInfo.java new file mode 100755 index 0000000..76b51f9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/PushInfo.java @@ -0,0 +1,70 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Administrator on 2016/10/15. + */ + +public class PushInfo { + + /** + * Rows : [{"dbtitle":"消防巡查","dbname":"消防巡查计划10月15号开始","dbid":"20161014163244"}] + * Total : 1 + */ + + private int Total; + /** + * dbtitle : 消防巡查 + * dbname : 消防巡查计划10月15号开始 + * dbid : 20161014163244 + */ + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class Push { + private String dbtitle; + private String dbname; + private String dbid; + + public String getDbtitle() { + return dbtitle; + } + + public void setDbtitle(String dbtitle) { + this.dbtitle = dbtitle; + } + + public String getDbname() { + return dbname; + } + + public void setDbname(String dbname) { + this.dbname = dbname; + } + + public String getDbid() { + return dbid; + } + + public void setDbid(String dbid) { + this.dbid = dbid; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXGDResultBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXGDResultBean.java new file mode 100644 index 0000000..ba8f495 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXGDResultBean.java @@ -0,0 +1,28 @@ +package com.rehome.scbaxj.bean; + +public class QXGDResultBean { + + /** + * message : 1 + * status : 1 + */ + + private String message; + private String status; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXRequestBean.java new file mode 100755 index 0000000..e1a20b5 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QXRequestBean.java @@ -0,0 +1,145 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class QXRequestBean { + + + private String Action; + private String YHID; + private String GZDH; + private String ZRBM; + private String SBBH; + private String GZZT; + private String GZYXJ; + private String PL_WK_DO; + private String PL_WK_TE; + private String RWZT; + private String ST; + private String ET; + private String RWID; + private String BMID; + private String ZRR; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGZDH() { + return GZDH; + } + + public void setGZDH(String GZDH) { + this.GZDH = GZDH; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getGZZT() { + return GZZT; + } + + public void setGZZT(String GZZT) { + this.GZZT = GZZT; + } + + public String getGZYXJ() { + return GZYXJ; + } + + public void setGZYXJ(String GZYXJ) { + this.GZYXJ = GZYXJ; + } + + public String getPL_WK_DO() { + return PL_WK_DO; + } + + public void setPL_WK_DO(String PL_WK_DO) { + this.PL_WK_DO = PL_WK_DO; + } + + public String getPL_WK_TE() { + return PL_WK_TE; + } + + public void setPL_WK_TE(String PL_WK_TE) { + this.PL_WK_TE = PL_WK_TE; + } + + public String getRWZT() { + return RWZT; + } + + public void setRWZT(String RWZT) { + this.RWZT = RWZT; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getET() { + return ET; + } + + public void setET(String ET) { + this.ET = ET; + } + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + public String getZRR() { + return ZRR; + } + + public void setZRR(String ZRR) { + this.ZRR = ZRR; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfFzrBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfFzrBean.java new file mode 100755 index 0000000..a2e35dd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfFzrBean.java @@ -0,0 +1,88 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/19. + */ + +public class QfFzrBean { + + private int state; + private String msg1; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg1() { + return msg1; + } + + public void setMsg1(String msg1) { + this.msg1 = msg1; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String YHID; + private String YHMC; + private String BMID; + private String BMMC; + private boolean isSelected; //是否选中的标识 + + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getYHMC() { + return YHMC; + } + + public void setYHMC(String YHMC) { + this.YHMC = YHMC; + } + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + public String getBMMC() { + return BMMC; + } + + public void setBMMC(String BMMC) { + this.BMMC = BMMC; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfbmlistBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfbmlistBean.java new file mode 100755 index 0000000..56f993f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfbmlistBean.java @@ -0,0 +1,85 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/18. + */ + +public class QfbmlistBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * BMID : 1-LS + * BMMC : 安徽合源电力工程有限公司 + * SJBM : 10 + */ + + private String BMID; + private String BMMC; + private String SJBM; + private boolean isSelected; //是否选中的标识 + + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + public String getBMMC() { + return BMMC; + } + + public void setBMMC(String BMMC) { + this.BMMC = BMMC; + } + + public String getSJBM() { + return SJBM; + } + + public void setSJBM(String SJBM) { + this.SJBM = SJBM; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfdjBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfdjBean.java new file mode 100755 index 0000000..01fb30c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfdjBean.java @@ -0,0 +1,75 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/19. + */ + +public class QfdjBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * DJID : 5 + * DJMC : A(等机会或停机) + */ + + private String DJID; + private String DJMC; + private boolean isSelected; //是否选中的标识 + + + public String getDJID() { + return DJID; + } + + public void setDJID(String DJID) { + this.DJID = DJID; + } + + public String getDJMC() { + return DJMC; + } + + public void setDJMC(String DJMC) { + this.DJMC = DJMC; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfgdztlistBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfgdztlistBean.java new file mode 100755 index 0000000..08e7d0e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfgdztlistBean.java @@ -0,0 +1,79 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/18. + */ + +public class QfgdztlistBean { + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String GDZT_NO; + private String GDZT_SO; + private String GDZTMC; + private boolean isSelected; //是否选中的标识 + + public String getGDZT_NO() { + return GDZT_NO; + } + + public void setGDZT_NO(String GDZT_NO) { + this.GDZT_NO = GDZT_NO; + } + + public String getGDZT_SO() { + return GDZT_SO; + } + + public void setGDZT_SO(String GDZT_SO) { + this.GDZT_SO = GDZT_SO; + } + + public String getGDZTMC() { + return GDZTMC; + } + + public void setGDZTMC(String GDZTMC) { + this.GDZTMC = GDZTMC; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Qfkccxbean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Qfkccxbean.java new file mode 100755 index 0000000..4d55a48 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Qfkccxbean.java @@ -0,0 +1,195 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.bin.david.form.annotation.SmartColumn; +import com.bin.david.form.annotation.SmartTable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class Qfkccxbean implements Parcelable { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + @SmartTable(name = "备品备件查询") + public static class DataBean implements Parcelable { + + @SmartColumn(id = 1, name = "物资编码") + private String WZBM; + @SmartColumn(id = 2, name = "仓库号") + private String CKH; + @SmartColumn(id = 3, name = "物资名称") + private String WZMC; + @SmartColumn(id = 4, name = "数量") + private String SL; + @SmartColumn(id = 5, name = "单位") + private String DW; + @SmartColumn(id = 6, name = "单价") + private String DJ; + @SmartColumn(id = 7, name = "仓储") + private String CC; + + public String getWZBM() { + return WZBM; + } + + public void setWZBM(String WZBM) { + this.WZBM = WZBM; + } + + public String getCKH() { + return CKH; + } + + public void setCKH(String CKH) { + this.CKH = CKH; + } + + public String getWZMC() { + return WZMC; + } + + public void setWZMC(String WZMC) { + this.WZMC = WZMC; + } + + public String getSL() { + return SL; + } + + public void setSL(String SL) { + this.SL = SL; + } + + public String getDW() { + return DW; + } + + public void setDW(String DW) { + this.DW = DW; + } + + public String getDJ() { + return DJ; + } + + public void setDJ(String DJ) { + this.DJ = DJ; + } + + public String getCC() { + return CC; + } + + public void setCC(String CC) { + this.CC = CC; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.WZBM); + dest.writeString(this.CKH); + dest.writeString(this.WZMC); + dest.writeString(this.SL); + dest.writeString(this.DW); + dest.writeString(this.DJ); + dest.writeString(this.CC); + } + + public DataBean() { + } + + protected DataBean(Parcel in) { + this.WZBM = in.readString(); + this.CKH = in.readString(); + this.WZMC = in.readString(); + this.SL = in.readString(); + this.DW = in.readString(); + this.DJ = in.readString(); + this.CC = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.state); + dest.writeString(this.msg); + dest.writeList(this.data); + } + + public Qfkccxbean() { + } + + protected Qfkccxbean(Parcel in) { + this.state = in.readInt(); + this.msg = in.readString(); + this.data = new ArrayList(); + in.readList(this.data, DataBean.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Qfkccxbean createFromParcel(Parcel source) { + return new Qfkccxbean(source); + } + + @Override + public Qfkccxbean[] newArray(int size) { + return new Qfkccxbean[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistBean.java new file mode 100755 index 0000000..0f21ab8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistBean.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/17. + */ + +public class QfsblistBean { + + + /** + * state : 1 + * msg : + * data : [{"FSBID":"","SBID":"0","SBMC":"全厂公用系统"},{"FSBID":"","SBID":"1","SBMC":"#1机组"},{"FSBID":"","SBID":"2","SBMC":"#2机组"},{"FSBID":"","SBID":"3","SBMC":"#3机组"},{"FSBID":"","SBID":"F","SBMC":"#1~3机组公用系统"},{"FSBID":"","SBID":"M","SBMC":"#1~6机组公用系统"},{"FSBID":"","SBID":"P","SBMC":"供热公用系统"},{"FSBID":"","SBID":"U","SBMC":"供热#1炉"},{"FSBID":"","SBID":"V","SBMC":"供热#2炉"},{"FSBID":"","SBID":"W","SBMC":"倒班宿舍及其附属设备"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * FSBID : + * SBID : 0 + * SBMC : 全厂公用系统 + */ + + private String FSBID; + private String SBID; + private String SBMC; + private boolean isSelected; //是否选中的标识 + + public String getFSBID() { + return FSBID; + } + + public void setFSBID(String FSBID) { + this.FSBID = FSBID; + } + + public String getSBID() { + return SBID; + } + + public void setSBID(String SBID) { + this.SBID = SBID; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean selected) { + isSelected = selected; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistRequestBean.java new file mode 100755 index 0000000..bb43621 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QfsblistRequestBean.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/4/17. + */ + +public class QfsblistRequestBean { + + private String Action; + private String YHID; + private String SJBM; + private String FSBID; + private String BMID; + private String BMBSF; + private String GDID; + private String GZZ; + private String PARENTID; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getSJBM() { + return SJBM; + } + + public void setSJBM(String SJBM) { + this.SJBM = SJBM; + } + + public String getFSBID() { + return FSBID; + } + + public void setFSBID(String FSBID) { + this.FSBID = FSBID; + } + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + public String getBMBSF() { + return BMBSF; + } + + public void setBMBSF(String BMBSF) { + this.BMBSF = BMBSF; + } + + public String getGDID() { + return GDID; + } + + public void setGDID(String GDID) { + this.GDID = GDID; + } + + public String getGZZ() { + return GZZ; + } + + public void setGZZ(String GZZ) { + this.GZZ = GZZ; + } + + public String getPARENTID() { + return PARENTID; + } + + public void setPARENTID(String PARENTID) { + this.PARENTID = PARENTID; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxTjgdRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxTjgdRequestBean.java new file mode 100755 index 0000000..2ac116c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxTjgdRequestBean.java @@ -0,0 +1,153 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/4/20. + */ + +public class QxTjgdRequestBean { + + private String Action; + private String YHID; + private String GDZT_SO; + private String GDZT_NO; + private String GDDJ; + private String QXMS; + private String GZMS; + private String SBBH; + private String SBMC; + private String ZRBZ; + private String ZRR; + private String JXBZ; + private String JXR; + private String GZXZ; + private String ST; + private String ET; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGDZT_SO() { + return GDZT_SO; + } + + public void setGDZT_SO(String GDZT_SO) { + this.GDZT_SO = GDZT_SO; + } + + public String getGDZT_NO() { + return GDZT_NO; + } + + public void setGDZT_NO(String GDZT_NO) { + this.GDZT_NO = GDZT_NO; + } + + public String getGDDJ() { + return GDDJ; + } + + public void setGDDJ(String GDDJ) { + this.GDDJ = GDDJ; + } + + public String getQXMS() { + return QXMS; + } + + public void setQXMS(String QXMS) { + this.QXMS = QXMS; + } + + public String getGZMS() { + return GZMS; + } + + public void setGZMS(String GZMS) { + this.GZMS = GZMS; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getZRBZ() { + return ZRBZ; + } + + public void setZRBZ(String ZRBZ) { + this.ZRBZ = ZRBZ; + } + + public String getZRR() { + return ZRR; + } + + public void setZRR(String ZRR) { + this.ZRR = ZRR; + } + + public String getJXBZ() { + return JXBZ; + } + + public void setJXBZ(String JXBZ) { + this.JXBZ = JXBZ; + } + + public String getJXR() { + return JXR; + } + + public void setJXR(String JXR) { + this.JXR = JXR; + } + + public String getGZXZ() { + return GZXZ; + } + + public void setGZXZ(String GZXZ) { + this.GZXZ = GZXZ; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getET() { + return ET; + } + + public void setET(String ET) { + this.ET = ET; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxdBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxdBean.java new file mode 100755 index 0000000..adbc59a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/QxdBean.java @@ -0,0 +1,141 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/5/11. + */ + +public class QxdBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String pl_wk_wn_p; + private String wo_st_de; + private String re_tm_de; + private String pl_wk_do; + private String pl_wk_wg; + private String priorityclass; + private String pl_wk_sb; + private String pl_wk_eq_ma_no_p; + private String eq_ma_de; + private String pl_wk_fd; + private String pl_wk_de; + + public String getPl_wk_wn_p() { + return pl_wk_wn_p; + } + + public void setPl_wk_wn_p(String pl_wk_wn_p) { + this.pl_wk_wn_p = pl_wk_wn_p; + } + + public String getWo_st_de() { + return wo_st_de; + } + + public void setWo_st_de(String wo_st_de) { + this.wo_st_de = wo_st_de; + } + + public String getRe_tm_de() { + return re_tm_de; + } + + public void setRe_tm_de(String re_tm_de) { + this.re_tm_de = re_tm_de; + } + + public String getPl_wk_do() { + return pl_wk_do; + } + + public void setPl_wk_do(String pl_wk_do) { + this.pl_wk_do = pl_wk_do; + } + + public String getPl_wk_wg() { + return pl_wk_wg; + } + + public void setPl_wk_wg(String pl_wk_wg) { + this.pl_wk_wg = pl_wk_wg; + } + + public String getPriorityclass() { + return priorityclass; + } + + public void setPriorityclass(String priorityclass) { + this.priorityclass = priorityclass; + } + + public String getPl_wk_sb() { + return pl_wk_sb; + } + + public void setPl_wk_sb(String pl_wk_sb) { + this.pl_wk_sb = pl_wk_sb; + } + + public String getPl_wk_eq_ma_no_p() { + return pl_wk_eq_ma_no_p; + } + + public void setPl_wk_eq_ma_no_p(String pl_wk_eq_ma_no_p) { + this.pl_wk_eq_ma_no_p = pl_wk_eq_ma_no_p; + } + + public String getEq_ma_de() { + return eq_ma_de; + } + + public void setEq_ma_de(String eq_ma_de) { + this.eq_ma_de = eq_ma_de; + } + + public String getPl_wk_fd() { + return pl_wk_fd; + } + + public void setPl_wk_fd(String pl_wk_fd) { + this.pl_wk_fd = pl_wk_fd; + } + + public String getPl_wk_de() { + return pl_wk_de; + } + + public void setPl_wk_de(String pl_wk_de) { + this.pl_wk_de = pl_wk_de; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean.java new file mode 100755 index 0000000..4eb6a40 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean.java @@ -0,0 +1,38 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + +public class ResultBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean2.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean2.java new file mode 100755 index 0000000..ecff73e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean2.java @@ -0,0 +1,55 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + +public class ResultBean2 { + + + /** + * state : 1 + * gdid : WK180602.8003 + * msg : 添加成功 + * data : [] + */ + + private int state; + private String gdid; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getGdid() { + return gdid; + } + + public void setGdid(String gdid) { + this.gdid = gdid; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean3.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean3.java new file mode 100755 index 0000000..c286514 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ResultBean3.java @@ -0,0 +1,46 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/4/20. + */ + +public class ResultBean3 { + + /** + * state : 1 + * msg : + * data : [] + */ + + private String state; + private String msg; + private List data; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlinfoBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlinfoBean.java new file mode 100644 index 0000000..c904fc5 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlinfoBean.java @@ -0,0 +1,207 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +public class RlinfoBean { + + + /** + * state : 1 + * msg : 查询成功 + * data : [{"JHID":"XJGLJH00000000127","JHMC":"【电气】【二值】每班一次","JHZT":"1","JHZQ":"24","NEXTTIME":"2020/12/5 9:49:46","ST":"2020/12/4 9:49:46","ET":"2020/12/4 17:49:46","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/18 9:56:10","XGR":"管理员","XGSJ":"2020/12/4 9:49:46","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"8"},{"JHID":"XJGLJH00000000131","JHMC":"【环化】【二值】每班两次_第2轮","JHZT":"1","JHZQ":"24","NEXTTIME":"2020/12/5 4:00:00","ST":"2020/12/4 4:00:00","ET":"2020/12/4 8:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/18 9:57:28","XGR":"管理员","XGSJ":"2020/11/28 14:03:56","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"4"},{"JHID":"XJGLJH00000000238","JHMC":"斗轮机司机","JHZT":"1","JHZQ":"4","NEXTTIME":"2020/12/4 20:00:00","ST":"2020/12/4 16:00:00","ET":"2020/12/4 20:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"管理员","XGSJ":"2020/11/28 11:54:44","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"4"},{"JHID":"XJGLJH00000000234","JHMC":"环场线","JHZT":"1","JHZQ":"4","NEXTTIME":"2020/12/4 16:00:00","ST":"2020/12/4 12:00:00","ET":"2020/12/4 16:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"","XGSJ":"","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"4"},{"JHID":"XJGLJH00000000236","JHMC":"码头班","JHZT":"1","JHZQ":"4","NEXTTIME":"2020/12/4 16:00:00","ST":"2020/12/4 12:00:00","ET":"2020/12/4 16:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"管理员","XGSJ":"2020/11/28 11:45:24","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"4"},{"JHID":"XJGLJH00000000237","JHMC":"燃运综合","JHZT":"1","JHZQ":"24","NEXTTIME":"2020/12/4 12:00:00","ST":"2020/12/3 12:00:00","ET":"2020/12/3 19:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"","XGSJ":"","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"7"},{"JHID":"XJGLJH00000000233","JHMC":"上煤线","JHZT":"1","JHZQ":"24","NEXTTIME":"2020/12/4 12:00:00","ST":"2020/12/3 12:00:00","ET":"2020/12/3 19:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"","XGSJ":"","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"7"},{"JHID":"XJGLJH00000000235","JHMC":"卸煤线","JHZT":"1","JHZQ":"24","NEXTTIME":"2020/12/4 12:00:00","ST":"2020/12/3 12:00:00","ET":"2020/12/3 19:00:00","ZC":"12315100101","ZCMC":"甲值","TJR":"管理员","TJSJ":"2020/3/16 15:59:32","XGR":"管理员","XGSJ":"2020/11/28 11:16:21","XXZD":"10","ZYMC":"XJ_RL","ZXSC":"7"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * JHID : XJGLJH00000000127 + * JHMC : 【电气】【二值】每班一次 + * JHZT : 1 + * JHZQ : 24 + * NEXTTIME : 2020/12/5 9:49:46 + * ST : 2020/12/4 9:49:46 + * ET : 2020/12/4 17:49:46 + * ZC : 12315100101 + * ZCMC : 甲值 + * TJR : 管理员 + * TJSJ : 2020/3/18 9:56:10 + * XGR : 管理员 + * XGSJ : 2020/12/4 9:49:46 + * XXZD : 10 + * ZYMC : XJ_RL + * ZXSC : 8 + */ + + private String JHID; + private String JHMC; + private String JHZT; + private String JHZQ; + private String NEXTTIME; + private String ST; + private String ET; + private String ZC; + private String ZCMC; + private String TJR; + private String TJSJ; + private String XGR; + private String XGSJ; + private String XXZD; + private String ZYMC; + private String ZXSC; + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getJHZT() { + return JHZT; + } + + public void setJHZT(String JHZT) { + this.JHZT = JHZT; + } + + public String getJHZQ() { + return JHZQ; + } + + public void setJHZQ(String JHZQ) { + this.JHZQ = JHZQ; + } + + public String getNEXTTIME() { + return NEXTTIME; + } + + public void setNEXTTIME(String NEXTTIME) { + this.NEXTTIME = NEXTTIME; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getET() { + return ET; + } + + public void setET(String ET) { + this.ET = ET; + } + + public String getZC() { + return ZC; + } + + public void setZC(String ZC) { + this.ZC = ZC; + } + + public String getZCMC() { + return ZCMC; + } + + public void setZCMC(String ZCMC) { + this.ZCMC = ZCMC; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getXGR() { + return XGR; + } + + public void setXGR(String XGR) { + this.XGR = XGR; + } + + public String getXGSJ() { + return XGSJ; + } + + public void setXGSJ(String XGSJ) { + this.XGSJ = XGSJ; + } + + public String getXXZD() { + return XXZD; + } + + public void setXXZD(String XXZD) { + this.XXZD = XXZD; + } + + public String getZYMC() { + return ZYMC; + } + + public void setZYMC(String ZYMC) { + this.ZYMC = ZYMC; + } + + public String getZXSC() { + return ZXSC; + } + + public void setZXSC(String ZXSC) { + this.ZXSC = ZXSC; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlresultBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlresultBean.java new file mode 100644 index 0000000..f5f6738 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/RlresultBean.java @@ -0,0 +1,40 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +public class RlresultBean { + + /** + * state : 1 + * msg : 巡检计划修改成功 + * data : [] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScDjjhInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScDjjhInfo.java new file mode 100755 index 0000000..1a47b0a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScDjjhInfo.java @@ -0,0 +1,118 @@ +package com.rehome.scbaxj.bean; + +/** + * 上传点击计划信息 + */ + +public class ScDjjhInfo { + + private String jhid; + private String pointnum; + private String Cjjg; + private String date; + private String bzmc; + private String djr; + private boolean checked; + private String fxnr; + private String smfx; + private String ASSETNUM; + private String SBZT; + private String SCID; + + public String getASSETNUM() { + return ASSETNUM; + } + + public void setASSETNUM(String ASSETNUM) { + this.ASSETNUM = ASSETNUM; + } + + public String getSBZT() { + return SBZT; + } + + public void setSBZT(String SBZT) { + this.SBZT = SBZT; + } + + public String getSmfx() { + return smfx; + } + + public void setSmfx(String smfx) { + this.smfx = smfx; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public String getDjr() { + return djr; + } + + public void setDjr(String djr) { + this.djr = djr; + } + + public String getBzmc() { + return bzmc; + } + + public void setBzmc(String bzmc) { + this.bzmc = bzmc; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getPointnum() { + return pointnum; + } + + public void setPointnum(String pointnum) { + this.pointnum = pointnum; + } + + public String getCjjg() { + return Cjjg; + } + + public void setCjjg(String cjjg) { + Cjjg = cjjg; + } + + public String getSCID() { + return SCID; + } + + public void setSCID(String SCID) { + this.SCID = SCID; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScdjjhBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScdjjhBean.java new file mode 100755 index 0000000..9edddad --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScdjjhBean.java @@ -0,0 +1,147 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/3/19. + */ + +public class ScdjjhBean {//用于上传点检计划的bean + + private String Action; + private String GWID; + private String YHID; + private String GWMC; + private List DJ_DATA; + + public List getDJ_DATA() { + return DJ_DATA; + } + + public void setDJ_DATA(List DJ_DATA) { + this.DJ_DATA = DJ_DATA; + } + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGWMC() { + return GWMC; + } + + public void setGWMC(String GWMC) { + this.GWMC = GWMC; + } + + public static class DJ_DATA { + private String QYBH; + private String QYDJ_ST; + private List QYDJ_DATA; + + public List getQYDJ_DATA() { + return QYDJ_DATA; + } + + public void setQYDJ_DATA(List QYDJ_DATA) { + this.QYDJ_DATA = QYDJ_DATA; + } + + public String getQYBH() { + return QYBH; + } + + public void setQYBH(String QYBH) { + this.QYBH = QYBH; + } + + public String getQYDJ_ST() { + return QYDJ_ST; + } + + public void setQYDJ_ST(String QYDJ_ST) { + this.QYDJ_ST = QYDJ_ST; + } + + + public static class QYDJ_DATA { + private String SCID; + private String DJSZ; + private String DJSJ; + private String FXNR; + private String SMFS; + private String SBZT; + + public String getSCID() { + return SCID; + } + + public void setSCID(String SCID) { + this.SCID = SCID; + } + + public String getDJSZ() { + return DJSZ; + } + + public void setDJSZ(String DJSZ) { + this.DJSZ = DJSZ; + } + + public String getDJSJ() { + return DJSJ; + } + + public void setDJSJ(String DJSJ) { + this.DJSJ = DJSJ; + } + + public String getFXNR() { + return FXNR; + } + + public void setFXNR(String FXNR) { + this.FXNR = FXNR; + } + + public String getSMFS() { + return SMFS; + } + + public void setSMFS(String SMFS) { + this.SMFS = SMFS; + } + + public String getSBZT() { + return SBZT; + } + + public void setSBZT(String SBZT) { + this.SBZT = SBZT; + } + } + + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScxjjhBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScxjjhBean.java new file mode 100755 index 0000000..a3ec798 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ScxjjhBean.java @@ -0,0 +1,141 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/3/19. + */ + +public class ScxjjhBean {//用于上传巡检计划的bean + + private String action; + private String zxid; + private String qybh; + private int QZWC; + private List data; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + + public int getQZWC() { + return QZWC; + } + + public void setQZWC(int QZWC) { + this.QZWC = QZWC; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class data { + private String scid; + private String dbh; + private String cbsz; + private String djsj; + private String zcmc; + private String cbr; + private String fxnr; + private String smfx; + private String SBZT; + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getDbh() { + return dbh; + } + + public void setDbh(String dbh) { + this.dbh = dbh; + } + + public String getCbsz() { + return cbsz; + } + + public void setCbsz(String cbsz) { + this.cbsz = cbsz; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getZcmc() { + return zcmc; + } + + public void setZcmc(String zcmc) { + this.zcmc = zcmc; + } + + public String getCbr() { + return cbr; + } + + public void setCbr(String cbr) { + this.cbr = cbr; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public String getSmfx() { + return smfx; + } + + public void setSmfx(String smfx) { + this.smfx = smfx; + } + + public String getSBZT() { + return SBZT; + } + + public void setSBZT(String SBZT) { + this.SBZT = SBZT; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SczjdBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SczjdBean.java new file mode 100755 index 0000000..ddff4d8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SczjdBean.java @@ -0,0 +1,209 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/31. + */ + +public class SczjdBean { + + private String Action; + private String DataTotal; + private List data; + + public String getAction() { + return Action; + } + + public void setAction(String Action) { + this.Action = Action; + } + + public String getDataTotal() { + return DataTotal; + } + + public void setDataTotal(String DataTotal) { + this.DataTotal = DataTotal; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class data { + + private String prouserid; + private String iswc; + private String wcintro; + private String rwid; + private List sbwclist; + + public String getProuserid() { + return prouserid; + } + + public void setProuserid(String prouserid) { + this.prouserid = prouserid; + } + + public String getIswc() { + return iswc; + } + + public void setIswc(String iswc) { + this.iswc = iswc; + } + + public String getWcintro() { + return wcintro; + } + + public void setWcintro(String wcintro) { + this.wcintro = wcintro; + } + + public String getRwid() { + return rwid; + } + + public void setRwid(String rwid) { + this.rwid = rwid; + } + + public List getSbwclist() { + return sbwclist; + } + + public void setSbwclist(List sbwclist) { + this.sbwclist = sbwclist; + } + + public static class SbwclistBean { + + private String isbhg; + private String iswc; + private String wcintro; + private String ispass; + private String jgid; + private String ybz; + private String xbz; + private String sqintro; + private String khid; + private String srcid; + private String sbid; + private String filecode; + private String sbname; + + + public String getIsbhg() { + return isbhg; + } + + public void setIsbhg(String isbhg) { + this.isbhg = isbhg; + } + + public String getIswc() { + return iswc; + } + + public void setIswc(String iswc) { + this.iswc = iswc; + } + + public String getWcintro() { + return wcintro; + } + + public void setWcintro(String wcintro) { + this.wcintro = wcintro; + } + + public String getIspass() { + return ispass; + } + + public void setIspass(String ispass) { + this.ispass = ispass; + } + + public String getJgid() { + return jgid; + } + + public void setJgid(String jgid) { + this.jgid = jgid; + } + + public String getYbz() { + return ybz; + } + + public void setYbz(String ybz) { + this.ybz = ybz; + } + + public String getXbz() { + return xbz; + } + + public void setXbz(String xbz) { + this.xbz = xbz; + } + + public String getSqintro() { + return sqintro; + } + + public void setSqintro(String sqintro) { + this.sqintro = sqintro; + } + + public String getKhid() { + return khid; + } + + public void setKhid(String khid) { + this.khid = khid; + } + + public String getSrcid() { + return srcid; + } + + public void setSrcid(String srcid) { + this.srcid = srcid; + } + + public String getSbid() { + return sbid; + } + + public void setSbid(String sbid) { + this.sbid = sbid; + } + + public String getFilecode() { + return filecode; + } + + public void setFilecode(String filecode) { + this.filecode = filecode; + } + + public String getSbname() { + return sbname; + } + + public void setSbname(String sbname) { + this.sbname = sbname; + } + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetSbModel.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetSbModel.java new file mode 100755 index 0000000..9bb0183 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetSbModel.java @@ -0,0 +1,72 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by ruihong on 2018/5/10. + */ + +public class SetSbModel implements Parcelable { + + private String sbId; + private String value; + private Boolean statu; + + public String getSbId() { + return sbId; + } + + public void setSbId(String sbId) { + this.sbId = sbId; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Boolean getStatu() { + return statu; + } + + public void setStatu(Boolean statu) { + this.statu = statu; + } + + public SetSbModel() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.sbId); + dest.writeString(this.value); + dest.writeValue(this.statu); + } + + protected SetSbModel(Parcel in) { + this.sbId = in.readString(); + this.value = in.readString(); + this.statu = (Boolean) in.readValue(Boolean.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public SetSbModel createFromParcel(Parcel source) { + return new SetSbModel(source); + } + + @Override + public SetSbModel[] newArray(int size) { + return new SetSbModel[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetxjSbModel.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetxjSbModel.java new file mode 100755 index 0000000..14ef7c0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/SetxjSbModel.java @@ -0,0 +1,72 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by ruihong on 2018/5/10. + */ + +public class SetxjSbModel implements Parcelable { + + private String sbId; + private String value; + private Boolean statu; + + public String getSbId() { + return sbId; + } + + public void setSbId(String sbId) { + this.sbId = sbId; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Boolean getStatu() { + return statu; + } + + public void setStatu(Boolean statu) { + this.statu = statu; + } + + public SetxjSbModel() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.sbId); + dest.writeString(this.value); + dest.writeValue(this.statu); + } + + protected SetxjSbModel(Parcel in) { + this.sbId = in.readString(); + this.value = in.readString(); + this.statu = (Boolean) in.readValue(Boolean.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public SetxjSbModel createFromParcel(Parcel source) { + return new SetxjSbModel(source); + } + + @Override + public SetxjSbModel[] newArray(int size) { + return new SetxjSbModel[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Sisbean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Sisbean.java new file mode 100755 index 0000000..e562453 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Sisbean.java @@ -0,0 +1,71 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/9. + */ + +public class Sisbean { + + + private String Total; + private List Rows; + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + + + private String poitname; + private String description; + private String jzbm; + private String poitvalue; + + public String getPoitname() { + return poitname; + } + + public void setPoitname(String poitname) { + this.poitname = poitname; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getJzbm() { + return jzbm; + } + + public void setJzbm(String jzbm) { + this.jzbm = jzbm; + } + + public String getPoitvalue() { + return poitvalue; + } + + public void setPoitvalue(String poitvalue) { + this.poitvalue = poitvalue; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatisticsBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatisticsBean.java new file mode 100644 index 0000000..64cf9b3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatisticsBean.java @@ -0,0 +1,97 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by huangwenfei on 2022/3/2 + * 统计Bean + */ + + +public class StatisticsBean { + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + private String qymc; + private String zds; + private String yjds; + private String wjds; + private String ljds; + private String mjds; + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public String getZds() { + return zds; + } + + public void setZds(String zds) { + this.zds = zds; + } + + public String getYjds() { + return yjds; + } + + public void setYjds(String yjds) { + this.yjds = yjds; + } + + public String getWjds() { + return wjds; + } + + public void setWjds(String wjds) { + this.wjds = wjds; + } + + public String getLjds() { + return ljds; + } + + public void setLjds(String ljds) { + this.ljds = ljds; + } + + public String getMjds() { + return mjds; + } + + public void setMjds(String mjds) { + this.mjds = mjds; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo.java new file mode 100755 index 0000000..1cd02df --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo.java @@ -0,0 +1,52 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Administrator on 2016/9/9. + */ +public class StatusInfo { + + + /** + * Rows : [{"status":"1"}] + * Total : 1 + */ + + private int Total; + /** + * status : 1 表示上传成功,0表示上传失败 + */ + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class Status { + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + } +} + + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo2.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo2.java new file mode 100755 index 0000000..880b369 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/StatusInfo2.java @@ -0,0 +1,57 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Administrator on 2016/9/9. + */ +public class StatusInfo2 { + + private int state; + private String msg; + private String GWID; + private String GWMC; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getGWMC() { + return GWMC; + } + + public void setGWMC(String GWMC) { + this.GWMC = GWMC; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} + + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Statusinfozj.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Statusinfozj.java new file mode 100755 index 0000000..6c54109 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/Statusinfozj.java @@ -0,0 +1,61 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/8/2. + */ + +public class Statusinfozj { + + + /** + * state : 1 + * msg : 修改成功 + * data : [{"rwid":"62"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * rwid : 62 + */ + + private String rwid; + + public String getRwid() { + return rwid; + } + + public void setRwid(String rwid) { + this.rwid = rwid; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/TJRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/TJRequestBean.java new file mode 100755 index 0000000..42c862b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/TJRequestBean.java @@ -0,0 +1,63 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class TJRequestBean { + + private String action; + private String TJFS; + private String ST; + private String ET; + private String ZY; + private String TJLX; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getTJFS() { + return TJFS; + } + + public void setTJFS(String TJFS) { + this.TJFS = TJFS; + } + + public String getST() { + return ST; + } + + public void setST(String ST) { + this.ST = ST; + } + + public String getET() { + return ET; + } + + public void setET(String ET) { + this.ET = ET; + } + + public String getZY() { + return ZY; + } + + public void setZY(String ZY) { + this.ZY = ZY; + } + + public String getTJLX() { + return TJLX; + } + + public void setTJLX(String TJLX) { + this.TJLX = TJLX; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean.java new file mode 100755 index 0000000..2026f82 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean.java @@ -0,0 +1,45 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/22. + */ + +public class UploadPhotosBean { + + + /** + * state : 1 + * msg : + * data : [] + */ + + private String state; + private String msg; + private List data; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean2.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean2.java new file mode 100755 index 0000000..e3cc187 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UploadPhotosBean2.java @@ -0,0 +1,55 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2017/12/22. + */ + +public class UploadPhotosBean2 { + + + private String Total; + private String Msg; + private List Rows; + + public String getMsg() { + return Msg; + } + + public void setMsg(String msg) { + Msg = msg; + } + + public String getTotal() { + return Total; + } + + public void setTotal(String Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class RowsBean { + /** + * status : 0 + */ + + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UserInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UserInfo.java new file mode 100755 index 0000000..0e19c52 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/UserInfo.java @@ -0,0 +1,96 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Administrator on 2016/9/13. + */ +public class UserInfo { + + + private int Total; + + private List Rows; + + public int getTotal() { + return Total; + } + + public void setTotal(int Total) { + this.Total = Total; + } + + public List getRows() { + return Rows; + } + + public void setRows(List Rows) { + this.Rows = Rows; + } + + public static class User { + private String status; + private String username; + private String usernames; + private String bzbh; + private String bzmc; + private String PermissionsResult; + private String ZY; + + public String getPermissionsResult() { + return PermissionsResult; + } + + public void setPermissionsResult(String permissionsResult) { + PermissionsResult = permissionsResult; + } + + public String getBzbh() { + return bzbh; + } + + public void setBzbh(String bzbh) { + this.bzbh = bzbh; + } + + public String getBzmc() { + return bzmc; + } + + public void setBzmc(String bzmc) { + this.bzmc = bzmc; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUsernames() { + return usernames; + } + + public void setUsernames(String usernames) { + this.usernames = usernames; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getZY() { + return ZY; + } + + public void setZY(String ZY) { + this.ZY = ZY; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XJRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XJRequestBean.java new file mode 100755 index 0000000..f54eb95 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XJRequestBean.java @@ -0,0 +1,38 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/14. + */ + +public class XJRequestBean { + + + private String action; + private String zc; + private String zymc; + + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjSbModel.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjSbModel.java new file mode 100755 index 0000000..e3c531f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjSbModel.java @@ -0,0 +1,72 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by ruihong on 2018/5/10. + */ + +public class XjSbModel implements Parcelable { + + private String sbmc; + private String value; + private Boolean statu; + + public String getSbId() { + return sbmc; + } + + public void setSbId(String sbId) { + this.sbmc = sbId; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Boolean getStatu() { + return statu; + } + + public void setStatu(Boolean statu) { + this.statu = statu; + } + + public XjSbModel() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.sbmc); + dest.writeString(this.value); + dest.writeValue(this.statu); + } + + protected XjSbModel(Parcel in) { + this.sbmc = in.readString(); + this.value = in.readString(); + this.statu = (Boolean) in.readValue(Boolean.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public XjSbModel createFromParcel(Parcel source) { + return new XjSbModel(source); + } + + @Override + public XjSbModel[] newArray(int size) { + return new XjSbModel[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjzhtjBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjzhtjBean.java new file mode 100755 index 0000000..507e9bf --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XjzhtjBean.java @@ -0,0 +1,106 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/8/3. + */ + +public class XjzhtjBean { + + + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * MC : 运行A值 + * ZDS : 0 + * YJDS : 0 + * WJDS : 0 + * MJDS : 0 + * WCL : 100% + */ + + private String MC; + private String ZDS; + private String YJDS; + private String WJDS; + private String MJDS; + private String WCL; + + public String getMC() { + return MC; + } + + public void setMC(String MC) { + this.MC = MC; + } + + public String getZDS() { + return ZDS; + } + + public void setZDS(String ZDS) { + this.ZDS = ZDS; + } + + public String getYJDS() { + return YJDS; + } + + public void setYJDS(String YJDS) { + this.YJDS = YJDS; + } + + public String getWJDS() { + return WJDS; + } + + public void setWJDS(String WJDS) { + this.WJDS = WJDS; + } + + public String getMJDS() { + return MJDS; + } + + public void setMJDS(String MJDS) { + this.MJDS = MJDS; + } + + public String getWCL() { + return WCL; + } + + public void setWCL(String WCL) { + this.WCL = WCL; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsHistoryListBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsHistoryListBean.java new file mode 100755 index 0000000..212be01 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsHistoryListBean.java @@ -0,0 +1,225 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/26. + */ + +public class XsHistoryListBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBeanX { + + + private String rq; + private String xgqx; + private List data; + + public String getRq() { + return rq; + } + + public void setRq(String rq) { + this.rq = rq; + } + + public String getXgqx() { + return xgqx; + } + + public void setXgqx(String xgqx) { + this.xgqx = xgqx; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * jhid : JH00000000070 + * zxid : ZX00000000169 + * jhmc : TEST1 + * jhlx : 51 + * jhzq : 8 + * st : 2017/7/24 6:00:00 + * et : 2017/7/24 14:00:00 + * wczt : 0 + * ljds : 0 + * jhds : 21 + * zc : 12108020207 + * iswsc : 1 + * zymc : 1 + */ + + private String jhid; + private String zxid; + private String jhmc; + private String jhlx; + private String jhzq; + private String st; + private String et; + private String wczt; + private String ljds; + private String jhds; + private String zc; + private String iswsc; + private String zymc; + private String scsj; + private String scrq; + + public String getScrq() { + return scrq; + } + + public void setScrq(String scrq) { + this.scrq = scrq; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getJhlx() { + return jhlx; + } + + public void setJhlx(String jhlx) { + this.jhlx = jhlx; + } + + public String getJhzq() { + return jhzq; + } + + public void setJhzq(String jhzq) { + this.jhzq = jhzq; + } + + public String getSt() { + return st; + } + + public void setSt(String st) { + this.st = st; + } + + public String getEt() { + return et; + } + + public void setEt(String et) { + this.et = et; + } + + public String getWczt() { + return wczt; + } + + public void setWczt(String wczt) { + this.wczt = wczt; + } + + public String getLjds() { + return ljds; + } + + public void setLjds(String ljds) { + this.ljds = ljds; + } + + public String getJhds() { + return jhds; + } + + public void setJhds(String jhds) { + this.jhds = jhds; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getIswsc() { + return iswsc; + } + + public void setIswsc(String iswsc) { + this.iswsc = iswsc; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsJhListBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsJhListBean.java new file mode 100755 index 0000000..ab3a23c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsJhListBean.java @@ -0,0 +1,239 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + * 巡视计划列表 + */ + +public class XsJhListBean { + + + /** + * state : 1 + * msg : 查询成功 + * data : [{"jhid":"JH00000000061","zxid":"ZX00000000061","jhmc":"测试1","jhlx":"51","jhzq":"8","st":"2017/7/17 11:00:00","et":"2017/7/17 19:00:00","wczt":"0","ljds":"0","jhds":"16","zc":"12108020202","iswsc":"1"},{"jhid":"JH00000000062","zxid":"ZX00000000062","jhmc":"test2","jhlx":"51","jhzq":"8","st":"2017/7/17 11:00:00","et":"2017/7/17 19:00:00","wczt":"0","ljds":"0","jhds":"19","zc":"12108020202","iswsc":"1"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean implements Parcelable { + /** + * jhid : JH00000000061 + * zxid : ZX00000000061 + * jhmc : 测试1 + * jhlx : 51 + * jhzq : 8 + * st : 2017/7/17 11:00:00 + * et : 2017/7/17 19:00:00 + * wczt : 0 + * ljds : 0 + * jhds : 16 + * zc : 12108020202 + * iswsc : 1 + */ + + private String jhid; + private String zxid; + private String jhmc; + private String jhlx; + private String jhzq; + private String st; + private String et; + private String wczt; + private String ljds; + private String jhds; + private String zc; + private String iswsc; + private String scsj; + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getJhlx() { + return jhlx; + } + + public void setJhlx(String jhlx) { + this.jhlx = jhlx; + } + + public String getJhzq() { + return jhzq; + } + + public void setJhzq(String jhzq) { + this.jhzq = jhzq; + } + + public String getSt() { + return st; + } + + public void setSt(String st) { + this.st = st; + } + + public String getEt() { + return et; + } + + public void setEt(String et) { + this.et = et; + } + + public String getWczt() { + return wczt; + } + + public void setWczt(String wczt) { + this.wczt = wczt; + } + + public String getLjds() { + return ljds; + } + + public void setLjds(String ljds) { + this.ljds = ljds; + } + + public String getJhds() { + return jhds; + } + + public void setJhds(String jhds) { + this.jhds = jhds; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getIswsc() { + return iswsc; + } + + public void setIswsc(String iswsc) { + this.iswsc = iswsc; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.jhid); + dest.writeString(this.zxid); + dest.writeString(this.jhmc); + dest.writeString(this.jhlx); + dest.writeString(this.jhzq); + dest.writeString(this.st); + dest.writeString(this.et); + dest.writeString(this.wczt); + dest.writeString(this.ljds); + dest.writeString(this.jhds); + dest.writeString(this.zc); + dest.writeString(this.iswsc); + dest.writeString(this.scsj); + } + + public DataBean() { + } + + protected DataBean(Parcel in) { + this.jhid = in.readString(); + this.zxid = in.readString(); + this.jhmc = in.readString(); + this.jhlx = in.readString(); + this.jhzq = in.readString(); + this.st = in.readString(); + this.et = in.readString(); + this.wczt = in.readString(); + this.ljds = in.readString(); + this.jhds = in.readString(); + this.zc = in.readString(); + this.iswsc = in.readString(); + this.scsj = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo.java new file mode 100755 index 0000000..9734430 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo.java @@ -0,0 +1,269 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Rehome-rjb1 on 2017/7/15. + * 巡视请求数据 + */ + +public class XsRequestInfo { + + + /** + * action : XSCB_ZXJL_GET + * zc : 值次(班组编号) + * jhid : 计划ID + */ + + private String action; + private String zc; + private String jhid; + private String zymc; + private String zxid; + private String bglx; + private String spzt; + private String rownum; + private String zxmc; + private String zy; + private String rqts; + private String moduletype; + private String shmk; + private String userid; + private String spr; + private String sis; + private String jz; + private String yhid; + private String jhmc; + private String mk; + private String zyid; + private String xjlx; + private String username; + private String starttime; + private String endtime; + private String type; + private String nfcbm; + private String djsj; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + public String getJhid() { + return jhid; + } + + public void setJhid(String jhid) { + this.jhid = jhid; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getBglx() { + return bglx; + } + + public void setBglx(String bglx) { + this.bglx = bglx; + } + + public String getSpzt() { + return spzt; + } + + public void setSpzt(String spzt) { + this.spzt = spzt; + } + + public String getRownum() { + return rownum; + } + + public void setRownum(String rownum) { + this.rownum = rownum; + } + + public String getZxmc() { + return zxmc; + } + + public void setZxmc(String zxmc) { + this.zxmc = zxmc; + } + + public String getZy() { + return zy; + } + + public void setZy(String zy) { + this.zy = zy; + } + + public String getRqts() { + return rqts; + } + + public void setRqts(String rqts) { + this.rqts = rqts; + } + + public String getModuletype() { + return moduletype; + } + + public void setModuletype(String moduletype) { + this.moduletype = moduletype; + } + + public String getShmk() { + return shmk; + } + + public void setShmk(String shmk) { + this.shmk = shmk; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getSpr() { + return spr; + } + + public void setSpr(String spr) { + this.spr = spr; + } + + public String getSis() { + return sis; + } + + public void setSis(String sis) { + this.sis = sis; + } + + public String getJz() { + return jz; + } + + public void setJz(String jz) { + this.jz = jz; + } + + public String getYhid() { + return yhid; + } + + public void setYhid(String yhid) { + this.yhid = yhid; + } + + public String getJhmc() { + return jhmc; + } + + public void setJhmc(String jhmc) { + this.jhmc = jhmc; + } + + public String getMk() { + return mk; + } + + public void setMk(String mk) { + this.mk = mk; + } + + public String getZyid() { + return zyid; + } + + public void setZyid(String zyid) { + this.zyid = zyid; + } + + public String getXjlx() { + return xjlx; + } + + public void setXjlx(String xjlx) { + this.xjlx = xjlx; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getStarttime() { + return starttime; + } + + public void setStarttime(String starttime) { + this.starttime = starttime; + } + + public String getEndtime() { + return endtime; + } + + public void setEndtime(String endtime) { + this.endtime = endtime; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo2.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo2.java new file mode 100755 index 0000000..160dd11 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsRequestInfo2.java @@ -0,0 +1,257 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Rehome-rjb1 on 2017/7/15. + * 巡视请求数据 + */ + +public class XsRequestInfo2 { + + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + /** + * action : XSCB_ZXJL_GET + * zc : 值次(班组编号) + * jhid : 计划ID + */ + + private String Action; + private String zc; + + private String YHID; + private String BMID; + private String RWZT; + + private String JHID; + private String zymc; + private String zxid; + private String bglx; + private String spzt; + private String rownum; + private String zxmc; + private String zy; + private String rqts; + private String moduletype; + private String shmk; + private String userid; + private String spr; + private String sis; + private String jz; + private String DEPTID; + private String PROUSERID; + + private String BAGID; + private String ZJDID; + private String FILEBAGID; + private String RWID; + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + + public String getRWZT() { + return RWZT; + } + + public void setRWZT(String RWZT) { + this.RWZT = RWZT; + } + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getBMID() { + return BMID; + } + + public void setBMID(String BMID) { + this.BMID = BMID; + } + + + public String getZc() { + return zc; + } + + public void setZc(String zc) { + this.zc = zc; + } + + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getBglx() { + return bglx; + } + + public void setBglx(String bglx) { + this.bglx = bglx; + } + + public String getSpzt() { + return spzt; + } + + public void setSpzt(String spzt) { + this.spzt = spzt; + } + + public String getRownum() { + return rownum; + } + + public void setRownum(String rownum) { + this.rownum = rownum; + } + + public String getZxmc() { + return zxmc; + } + + public void setZxmc(String zxmc) { + this.zxmc = zxmc; + } + + public String getZy() { + return zy; + } + + public void setZy(String zy) { + this.zy = zy; + } + + public String getRqts() { + return rqts; + } + + public void setRqts(String rqts) { + this.rqts = rqts; + } + + public String getModuletype() { + return moduletype; + } + + public void setModuletype(String moduletype) { + this.moduletype = moduletype; + } + + public String getShmk() { + return shmk; + } + + public void setShmk(String shmk) { + this.shmk = shmk; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getSpr() { + return spr; + } + + public void setSpr(String spr) { + this.spr = spr; + } + + public String getSis() { + return sis; + } + + public void setSis(String sis) { + this.sis = sis; + } + + public String getJz() { + return jz; + } + + public void setJz(String jz) { + this.jz = jz; + } + + public String getDEPTID() { + return DEPTID; + } + + public void setDEPTID(String DEPTID) { + this.DEPTID = DEPTID; + } + + public String getPROUSERID() { + return PROUSERID; + } + + public void setPROUSERID(String PROUSERID) { + this.PROUSERID = PROUSERID; + } + + public String getBAGID() { + return BAGID; + } + + public void setBAGID(String BAGID) { + this.BAGID = BAGID; + } + + public String getZJDID() { + return ZJDID; + } + + public void setZJDID(String ZJDID) { + this.ZJDID = ZJDID; + } + + public String getFILEBAGID() { + return FILEBAGID; + } + + public void setFILEBAGID(String FILEBAGID) { + this.FILEBAGID = FILEBAGID; + } + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsResultBaseBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsResultBaseBean.java new file mode 100755 index 0000000..13c0564 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsResultBaseBean.java @@ -0,0 +1,38 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/18. + */ + +public class XsResultBaseBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsSaveDataInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsSaveDataInfo.java new file mode 100755 index 0000000..8a073da --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsSaveDataInfo.java @@ -0,0 +1,145 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/15. + * 巡视请求数据 + */ + +public class XsSaveDataInfo { + + /** + * action : XSCB_ZXJL_GET + * zc : 值次(班组编号) + * jhid : 计划ID + */ + + private String action; + private String zxid; + private String qybh; + private List data; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public static class DataBean { + + private String dbh; + private String cbsz; + private String djsj; + private String zcmc; + private String cbr; + private String fxnr; + private String smfx; + private String scid; + + + public DataBean() { + } + + public DataBean(String dbh, String cbsz, String djsj, String zcmc, String cbr, String fxnr, String smfx,String scid) { + this.dbh = dbh; + this.cbsz = cbsz; + this.djsj = djsj; + this.zcmc = zcmc; + this.cbr = cbr; + this.fxnr = fxnr; + this.smfx = smfx; + this.scid = scid; + } + + public String getDbh() { + return dbh; + } + + public void setDbh(String dbh) { + this.dbh = dbh; + } + + public String getCbsz() { + return cbsz; + } + + public void setCbsz(String cbsz) { + this.cbsz = cbsz; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getZcmc() { + return zcmc; + } + + public void setZcmc(String zcmc) { + this.zcmc = zcmc; + } + + public String getCbr() { + return cbr; + } + + public void setCbr(String cbr) { + this.cbr = cbr; + } + + public String getFxnr() { + return fxnr; + } + + public void setFxnr(String fxnr) { + this.fxnr = fxnr; + } + + public String getSmfx() { + return smfx; + } + + public void setSmfx(String smfx) { + this.smfx = smfx; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XscbRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XscbRequestBean.java new file mode 100755 index 0000000..c0338b5 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XscbRequestBean.java @@ -0,0 +1,44 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/14. + */ + +public class XscbRequestBean { + private String Action; + private String YHID; + private String GWID; + private String RWID; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsjhQyBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsjhQyBean.java new file mode 100755 index 0000000..ed8ac96 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/XsjhQyBean.java @@ -0,0 +1,441 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/17. + * 巡视区域列表 + */ + +public class XsjhQyBean { + + /** + * state : 1 + * msg : 暂无数据 + * data : [{"zxid":"JH00000000062","qybh":"YX002","qymc":"2号机厂高变区域","nfcbm":"","txm":"YX002","data":[{"dbh":"10205","dlxbh":"1","dlxmc":"巡视","sb":" 2号机厂高变区域","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10013","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变高压绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10014","dlxbh":"2","dlxmc":"抄表","sb":"高压绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10015","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变低压X侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10016","dlxbh":"2","dlxmc":"抄表","sb":"低压X侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10017","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变低压Y侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10018","dlxbh":"2","dlxmc":"抄表","sb":"低压Y侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10019","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变上层油温","zymc":"1","dw":"℃","dz":"","gz":"90","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10020","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变冷却系统运行方式","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10021","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变可燃气体浓度","zymc":"1","dw":"ppm","dz":"","gz":"150","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10022","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变高压绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10023","dlxbh":"2","dlxmc":"抄表","sb":"高压绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10024","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变低压X侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10025","dlxbh":"2","dlxmc":"抄表","sb":"低压X侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10026","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变低压Y侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10027","dlxbh":"2","dlxmc":"抄表","sb":"低压Y侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10028","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变上层油温","zymc":"1","dw":"℃","dz":"","gz":"90","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10029","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变冷却系统运行方式","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10030","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变可燃气体浓度","zymc":"1","dw":"ppm","dz":"","gz":"150","zczt":"","bsyl":"","bqyl":"","xcnr":""}]}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBeanX implements Parcelable { + /** + * zxid : JH00000000062 + * qybh : YX002 + * qymc : 2号机厂高变区域 + * nfcbm : + * txm : YX002 + * data : [{"dbh":"10205","dlxbh":"1","dlxmc":"巡视","sb":" 2号机厂高变区域","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10013","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变高压绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10014","dlxbh":"2","dlxmc":"抄表","sb":"高压绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10015","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变低压X侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10016","dlxbh":"2","dlxmc":"抄表","sb":"低压X侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10017","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变低压Y侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10018","dlxbh":"2","dlxmc":"抄表","sb":"低压Y侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10019","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变上层油温","zymc":"1","dw":"℃","dz":"","gz":"90","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10020","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变冷却系统运行方式","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10021","dlxbh":"2","dlxmc":"抄表","sb":"A厂高变可燃气体浓度","zymc":"1","dw":"ppm","dz":"","gz":"150","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10022","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变高压绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10023","dlxbh":"2","dlxmc":"抄表","sb":"高压绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10024","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变低压X侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10025","dlxbh":"2","dlxmc":"抄表","sb":"低压X侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10026","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变低压Y侧绕组温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10027","dlxbh":"2","dlxmc":"抄表","sb":"低压Y侧绕组历史最高温度","zymc":"1","dw":"℃","dz":"","gz":"106","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10028","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变上层油温","zymc":"1","dw":"℃","dz":"","gz":"90","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10029","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变冷却系统运行方式","zymc":"1","dw":"","dz":"","gz":"","zczt":"","bsyl":"","bqyl":"","xcnr":""},{"dbh":"10030","dlxbh":"2","dlxmc":"抄表","sb":"B厂高变可燃气体浓度","zymc":"1","dw":"ppm","dz":"","gz":"150","zczt":"","bsyl":"","bqyl":"","xcnr":""}] + */ + + private String zxid; + private String qybh; + private String qymc; + private String nfcbm; + private String txm; + private String sczt; + private String scsj; + private List data; + + public String getZxid() { + return zxid; + } + + public void setZxid(String zxid) { + this.zxid = zxid; + } + + public String getQybh() { + return qybh; + } + + public void setQybh(String qybh) { + this.qybh = qybh; + } + + public String getQymc() { + return qymc; + } + + public void setQymc(String qymc) { + this.qymc = qymc; + } + + public String getNfcbm() { + return nfcbm; + } + + public void setNfcbm(String nfcbm) { + this.nfcbm = nfcbm; + } + + public String getTxm() { + return txm; + } + + public void setTxm(String txm) { + this.txm = txm; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getSczt() { + return sczt; + } + + public void setSczt(String sczt) { + this.sczt = sczt; + } + + public String getScsj() { + return scsj; + } + + public void setScsj(String scsj) { + this.scsj = scsj; + } + + public static class DataBean implements Parcelable { + /** + * dbh : 10205 + * dlxbh : 1 + * dlxmc : 巡视 + * sb : 2号机厂高变区域 + * zymc : 1 + * dw : + * dz : + * gz : + * zczt : + * bsyl : + * bqyl : + * xcnr : + */ + + private String dbh; + private String dlxbh; + private String dlxmc; + private String sb; + private String zymc; + private String dw; + private String dz; + private String gz; + private String zczt; + private String bsyl; + private String bqyl; + private String xcnr; + private String cbsz = ""; + private String djsj = ""; + private String smfx; + private String sisData; + private String dpx; + private String scid; + private String LRFS; + private String MRNR; + + public String getDbh() { + return dbh; + } + + public void setDbh(String dbh) { + this.dbh = dbh; + } + + public String getDlxbh() { + return dlxbh; + } + + public void setDlxbh(String dlxbh) { + this.dlxbh = dlxbh; + } + + public String getDlxmc() { + return dlxmc; + } + + public void setDlxmc(String dlxmc) { + this.dlxmc = dlxmc; + } + + public String getSb() { + return sb; + } + + public void setSb(String sb) { + this.sb = sb; + } + + public String getZymc() { + return zymc; + } + + public void setZymc(String zymc) { + this.zymc = zymc; + } + + public String getDw() { + return dw; + } + + public void setDw(String dw) { + this.dw = dw; + } + + public String getDz() { + return dz; + } + + public void setDz(String dz) { + this.dz = dz; + } + + public String getGz() { + return gz; + } + + public void setGz(String gz) { + this.gz = gz; + } + + public String getZczt() { + return zczt; + } + + public void setZczt(String zczt) { + this.zczt = zczt; + } + + public String getBsyl() { + return bsyl; + } + + public void setBsyl(String bsyl) { + this.bsyl = bsyl; + } + + public String getBqyl() { + return bqyl; + } + + public void setBqyl(String bqyl) { + this.bqyl = bqyl; + } + + public String getXcnr() { + return xcnr; + } + + public void setXcnr(String xcnr) { + this.xcnr = xcnr; + } + + public String getCbsz() { + return cbsz; + } + + public void setCbsz(String cbsz) { + this.cbsz = cbsz; + } + + public String getDjsj() { + return djsj; + } + + public void setDjsj(String djsj) { + this.djsj = djsj; + } + + public String getSmfx() { + return smfx; + } + + public void setSmfx(String smfx) { + this.smfx = smfx; + } + + public String getSisData() { + return sisData; + } + + public void setSisData(String sisData) { + this.sisData = sisData; + } + + public String getDpx() { + return dpx; + } + + public void setDpx(String dpx) { + this.dpx = dpx; + } + + public String getScid() { + return scid; + } + + public void setScid(String scid) { + this.scid = scid; + } + + public String getLRFS() { + return LRFS; + } + + public void setLRFS(String LRFS) { + this.LRFS = LRFS; + } + + public String getMRNR() { + return MRNR; + } + + public void setMRNR(String MRNR) { + this.MRNR = MRNR; + } + + + public DataBean() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.dbh); + dest.writeString(this.dlxbh); + dest.writeString(this.dlxmc); + dest.writeString(this.sb); + dest.writeString(this.zymc); + dest.writeString(this.dw); + dest.writeString(this.dz); + dest.writeString(this.gz); + dest.writeString(this.zczt); + dest.writeString(this.bsyl); + dest.writeString(this.bqyl); + dest.writeString(this.xcnr); + dest.writeString(this.cbsz); + dest.writeString(this.djsj); + dest.writeString(this.smfx); + dest.writeString(this.sisData); + dest.writeString(this.dpx); + dest.writeString(this.scid); + dest.writeString(this.LRFS); + dest.writeString(this.MRNR); + } + + protected DataBean(Parcel in) { + this.dbh = in.readString(); + this.dlxbh = in.readString(); + this.dlxmc = in.readString(); + this.sb = in.readString(); + this.zymc = in.readString(); + this.dw = in.readString(); + this.dz = in.readString(); + this.gz = in.readString(); + this.zczt = in.readString(); + this.bsyl = in.readString(); + this.bqyl = in.readString(); + this.xcnr = in.readString(); + this.cbsz = in.readString(); + this.djsj = in.readString(); + this.smfx = in.readString(); + this.sisData = in.readString(); + this.dpx = in.readString(); + this.scid = in.readString(); + this.LRFS = in.readString(); + this.MRNR = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBean createFromParcel(Parcel source) { + return new DataBean(source); + } + + @Override + public DataBean[] newArray(int size) { + return new DataBean[size]; + } + }; + } + + public DataBeanX() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.zxid); + dest.writeString(this.qybh); + dest.writeString(this.qymc); + dest.writeString(this.nfcbm); + dest.writeString(this.txm); + dest.writeString(this.sczt); + dest.writeString(this.scsj); + dest.writeTypedList(this.data); + } + + protected DataBeanX(Parcel in) { + this.zxid = in.readString(); + this.qybh = in.readString(); + this.qymc = in.readString(); + this.nfcbm = in.readString(); + this.txm = in.readString(); + this.sczt = in.readString(); + this.scsj = in.readString(); + this.data = in.createTypedArrayList(DataBean.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override + public DataBeanX createFromParcel(Parcel source) { + return new DataBeanX(source); + } + + @Override + public DataBeanX[] newArray(int size) { + return new DataBeanX[size]; + } + }; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/YhpcResultBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/YhpcResultBean.java new file mode 100644 index 0000000..8fc6c6b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/YhpcResultBean.java @@ -0,0 +1,38 @@ +package com.rehome.scbaxj.bean; + +public class YhpcResultBean { + + /** + * state : 1 + * msg : 上传成功 + * data : d10055f4cc334b9cb1a3a03527a14631 + */ + + private int state; + private String msg; + private String data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZJinfoBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZJinfoBean.java new file mode 100755 index 0000000..a7809b9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZJinfoBean.java @@ -0,0 +1,124 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/11. + */ + +public class ZJinfoBean { + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + + + private String CLASSID; + private String TITLE; + private String NAME; + private String ISAUDIT; + private String AUDITNAME; + private String NEXTATUSER; + private String ADDTIME; + private String ID; + private String ISWC; + + public String getCLASSID() { + return CLASSID; + } + + public void setCLASSID(String CLASSID) { + this.CLASSID = CLASSID; + } + + public String getTITLE() { + return TITLE; + } + + public void setTITLE(String TITLE) { + this.TITLE = TITLE; + } + + public String getNAME() { + return NAME; + } + + public void setNAME(String NAME) { + this.NAME = NAME; + } + + public String getISAUDIT() { + return ISAUDIT; + } + + public void setISAUDIT(String ISAUDIT) { + this.ISAUDIT = ISAUDIT; + } + + public String getAUDITNAME() { + return AUDITNAME; + } + + public void setAUDITNAME(String AUDITNAME) { + this.AUDITNAME = AUDITNAME; + } + + public String getNEXTATUSER() { + return NEXTATUSER; + } + + public void setNEXTATUSER(String NEXTATUSER) { + this.NEXTATUSER = NEXTATUSER; + } + + public String getADDTIME() { + return ADDTIME; + } + + public void setADDTIME(String ADDTIME) { + this.ADDTIME = ADDTIME; + } + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } + + public String getISWC() { + return ISWC; + } + + public void setISWC(String ISWC) { + this.ISWC = ISWC; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZYDataBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZYDataBean.java new file mode 100755 index 0000000..5c34738 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZYDataBean.java @@ -0,0 +1,71 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/27. + */ + +public class ZYDataBean { + + + /** + * state : 1 + * msg : 获取成功 + * data : [{"id":"7","name":"灰控"},{"id":"6","name":"脱硫"},{"id":"5","name":"#2汽机"},{"id":"4","name":"#1汽机"},{"id":"3","name":"#2锅炉"},{"id":"2","name":"#1锅炉"},{"id":"1","name":"电气网控"},{"id":"8","name":"化学"},{"id":"9","name":"厂用电"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * id : 7 + * name : 灰控 + */ + + private String ZYID; + private String ZYMC; + + public String getZYID() { + return ZYID; + } + + public void setZYID(String ZYID) { + this.ZYID = ZYID; + } + + public String getZYMC() { + return ZYMC; + } + + public void setZYMC(String ZYMC) { + this.ZYMC = ZYMC; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjbBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjbBean.java new file mode 100755 index 0000000..b2ad88a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjbBean.java @@ -0,0 +1,90 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/25. + */ + +public class ZjbBean { + + + /** + * state : 1 + * msg : + * data : [{"JHTITLE":"307B#3机组B级检修 ","FILEBAGTITLE":"油漆防腐项目作业指导书(第二版)","FILEBAGID":"587"},{"JHTITLE":"307B#3机组B级检修 ","FILEBAGTITLE":"保温施工项目作业指导书(第二版)","FILEBAGID":"588"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * JHTITLE : 307B#3机组B级检修 + * FILEBAGTITLE : 油漆防腐项目作业指导书(第二版) + * FILEBAGID : 587 + */ + + private String JHTITLE; + private String FILEBAGTITLE; + private String FILEBAGID; + private String RWDS; + + public String getJHTITLE() { + return JHTITLE; + } + + public void setJHTITLE(String JHTITLE) { + this.JHTITLE = JHTITLE; + } + + public String getFILEBAGTITLE() { + return FILEBAGTITLE; + } + + public void setFILEBAGTITLE(String FILEBAGTITLE) { + this.FILEBAGTITLE = FILEBAGTITLE; + } + + public String getFILEBAGID() { + return FILEBAGID; + } + + public void setFILEBAGID(String FILEBAGID) { + this.FILEBAGID = FILEBAGID; + } + + public String getRWDS() { + return RWDS; + } + + public void setRWDS(String RWDS) { + this.RWDS = RWDS; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwBean.java new file mode 100755 index 0000000..751e494 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwBean.java @@ -0,0 +1,191 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/5/21. + */ + +public class ZjrwBean { + + + /** + * state : 0 + * msg : + * data : [{"RWID":"16","RWMC":"公共系统D级检修","RWST":"2017/10/1 0:00:00","RWET":"","YJWCSJ":"2017/10/10 0:00:00","RWLX":"D","RWZT":"0","TJR":"280517","TJSJ":"2017/9/20 10:47:39","XGR":"280517","XGSJ":"2017/9/20 10:47:39","BZSM":"","ZJJZ":"0","JXRWID":"156"},{"RWID":"17","RWMC":"307B#3机组B级检修","RWST":"2018/2/8 0:00:00","RWET":"","YJWCSJ":"2018/3/24 0:00:00","RWLX":"B","RWZT":"5","TJR":"280517","TJSJ":"2017/10/18 10:53:13","XGR":"280517","XGSJ":"2017/10/18 10:53:13","BZSM":"","ZJJZ":"3","JXRWID":"157"},{"RWID":"15","RWMC":"207C(C)#2机组C级检修","RWST":"2018/1/4 0:00:00","RWET":"","YJWCSJ":"2018/2/7 0:00:00","RWLX":"C","RWZT":"4","TJR":"280865","TJSJ":"2017/8/29 14:25:14","XGR":"280865","XGSJ":"2017/8/29 14:25:14","BZSM":"","ZJJZ":"2","JXRWID":"119"},{"RWID":"13","RWMC":"107C(C)#1机组C级检修","RWST":"2017/6/5 0:00:00","RWET":"","YJWCSJ":"2017/7/4 0:00:00","RWLX":"C","RWZT":"5","TJR":"280865","TJSJ":"2017/1/5 14:51:05","XGR":"280865","XGSJ":"2017/1/5 14:51:05","BZSM":"","ZJJZ":"1","JXRWID":"113"}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * RWID : 16 + * RWMC : 公共系统D级检修 + * RWST : 2017/10/1 0:00:00 + * RWET : + * YJWCSJ : 2017/10/10 0:00:00 + * RWLX : D + * RWZT : 0 + * TJR : 280517 + * TJSJ : 2017/9/20 10:47:39 + * XGR : 280517 + * XGSJ : 2017/9/20 10:47:39 + * BZSM : + * ZJJZ : 0 + * JXRWID : 156 + */ + + private String RWID; + private String RWMC; + private String RWST; + private String RWET; + private String YJWCSJ; + private String RWLX; + private String RWZT; + private String TJR; + private String TJSJ; + private String XGR; + private String XGSJ; + private String BZSM; + private String ZJJZ; + private String JXRWID; + + public String getRWID() { + return RWID; + } + + public void setRWID(String RWID) { + this.RWID = RWID; + } + + public String getRWMC() { + return RWMC; + } + + public void setRWMC(String RWMC) { + this.RWMC = RWMC; + } + + public String getRWST() { + return RWST; + } + + public void setRWST(String RWST) { + this.RWST = RWST; + } + + public String getRWET() { + return RWET; + } + + public void setRWET(String RWET) { + this.RWET = RWET; + } + + public String getYJWCSJ() { + return YJWCSJ; + } + + public void setYJWCSJ(String YJWCSJ) { + this.YJWCSJ = YJWCSJ; + } + + public String getRWLX() { + return RWLX; + } + + public void setRWLX(String RWLX) { + this.RWLX = RWLX; + } + + public String getRWZT() { + return RWZT; + } + + public void setRWZT(String RWZT) { + this.RWZT = RWZT; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getTJSJ() { + return TJSJ; + } + + public void setTJSJ(String TJSJ) { + this.TJSJ = TJSJ; + } + + public String getXGR() { + return XGR; + } + + public void setXGR(String XGR) { + this.XGR = XGR; + } + + public String getXGSJ() { + return XGSJ; + } + + public void setXGSJ(String XGSJ) { + this.XGSJ = XGSJ; + } + + public String getBZSM() { + return BZSM; + } + + public void setBZSM(String BZSM) { + this.BZSM = BZSM; + } + + public String getZJJZ() { + return ZJJZ; + } + + public void setZJJZ(String ZJJZ) { + this.ZJJZ = ZJJZ; + } + + public String getJXRWID() { + return JXRWID; + } + + public void setJXRWID(String JXRWID) { + this.JXRWID = JXRWID; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwdetailBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwdetailBean.java new file mode 100755 index 0000000..b1fa45e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZjrwdetailBean.java @@ -0,0 +1,217 @@ +package com.rehome.scbaxj.bean; + +import java.util.List; + +/** + * Created by ruihong on 2018/7/17. + */ + +public class ZjrwdetailBean { + + + /** + * state : 0 + * msg : + * data : [{"TITLE":"油漆防腐项目作业指导书(第二版)","BAGID":"587","NAME":"停工待检点H-2","PROUSERID":"280865","PROUSERNAME":"黎立威","TYPE":"H","ISWC":"1","WCINTRO":"","SBWCLIST":[{"SBNAME":"凝汽器后水室底板生锈做防腐","SBID":"210","ISBHG":"Y","EXCEPTNAME":"否","ISWC":"10","WCNAME":"是","ID":"210"},{"SBNAME":"凝汽器后水室大盖螺栓防腐","SBID":"211","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"211"},{"SBNAME":"凝汽器前水室大盖螺栓部分防腐","SBID":"212","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"212"},{"SBNAME":"凝汽器排污坑平台做防腐","SBID":"213","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"213"},{"SBNAME":"胶球泵集球器底座防腐","SBID":"214","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"214"},{"SBNAME":"机6.5m凝汽器东侧部分栏杆防腐","SBID":"215","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"215"},{"SBNAME":"机凝汽器负一层平台槽钢做防腐 ","SBID":"216","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"216"},{"SBNAME":"循环水进口拦污栅及槽道防腐","SBID":"217","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"217"},{"SBNAME":"循环水旋转滤网及槽道防腐","SBID":"218","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"218"},{"SBNAME":"循环水泵及外筒体防腐","SBID":"219","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"219"},{"SBNAME":"循环水出口母管防腐","SBID":"220","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"220"},{"SBNAME":"冲洗水泵外筒体及基础台板防腐","SBID":"221","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"221"},{"SBNAME":"机主调压段管道系统(地面管道)防腐 ","SBID":"222","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"222"},{"SBNAME":"炉炉底和炉顶超温部分防腐","SBID":"223","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"223"},{"SBNAME":"炉炉墙检修部位防腐","SBID":"224","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"224"},{"SBNAME":"炉低温汽水管道防腐","SBID":"225","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"225"},{"SBNAME":"燃机进气蜗壳防腐","SBID":"226","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"226"},{"SBNAME":"主变厂高变局部防腐","SBID":"227","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"227"},{"SBNAME":"燃机进气室内部全面油漆防腐","SBID":"228","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"228"},{"SBNAME":"汽机房6.5米钢梁,凝汽器底部及周围钢梁油漆防腐","SBID":"229","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"229"},{"SBNAME":"电气包、热控包周围盖板油漆防腐","SBID":"230","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"230"},{"SBNAME":"燃机排气段外表锈蚀严重部位局部油漆防腐","SBID":"231","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"231"},{"SBNAME":"循环水泵房区域设备检修后特殊防腐","SBID":"232","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"232"},{"SBNAME":"FSC谐波滤波柜及#2主变及高厂变局部防腐","SBID":"233","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"233"},{"SBNAME":"TCA项部根据锈蚀情况局部高温漆防腐","SBID":"234","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"234"},{"SBNAME":"炉顶消音器根据锈蚀情况进行油漆防腐","SBID":"235","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"235"},{"SBNAME":"余热锅炉底部局部高温漆防腐","SBID":"236","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"236"},{"SBNAME":"烟囱旁排气管高温漆防腐","SBID":"237","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"237"}]}] + */ + + private int state; + private String msg; + private List data; + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * TITLE : 油漆防腐项目作业指导书(第二版) + * BAGID : 587 + * NAME : 停工待检点H-2 + * PROUSERID : 280865 + * PROUSERNAME : 黎立威 + * TYPE : H + * ISWC : 1 + * WCINTRO : + * SBWCLIST : [{"SBNAME":"凝汽器后水室底板生锈做防腐","SBID":"210","ISBHG":"Y","EXCEPTNAME":"否","ISWC":"10","WCNAME":"是","ID":"210"},{"SBNAME":"凝汽器后水室大盖螺栓防腐","SBID":"211","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"211"},{"SBNAME":"凝汽器前水室大盖螺栓部分防腐","SBID":"212","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"212"},{"SBNAME":"凝汽器排污坑平台做防腐","SBID":"213","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"213"},{"SBNAME":"胶球泵集球器底座防腐","SBID":"214","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"214"},{"SBNAME":"机6.5m凝汽器东侧部分栏杆防腐","SBID":"215","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"215"},{"SBNAME":"机凝汽器负一层平台槽钢做防腐 ","SBID":"216","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"216"},{"SBNAME":"循环水进口拦污栅及槽道防腐","SBID":"217","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"217"},{"SBNAME":"循环水旋转滤网及槽道防腐","SBID":"218","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"218"},{"SBNAME":"循环水泵及外筒体防腐","SBID":"219","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"219"},{"SBNAME":"循环水出口母管防腐","SBID":"220","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"220"},{"SBNAME":"冲洗水泵外筒体及基础台板防腐","SBID":"221","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"221"},{"SBNAME":"机主调压段管道系统(地面管道)防腐 ","SBID":"222","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"222"},{"SBNAME":"炉炉底和炉顶超温部分防腐","SBID":"223","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"223"},{"SBNAME":"炉炉墙检修部位防腐","SBID":"224","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"224"},{"SBNAME":"炉低温汽水管道防腐","SBID":"225","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"225"},{"SBNAME":"燃机进气蜗壳防腐","SBID":"226","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"226"},{"SBNAME":"主变厂高变局部防腐","SBID":"227","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"227"},{"SBNAME":"燃机进气室内部全面油漆防腐","SBID":"228","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"228"},{"SBNAME":"汽机房6.5米钢梁,凝汽器底部及周围钢梁油漆防腐","SBID":"229","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"229"},{"SBNAME":"电气包、热控包周围盖板油漆防腐","SBID":"230","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"230"},{"SBNAME":"燃机排气段外表锈蚀严重部位局部油漆防腐","SBID":"231","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"231"},{"SBNAME":"循环水泵房区域设备检修后特殊防腐","SBID":"232","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"232"},{"SBNAME":"FSC谐波滤波柜及#2主变及高厂变局部防腐","SBID":"233","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"233"},{"SBNAME":"TCA项部根据锈蚀情况局部高温漆防腐","SBID":"234","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"234"},{"SBNAME":"炉顶消音器根据锈蚀情况进行油漆防腐","SBID":"235","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"235"},{"SBNAME":"余热锅炉底部局部高温漆防腐","SBID":"236","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"236"},{"SBNAME":"烟囱旁排气管高温漆防腐","SBID":"237","ISBHG":"","EXCEPTNAME":"否","ISWC":"0","WCNAME":"否","ID":"237"}] + */ + + private String TITLE; + private String BAGID; + private String NAME; + private String PROUSERID; + private String PROUSERNAME; + private String TYPE; + private String ISWC; + private String WCINTRO; + private List SBWCLIST; + + public String getTITLE() { + return TITLE; + } + + public void setTITLE(String TITLE) { + this.TITLE = TITLE; + } + + public String getBAGID() { + return BAGID; + } + + public void setBAGID(String BAGID) { + this.BAGID = BAGID; + } + + public String getNAME() { + return NAME; + } + + public void setNAME(String NAME) { + this.NAME = NAME; + } + + public String getPROUSERID() { + return PROUSERID; + } + + public void setPROUSERID(String PROUSERID) { + this.PROUSERID = PROUSERID; + } + + public String getPROUSERNAME() { + return PROUSERNAME; + } + + public void setPROUSERNAME(String PROUSERNAME) { + this.PROUSERNAME = PROUSERNAME; + } + + public String getTYPE() { + return TYPE; + } + + public void setTYPE(String TYPE) { + this.TYPE = TYPE; + } + + public String getISWC() { + return ISWC; + } + + public void setISWC(String ISWC) { + this.ISWC = ISWC; + } + + public String getWCINTRO() { + return WCINTRO; + } + + public void setWCINTRO(String WCINTRO) { + this.WCINTRO = WCINTRO; + } + + public List getSBWCLIST() { + return SBWCLIST; + } + + public void setSBWCLIST(List SBWCLIST) { + this.SBWCLIST = SBWCLIST; + } + + public static class SBWCLISTBean { + /** + * SBNAME : 凝汽器后水室底板生锈做防腐 + * SBID : 210 + * ISBHG : Y + * EXCEPTNAME : 否 + * ISWC : 10 + * WCNAME : 是 + * ID : 210 + */ + + private String SBNAME; + private String SBID; + private String ISBHG; + private String EXCEPTNAME; + private String ISWC; + private String WCNAME; + private String ID; + + public String getSBNAME() { + return SBNAME; + } + + public void setSBNAME(String SBNAME) { + this.SBNAME = SBNAME; + } + + public String getSBID() { + return SBID; + } + + public void setSBID(String SBID) { + this.SBID = SBID; + } + + public String getISBHG() { + return ISBHG; + } + + public void setISBHG(String ISBHG) { + this.ISBHG = ISBHG; + } + + public String getEXCEPTNAME() { + return EXCEPTNAME; + } + + public void setEXCEPTNAME(String EXCEPTNAME) { + this.EXCEPTNAME = EXCEPTNAME; + } + + public String getISWC() { + return ISWC; + } + + public void setISWC(String ISWC) { + this.ISWC = ISWC; + } + + public String getWCNAME() { + return WCNAME; + } + + public void setWCNAME(String WCNAME) { + this.WCNAME = WCNAME; + } + + public String getID() { + return ID; + } + + public void setID(String ID) { + this.ID = ID; + } + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZkdInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZkdInfo.java new file mode 100755 index 0000000..d47e085 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/ZkdInfo.java @@ -0,0 +1,101 @@ +package com.rehome.scbaxj.bean; + +/** + * 质控点bean + */ +public class ZkdInfo { + + private int xh; + private String gx; + private String zt; + private String fl; + private String aj; + private String bj; + private String cj; + private String jl; + + /** + * @param xh 序号 + * @param gx 工序 + * @param zt 状态 + * @param fl 质控点分类 + * @param aj A级质检员 + * @param bj B级质检员 + * @param cj C级质检员 + * @param jl 监理工程师 + */ + public ZkdInfo(int xh, String gx, String zt, String fl, String aj, String bj, String cj, String jl) { + this.xh = xh; + this.gx = gx; + this.zt = zt; + this.fl = fl; + this.aj = aj; + this.bj = bj; + this.cj = cj; + this.jl = jl; + } + + public int getXh() { + return xh; + } + + public void setXh(int xh) { + this.xh = xh; + } + + public String getGx() { + return gx; + } + + public void setGx(String gx) { + this.gx = gx; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public String getFl() { + return fl; + } + + public void setFl(String fl) { + this.fl = fl; + } + + public String getAj() { + return aj; + } + + public void setAj(String aj) { + this.aj = aj; + } + + public String getBj() { + return bj; + } + + public void setBj(String bj) { + this.bj = bj; + } + + public String getCj() { + return cj; + } + + public void setCj(String cj) { + this.cj = cj; + } + + public String getJl() { + return jl; + } + + public void setJl(String jl) { + this.jl = jl; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/djuploadrzRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/djuploadrzRequestBean.java new file mode 100755 index 0000000..a89c548 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/djuploadrzRequestBean.java @@ -0,0 +1,108 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class djuploadrzRequestBean { + + private String Action; + private String GWID; + private String YHID; + private String RZID; + private String DJQK; + private String DXQK; + private String QXQK; + private String SBTFYQK; + private String BPXHQK; + private String FXHJY; + private String JS; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getGWID() { + return GWID; + } + + public void setGWID(String GWID) { + this.GWID = GWID; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getRZID() { + return RZID; + } + + public void setRZID(String RZID) { + this.RZID = RZID; + } + + public String getDJQK() { + return DJQK; + } + + public void setDJQK(String DJQK) { + this.DJQK = DJQK; + } + + public String getDXQK() { + return DXQK; + } + + public void setDXQK(String DXQK) { + this.DXQK = DXQK; + } + + public String getQXQK() { + return QXQK; + } + + public void setQXQK(String QXQK) { + this.QXQK = QXQK; + } + + public String getSBTFYQK() { + return SBTFYQK; + } + + public void setSBTFYQK(String SBTFYQK) { + this.SBTFYQK = SBTFYQK; + } + + public String getBPXHQK() { + return BPXHQK; + } + + public void setBPXHQK(String BPXHQK) { + this.BPXHQK = BPXHQK; + } + + public String getFXHJY() { + return FXHJY; + } + + public void setFXHJY(String FXHJY) { + this.FXHJY = FXHJY; + } + + public String getJS() { + return JS; + } + + public void setJS(String JS) { + this.JS = JS; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/qfbpbjRequestBean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/qfbpbjRequestBean.java new file mode 100755 index 0000000..ad11655 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/qfbpbjRequestBean.java @@ -0,0 +1,55 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/3/23. + */ + +public class qfbpbjRequestBean { + + private String Action; + private String YHID; + private String WZBM; + private String WZMC; + private String CKH; + + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getWZBM() { + return WZBM; + } + + public void setWZBM(String WZBM) { + this.WZBM = WZBM; + } + + public String getWZMC() { + return WZMC; + } + + public void setWZMC(String WZMC) { + this.WZMC = WZMC; + } + + public String getCKH() { + return CKH; + } + + public void setCKH(String CKH) { + this.CKH = CKH; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/sbInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/sbInfo.java new file mode 100755 index 0000000..0fd9fd0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/sbInfo.java @@ -0,0 +1,76 @@ +package com.rehome.scbaxj.bean; + +import android.os.Parcel; +import android.os.Parcelable; + + +public class sbInfo implements Parcelable { + + private int xh; + private String qybh; + private String sbmc; + private String sbid; + private String sbstate; + public int getXh() { + return xh; + } + public void setXh(int xh) { + this.xh = xh; + } + public String getQybh() { + return qybh; + } + public void setQybh(String qybh) { + this.qybh = qybh; + } + public String getSbmc() { + return sbmc; + } + public void setSbmc(String sbmc) { + this.sbmc = sbmc; + } + public String getSbid() { + return sbid; + } + public void setSbid(String sbid) { + this.sbid = sbid; + } + public String getSbstate() { + return sbstate; + } + public void setSbstate(String sbstate) { + this.sbstate = sbstate; + } + @Override + public int describeContents() { + return 0; + } + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.xh); + dest.writeString(this.sbmc); + dest.writeString(this.sbid); + dest.writeString(this.qybh); + dest.writeString(this.sbstate); + } + public sbInfo() { + } + protected sbInfo(Parcel in) { + this.xh = in.readInt(); + this.sbmc = in.readString(); + this.sbid = in.readString(); + this.qybh = in.readString(); + this.sbstate = in.readString(); + } + public static final Creator CREATOR = new Creator() { + @Override + public sbInfo createFromParcel(Parcel source) { + return new sbInfo(source); + } + + @Override + public sbInfo[] newArray(int size) { + return new sbInfo[size]; + } + }; +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/xjsbInfo.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/xjsbInfo.java new file mode 100755 index 0000000..57e6559 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/xjsbInfo.java @@ -0,0 +1,35 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by Administrator on 2016/8/22. + */ +public class xjsbInfo { + + private int xh; + private String sbmc; + private String sbstate; + + public int getXh() { + return xh; + } + + public void setXh(int xh) { + this.xh = xh; + } + + public String getSbmc() { + return sbmc; + } + + public void setSbmc(String sbmc) { + this.sbmc = sbmc; + } + + public String getSbstate() { + return sbstate; + } + + public void setSbstate(String sbstate) { + this.sbstate = sbstate; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/zdybean.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/zdybean.java new file mode 100755 index 0000000..129bc6c --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bean/zdybean.java @@ -0,0 +1,162 @@ +package com.rehome.scbaxj.bean; + +/** + * Created by ruihong on 2018/7/23. + */ + +public class zdybean { + + private String Action; + private String GZDH; + private String GZZT; + private String GZLY; + private String SBBH; + private String SBMC; + private String GZMS; + private String QXMS; + private String GZYXJ; + private String GZXZ; + private String TJR; + private String CHR; + private String BHBH; + private String ZRBM; + private String YHID; + private String JXBZ; + private String GZFZR; + + public String getAction() { + return Action; + } + + public void setAction(String action) { + Action = action; + } + + public String getGZDH() { + return GZDH; + } + + public void setGZDH(String GZDH) { + this.GZDH = GZDH; + } + + public String getGZZT() { + return GZZT; + } + + public void setGZZT(String GZZT) { + this.GZZT = GZZT; + } + + public String getGZLY() { + return GZLY; + } + + public void setGZLY(String GZLY) { + this.GZLY = GZLY; + } + + public String getSBBH() { + return SBBH; + } + + public void setSBBH(String SBBH) { + this.SBBH = SBBH; + } + + public String getSBMC() { + return SBMC; + } + + public void setSBMC(String SBMC) { + this.SBMC = SBMC; + } + + public String getGZMS() { + return GZMS; + } + + public void setGZMS(String GZMS) { + this.GZMS = GZMS; + } + + public String getQXMS() { + return QXMS; + } + + public void setQXMS(String QXMS) { + this.QXMS = QXMS; + } + + public String getGZYXJ() { + return GZYXJ; + } + + public void setGZYXJ(String GZYXJ) { + this.GZYXJ = GZYXJ; + } + + public String getGZXZ() { + return GZXZ; + } + + public void setGZXZ(String GZXZ) { + this.GZXZ = GZXZ; + } + + public String getTJR() { + return TJR; + } + + public void setTJR(String TJR) { + this.TJR = TJR; + } + + public String getCHR() { + return CHR; + } + + public void setCHR(String CHR) { + this.CHR = CHR; + } + + public String getBHBH() { + return BHBH; + } + + public void setBHBH(String BHBH) { + this.BHBH = BHBH; + } + + public String getZRBM() { + return ZRBM; + } + + public void setZRBM(String ZRBM) { + this.ZRBM = ZRBM; + } + + public String getYHID() { + return YHID; + } + + public void setYHID(String YHID) { + this.YHID = YHID; + } + + public String getJXBZ() { + return JXBZ; + } + + public void setJXBZ(String JXBZ) { + this.JXBZ = JXBZ; + } + + public String getGZFZR() { + return GZFZR; + } + + public void setGZFZR(String GZFZR) { + this.GZFZR = GZFZR; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BlueTestInfoActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BlueTestInfoActivity.java new file mode 100644 index 0000000..ccf2b95 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BlueTestInfoActivity.java @@ -0,0 +1,404 @@ +package com.rehome.scbaxj.bleUtil; + +import android.Manifest; +import android.app.Activity; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothManager; +import android.content.BroadcastReceiver; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.ServiceConnection; +import android.content.pm.PackageManager; +import android.graphics.Color; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.IBinder; +import android.util.Log; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.gson.Gson; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.BaseActivity3; + +import java.util.ArrayList; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +public class BlueTestInfoActivity extends BaseActivity3 { + + ListView lv; + TextView txData; + TextView ztData; + + private LeDeviceListAdapter mLeDeviceListAdapter; + private BluetoothAdapter mBluetoothAdapter; + private boolean mScanning; + private Handler mHandler; + private static final int REQUEST_ENABLE_BT = 1; + private static final long SCAN_PERIOD = 10000; + private static final int REQUEST_CODE_ACCESS_COARSE_LOCATION = 123; + private boolean initconn = false; + private String mDeviceAddress; + private BluetoothLeService mBluetoothLeService; + private boolean mConnected = false; + private ArrayList mPermissionList = new ArrayList(); + + @Override + public int getLayoutId() { + return R.layout.activity_bluetoothlist; + } + + + @Override + public void initView() { + initToolbar("蓝牙数据管理", "扫描并确认", new View.OnClickListener() { + @Override + public void onClick(View v) { + mLeDeviceListAdapter.clear(); + mLeDeviceListAdapter.notifyDataSetChanged(); + scanLeDevice(true); + } + }); + lv = findViewById(R.id.lv); + txData = findViewById(R.id.tx_data); + ztData = findViewById(R.id.zt_data); + } + + @Override + public void initData() { + initPermission(); + mHandler = new Handler(); + if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { + Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show(); + finish(); + } + final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); + mBluetoothAdapter = bluetoothManager.getAdapter(); + + if (mBluetoothAdapter == null) { + Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show(); + finish(); + return; + } + setAdapter(); + registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); + Intent gattServiceIntent = new Intent(BlueTestInfoActivity.this, BluetoothLeService.class); + bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE); + initconn = true; + } + + // todo 蓝牙动态申请权限 + private void initPermission(){ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ + // Android 版本大于等于 Android12 时 + // 只包括蓝牙这部分的权限,其余的需要什么权限自己添加 + mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN); + mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE); + mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT); + } else { + // Android 版本小于 Android12 及以下版本 + mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); + mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); + } + Log.i("app",new Gson().toJson(mPermissionList.toArray(new String[0]))); + ActivityCompat.requestPermissions(this,mPermissionList.toArray(new String[0]),1001); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + Log.i("app","onRequestPermissionsResult"); + Log.i("app",String.valueOf(grantResults.length)); + Log.i("app",new Gson().toJson(grantResults)); + boolean hasGrant = true; + for (int grantResult : grantResults) { + if (grantResult != 0) { + //未授权 + hasGrant = false; + break; + } + } + if(hasGrant){ + //已授权 + scanLeDevice(true); + }else{ + showToast("您未授权开启蓝牙连接到Blue设备,请先开启权限"); + } + } + + @Override + protected void onResume() { + super.onResume(); + if (!mBluetoothAdapter.isEnabled()) { + if (!mBluetoothAdapter.isEnabled()) { + Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return; + } + startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); + } + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == REQUEST_ENABLE_BT && resultCode == Activity.RESULT_CANCELED) { + finish(); + return; + } + super.onActivityResult(requestCode, resultCode, data); + } + + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + finish(); + return true; + } + return super.onKeyDown(keyCode, event); + } + + private void scanLeDevice(final boolean enable) { + if (enable) { + mHandler.postDelayed(() -> { + mScanning = false; + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return; + } + mBluetoothAdapter.stopLeScan(mLeScanCallback); + }, SCAN_PERIOD); + + mScanning = true; + mBluetoothAdapter.startLeScan(mLeScanCallback); + } else { + mScanning = false; + mBluetoothAdapter.stopLeScan(mLeScanCallback); + } + } + + //扫描到每台设备后调用回调函数callback. + private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { + @Override + public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { + runOnUiThread(() -> { + mLeDeviceListAdapter.addDevice(device); + mLeDeviceListAdapter.notifyDataSetChanged(); + }); + } + }; + + private void setAdapter() { + mLeDeviceListAdapter = new LeDeviceListAdapter(); + lv.setAdapter(mLeDeviceListAdapter); + lv.setOnItemClickListener((parent, view, position, id) -> { + final BluetoothDevice device = mLeDeviceListAdapter.getDevice(position); + if (device == null) return; + if (mScanning) { + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return; + } + mBluetoothAdapter.stopLeScan(mLeScanCallback); + mScanning = false; + } + + mDeviceAddress = device.getAddress(); + mLeDeviceListAdapter.setSelectItem(position);//记载当前点击选中的节点position,为了变色 + mLeDeviceListAdapter.notifyDataSetChanged(); + + if (initconn) { + if (!mConnected) mBluetoothLeService.connect(mDeviceAddress); + } else { + registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter()); + Intent gattServiceIntent = new Intent(BlueTestInfoActivity.this, BluetoothLeService.class); + bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE); + initconn = true; + } + }); + } + + private class LeDeviceListAdapter extends BaseAdapter { + private class ViewHolder { + TextView deviceName; + } + + private ArrayList mLeDevices; + private LayoutInflater mInflator; + + public LeDeviceListAdapter() { + super(); + mLeDevices = new ArrayList(); + mInflator = BlueTestInfoActivity.this.getLayoutInflater(); + } + + public void addDevice(BluetoothDevice device) { + if (!mLeDevices.contains(device)) { + mLeDevices.add(device); + } + } + + public BluetoothDevice getDevice(int position) { + return mLeDevices.get(position); + } + + public void clear() { + mLeDevices.clear(); + } + + @Override + public int getCount() { + return mLeDevices.size(); + } + + @Override + public Object getItem(int i) { + return mLeDevices.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + ViewHolder viewHolder; + if (view == null) { + view = mInflator.inflate(R.layout.listitem_device, null); + viewHolder = new ViewHolder(); + viewHolder.deviceName = view.findViewById(R.id.device_name); + view.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) view.getTag(); + } + + BluetoothDevice device = mLeDevices.get(i); + if (ActivityCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return null; + } + final String deviceName = device.getName(); + if (deviceName != null && deviceName.length() > 0) + viewHolder.deviceName.setText(deviceName); + else + viewHolder.deviceName.setText(R.string.unknown_device); + //当前点击选中的变色 + if (i == selectItem) { + viewHolder.deviceName.getPaint().setFakeBoldText(true); + viewHolder.deviceName.setTextColor(Color.parseColor("#00FF7F"));//连接之后的颜色 + } else { + viewHolder.deviceName.getPaint().setFakeBoldText(false); + viewHolder.deviceName.setTextColor(Color.parseColor("#000000")); + } + return view; + } + + public void setSelectItem(int selectItem) { + this.selectItem = selectItem; + } + + private int selectItem = -1; + } + + + private final ServiceConnection mServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName componentName, IBinder service) { + mBluetoothLeService = ((BluetoothLeService.LocalBinder) service).getService(); + if (!mBluetoothLeService.initialize()) { + finish(); + } + mBluetoothLeService.connect(mDeviceAddress); + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + mBluetoothLeService = null; + } + }; + private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) { + mConnected = true; + ztData.setText("蓝牙状态:已连接"); + } else if (BluetoothLeService.ACTION_GATT_DISCONNECTED.equals(action)) { + mConnected = false; + ztData.setText("蓝牙状态:已断开"); + } else if (BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.equals(action)) { + ztData.setText("蓝牙状态:已连接,仪器准备就绪"); + } else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) { + String Data = ""; + String BleData = intent.getStringExtra(BluetoothLeService.EXTRA_DATA); + String type = BleData.substring(0, 1); + if (type.equals("T")) { + Data = "温度:" + BleData.substring(2, 6); + } else { + Data = "震动:" + BleData.substring(2, 6); + } + txData.setText(Data); + + } + } + }; + + + static IntentFilter makeGattUpdateIntentFilter() { + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED); + intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED); + intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE); + return intentFilter; + } + + @Override + protected void onDestroy() { + scanLeDevice(false); + mLeDeviceListAdapter.clear(); + unbindService(mServiceConnection); + unregisterReceiver(mGattUpdateReceiver); + super.onDestroy(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BluetoothLeService.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BluetoothLeService.java new file mode 100644 index 0000000..c820985 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/bleUtil/BluetoothLeService.java @@ -0,0 +1,275 @@ +package com.rehome.scbaxj.bleUtil; + +import android.app.Service; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattService; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.content.Context; +import android.content.Intent; +import android.os.Binder; +import android.os.IBinder; +import android.util.Log; + +import java.util.List; +import java.util.UUID; + + +public class BluetoothLeService extends Service { + + private final static String TAG = BluetoothLeService.class.getSimpleName(); + + private BluetoothManager mBluetoothManager; + private BluetoothAdapter mBluetoothAdapter; + private String mBluetoothDeviceAddress; + private BluetoothGatt mBluetoothGatt; + private int mConnectionState = STATE_DISCONNECTED; + + private static final int STATE_DISCONNECTED = 0; + private static final int STATE_CONNECTING = 1; + private static final int STATE_CONNECTED = 2; + + public final static String ACTION_GATT_CONNECTED = + "com.example.bluetooth.le.ACTION_GATT_CONNECTED"; + public final static String ACTION_GATT_DISCONNECTED = + "com.example.bluetooth.le.ACTION_GATT_DISCONNECTED"; + public final static String ACTION_GATT_SERVICES_DISCOVERED = + "com.example.bluetooth.le.ACTION_GATT_SERVICES_DISCOVERED"; + public final static String ACTION_DATA_AVAILABLE = + "com.example.bluetooth.le.ACTION_DATA_AVAILABLE"; + public final static String EXTRA_DATA = + "com.example.bluetooth.le.EXTRA_DATA"; + + + + // Implements callback methods for GATT events that the app cares about. For example, + // connection change and services discovered. + private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { + @Override + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { + String intentAction; + if (newState == BluetoothProfile.STATE_CONNECTED) { + intentAction = ACTION_GATT_CONNECTED; + mConnectionState = STATE_CONNECTED; + broadcastUpdate(intentAction); + Log.i(TAG, "Connected to GATT server."); + // Attempts to discover services after successful connection. + Log.i(TAG, "Attempting to start service discovery:" + + mBluetoothGatt.discoverServices()); + + } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { + intentAction = ACTION_GATT_DISCONNECTED; + mConnectionState = STATE_DISCONNECTED; + Log.i(TAG, "Disconnected from GATT server."); + broadcastUpdate(intentAction); + } + } + + @Override + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + if (status == BluetoothGatt.GATT_SUCCESS) { + broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED); + ////tsp默认选择一个地址 + BluetoothGattCharacteristic characteristic1= + gatt.getService(UUID.fromString("0000ffe0-0000-1000-8000-00805f9b34fb")).getCharacteristic(UUID.fromString("0000ffe4-0000-1000-8000-00805f9b34fb")); + setCharacteristicNotification(characteristic1,true); + } else { + Log.w(TAG, "onServicesDiscovered received: " + status); + } + } + + @Override + public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + if (status == BluetoothGatt.GATT_SUCCESS) { + broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic); + } + } + + @Override + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic); + } + @Override + public void onCharacteristicWrite (BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status){ + + } + }; + + private void broadcastUpdate(final String action) { + final Intent intent = new Intent(action); + sendBroadcast(intent); + } + + //收到数据后,触发广播 + private void broadcastUpdate(final String action, final BluetoothGattCharacteristic characteristic) { + final Intent intent = new Intent(action); + // For all other profiles, writes the data formatted in HEX. + final byte[] data = characteristic.getValue(); + if (data != null && data.length > 0) { + final StringBuilder stringBuilder = new StringBuilder(data.length); + for(byte byteChar : data) + stringBuilder.append(String.format("%02X ", byteChar)); + intent.putExtra(EXTRA_DATA, new String(data) + "\n" + stringBuilder.toString()); + } + sendBroadcast(intent); + } + + public class LocalBinder extends Binder { + public BluetoothLeService getService() { + return BluetoothLeService.this; + } + } + + @Override + public IBinder onBind(Intent intent) { + return mBinder; + } + + @Override + public boolean onUnbind(Intent intent) { + // After using a given device, you should make sure that BluetoothGatt.close() is called + // such that resources are cleaned up properly. In this particular example, close() is + // invoked when the UI is disconnected from the Service. +// close(); + return super.onUnbind(intent); + } + + private final IBinder mBinder = new LocalBinder(); + + /** + * Initializes a reference to the local Bluetooth adapter. + * + * @return Return true if the initialization is successful. + */ + public boolean initialize() { + // For API level 18 and above, get a reference to BluetoothAdapter through + // BluetoothManager. + if (mBluetoothManager == null) { + mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); + if (mBluetoothManager == null) { + Log.e(TAG, "Unable to initialize BluetoothManager."); + return false; + } + } + + mBluetoothAdapter = mBluetoothManager.getAdapter(); + if (mBluetoothAdapter == null) { + Log.e(TAG, "Unable to obtain a BluetoothAdapter."); + return false; + } + + return true; + } + + /** + * Connects to the GATT server hosted on the Bluetooth LE device. + * + * @param address The device address of the destination device. + * + * @return Return true if the connection is initiated successfully. The connection result + * is reported asynchronously through the + * {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)} + * callback. + */ + public boolean connect(final String address) {//连接设备 + if (mBluetoothAdapter == null || address == null) { + Log.w(TAG, "BluetoothAdapter not initialized or unspecified address."); + return false; + } + + // Previously connected device. Try to reconnect. + if (mBluetoothDeviceAddress != null && address.equals(mBluetoothDeviceAddress)&& mBluetoothGatt != null) { + Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection."); + if (mBluetoothGatt.connect()) { + mConnectionState = STATE_CONNECTING; + return true; + } else { + return false; + } + } + + final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); + if (device == null) { + Log.w(TAG, "Device not found. Unable to connect."); + return false; + } + // We want to directly connect to the device, so we are setting the autoConnect + // parameter to false. + mBluetoothGatt = device.connectGatt(this, false, mGattCallback); + Log.d(TAG, "Trying to create a new connection."); + mBluetoothDeviceAddress = address; + mConnectionState = STATE_CONNECTING; + return true; + } + + /** + * Disconnects an existing connection or cancel a pending connection. The disconnection result + * is reported asynchronously through the + * {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)} + * callback. + */ + public void disconnect() { + if (mBluetoothAdapter == null || mBluetoothGatt == null) { + Log.w(TAG, "BluetoothAdapter not initialized"); + return; + } + mBluetoothGatt.disconnect(); + } + + /** + * After using a given BLE device, the app must call this method to ensure resources are + * released properly. + */ + public void close() { + if (mBluetoothGatt == null) { + return; + } + mBluetoothGatt.close(); + mBluetoothGatt = null; + } + + /** + * Request a read on a given {@code BluetoothGattCharacteristic}. The read result is reported + * asynchronously through the {@code BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int)} + * callback. + * + * @param characteristic The characteristic to read from. + */ + public void readCharacteristic(BluetoothGattCharacteristic characteristic) { + if (mBluetoothAdapter == null || mBluetoothGatt == null) { + Log.w(TAG, "BluetoothAdapter not initialized"); + return; + } + mBluetoothGatt.readCharacteristic(characteristic); + } + public void writeCharacteristic(BluetoothGattCharacteristic characteristic) { + if (mBluetoothAdapter == null || mBluetoothGatt == null) { + Log.w(TAG, "BluetoothAdapter not initialized"); + return; + } + mBluetoothGatt.writeCharacteristic(characteristic); + } + /** + * Enables or disables notification on a give characteristic. + * + * @param characteristic Characteristic to act on. + * @param enabled If true, enable notification. False otherwise. + */ + //选择地址 + public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic, boolean enabled) { + if (mBluetoothAdapter == null || mBluetoothGatt == null) { + Log.w(TAG, "BluetoothAdapter not initialized"); + return; + } + mBluetoothGatt.setCharacteristicNotification(characteristic, enabled); + } + + public List getSupportedGattServices() { + if (mBluetoothGatt == null) return null; + return mBluetoothGatt.getServices(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/contans/Contans.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/contans/Contans.java new file mode 100755 index 0000000..6a41c06 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/contans/Contans.java @@ -0,0 +1,141 @@ +package com.rehome.scbaxj.contans; + +import okhttp3.Route; + +public class Contans { + + + public static String LOGIN = "AppLogin.ashx"; + public static String LOGINNFC = "AppLogin/userLogin.ashx"; + public static String CHECK_UPDATA_APK = "ApkUpdate/GetData.aspx"; + + //电厂内网正式环境 + public static String IP = "http://10.18.23.3:8110/"; + public static String VISITURL = "http://10.18.23.3:8098/#/pages/approve/index?respondentCode="; + //公司服务器开发环境 +// public static String IP = "http://192.168.2.6:8001/"; +// public static String VISITURL = "http://192.168.2.237:8081/#/pages/approve/index?respondentCode="; + + + public static String MAXIMOIP = "http://10.46.0.152:7001/"; +// public static String IP = "http://192.168.2.116:3028/"; + + + // //获取到的蓝牙mac地址 +// /*-------------------------------*/ +// public final static String LOCALBLEADDRESS = "LOCALBLEADDRESS"; +// /*-------------------------------*/ + public static String YXCB_ZY_ID = "";//运行抄表专业ID + public static String YXCB_ZY_NAME = "";//运行抄表专业名字 + + //-----------------------点检--------------------------// + public static String DJJHLIST = "DJGL/DJGL_GWDJ.ashx";//prame BZMC = 测试班组 + public static String DJJHDLB = "DJGL/DJGL_GWDJ.ashx";// prame jhid=20161013141937; + public static String DJJHXCJSSC = "DJGL/DJGL_XCJS.ashx";//ms:描述 fileps:文件 poinnum jhid + public static String DJJHSC = "DJGL/DJGL_GWDJ.ashx";//json字符串 + public static String DJJHQXGD = "DJGL/DJGL_QXGD.ashx";//json字符串 + public static String QXGDZY = "QXGD/QXGD_ZYXX.ASHX"; + public static String YHPC = "AJH/AJH_YHPCSC.ashx";//隐患排查 + public static String YHPCTP = "AJH/AJH_YHWJSC.ashx";//guid + //-----------------------安健环------------------------// + public static String AJHJHLIST = "AJH/AJH_XZJH.ashx"; + public static String AJHXZRW = "AJH/AJH_XZRW.ashx"; + public static String AJHSC = "AJH/AJH_JLSC.ashx"; + public static String AJHXCJS = "AJH/AJH_JSXC.ashx"; + public static String XWAQGC = "ajh/gc_xzrw.ashx"; //gh = + public static String QY = "djgl/DJGL_QYLIST.ashx"; + public static String XWAQGCSC = "ajh/gc_jlsc.ashx";//观察结果上传 + public static String XWAQGCJS = "ajh/GC_JSSC.ashx";//记事上传 + public static String GZQKSBLIST = "AJH/GZQKSB/GetDataByList.ashx";//工作上报列表查看 + public static String GZQKSBSAVE = "AJH/GZQKSB/SaveData.ashx";//工作情况上报保存 + public static String GZQKSBGB = "AJH/GZQKSB/SetRWState.ashx";//工作情况上报关闭 + public static String GZQKID = "AJH/GZQKSB/GetDataByID.ashx"; + public final static int IMAGE_RESULT = 10; + public final static int SBXJZT_WWC = 0; + public final static int SBXJZT_ZC = 1; + public final static int SBXJZT_BZC = 2; + public final static int RESULT_OK = 1; + public final static int DLB = 1; + public final static int ZKDLB = 2; + //==============================巡视抄表=========================================// + public final static String APPUPLOAD = "ApkUpdate/GetData.aspx";//app自动更新 + public final static String XSCB = "XSCB/YX_XJGL.ashx";//巡检管理/巡检任务列表 + public final static String XSCB_PLAN_DOWNLOAD = "XSCB/YX_XJGL.ashx";///巡检管理/巡检任务/巡检数据管理/计划下载 + public final static String BAXJ = "JK_BA_XJGL.ashx";//保安巡检任务列表 + public final static String XFXJ = "XFJCGL/JK_XF_XJGL.ashx";//消防巡检任务列表 + public final static String XFXJ_PLAN_DOWNLOAD = "XFJCGL/JK_XF_XJGL.ashx";///消防巡检计划下载 + public final static String XSCB_PLAN_BA_DOWNLOAD = "JK_BA_XJGL.ashx";///保安巡检计划下载 + public final static String XSCB_PLAN_BA_UPLOAD = "JK_BA_XJGL.ashx";///保安巡检计划上传 + public final static String DQGZ = "DQGZ/YF_DQGZ.ashx";//定期工作列表 + public final static String DQGZ_UPLOAD_TASK = "DQGZ/YF_DQGZ.ashx";//定期工作上传 + public final static String GET_MY_UPLOAD_CHECKED = "XSCB/MY_UPLOAD.ashx";//获取本人上传的巡检数据 + public final static String GET_STATISTICS_DATA = "XSCB/STATISTICS_CHECKED.ashx";//获取本人上传的巡检数据 + public final static String LAST_UPLOAD_POINT_CHECKED = "XSCB/LAST_UPLOAD_POINT_CHECKED.ashx";//获取当前值当前点最后的已巡检人 + public final static String XJ_UPLOAD_LOCATION_CHECKED = "XSCB/CURRENT_CHECK_LOCALTION.ashx";//上传巡检人当前位置 + public final static String SERVER_CONNECT_CHECK = "_Pub_ZDSC.ashx";//服务器连接状态检测,看是否能连接wifi后自动上传数据 + public final static String BA_UPLOAD_PHOTO_URL = "_Pub_IMG_APP.ashx";//保安巡检上传图片 + public final static String BA_Download_MJ_URL = "MJGL/BA_MJGL.ashx";//保安获取免检列表 + public final static String BA_UPLOAD_MJ_URL = "MJGL/BA_MJGL.ashx";//保安上传免检列表 + public final static String BA_GET_ROUTE_URL = "JK_BA_XJGL.ashx";//保安获取路线数据 + public final static String XF_UPLOAD_PHOTO_URL = "XFJCGL/JK_XFIMG_APP.ashx";//消防巡检上传图片 + public final static String XF_PLAN_BA_UPLOAD = "XFJCGL/JK_XF_XJGL.ashx";///消防巡检计划上传 + public final static String XF_Download_MJ_URL = "MJGL/XF_MJGL.ashx";//消防获取免检列表 + public final static String XF_UPLOAD_MJ_URL = "MJGL/XF_MJGL.ashx";//消防上传免检列表 + + + + + // ========================= intent KEY ========================// + public final static String KEY_ITEMID = "itemid"; + public final static String KEY_SBINFO = "sbinfo"; + public final static String KEY_SBDJLIST = "sbdjlist"; + public final static String KEY_JCZT = "zczt"; + public final static String KEY_MS = "ms"; + public final static String KEY_FLAG = "flag"; + public final static String KEY_IS_EDIT = "edit"; + public final static String KEY_NOTIF = "notification"; + public final static String KEY_PDID = "pdid"; + public final static String KEY_DJJHLIST = "djjhlist"; + public final static String KEY_DJJHRWQY = "djjhrwqy"; + public final static String KEY_ITEM = "item"; + public final static String FILEPS = "fileps"; + public final static String KEY_XSCBJH = "xscbjh"; + public final static String KEY_QY = "qydlist"; + public final static String KEY_EWM_OR_NFC = "ewm_or_nfc";//二维码或NFC 0 NFC 1 一维码二维码 + public final static String KEY_IS_HIS = "history";//历史 + public final static String KEY_JHLX = "jhlx"; + public final static String KEY_BG = "DQGZBG";//定期工作变更 + public final static String KEY_ZXID = "zxid"; + public final static String KEY_XS_HISTORY = "xs_history"; + public final static String KEY_NAME = "keyName"; + public final static String KEY_POSITION = "keyPosition"; + public final static String KEY_BQBM = "bqbm";//二维码或条形码 + public final static String KEY_NFCBH = "nfcbh";//NFC编号 + public final static String NFCOREWM = "nfcorewm"; + public final static String PERMISSIONSRESULT = "PermissionsResult"; + public final static String USERID = "USERID"; + public final static String HASLOGIN = "HASLOGIN"; + public final static String USERPWD = "USERPWD"; + public final static String NFCBM = "NFCBM"; + public final static String BZBH = "bzbh"; + public final static String BZMC = "bzmc"; + public final static String USERNAME = "USERNAME"; + public final static String SCID = "scid"; + public final static String RWID = "rwid"; + public final static String ZY = "ZY"; + public final static String BAXJLX = "BAXJLX";//保安巡检路线 + public final static String LASTLOGINDATE = "LASTLOGINDATE"; + /********************广播字段(唯一性)********************************/ + public static final String ACTION_YULONE = "actionYulOne"; + public static final String ACTION_YULTWO = "actionYulTwo"; + public static final String ACTION_REFRESHPLANDOWNLOAD = "refreshPlanDownload"; + public static final String ACTION_REFRESHPLANUPLOAD = "refreshPlanUpload"; + public static final String ACTION_REFRESHDOWNLOADPLAN = "refreshDownloadPlan"; + public static final String ACTION_PROFESSIONCHANGE = "professionChange"; + //public static final String ACTION__CHANGE_ROUTE_REDOWNLOADPLAN = "action__change_route_redownloadplan"; + + public final static String QFGD = "Q4GD/Q4GD_CKGL.ashx"; + public final static String QFDDVICELIST = "Q4WorkOrder/Q4SBGL.ashx"; + public final static String QFDDVICESUBLISTTREE = "Q4WorkOrder/Q4SBGL.ashx"; + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/service/PushService.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/service/PushService.java new file mode 100755 index 0000000..5476840 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/service/PushService.java @@ -0,0 +1,167 @@ +package com.rehome.scbaxj.service; + +import android.app.IntentService; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; + +import com.rehome.scbaxj.DBModel.Djjh; +import com.rehome.scbaxj.DBModel.DjjhList; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.activity.sbxdj.DjMainActivity; +import com.rehome.scbaxj.bean.XscbRequestBean; +import com.rehome.scbaxj.contans.Contans; +import com.rehome.scbaxj.utils.GsonUtils; +import com.rehome.scbaxj.utils.HttpListener; +import com.rehome.scbaxj.utils.NohttpUtils; +import com.rehome.scbaxj.utils.SPUtils; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.RequestMethod; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; + +import org.litepal.crud.DataSupport; + +import java.util.List; + +import static com.rehome.scbaxj.utils.GsonUtils.GsonToBean; + + +public class PushService extends IntentService { + private int[] whats = new int[]{}; + public PushService() { + super("PushService"); + } + + @Override + public void onCreate() { + super.onCreate(); + setTheme(R.style.AppTheme); + } + + @Override + protected void onHandleIntent(Intent intent) { + if (intent != null) { + whats = intent.getExtras().getIntArray("what"); + requestData(whats); + } + } + + private void requestData(int[] what) { + + Request qy = NoHttp.createStringRequest(Contans.IP + Contans.QY); + NohttpUtils.getInstance().add(null, 12, qy, callback, false, false, ""); + for (int i = 0; i < what.length; i++) { + switch (what[i]) { + //点检 + case 1: + Request requestdj = NoHttp.createStringRequest(Contans.IP + Contans.DJJHLIST, RequestMethod.POST); + requestdj.setDefineRequestBodyForJson(createZyJson()); + NohttpUtils.getInstance().add(null, 1, requestdj, callback, false, false, "加载中..."); + break; + + } + } + } + + + private HttpListener callback = new HttpListener() { + @Override + public void onSucceed(int what, Response response) { + + switch (what) { + + case 1: +// Log.e("serviceData", response.get()); + DjjhList list = GsonToBean(response.get(), DjjhList.class); + if (list != null) { + if (list.getState().equals("1")) { + int dbcount = -1;//数据库中是否有数据 + List djjhs = list.getData();//服务器数据 + + //先删除未下 载的计划 + + DataSupport.deleteAll(Djjh.class, "download = 0"); + + for (Djjh djjh : djjhs) { + + List dbdjjh = DataSupport.where("GWID = ? and download = ?", djjh.getGWID(), "1").find(Djjh.class); + + //如果数据库中没有这条数据,就添加到数据库 + + if (dbdjjh.size() == 0) { + + dbcount = 1; + + djjh.save(); + } + } + if (dbcount == 1) { + +// shownotification(1, "您有新的点检计划"); + } + } else { + DataSupport.deleteAll(Djjh.class, "download = 0"); + } + } + break; + + } + } + + @Override + public void onFailed(int what, Response response) { + + } + }; + + private void shownotification(int what, String msg) { + + NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); + PendingIntent pendingIntent; + Intent intent = null; + if (what == 0) { +// intent = new Intent(this, XxzActivity.class); + } else if (what == 1) { +// intent = new Intent(this, SxcdjActivity.class); + intent = new Intent(this, DjMainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); + } else if (what == 2) { +// intent = new Intent(this, AjhXzActivity.class); + } else if (what == 3) { +// intent = new Intent(this, AxwaqgcglActivity.class); + } + Notification notify; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); + } else { + pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); + } + notify = new Notification.Builder(this) + .setTicker(System.currentTimeMillis() + "") + .setSmallIcon(R.mipmap.ic_launcher_round) + .setTicker("您有新的计划") + .setContentTitle(msg) + .setContentText("点击进入下载") + .setContentIntent(pendingIntent).build(); // 需要注意build()是在API + notify.defaults = Notification.DEFAULT_SOUND; + // level16及之后增加的,API11可以使用getNotificatin()来替代 + notify.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。 + manager.notify(what, notify); + } + + private String createZyJson() { + String GWID = (String) SPUtils.get(getApplicationContext(), Contans.BZBH, ""); + String YHID = (String) SPUtils.get(getApplicationContext(), Contans.USERID, ""); + XscbRequestBean info = new XscbRequestBean(); + info.setAction("DJ_GWLIST_GET"); + info.setGWID(GWID); + info.setYHID(YHID); + String json = GsonUtils.GsonString(info); + return json; + } + + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/Api.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/Api.java new file mode 100755 index 0000000..91b3133 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/Api.java @@ -0,0 +1,213 @@ +package com.rehome.scbaxj.utils; + +import com.rehome.scbaxj.bean.ApkUpdateBean; +import com.rehome.scbaxj.bean.BmidBean; +import com.rehome.scbaxj.bean.ContactListBean; +import com.rehome.scbaxj.bean.JzBean; +import com.rehome.scbaxj.bean.QXGDResultBean; +import com.rehome.scbaxj.bean.ResultBean3; +import com.rehome.scbaxj.bean.UploadPhotosBean; +import com.rehome.scbaxj.bean.UploadPhotosBean2; +import com.rehome.scbaxj.bean.YhpcResultBean; + +import okhttp3.RequestBody; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * Created by ruihong on 2017/12/22. + */ + +public interface Api { + /** + * 检查更新 + * + * @return + */ + @GET("ApkUpdate/GetData.aspx") + Call getCheckUpdataApk(); + + /** + * 安全检查任务上传 + * + * @param action AQJC_RW_SET(必填) + * @param SCR 上传人ID(必填) + * @param JHID 计划ID(必填) + * @param WTQY 问题区域(必填) + * @param WTMS 问题描述(必填) + * @param LRSJ 录入时间(创建任务的时间) + * @param FXLB 风险类别(选填) + * @param YHDJ 隐患等级(选填) + * @param ZRBM 责任部门(选填) + * @return + */ + + @POST("AQJC/AQJC_RWSC.ashx") + Call upload_QJRWPhoto(@Query("Action") String action, + @Query("SCR") String SCR, + @Query("JHID") String JHID, + @Query("WTQY") String WTQY, + @Query("WTMS") String WTMS, + @Query("LRSJ") String LRSJ, + @Query("FXLB") String FXLB, + @Query("YHDJ") String YHDJ, + @Query("ZRBM") String ZRBM, + @Body RequestBody body); + + + @POST("Q4GD/Q4GD_CKGL.ashx") + Call upload_QXGD(@Query("Action") String action, + @Query("YHID") String YHID, + @Query("GDZT_SO") String GDZT_SO, + @Query("GDZT_NO") String GDZT_NO, + @Query("GDDJ") String GDDJ, + @Query("QXMS") String QXMS, + @Query("GZMS") String GZMS, + @Query("SBBH") String SBBH, + @Query("SBMC") String SBMC, + @Query("ZRBZ") String ZRBZ, + @Query("ZRR") String ZRR, + @Query("JXBZ") String JXBZ, + @Query("JXR") String JXR, + @Query("GZXZ") String GZXZ, + @Query("ST") String ST, + @Query("ET") String ET, + @Body RequestBody body); + + + @POST("Q4GD/Q4GD_IMG.ashx") + Call upload_QXGDTP( + @Query("GDID") String GDID, + @Body RequestBody body); + + + /** + * 安全检查整改任务上传 + * + * @param action SBLC_ZG_SET + * @param YHID 用户ID(必填) + * @param JHID 计划ID(必填) + * @param RWID 任务ID(必填) + * @param ZGJG 整改结果(必填) + * @return + */ + + @POST("AQJC/AQJC_RWSC.ashx") + Call upload_AQZGJG(@Query("Action") String action, + @Query("YHID") String YHID, + @Query("JHID") String JHID, + @Query("RWID") String RWID, + @Query("ZGJG") String ZGJG, + @Body RequestBody body); + + + /** + * 获取通讯录列表 + * + * @return + */ + @GET("AppLogin/GetAddressbook.ashx") + Call getContactList(); + + + /** + * 获取机组信息 + * + * @return + */ + @GET("workorder/selectUnit") + Call GetJzList(); + + + /** + * 获取专业信息 + * + * @return + */ + @GET("workorder/selectProfession") + Call GetZyList(); + + /** + * 获取类型 + * x + * + * @return + */ + @GET("workorder/selectBugtype") + Call GetLxist(); + + /** + * 获取缺陷登记 + * x + * + * @return + */ + @GET("workorder/selectBuglevel") + Call GetQXDJist(); + + /** + * 获取工单安排 + * x + * + * @return + */ + @GET("workorder/selectBugdept") + Call GetGDAPist(); + + /** + * 创建缺陷工单 + * + * @return + */ + + + @GET("workorder/createCmwo") + Call UploadQXgd(@Query("jsonData") String jsonData); + + + /** + * 获取部门id + * + * @return + */ + @GET("UserInfos/GetDeptByUserid.aspx") + Call getbmid(@Query("yhid") String yhid); + + + /** + * 安全检查整改任务上传 + * + * @param fid 用户ID(必填) + * @param srcid 计划ID(必填) + * @param adduserid 任务ID(必填) + * @param type 整改结果(必填) + * @return + */ + + @POST("M_DXX/UploadCattach.ashx") + Call uploadzjfile( + @Query("fid") String fid, + @Query("srcid") String srcid, + @Query("adduserid") String adduserid, + @Query("type") String type, + @Body RequestBody body); + + //点检管理-隐患信息上传 + @POST("DJGL/DJGL_YHPC.ashx") + Call upload_yhpcxx(@Body RequestBody json); + + + //点检管理-隐患图片上传 + @POST("DJGL/DJGL_YHPC_IMG.ashx") + Call upload_yhpcPhoto(@Query("ID") String ID, @Query("LX") String LX, @Query("SCR") String SCR, @Body RequestBody body); + + +// //点检管理-隐患图片上传 +// @POST("DJGL/DJGL_YHPC_IMG.ashx") +// Call upload_yhpcPhoto(@Part MultipartBody.Part part, +// @PartMap Map params); + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AppManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AppManager.java new file mode 100755 index 0000000..4c56792 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AppManager.java @@ -0,0 +1,107 @@ +package com.rehome.scbaxj.utils; + +import android.app.Activity; +import android.app.ActivityManager; +import android.content.Context; + +import java.util.Stack; + +/** + * Created by Administrator on 2017/3/8. + * Activity管理类 + */ + +public class AppManager { + + private static Stack activityStack; + + private static AppManager instance; + + private AppManager() { + } + + /** + * 单一实例 + */ + public static AppManager getAppManager() { + if (instance == null) { + instance = new AppManager(); + } + return instance; + } + + /** + * 添加Activity到堆栈 + */ + public void addActivity(Activity activity) { + if (activityStack == null) { + activityStack = new Stack(); + } + activityStack.add(activity); + } + + /** + * 获取当前Activity(堆栈中最后一个压入的) + */ + public Activity currentActivity() { + Activity activity = activityStack.lastElement(); + return activity; + } + + /** + * 结束当前Activity(堆栈中最后一个压入的) + */ + public void finishActivity() { + Activity activity = activityStack.lastElement(); + finishActivity(activity); + } + + /** + * 结束指定的Activity + */ + public void finishActivity(Activity activity) { + if (activity != null) { + activityStack.remove(activity); + activity.finish(); + activity = null; + } + } + + /** + * 结束指定类名的Activity + */ + public void finishActivity(Class cls) { + for (Activity activity : activityStack) { + if (activity.getClass().equals(cls)) { + finishActivity(activity); + } + } + } + + /** + * 结束所有Activity + */ + public void finishAllActivity() { + for (int i = 0, size = activityStack.size(); i < size; i++) { + if (null != activityStack.get(i)) { + activityStack.get(i).finish(); + } + } + activityStack.clear(); + } + + /** + * 退出应用程序 + */ + @SuppressWarnings("deprecation") + public void AppExit(Context context) { + try { + finishAllActivity(); + ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + activityManager.restartPackage(context.getPackageName()); + System.exit(0); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AutoToolbar.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AutoToolbar.java new file mode 100755 index 0000000..0e1a38f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/AutoToolbar.java @@ -0,0 +1,144 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.appcompat.widget.Toolbar; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.zhy.autolayout.AutoLayoutInfo; +import com.zhy.autolayout.utils.AutoLayoutHelper; +import com.zhy.autolayout.utils.AutoUtils; +import com.zhy.autolayout.utils.DimenUtils; + +import java.lang.reflect.Field; + +/** + * Created by hupei on 2015/12/28 20:33. + */ +public class AutoToolbar extends Toolbar { + private static final int NO_VALID = -1; + private int mTextSize; + private int mSubTextSize; + private final AutoLayoutHelper mHelper = new AutoLayoutHelper(this); + + public AutoToolbar(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Toolbar, + defStyleAttr, R.style.Widget_AppCompat_Toolbar); + + int titleTextAppearance = a.getResourceId(R.styleable.Toolbar_titleTextAppearance, + R.style.TextAppearance_Widget_AppCompat_Toolbar_Title); + + int subtitleTextAppearance = a.getResourceId(R.styleable.Toolbar_subtitleTextAppearance, + R.style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle); + + mTextSize = loadTextSizeFromTextAppearance(titleTextAppearance); + mSubTextSize = loadTextSizeFromTextAppearance(subtitleTextAppearance); + + TypedArray menuA = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ActionBar, + defStyleAttr, R.style.ThemeOverlay_AppCompat); + int menuTextAppearance = menuA.getResourceId(R.styleable.AutoLayout_Layout_layout_auto_basewidth, + R.style.ThemeOverlay_AppCompat_ActionBar); + int menuTextSize = loadTextSizeFromTextAppearance(menuTextAppearance); + + //防止 menu 定义 textSize,而 Toolbar 无定义 textSize 时,title 的 textSize 随 menu 变化 + if (mTextSize == NO_VALID) mTextSize = menuTextSize; + if (mSubTextSize == NO_VALID) mSubTextSize = menuTextSize; + + a.recycle(); + menuA.recycle(); + } + + public AutoToolbar(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public AutoToolbar(Context context) { + this(context, null); + } + + private int loadTextSizeFromTextAppearance(int textAppearanceResId) { + TypedArray a = getContext().obtainStyledAttributes(textAppearanceResId, + R.styleable.TextAppearance); + try { + if (!DimenUtils.isPxVal(a.peekValue(R.styleable.TextAppearance_android_textSize))) + return NO_VALID; + return a.getDimensionPixelSize(R.styleable.TextAppearance_android_textSize, NO_VALID); + } finally { + a.recycle(); + } + } + + private void setUpTitleTextSize() { + CharSequence title = getTitle(); + if (!TextUtils.isEmpty(title) && mTextSize != NO_VALID) + setUpTitleTextSize("mTitleTextView", mTextSize); + CharSequence subtitle = getSubtitle(); + if (!TextUtils.isEmpty(subtitle) && mSubTextSize != NO_VALID) + setUpTitleTextSize("mSubtitleTextView", mSubTextSize); + } + + private void setUpTitleTextSize(String name, int val) { + try { + //反射 Toolbar 的 TextView + Field f = getClass().getSuperclass().getDeclaredField(name); + f.setAccessible(true); + TextView textView = (TextView) f.get(this); + if (textView != null) { + int autoTextSize = AutoUtils.getPercentHeightSize(val); + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, autoTextSize); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (!this.isInEditMode()) { + setUpTitleTextSize(); + this.mHelper.adjustChildren(); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + } + + @Override + public LayoutParams generateLayoutParams(AttributeSet attrs) { + return new LayoutParams(this.getContext(), attrs); + } + + public static class LayoutParams extends Toolbar.LayoutParams implements AutoLayoutHelper.AutoLayoutParams { + private AutoLayoutInfo mDimenLayoutInfo; + + public LayoutParams(Context c, AttributeSet attrs) { + super(c, attrs); + this.mDimenLayoutInfo = AutoLayoutHelper.getAutoLayoutInfo(c, attrs); + } + + @Override + public AutoLayoutInfo getAutoLayoutInfo() { + return this.mDimenLayoutInfo; + } + + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(android.view.ViewGroup.LayoutParams source) { + super(source); + } + + public LayoutParams(MarginLayoutParams source) { + super(source); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/CanBanScrollViewPager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/CanBanScrollViewPager.java new file mode 100755 index 0000000..e860ef1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/CanBanScrollViewPager.java @@ -0,0 +1,60 @@ +package com.rehome.scbaxj.utils; + + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.viewpager.widget.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +import com.rehome.scbaxj.R; + + +/** + * Created by 翟杰 on 2017/1/13. + * 不可滑动的ViewPage + */ + +public class CanBanScrollViewPager extends ViewPager { + private boolean isCanScroll;/*是否可以滑动*/ + + public CanBanScrollViewPager(Context context) { + super(context); + } + + public CanBanScrollViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CanBanScrollViewPager); + /*获取布局中设置的属性*/ + isCanScroll = a.getBoolean(R.styleable.CanBanScrollViewPager_isScroll, false); + a.recycle(); + } + + public void setCanScroll(boolean isCanScroll) { + /*对外公开的方法,设置是否可以滑动*/ + this.isCanScroll = isCanScroll; + } + + public boolean isCanScroll() { + /*对外公开的方法,获取当前是否可以滑动*/ + return isCanScroll; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + /*重写此方法,判断当前是否可以滑动,如果可以,正常调用父类的方法,该干嘛干嘛!如果不可以滑动,直接返回false,不做任何触摸事件的处理*/ + if (isCanScroll()) { + return super.onTouchEvent(ev); + } + return false; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + /*这里意思和上面的重写方法差不多,不多解释*/ + if (isCanScroll()) { + return super.onInterceptTouchEvent(ev); + } + return false; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ContactDatas.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ContactDatas.java new file mode 100755 index 0000000..41e0ed3 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ContactDatas.java @@ -0,0 +1,41 @@ +package com.rehome.scbaxj.utils; + + +import com.rehome.scbaxj.bean.ContactListBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/7/5. + * 通讯录 工具类 + */ + +public class ContactDatas { + + + public static List getContanctList(ContactListBean bean) { + + List orderlistBeanListEnd = new ArrayList<>(); + + List rowsBeanList = bean.getRows(); + for (int i = 0; i < rowsBeanList.size(); i++) { + ContactListBean.RowsBean rowsBean = rowsBeanList.get(i); + + if (rowsBean.getOrderlist() != null) { + List orderlistBeanList = rowsBean.getOrderlist(); + if (orderlistBeanList.size() != 0) { + orderlistBeanListEnd.add(new ContactListBean.RowsBean.OrderlistBean("", "", "", rowsBean.getDeptName(), "")); + + for (ContactListBean.RowsBean.OrderlistBean orderlistBean : orderlistBeanList) { + orderlistBean.setGroupName(rowsBean.getDeptName()); + } + + orderlistBeanListEnd.addAll(orderlistBeanList); + } + } + } + return orderlistBeanListEnd; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ControllerActivity.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ControllerActivity.java new file mode 100755 index 0000000..36df827 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/ControllerActivity.java @@ -0,0 +1,112 @@ +package com.rehome.scbaxj.utils; + +import android.app.Activity; +import android.app.ActivityManager; +import android.content.Context; + +import java.util.Stack; + + +/** + * 管理activity的类 + */ +public class ControllerActivity { + //activity栈 + private static Stack activityStack; + //使用单例模式 + private static ControllerActivity instance; + + private ControllerActivity() { + } + + + public static ControllerActivity getAppManager() { + if (instance == null) { + instance = new ControllerActivity(); + } + return instance; + } + + /*** + * 添加Activity到栈 + * @param activity + */ + public void addActivity(Activity activity) { + if (activityStack == null) { + activityStack = new Stack(); + } + activityStack.add(activity); + } + + /** + * 获取当前Activity(堆栈中最后一个压入的) + */ + public Activity currentActivity() { + + if (activityStack.size() == 0) { + return null; + }else { + Activity activity = activityStack.lastElement(); + return activity; + } + } + + /** + * 结束当前Activity(堆栈中最后一个压入的) + */ + public void finishActivity() { + Activity activity = activityStack.lastElement(); + finishActivity(activity); + } + + /** + * 结束指定的Activity + */ + public void finishActivity(Activity activity) { + if (activity != null) { + activityStack.remove(activity); + activity.finish(); + activity = null; + } + } + + /** + * 结束指定类名的Activity + */ + public void finishActivity(Class cls) { + for (Activity activity : activityStack) { + if (activity.getClass().equals(cls)) { + finishActivity(activity); + break; + } + } + } + + /** + * 结束所有Activity + */ + public void finishAllActivity() { + for (int i = 0; i < activityStack.size(); i++) { + if (null != activityStack.get(i)) { + activityStack.get(i).finish(); + } + } + activityStack.clear(); + } + + /** + * 退出程序 + * + * @param context + */ + public void AppExit(Context context) { + try { + finishAllActivity(); + ActivityManager activityMgr = (ActivityManager) context + .getSystemService(Context.ACTIVITY_SERVICE); + activityMgr.killBackgroundProcesses(context.getPackageName()); + System.exit(0); + } catch (Exception e) { + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/FlashUtil.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/FlashUtil.java new file mode 100644 index 0000000..870d322 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/FlashUtil.java @@ -0,0 +1,31 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.hardware.camera2.CameraManager; + +public class FlashUtil { + private boolean isFlashOn = false; + private CameraManager camManager; + public void toggle(Context context) { + try { + this.camManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); + String cameraId = this.camManager.getCameraIdList()[0]; + this.camManager.setTorchMode(cameraId, !this.isFlashOn); + this.isFlashOn = !isFlashOn; + } catch (Exception e) { + e.printStackTrace(); + } + } + //页面销毁的时候调用此方法 + public void finishFlashUtils() { + try { + if(camManager!=null){ + String cameraId = camManager.getCameraIdList()[0]; + camManager.setTorchMode(cameraId, false); + this.isFlashOn = false; + } + }catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/GsonUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/GsonUtils.java new file mode 100755 index 0000000..f287dd9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/GsonUtils.java @@ -0,0 +1,130 @@ +package com.rehome.scbaxj.utils; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +/** + * gson工具类,封装GSON + */ +public class GsonUtils { + + private static Gson gson = null; + + static { + if (gson == null) { + gson = new Gson(); + } + } + + private GsonUtils() { + } + + /** + * 转成json + * + * @param object + * @return + */ + public static String GsonString(Object object) { + String gsonString = null; + if (gson != null) { + gsonString = gson.toJson(object); + } + return gsonString; + } + + /** + * 转成bean + * + * @param gsonString + * @param cls + * @return + */ + public static T GsonToBean(String gsonString, Class cls) { + T t = null; + if (gson != null) { + try { + t = gson.fromJson(gsonString, cls); + } catch (Exception e) { + e.printStackTrace(); + } + } + return t; + } + + /** + * 转成list + * 泛型在编译期类型被擦除导致报错 + * + * @param gsonString + * @param cls + * @return + */ + public static List GsonToList(String gsonString, Class cls) { + List list = null; + if (gson != null) { + list = gson.fromJson(gsonString, new TypeToken>() { + }.getType()); + } + return list; + } + + /** + * 转成list + * 解决泛型问题 + * + * @param json + * @param cls + * @param + * @return + */ + public List jsonToList(String json, Class cls) { + Gson gson = new Gson(); + List list = new ArrayList(); + JsonArray array = new JsonParser().parse(json).getAsJsonArray(); + for (final JsonElement elem : array) { + list.add(gson.fromJson(elem, cls)); + } + return list; + } + + + /** + * 转成list中有map的 + * + * @param gsonString + * @return + */ + public static List> GsonToListMaps(String gsonString) { + List> list = null; + if (gson != null) { + list = gson.fromJson(gsonString, + new TypeToken>>() { + }.getType()); + } + return list; + } + + /** + * 转成map的 + * + * @param gsonString + * @return + */ + public static Map GsonToMaps(String gsonString) { + Map map = null; + if (gson != null) { + map = gson.fromJson(gsonString, new TypeToken>() { + }.getType()); + } + return map; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpListener.java new file mode 100755 index 0000000..25adeec --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpListener.java @@ -0,0 +1,27 @@ +package com.rehome.scbaxj.utils; + +import com.yolanda.nohttp.rest.Response; + +import java.text.ParseException; + +/** + * NoHttp请求回调的接口 + */ +public interface HttpListener { + + /** + * 请求成功 + * + * @param what 请求队列的标志 + * @param response 请求结果 + */ + void onSucceed(int what, Response response) throws ParseException; + + /** + * 请求失败 + * + * @param what 请求队列的标志 + * @param response 请求结果 + */ + void onFailed(int what, Response response); +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListener.java new file mode 100755 index 0000000..8d826fc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListener.java @@ -0,0 +1,140 @@ +package com.rehome.scbaxj.utils; + +import android.app.Activity; +import android.content.DialogInterface; +import android.widget.Toast; + +import com.rehome.scbaxj.weight.WaitDialog; +import com.yolanda.nohttp.Logger; +import com.yolanda.nohttp.error.NetworkError; +import com.yolanda.nohttp.error.TimeoutError; +import com.yolanda.nohttp.error.URLError; +import com.yolanda.nohttp.error.UnKnownHostError; +import com.yolanda.nohttp.rest.OnResponseListener; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; + +import java.text.ParseException; + +/** + * NoHttp的封装 + */ +public class HttpResponseListener implements OnResponseListener { + + private Activity mActivity; + + /** + * dialog + */ + private WaitDialog mDialog; + + /** + * 当前请求 + */ + private Request mRequest; + + /** + * 请求回调 + */ + private HttpListener callback; + + /** + * 是否显示dialog + */ + private boolean isLoading; + + + /** + * @param mActivity 用来实例化dialog + * @param mRequest 请求 + * @param callback 请求回调 + * @param canCancel 是否允许用户请求 + * @param isLoading 是否显示dialog + */ + public HttpResponseListener(Activity mActivity, final Request mRequest, HttpListener callback, boolean canCancel, boolean isLoading, String msg) { + this.mActivity = mActivity; + this.mRequest = mRequest; + if (isLoading) { + mDialog = new WaitDialog(mActivity, msg); + mDialog.setCancelable(canCancel); + mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialogInterface) { + HttpResponseListener.this.mRequest.cancel();//取消请求 + } + }); + } + this.callback = callback; + this.isLoading = isLoading; + } + + /** + * 请求开始 + * + * @param what + */ + @Override + public void onStart(int what) { + + if (mDialog != null && !mDialog.isShowing() && !mActivity.isFinishing()) { + mDialog.show(); + } + } + + /** + * 成功回调 + * + * @param what + * @param response + */ + @Override + public void onSucceed(int what, Response response) { + if (callback != null) { + try { + callback.onSucceed(what, response); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + + /** + * 失败回调 + * + * @param what + * @param response + */ + @Override + public void onFailed(int what, Response response) { + + Exception exception = response.getException(); + if (mActivity != null) { + if (exception instanceof NetworkError) {// 网络不好 + Toast.makeText(mActivity, "网络异常", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof TimeoutError) {// 请求超时 + Toast.makeText(mActivity, "请求超时", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof UnKnownHostError) {// 找不到服务器 + Toast.makeText(mActivity, "找不到服务器", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof URLError) {// URL是错的 + Toast.makeText(mActivity, "url出错", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(mActivity, "网络连接超时", Toast.LENGTH_SHORT).show(); + } + } + Logger.e("错误:" + exception.getMessage()); + if (callback != null) + callback.onFailed(what, response); + } + + /** + * 请求结束 + * + * @param what + */ + @Override + public void onFinish(int what) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListenerNoProgress.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListenerNoProgress.java new file mode 100644 index 0000000..892581f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpResponseListenerNoProgress.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.utils; + + + +import android.app.Activity; +import android.widget.Toast; + +import com.yolanda.nohttp.error.NetworkError; +import com.yolanda.nohttp.error.TimeoutError; +import com.yolanda.nohttp.error.URLError; +import com.yolanda.nohttp.error.UnKnownHostError; +import com.yolanda.nohttp.rest.OnResponseListener; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.Response; +import java.text.ParseException; + +/** + * NoHttp的封装 + */ +public class HttpResponseListenerNoProgress implements OnResponseListener { + + private Activity mActivity; + + /** + * 当前请求 + */ + private Request mRequest; + + /** + * 请求回调 + */ + private HttpListener callback; + + + + /** + * @param mActivity 用来实例化dialog + * @param mRequest 请求 + * @param callback 请求回调 + */ + public HttpResponseListenerNoProgress(Activity mActivity, final Request mRequest, HttpListener callback) { + this.mActivity = mActivity; + this.mRequest = mRequest; + this.callback = callback; + } + + /** + * 请求开始 + * + * @param what + */ + @Override + public void onStart(int what) { + + } + + /** + * 成功回调 + * + * @param what + * @param response + */ + @Override + public void onSucceed(int what, Response response) { + if (callback != null) { + try { + callback.onSucceed(what, response); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + + /** + * 失败回调 + * + * @param what + * @param response + */ + @Override + public void onFailed(int what, Response response) { + + Exception exception = response.getException(); + if (mActivity != null) { + if (exception instanceof NetworkError) {// 网络不好 + Toast.makeText(mActivity, "网络异常", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof TimeoutError) {// 请求超时 + Toast.makeText(mActivity, "请求超时", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof UnKnownHostError) {// 找不到服务器 + Toast.makeText(mActivity, "找不到服务器", Toast.LENGTH_SHORT).show(); + } else if (exception instanceof URLError) {// URL是错的 + Toast.makeText(mActivity, "url出错", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(mActivity, "网络连接超时", Toast.LENGTH_SHORT).show(); + } + } + if (callback != null) + callback.onFailed(what, response); + } + + /** + * 请求结束 + * + * @param what + */ + @Override + public void onFinish(int what) { + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpUtils.java new file mode 100755 index 0000000..8340b05 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/HttpUtils.java @@ -0,0 +1,115 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.util.Log; + +import com.rehome.scbaxj.contans.Contans; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * 网络请求工具类,封装的retrofit1 + */ + +public class HttpUtils { + +// private static List datas = new ArrayList<>(); + + private static Api api; + + private static Context context; + + private static HttpUtils instance = null; + + public static HttpUtils getInstance(Context context, String url) { + if (instance == null) { + instance = new HttpUtils(context, url); + } + return instance; + } + + private HttpUtils(Context context, String url) { + Retrofit mRetrofit = new Retrofit.Builder() + .baseUrl(url) + .client(getOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + api = mRetrofit.create(Api.class); + HttpUtils.context = context; + } + + public static Api getApi() { + return getApi(Contans.IP); + } + + + public static Api GETMAXIMOIP() { + return getApi(Contans.MAXIMOIP); + } + + public static Api getApi(String url) { + + Retrofit mRetrofit = new Retrofit.Builder() + .baseUrl(url) + .client(getOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + Api api = mRetrofit.create(Api.class); + + return api; + } + + + private static OkHttpClient getOkHttpClient() { + + OkHttpClient.Builder httpClientBuilder = new OkHttpClient + .Builder(); + //OkHttp进行添加拦截器loggingInterceptor + httpClientBuilder.addInterceptor(new LoggingInterceptor()); + + //设置超时时间 + httpClientBuilder.connectTimeout(5, TimeUnit.SECONDS); + httpClientBuilder.writeTimeout(30, TimeUnit.SECONDS); + httpClientBuilder.readTimeout(30, TimeUnit.SECONDS); + + return httpClientBuilder.build(); + } + + public static class LoggingInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + //这个chain里面包含了request和response,所以你要什么都可以从这里拿 + Request request = chain.request(); + + long t1 = System.nanoTime();//请求发起的时间 + Log.v("okhttpmsg", String.format("发送请求 %s on %s%n%s", + request.url(), chain.connection(), request.headers())); + + Response response = chain.proceed(request); + + long t2 = System.nanoTime();//收到响应的时间 + + //这里不能直接使用response.body().string()的方式输出日志 + //因为response.body().string()之后,response中的流会被关闭,程序会报错,我们需要创建出一 + //个新的response给应用层处理 + ResponseBody responseBody = response.peekBody(1024 * 1024); + + Log.v("okhttpmsg", String.format("接收响应: [%s] %n返回json:【%s】 %.1fms%n%s", + response.request().url(), + responseBody.string(), + (t2 - t1) / 1e6d, + response.headers())); + + return response; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/JWebSocketClient.kt b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/JWebSocketClient.kt new file mode 100644 index 0000000..087d584 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/JWebSocketClient.kt @@ -0,0 +1,31 @@ +package com.rehome.scbaxj.utils + +import android.util.Log +import org.java_websocket.client.WebSocketClient +import org.java_websocket.drafts.Draft_6455 +import org.java_websocket.handshake.ServerHandshake +import java.net.URI + +/** + * Create By HuangWenFei + * 创建日期:2023-01-05 11:39 + * 描述: + */ +open class JWebSocketClient(serverUri: URI?) : WebSocketClient(serverUri, Draft_6455()) { + override fun onOpen(handshakedata: ServerHandshake?) { + Log.e("JWebSocketClient", "==连接成功==") + } + + override fun onMessage(message: String) { + Log.i("JWebSocketClient", "onMessage:$message") + } + override fun onClose(code: Int, reason: String?, remote: Boolean) { + Log.e("JWebSocketClient", "==WebSocket关闭=== code:$code===== reason: $reason==== wasClean: $remote") + } + + override fun onError(ex: Exception?) { + ex?.printStackTrace() + Log.e("JWebSocketClient", "==连接失败==") + } +} + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/MqttSSLPublishServer.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/MqttSSLPublishServer.java new file mode 100644 index 0000000..1543a1d --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/MqttSSLPublishServer.java @@ -0,0 +1,173 @@ +package com.rehome.scbaxj.utils; + + +/** + * @author huangwenfei + * @version v1.0.0.0 + * Created DateTime 2021-03-08 14:52 + * @description: mqtt 高可靠,断线重连 消息发布服务 + */ + +import android.content.Context; + +import com.rehome.scbaxj.contans.Contans; +import com.google.gson.Gson; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class MqttSSLPublishServer { + /** + * 代理服务器ip地址 + */ + private final String HOST = "tcp://39.101.173.20:1883"; + /** + * 发送主题 + */ + private final String topicPush = "app_push_yf"; + /** + * 订阅主题 + */ + private final String topicReceive = "app_send"; + /** + * 客户端唯一标识,相同的会被逼下线 + */ + private String clientid = "v1_server_ssl_android"; + private MqttClient client; + private MqttConnectOptions options; + /** + * MQTT服务端连接账号 + */ + private final String userName = "admin"; + /** + * MQTT服务端连接密码 + */ + private final String passWord = "public"; + /** + * 消息发布质量 + * 0:最多一次,即:<=1 + * 1:至少一次,即:>=1 + * 2:一次,即:=1 + */ + private int qos = 2; + // 推送消息 + private MqttMessage message; + //定时器 + private Timer timer; + private Context context; + + public MqttSSLPublishServer(Context context) { + this.context=context; + // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存 + try { + clientid=(String) SPUtils.get(context,"clientid",String.valueOf("")); + + if(clientid!=null&&clientid.equals("")){ + clientid=UUID.randomUUID().toString(); + SPUtils.put(context,"clientid",clientid); + } + + client = new MqttClient(HOST, clientid, new MemoryPersistence()); + // MQTT的连接设置 + options = new MqttConnectOptions(); + // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接 + options.setCleanSession(true); + // 设置连接的用户名 + options.setUserName(userName); + // 设置连接的密码 + options.setPassword(passWord.toCharArray()); + // 设置超时时间 单位为秒 + options.setConnectionTimeout(10); + // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 + options.setKeepAliveInterval(20); + // 发布目的消息对象 + message = new MqttMessage(); + // 设置回调 + client.setCallback(new MqttCallbackExtended() { + + @Override + public void connectComplete(boolean reconnect, String serverURI) { + //连接成功后调用 + try { + client.subscribe(topicReceive,qos);//具体订阅代码 + } catch (MqttException e) { + e.printStackTrace(); + } + } + + public void connectionLost(Throwable cause) { + stop();//关闭 + } + + public void messageArrived(String topic, MqttMessage message) throws Exception { +// String messageDe = RSAAndroid.decryptByPublicKeyForSpiltStr(new String(message.getPayload()), RSAAndroid.publicRsaKey); +// System.out.println("message content:"+messageDe); +// System.out.println("***** get message end *****"); + } + + public void deliveryComplete(IMqttDeliveryToken token) { + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void start() { + try { + timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + message.setQos(qos); + message.setRetained(true); + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String username = (String) SPUtils.get(context, Contans.USERID,String.valueOf("")); + String password = (String) SPUtils.get(context,Contans.USERPWD,String.valueOf("")); + String nfc = (String) SPUtils.get(context,Contans.NFCBM,String.valueOf("")); + + HashMap mapPush = new HashMap<>(); + mapPush.put("username",username); + mapPush.put("password",password); + mapPush.put("date",sd.format(new Date())); + mapPush.put("nfc",nfc); + Gson gson = new Gson(); + + try { + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!client.isConnected()) { + // 重新连接 + client.connect(options); + } + if (client.isConnected()) {//连接成功,跳出连接 + // 发布消息 + String messageEn = RSAAndroid.encryptByPublicKeyForSpiltStr(gson.toJson(mapPush),RSAAndroid.publicRsaKey); + message.setPayload(messageEn.getBytes()); + client.publish(topicPush, message); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + }, 10000, 120000); + // 设定指定的时间time,此处为10000毫秒 + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void stop() { + try { + // 断开连接 + client.reconnect(); + // 关闭客户端 + //client.close(); + } catch (MqttException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkAvailableUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkAvailableUtils.java new file mode 100755 index 0000000..1a85684 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkAvailableUtils.java @@ -0,0 +1,102 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.location.LocationManager; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.telephony.TelephonyManager; + +import java.util.List; + +/** + * 判断网路状态工具类 + */ +public class NetworkAvailableUtils { + + /** + * 判断是否联网 + * + * @param context + * @return + */ + public static boolean isNetworkAvailable(Context context) { + System.out.println(context); + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + if (cm == null) { + } else { + //       如果仅仅是用来判断网络连接 + //       则可以使用 cm.getActiveNetworkInfo().isAvailable(); + NetworkInfo[] info = cm.getAllNetworkInfo(); + if (info != null) { + for (int i = 0; i < info.length; i++) { + if (info[i].getState() == NetworkInfo.State.CONNECTED) { + return true; + } + } + } + } + return false; + } + + /** + * 判断GPS是否打开 + * + * @param context + * @return + */ + + public static boolean isGpsEnabled(Context context) { + LocationManager lm = ((LocationManager) context + .getSystemService(Context.LOCATION_SERVICE)); + List accessibleProviders = lm.getProviders(true); + return accessibleProviders != null && accessibleProviders.size() > 0; + } + + /** + * 三、判断WIFI是否打开 + * + * @param context + * @return + */ + + public static boolean isWifiEnabled(Context context) { + ConnectivityManager mgrConn = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + TelephonyManager mgrTel = (TelephonyManager) context + .getSystemService(Context.TELEPHONY_SERVICE); + return ((mgrConn.getActiveNetworkInfo() != null && mgrConn + .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel + .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS); + } + + /** + * 四、判断是否是3G网络 + * + * @param context + * @return + */ + + public static boolean is3rd(Context context) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkINfo = cm.getActiveNetworkInfo(); + return networkINfo != null + && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE; + } + + /** + * 五、判断是wifi还是3g网络,用户的体现性在这里了,wifi就可以建议下载或者在线播放。 + * + * @param context + * @return + */ + + public static boolean isWifi(Context context) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkINfo = cm.getActiveNetworkInfo(); + return networkINfo != null + && networkINfo.getType() == ConnectivityManager.TYPE_WIFI; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkUtil.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkUtil.java new file mode 100644 index 0000000..7fa7e24 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NetworkUtil.java @@ -0,0 +1,50 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-05 17:11 + * 描述: + */ +public class NetworkUtil { + private NetworkUtil() { + } + + /** + * 当前是否有网络状态 + * + * @param context 上下文 + * @param needWifi 是否需要wifi网络 + */ + public static boolean hasNetWorkStatus(Context context, boolean needWifi) { + NetworkInfo info = getActiveNetwork(context); + if (info == null) { + return false; + } + if (!needWifi) { + return info.isAvailable(); + } else if (info.getType() == ConnectivityManager.TYPE_WIFI) { + return info.isAvailable(); + } + return false; + } + + /** + * 获取活动网络连接信息 + * + * @param context 上下文 + * @return NetworkInfo + */ + public static NetworkInfo getActiveNetwork(Context context) { + ConnectivityManager mConnMgr = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + if (mConnMgr == null) { + return null; + } + // 获取活动网络连接信息 + return mConnMgr.getActiveNetworkInfo(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NoProgresshttpUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NoProgresshttpUtils.java new file mode 100644 index 0000000..ca14130 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NoProgresshttpUtils.java @@ -0,0 +1,116 @@ +package com.rehome.scbaxj.utils; + + + +import android.app.Activity; +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.download.DownloadQueue; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.RequestQueue; + +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.CertificateFactory; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManagerFactory; + +/** + * Nohttp工具类 + */ +public class NoProgresshttpUtils { + + private static NoProgresshttpUtils sUtils; + private RequestQueue mQueue; + + /** + * 下载队列. + */ + private static DownloadQueue downloadQueue; + + private NoProgresshttpUtils() { + mQueue = NoHttp.newRequestQueue(8); + } + + /** + * DCL单例模式 双层锁 + * + * @return + */ + public static NoProgresshttpUtils getInstance() { + if (sUtils == null) { + synchronized (NohttpUtils.class) { + if (sUtils == null) { + sUtils = new NoProgresshttpUtils(); + } + } + } + return sUtils; + } + + /** + * 下载队列. + */ + public static DownloadQueue getDownloadInstance() { + if (downloadQueue == null) + downloadQueue = NoHttp.newDownloadQueue(1); + return downloadQueue; + } + + + public void add(Activity mActivity, int what, Request request, HttpListener callback) { + mQueue.add(what, request, new HttpResponseListenerNoProgress(mActivity, request, callback)); + } + + /** + * 取消这个sign这个标记的所有请求 + * + * @param sign + */ + public void cancelBySign(Object sign) { + mQueue.cancelBySign(sign); + } + + /** + * 取消队列中所有请求 + */ + public void cancelAll() { + mQueue.cancelAll(); + } + + /** + * 退出App停止所有请求 + */ + public void stopAll() { + mQueue.stop(); + } + + public static SSLSocketFactory getSSLSocketFactory(Context context){ + try { + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null); + String certificateAlias = Integer.toString(0); + keyStore.setCertificateEntry(certificateAlias, certificateFactory. + generateCertificate(context.getResources().openRawResource(R.raw.ca1))); + SSLContext sslContext = SSLContext.getInstance("TLS"); + final TrustManagerFactory trustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init(keyStore); + sslContext.init + ( + null, + trustManagerFactory.getTrustManagers(), + new SecureRandom() + ); + return sslContext.getSocketFactory(); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NohttpUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NohttpUtils.java new file mode 100755 index 0000000..5aed766 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/NohttpUtils.java @@ -0,0 +1,130 @@ +package com.rehome.scbaxj.utils; + +import android.app.Activity; +import android.content.Context; + +import com.rehome.scbaxj.R; +import com.yolanda.nohttp.NoHttp; +import com.yolanda.nohttp.download.DownloadQueue; +import com.yolanda.nohttp.rest.Request; +import com.yolanda.nohttp.rest.RequestQueue; + +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.CertificateFactory; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManagerFactory; + +/** + * Nohttp工具类 + */ +public class NohttpUtils { + + private static NohttpUtils sUtils; + private RequestQueue mQueue; + + /** + * 下载队列. + */ + private static DownloadQueue downloadQueue; + + private NohttpUtils() { + mQueue = NoHttp.newRequestQueue(8); + } + + /** + * DCL单例模式 双层锁 + * + * @return + */ + public static NohttpUtils getInstance() { + if (sUtils == null) { + synchronized (NohttpUtils.class) { + if (sUtils == null) { + sUtils = new NohttpUtils(); + } + } + } + return sUtils; + } + + /** + * 下载队列. + */ + public static DownloadQueue getDownloadInstance() { + if (downloadQueue == null) + downloadQueue = NoHttp.newDownloadQueue(1); + return downloadQueue; + } + + + /** + * 添加请求 + * + * @param mActivity activity + * @param what 请求码,用来区分队列中的请求 + * @param request 请求 + * @param callback 请求回调 + * @param canCanel 是否可以取消请求 + * @param isLoading 是否弹出对话框 + * @param + */ + public void add(Activity mActivity, int what, Request request, HttpListener callback, boolean canCanel, boolean isLoading, String msg) { + mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, canCanel, isLoading, msg)); + } + + + public void add(Activity mActivity, int what, Request request, HttpListener callback) { + mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, true, true, "加载中...")); + } + + /** + * 取消这个sign这个标记的所有请求 + * + * @param sign + */ + public void cancelBySign(Object sign) { + mQueue.cancelBySign(sign); + } + + /** + * 取消队列中所有请求 + */ + public void cancelAll() { + mQueue.cancelAll(); + } + + /** + * 退出App停止所有请求 + */ + public void stopAll() { + mQueue.stop(); + } + + public static SSLSocketFactory getSSLSocketFactory(Context context){ + try { + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null); + String certificateAlias = Integer.toString(0); + keyStore.setCertificateEntry(certificateAlias, certificateFactory. + generateCertificate(context.getResources().openRawResource(R.raw.ca1))); + SSLContext sslContext = SSLContext.getInstance("TLS"); + final TrustManagerFactory trustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init(keyStore); + sslContext.init + ( + null, + trustManagerFactory.getTrustManagers(), + new SecureRandom() + ); + return sslContext.getSocketFactory(); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/OAToolbar.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/OAToolbar.java new file mode 100755 index 0000000..6ad63cc --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/OAToolbar.java @@ -0,0 +1,134 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.TintTypedArray; +import androidx.appcompat.widget.Toolbar; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.TextView; + +import com.rehome.scbaxj.R; + + +/** + * Created by Rehome-rjb1 on 2017/5/8. + * 导航栏的封装 + * + */ + +public class OAToolbar extends Toolbar { + + private LayoutInflater inflater; + private View view; + private TextView tvTitle; + private TextView tvRight; + private ImageButton ivLeft; + + public OAToolbar(Context context) { + super(context, null); + } + + public OAToolbar(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initView(); + setContentInsetsRelative(10, 10); + if (attrs != null) { + final TintTypedArray tta = TintTypedArray.obtainStyledAttributes(getContext(), attrs, + R.styleable.OAToolbar); + + String title = tta.getString(R.styleable.OAToolbar_tvTitle); + String tvRightText = tta.getString(R.styleable.OAToolbar_tvRight); + Drawable drawable = tta.getDrawable(R.styleable.OAToolbar_ivLeftIcon); + + setIvLeftIcon(drawable); + + if (!TextUtils.isEmpty(title)) { + setTvTitleText(title); + } + + if (!TextUtils.isEmpty(tvRightText)) { + setTvRightText(tvRightText); + } + + tta.recycle(); + } + } + + public OAToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + + } + + private void initView() { + + inflater = LayoutInflater.from(getContext()); + + if (view == null) { + view = inflater.inflate(R.layout.toolbar2, null); + tvTitle = view.findViewById(R.id.tv_title); + tvRight = view.findViewById(R.id.tv_right); + ivLeft = view.findViewById(R.id.iv_left); + //然后使用LayoutParams把控件添加到子view中 + LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL); + addView(view, lp); + } + } + + public void setTvTitleText(String text) { + if (tvTitle != null) { + tvTitle.setText(text); + } + } + + public void setTvTitleColor(int color) { + if (tvTitle != null) { + tvTitle.setTextColor(color); + } + } + + public void setTvRightText(String text) { + if (tvRight != null) { + tvRight.setVisibility(VISIBLE); + tvRight.setText(text); + } + } + + public void setTvRightText(int text) { + if (tvRight != null) { + tvRight.setVisibility(VISIBLE); + tvRight.setText(text); + } + } + + public void setTvRightOnClickListener(OnClickListener listener) { + tvRight.setOnClickListener(listener); + } + + + public void setIvLeftIcon(int resId) { + if (ivLeft != null) { + ivLeft.setVisibility(VISIBLE); + ivLeft.setImageResource(resId); + } + } + + public void setIvLeftIcon(Drawable drawable) { + if (ivLeft != null) { + ivLeft.setVisibility(VISIBLE); + ivLeft.setImageDrawable(drawable); + } + } + + public void setIvLeftOnClickListener(OnClickListener listener) { + ivLeft.setOnClickListener(listener); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RSAAndroid.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RSAAndroid.java new file mode 100644 index 0000000..74acc55 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RSAAndroid.java @@ -0,0 +1,387 @@ +package com.rehome.scbaxj.utils; + + +/** + * @ Author : huangwenfei + * @ Date : Created in 2022/3/8 14:44 下午 + * @ Version : $1.0.0.0 + * @ Description: + */ + + +import android.util.Base64; +import java.nio.charset.StandardCharsets; +import java.security.*; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.ArrayList; +import java.util.List; +import javax.crypto.Cipher; + +public class RSAAndroid { + private static String TAG = "RSAAndroid"; + public static final String RSA = "RSA";// 非对称加密密钥算法 + /**加密方式,android的*/ + // public static final String ECB_PKCS1_PADDING = "RSA/None/NoPadding"; + /**加密方式,标准jdk的*/ + //public static final String ECB_PKCS1_PADDING = "RSA/None/PKCS1Padding"; + public static final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding"; + public static final int DEFAULT_KEY_SIZE = 2048;//秘钥默认长度 + public static final byte[] DEFAULT_SPLIT = "#PART#".getBytes(); // 当要加密的内容超过bufferSize,则采用partSplit进行分块加密 + public static final int DEFAULT_BUFFERSIZE = (DEFAULT_KEY_SIZE / 8) - 11;// 当前秘钥支持加密的最大字节数 + public static String publicRsaKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMLyJw1CAl25lnDgEeYZvOps+1pSi93Q39djEniGNo5uUKVEkqDIayTli2zreX10HqT2jTtDN9APtwuEhWazP/VgOXoWsztbtZtSwJGM6Eg0R9zDCbKyQt5Qhg3jkTrXrvrGn7j/ZP56VNWELv/i5dsRCTccr1MeIyxjOC2pojCOsrTN4HZzgBj+GEUKPRLcKOiPfOsoP7HgkAua82vTOIgWpqIp+1PIfcjjCqzOsSv5PQnGP75+flIXtz75OKo/9hX9zl5JHNcH3SC6nS8Czii9E292XIsBtKdQijvNMn+YcmKFo6mZOUXHdO506NoKkxRny5fbKiPf/oqTA7Zx5QIDAQAB"; + + public static byte[] decryptBASE64(String key) throws Exception { + return Base64.decode(key, Base64.DEFAULT); + } + + public static String encryptBASE64(byte[] key) throws Exception { + return Base64.encodeToString(key, Base64.DEFAULT); + } + + /** + * 随机生成RSA密钥对 + * + * @param keyLength 密钥长度,范围:512~2048 + * 一般1024 + * @return + */ + public static KeyPair generateRSAKeyPair(int keyLength) { + try { + KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA); + kpg.initialize(keyLength); + return kpg.genKeyPair(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + } + + /** + * 用公钥对字符串进行加密 + * + * @param data 原文 + */ + public static byte[] encryptByPublicKey(byte[] data, byte[] publicKey) throws Exception { + // 得到公钥 + byte[] decoded = Base64.decode(publicKey, Base64.DEFAULT); + RSAPublicKey keyPublic = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); + // 加密数据 + Cipher cp = Cipher.getInstance(ECB_PKCS1_PADDING); + cp.init(Cipher.ENCRYPT_MODE, keyPublic); + return cp.doFinal(data); + } + + /** + * 私钥加密 + * + * @param data 待加密数据 + * @param privateKey 密钥 + * @return byte[] 加密数据 + */ + public static byte[] encryptByPrivateKey(byte[] data, byte[] privateKey) throws Exception { + // 得到私钥 + byte[] decoded = Base64.decode(privateKey, Base64.DEFAULT); + RSAPrivateKey keyPrivate = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded)); + // 数据加密 + Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING); + cipher.init(Cipher.ENCRYPT_MODE, keyPrivate); + return cipher.doFinal(data); + } + + /** + * 公钥解密 + * + * @param data 待解密数据 + * @param publicKey 密钥 + * @return byte[] 解密数据 + */ + public static byte[] decryptByPublicKey(byte[] data, byte[] publicKey) throws Exception { + // 得到公钥 + byte[] decoded = Base64.decode(publicKey, Base64.DEFAULT); + RSAPublicKey keyPublic = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); + // 数据解密 + Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING); + cipher.init(Cipher.DECRYPT_MODE, keyPublic); + return cipher.doFinal(data); + } + + /** + * 使用私钥进行解密 + */ + public static byte[] decryptByPrivateKey(byte[] encrypted, byte[] privateKey) throws Exception { + // 得到私钥 + byte[] decoded = Base64.decode(privateKey, Base64.DEFAULT); + RSAPrivateKey keyPrivate = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded)); + + // 解密数据 + Cipher cp = Cipher.getInstance(ECB_PKCS1_PADDING); + cp.init(Cipher.DECRYPT_MODE, keyPrivate); + byte[] arr = cp.doFinal(encrypted); + return arr; + } + + /** + * 用公钥对字符串进行分段加密 + */ + public static byte[] encryptByPublicKeyForSpilt(byte[] data, byte[] publicKey) throws Exception { + int dataLen = data.length; + if (dataLen <= DEFAULT_BUFFERSIZE) { + return encryptByPublicKey(data, publicKey); + } + List allBytes = new ArrayList(2048); + int bufIndex = 0; + int subDataLoop = 0; + byte[] buf = new byte[DEFAULT_BUFFERSIZE]; + for (int i = 0; i < dataLen; i++) { + buf[bufIndex] = data[i]; + if (++bufIndex == DEFAULT_BUFFERSIZE || i == dataLen - 1) { + subDataLoop++; + if (subDataLoop != 1) { + for (byte b : DEFAULT_SPLIT) { + allBytes.add(b); + } + } + byte[] encryptBytes = encryptByPublicKey(buf, publicKey); + for (byte b : encryptBytes) { + allBytes.add(b); + } + bufIndex = 0; + if (i == dataLen - 1) { + buf = null; + } else { + buf = new byte[Math.min(DEFAULT_BUFFERSIZE, dataLen - i - 1)]; + } + } + } + byte[] bytes = new byte[allBytes.size()]; + { + int i = 0; + for (Byte b : allBytes) { + bytes[i++] = b.byteValue(); + } + } + return bytes; + } + + + + /** + * 使用私钥分段加密 + * + * @param data 要加密的原始数据 + * @param privateKey 秘钥 + */ + public static byte[] encryptByPrivateKeyForSpilt(byte[] data, byte[] privateKey) throws Exception { + int dataLen = data.length; + if (dataLen <= DEFAULT_BUFFERSIZE) { + return encryptByPrivateKey(data, privateKey); + } + List allBytes = new ArrayList(2048); + int bufIndex = 0; + int subDataLoop = 0; + byte[] buf = new byte[DEFAULT_BUFFERSIZE]; + for (int i = 0; i < dataLen; i++) { + buf[bufIndex] = data[i]; + if (++bufIndex == DEFAULT_BUFFERSIZE || i == dataLen - 1) { + subDataLoop++; + if (subDataLoop != 1) { + for (byte b : DEFAULT_SPLIT) { + allBytes.add(b); + } + } + byte[] encryptBytes = encryptByPrivateKey(buf, privateKey); + for (byte b : encryptBytes) { + allBytes.add(b); + } + bufIndex = 0; + if (i == dataLen - 1) { + buf = null; + } else { + buf = new byte[Math.min(DEFAULT_BUFFERSIZE, dataLen - i - 1)]; + } + } + } + byte[] bytes = new byte[allBytes.size()]; + { + int i = 0; + for (Byte b : allBytes) { + bytes[i++] = b.byteValue(); + } + } + return bytes; + } + + /** + * 公钥分段解密 + * + * @param encrypted 待解密数据 + * @param publicKey 密钥 + */ + public static byte[] decryptByPublicKeyForSpilt(byte[] encrypted, byte[] publicKey) throws Exception { + int splitLen = DEFAULT_SPLIT.length; + if (splitLen <= 0) { + return decryptByPublicKey(encrypted, publicKey); + } + int dataLen = encrypted.length; + List allBytes = new ArrayList(1024); + int latestStartIndex = 0; + for (int i = 0; i < dataLen; i++) { + byte bt = encrypted[i]; + boolean isMatchSplit = false; + if (i == dataLen - 1) { + // 到data的最后了 + byte[] part = new byte[dataLen - latestStartIndex]; + System.arraycopy(encrypted, latestStartIndex, part, 0, part.length); + byte[] decryptPart = decryptByPublicKey(part, publicKey); + for (byte b : decryptPart) { + allBytes.add(b); + } + latestStartIndex = i + splitLen; + i = latestStartIndex - 1; + } else if (bt == DEFAULT_SPLIT[0]) { + // 这个是以split[0]开头 + if (splitLen > 1) { + if (i + splitLen < dataLen) { + // 没有超出data的范围 + for (int j = 1; j < splitLen; j++) { + if (DEFAULT_SPLIT[j] != encrypted[i + j]) { + break; + } + if (j == splitLen - 1) { + // 验证到split的最后一位,都没有break,则表明已经确认是split段 + isMatchSplit = true; + } + } + } + } else { + // split只有一位,则已经匹配了 + isMatchSplit = true; + } + } + if (isMatchSplit) { + byte[] part = new byte[i - latestStartIndex]; + System.arraycopy(encrypted, latestStartIndex, part, 0, part.length); + byte[] decryptPart = decryptByPublicKey(part, publicKey); + for (byte b : decryptPart) { + allBytes.add(b); + } + latestStartIndex = i + splitLen; + i = latestStartIndex - 1; + } + } + byte[] bytes = new byte[allBytes.size()]; + { + int i = 0; + for (Byte b : allBytes) { + bytes[i++] = b.byteValue(); + } + } + return bytes; + } + + /** + * 使用私钥分段解密 + */ + public static byte[] decryptByPrivateKeyForSpilt(byte[] encrypted, byte[] privateKey) throws Exception { + int splitLen = DEFAULT_SPLIT.length; + if (splitLen <= 0) { + return decryptByPrivateKey(encrypted, privateKey); + } + int dataLen = encrypted.length; + List allBytes = new ArrayList(1024); + int latestStartIndex = 0; + for (int i = 0; i < dataLen; i++) { + byte bt = encrypted[i]; + boolean isMatchSplit = false; + if (i == dataLen - 1) { + // 到data的最后了 + byte[] part = new byte[dataLen - latestStartIndex]; + System.arraycopy(encrypted, latestStartIndex, part, 0, part.length); + byte[] decryptPart = decryptByPrivateKey(part, privateKey); + for (byte b : decryptPart) { + allBytes.add(b); + } + latestStartIndex = i + splitLen; + i = latestStartIndex - 1; + } else if (bt == DEFAULT_SPLIT[0]) { + // 这个是以split[0]开头 + if (splitLen > 1) { + if (i + splitLen < dataLen) { + // 没有超出data的范围 + for (int j = 1; j < splitLen; j++) { + if (DEFAULT_SPLIT[j] != encrypted[i + j]) { + break; + } + if (j == splitLen - 1) { + // 验证到split的最后一位,都没有break,则表明已经确认是split段 + isMatchSplit = true; + } + } + } + } else { + // split只有一位,则已经匹配了 + isMatchSplit = true; + } + } + if (isMatchSplit) { + byte[] part = new byte[i - latestStartIndex]; + System.arraycopy(encrypted, latestStartIndex, part, 0, part.length); + byte[] decryptPart = decryptByPrivateKey(part, privateKey); + for (byte b : decryptPart) { + allBytes.add(b); + } + latestStartIndex = i + splitLen; + i = latestStartIndex - 1; + } + } + byte[] bytes = new byte[allBytes.size()]; + { + int i = 0; + for (Byte b : allBytes) { + bytes[i++] = b.byteValue(); + } + } + return bytes; + } + + /** + * 用公钥对字符串进行分段加密 + */ + public static String encryptByPublicKeyForSpiltStr(String data, String publicKey) throws Exception { + byte[] encryptBytes = encryptByPublicKeyForSpilt(data.getBytes(StandardCharsets.UTF_8), publicKey.getBytes()); + return encryptBASE64(encryptBytes); + } + + /** + * 使用私钥分段加密 + * + * @param data 要加密的原始数据 + * @param privateKey 秘钥 + */ + public static String encryptByPrivateKeyForSpiltStr(String data, String privateKey) throws Exception { + byte[] encryptBytes = encryptByPrivateKeyForSpilt(data.getBytes(StandardCharsets.UTF_8), privateKey.getBytes()); + return encryptBASE64(encryptBytes); + } + + /** + * 公钥分段解密 + * + * @param encrypted 待解密数据 + * @param publicKey 密钥 + */ + public static String decryptByPublicKeyForSpiltStr(String encrypted, String publicKey) throws Exception { + byte[] decryptBytes = decryptByPublicKeyForSpilt(decryptBASE64(encrypted), publicKey.getBytes()); + return new String(decryptBytes,StandardCharsets.UTF_8); + } + + /** + * 使用私钥分段解密 + */ + public static String decryptByPrivateKeyForSpiltStr(String encrypted, String privateKey) throws Exception { + byte[] decryptBytes = decryptByPrivateKeyForSpilt(decryptBASE64(encrypted), privateKey.getBytes()); + return new String(decryptBytes,StandardCharsets.UTF_8); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RetrofitHttpUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RetrofitHttpUtils.java new file mode 100755 index 0000000..154990b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/RetrofitHttpUtils.java @@ -0,0 +1,112 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.util.Log; + +import com.rehome.scbaxj.contans.Contans; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * Created by ruihong on 2017/12/22. + */ + +public class RetrofitHttpUtils { + + private static Api api; + + private static Context context; + + private static RetrofitHttpUtils instance = null; + + public static RetrofitHttpUtils getInstance(Context context, String url) { + if (instance == null) { + instance = new RetrofitHttpUtils(context, url); + } + return instance; + } + + private RetrofitHttpUtils(Context context, String url) { + Retrofit mRetrofit = new Retrofit.Builder() + .baseUrl(url) + .client(getOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + api = mRetrofit.create(Api.class); + RetrofitHttpUtils.context = context; + } + + public static Api getApi() { + return getApi(Contans.IP); + } + + public static Api GETMAXIMOIP() { + return getApi(Contans.MAXIMOIP); + } + + public static Api getApi(String url) { + + Retrofit mRetrofit = new Retrofit.Builder() + .baseUrl(url) + .client(getOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + Api api = mRetrofit.create(Api.class); + + return api; + } + + + private static OkHttpClient getOkHttpClient() { + + OkHttpClient.Builder httpClientBuilder = new OkHttpClient + .Builder(); + //OkHttp进行添加拦截器loggingInterceptor + httpClientBuilder.addInterceptor(new LoggingInterceptor()); + + //设置超时时间 + httpClientBuilder.connectTimeout(60, TimeUnit.SECONDS); + httpClientBuilder.writeTimeout(60, TimeUnit.SECONDS); + httpClientBuilder.readTimeout(60, TimeUnit.SECONDS); + + return httpClientBuilder.build(); + } + + public static class LoggingInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + //这个chain里面包含了request和response,所以你要什么都可以从这里拿 + Request request = chain.request(); + + long t1 = System.nanoTime();//请求发起的时间 + Log.d("okhttpmsg", String.format("发送请求 %s on %s%n%s", + request.url(), chain.connection(), request.headers())); + + Response response = chain.proceed(request); + + long t2 = System.nanoTime();//收到响应的时间 + + //这里不能直接使用response.body().string()的方式输出日志 + //因为response.body().string()之后,response中的流会被关闭,程序会报错,我们需要创建出一 + //个新的response给应用层处理 + ResponseBody responseBody = response.peekBody(1024 * 1024); + + Log.d("okhttpmsg", String.format("接收响应: [%s] %n返回json:【%s】 %.1fms%n%s", + response.request().url(), + responseBody.string(), + (t2 - t1) / 1e6d, + response.headers())); + + return response; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/SPUtils.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/SPUtils.java new file mode 100755 index 0000000..84f8672 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/SPUtils.java @@ -0,0 +1,169 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.content.SharedPreferences; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Map; + +/** + * SharedPreferences的封装 + */ +public class SPUtils { + + /** + * 保存在手机里面的文件名 + */ + public static final String FILE_NAME = "share_data"; + + /** + * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 + * + * @param context + * @param key + * @param object + */ + public static void put(Context context, String key, Object object) { + + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + + if (object instanceof String) { + editor.putString(key, (String) object); + } else if (object instanceof Integer) { + editor.putInt(key, (Integer) object); + } else if (object instanceof Boolean) { + editor.putBoolean(key, (Boolean) object); + } else if (object instanceof Float) { + editor.putFloat(key, (Float) object); + } else if (object instanceof Long) { + editor.putLong(key, (Long) object); + } else { + editor.putString(key, object.toString()); + } + SharedPreferencesCompat.apply(editor); + } + + /** + * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 + * + * @param context + * @param key + * @param defaultObject + * @return + */ + public static Object get(Context context, String key, Object defaultObject) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + + if (defaultObject instanceof String) { + return sp.getString(key, (String) defaultObject); + } else if (defaultObject instanceof Integer) { + return sp.getInt(key, (Integer) defaultObject); + } else if (defaultObject instanceof Boolean) { + return sp.getBoolean(key, (Boolean) defaultObject); + } else if (defaultObject instanceof Float) { + return sp.getFloat(key, (Float) defaultObject); + } else if (defaultObject instanceof Long) { + return sp.getLong(key, (Long) defaultObject); + } + + return null; + } + + /** + * 移除某个key值已经对应的值 + * + * @param context + * @param key + */ + public static void remove(Context context, String key) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.remove(key); + SharedPreferencesCompat.apply(editor); + } + + /** + * 清除所有数据 + * + * @param context + */ + public static void clear(Context context) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.clear(); + SharedPreferencesCompat.apply(editor); + } + + /** + * 查询某个key是否已经存在 + * + * @param context + * @param key + * @return + */ + public static boolean contains(Context context, String key) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + return sp.contains(key); + } + + /** + * 返回所有的键值对 + * + * @param context + * @return + */ + public static Map getAll(Context context) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + return sp.getAll(); + } + + /** + * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 + * + * @author zhy + */ + private static class SharedPreferencesCompat { + private static final Method sApplyMethod = findApplyMethod(); + + /** + * 反射查找apply的方法 + * + * @return + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private static Method findApplyMethod() { + try { + Class clz = SharedPreferences.Editor.class; + return clz.getMethod("apply"); + } catch (NoSuchMethodException e) { + } + return null; + } + + /** + * 如果找到则使用apply执行,否则使用commit + * + * @param editor + */ + public static void apply(SharedPreferences.Editor editor) { + try { + if (sApplyMethod != null) { + sApplyMethod.invoke(editor); + return; + } + } catch (IllegalArgumentException e) { + } catch (IllegalAccessException e) { + } catch (InvocationTargetException e) { + } + editor.commit(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/StatusBarUtil.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/StatusBarUtil.java new file mode 100755 index 0000000..22e8140 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/StatusBarUtil.java @@ -0,0 +1,832 @@ +package com.rehome.scbaxj.utils; + +import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Context; +import android.graphics.Color; +import android.os.Build; +import androidx.annotation.ColorInt; +import androidx.annotation.IntRange; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.drawerlayout.widget.DrawerLayout; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; + +import com.rehome.scbaxj.R; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + + +/** + * @author 47184 on 2018/2/27. + */ + +public class StatusBarUtil { + + + public static final int DEFAULT_STATUS_BAR_ALPHA = 0; + private static final int FAKE_STATUS_BAR_VIEW_ID = R.id.statusbarutil_fake_status_bar_view; + private static final int FAKE_TRANSLUCENT_VIEW_ID = R.id.statusbarutil_translucent_view; + private static final int TAG_KEY_HAVE_SET_OFFSET = -123; + + /** + * 修改状态栏为全透明 + * + * @param activity + */ + @TargetApi(19) + public static void transparencyBar(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.TRANSPARENT); + + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + Window window = activity.getWindow(); + window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, + WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + + + + /** + * 设置状态栏颜色 + * + * @param activity 需要设置的 activity + * @param color 状态栏颜色值 + */ + public static void setColor(Activity activity, @ColorInt int color) { + setColor(activity, color, DEFAULT_STATUS_BAR_ALPHA); + } + + /** + * 设置状态栏颜色 + * + * @param activity 需要设置的activity + * @param color 状态栏颜色值 + * @param statusBarAlpha 状态栏透明度 + */ + + public static void setColor(Activity activity, @ColorInt int color, @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + activity.getWindow().setStatusBarColor(calculateStatusColor(color, statusBarAlpha)); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); + View fakeStatusBarView = decorView.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + if (fakeStatusBarView.getVisibility() == View.GONE) { + fakeStatusBarView.setVisibility(View.VISIBLE); + } + fakeStatusBarView.setBackgroundColor(calculateStatusColor(color, statusBarAlpha)); + } else { + decorView.addView(createStatusBarView(activity, color, statusBarAlpha)); + } + setRootView(activity); + } + } + + /** + * 为滑动返回界面设置状态栏颜色 + * + * @param activity 需要设置的activity + * @param color 状态栏颜色值 + */ + public static void setColorForSwipeBack(Activity activity, int color) { + setColorForSwipeBack(activity, color, DEFAULT_STATUS_BAR_ALPHA); + } + + /** + * 为滑动返回界面设置状态栏颜色 + * + * @param activity 需要设置的activity + * @param color 状态栏颜色值 + * @param statusBarAlpha 状态栏透明度 + */ + public static void setColorForSwipeBack(Activity activity, @ColorInt int color, + @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + + ViewGroup contentView = activity.findViewById(android.R.id.content); + View rootView = contentView.getChildAt(0); + int statusBarHeight = getStatusBarHeight(activity); + if (rootView != null && rootView instanceof CoordinatorLayout) { + final CoordinatorLayout coordinatorLayout = (CoordinatorLayout) rootView; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + coordinatorLayout.setFitsSystemWindows(false); + contentView.setBackgroundColor(calculateStatusColor(color, statusBarAlpha)); + boolean isNeedRequestLayout = contentView.getPaddingTop() < statusBarHeight; + if (isNeedRequestLayout) { + contentView.setPadding(0, statusBarHeight, 0, 0); + coordinatorLayout.post(new Runnable() { + @Override + public void run() { + coordinatorLayout.requestLayout(); + } + }); + } + } else { + coordinatorLayout.setStatusBarBackgroundColor(calculateStatusColor(color, statusBarAlpha)); + } + } else { + contentView.setPadding(0, statusBarHeight, 0, 0); + contentView.setBackgroundColor(calculateStatusColor(color, statusBarAlpha)); + } + setTransparentForWindow(activity); + } + } + + /** + * 设置状态栏纯色 不加半透明效果 + * + * @param activity 需要设置的 activity + * @param color 状态栏颜色值 + */ + public static void setColorNoTranslucent(Activity activity, @ColorInt int color) { + setColor(activity, color, 0); + } + + /** + * 设置状态栏颜色(5.0以下无半透明效果,不建议使用) + * + * @param activity 需要设置的 activity + * @param color 状态栏颜色值 + */ + @Deprecated + public static void setColorDiff(Activity activity, @ColorInt int color) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + transparentStatusBar(activity); + ViewGroup contentView = activity.findViewById(android.R.id.content); + // 移除半透明矩形,以免叠加 + View fakeStatusBarView = contentView.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + if (fakeStatusBarView.getVisibility() == View.GONE) { + fakeStatusBarView.setVisibility(View.VISIBLE); + } + fakeStatusBarView.setBackgroundColor(color); + } else { + contentView.addView(createStatusBarView(activity, color)); + } + setRootView(activity); + } + + /** + * 使状态栏半透明 + *

+ * 适用于图片作为背景的界面,此时需要图片填充到状态栏 + * + * @param activity 需要设置的activity + */ + public static void setTranslucent(Activity activity) { + setTranslucent(activity, DEFAULT_STATUS_BAR_ALPHA); + } + + /** + * 使状态栏半透明 + *

+ * 适用于图片作为背景的界面,此时需要图片填充到状态栏 + * + * @param activity 需要设置的activity + * @param statusBarAlpha 状态栏透明度 + */ + public static void setTranslucent(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + setTransparent(activity); + addTranslucentView(activity, statusBarAlpha); + } + + /** + * 针对根布局是 CoordinatorLayout, 使状态栏半透明 + *

+ * 适用于图片作为背景的界面,此时需要图片填充到状态栏 + * + * @param activity 需要设置的activity + * @param statusBarAlpha 状态栏透明度 + */ + public static void setTranslucentForCoordinatorLayout(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + transparentStatusBar(activity); + addTranslucentView(activity, statusBarAlpha); + } + + /** + * 设置状态栏全透明 + * + * @param activity 需要设置的activity + */ + public static void setTransparent(Activity activity) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + transparentStatusBar(activity); + setRootView(activity); + } + + /** + * 使状态栏透明(5.0以上半透明效果,不建议使用) + *

+ * 适用于图片作为背景的界面,此时需要图片填充到状态栏 + * + * @param activity 需要设置的activity + */ + @Deprecated + public static void setTranslucentDiff(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + // 设置状态栏透明 + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + setRootView(activity); + } + } + + /** + * 为DrawerLayout 布局设置状态栏变色 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + * @param color 状态栏颜色值 + */ + public static void setColorForDrawerLayout(Activity activity, DrawerLayout drawerLayout, @ColorInt int color) { + setColorForDrawerLayout(activity, drawerLayout, color, DEFAULT_STATUS_BAR_ALPHA); + } + + /** + * 为DrawerLayout 布局设置状态栏颜色,纯色 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + * @param color 状态栏颜色值 + */ + public static void setColorNoTranslucentForDrawerLayout(Activity activity, DrawerLayout drawerLayout, @ColorInt int color) { + setColorForDrawerLayout(activity, drawerLayout, color, 0); + } + + /** + * 为DrawerLayout 布局设置状态栏变色 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + * @param color 状态栏颜色值 + * @param statusBarAlpha 状态栏透明度 + */ + public static void setColorForDrawerLayout(Activity activity, DrawerLayout drawerLayout, @ColorInt int color, + @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + } else { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + // 生成一个状态栏大小的矩形 + // 添加 statusBarView 到布局中 + ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0); + View fakeStatusBarView = contentLayout.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + if (fakeStatusBarView.getVisibility() == View.GONE) { + fakeStatusBarView.setVisibility(View.VISIBLE); + } + fakeStatusBarView.setBackgroundColor(color); + } else { + contentLayout.addView(createStatusBarView(activity, color), 0); + } + // 内容布局不是 LinearLayout 时,设置padding top + if (!(contentLayout instanceof LinearLayout) && contentLayout.getChildAt(1) != null) { + contentLayout.getChildAt(1) + .setPadding(contentLayout.getPaddingLeft(), getStatusBarHeight(activity) + contentLayout.getPaddingTop(), + contentLayout.getPaddingRight(), contentLayout.getPaddingBottom()); + } + // 设置属性 + setDrawerLayoutProperty(drawerLayout, contentLayout); + addTranslucentView(activity, statusBarAlpha); + } + + /** + * 设置 DrawerLayout 属性 + * + * @param drawerLayout DrawerLayout + * @param drawerLayoutContentLayout DrawerLayout 的内容布局 + */ + private static void setDrawerLayoutProperty(DrawerLayout drawerLayout, ViewGroup drawerLayoutContentLayout) { + ViewGroup drawer = (ViewGroup) drawerLayout.getChildAt(1); + drawerLayout.setFitsSystemWindows(false); + drawerLayoutContentLayout.setFitsSystemWindows(false); + drawerLayoutContentLayout.setClipToPadding(true); + drawer.setFitsSystemWindows(false); + } + + /** + * 为DrawerLayout 布局设置状态栏变色(5.0以下无半透明效果,不建议使用) + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + * @param color 状态栏颜色值 + */ + @Deprecated + public static void setColorForDrawerLayoutDiff(Activity activity, DrawerLayout drawerLayout, @ColorInt int color) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + // 生成一个状态栏大小的矩形 + ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0); + View fakeStatusBarView = contentLayout.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + if (fakeStatusBarView.getVisibility() == View.GONE) { + fakeStatusBarView.setVisibility(View.VISIBLE); + } + fakeStatusBarView.setBackgroundColor(calculateStatusColor(color, DEFAULT_STATUS_BAR_ALPHA)); + } else { + // 添加 statusBarView 到布局中 + contentLayout.addView(createStatusBarView(activity, color), 0); + } + // 内容布局不是 LinearLayout 时,设置padding top + if (!(contentLayout instanceof LinearLayout) && contentLayout.getChildAt(1) != null) { + contentLayout.getChildAt(1).setPadding(0, getStatusBarHeight(activity), 0, 0); + } + // 设置属性 + setDrawerLayoutProperty(drawerLayout, contentLayout); + } + } + + /** + * 为 DrawerLayout 布局设置状态栏透明 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + */ + public static void setTranslucentForDrawerLayout(Activity activity, DrawerLayout drawerLayout) { + setTranslucentForDrawerLayout(activity, drawerLayout, DEFAULT_STATUS_BAR_ALPHA); + } + + /** + * 为 DrawerLayout 布局设置状态栏透明 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + */ + public static void setTranslucentForDrawerLayout(Activity activity, DrawerLayout drawerLayout, + @IntRange(from = 0, to = 255) int statusBarAlpha) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + setTransparentForDrawerLayout(activity, drawerLayout); + addTranslucentView(activity, statusBarAlpha); + } + + /** + * 为 DrawerLayout 布局设置状态栏透明 + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + */ + public static void setTransparentForDrawerLayout(Activity activity, DrawerLayout drawerLayout) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + } else { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + + ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0); + // 内容布局不是 LinearLayout 时,设置padding top + if (!(contentLayout instanceof LinearLayout) && contentLayout.getChildAt(1) != null) { + contentLayout.getChildAt(1).setPadding(0, getStatusBarHeight(activity), 0, 0); + } + + // 设置属性 + setDrawerLayoutProperty(drawerLayout, contentLayout); + } + + /** + * 为 DrawerLayout 布局设置状态栏透明(5.0以上半透明效果,不建议使用) + * + * @param activity 需要设置的activity + * @param drawerLayout DrawerLayout + */ + @Deprecated + public static void setTranslucentForDrawerLayoutDiff(Activity activity, DrawerLayout drawerLayout) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + // 设置状态栏透明 + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + // 设置内容布局属性 + ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0); + contentLayout.setFitsSystemWindows(true); + contentLayout.setClipToPadding(true); + // 设置抽屉布局属性 + ViewGroup vg = (ViewGroup) drawerLayout.getChildAt(1); + vg.setFitsSystemWindows(false); + // 设置 DrawerLayout 属性 + drawerLayout.setFitsSystemWindows(false); + } + } + + /** + * 为头部是 ImageView 的界面设置状态栏全透明 + * + * @param activity 需要设置的activity + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTransparentForImageView(Activity activity, View needOffsetView) { + setTranslucentForImageView(activity, 0, needOffsetView); + } + + /** + * 为头部是 ImageView 的界面设置状态栏透明(使用默认透明度) + * + * @param activity 需要设置的activity + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTranslucentForImageView(Activity activity, View needOffsetView) { + setTranslucentForImageView(activity, DEFAULT_STATUS_BAR_ALPHA, needOffsetView); + } + + /** + * 为头部是 ImageView 的界面设置状态栏透明 + * + * @param activity 需要设置的activity + * @param statusBarAlpha 状态栏透明度 + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTranslucentForImageView(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha, + View needOffsetView) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return; + } + setTransparentForWindow(activity); + addTranslucentView(activity, statusBarAlpha); + if (needOffsetView != null) { + Object haveSetOffset = needOffsetView.getTag(TAG_KEY_HAVE_SET_OFFSET); + if (haveSetOffset != null && (Boolean) haveSetOffset) { + return; + } + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) needOffsetView.getLayoutParams(); + layoutParams.setMargins(layoutParams.leftMargin, layoutParams.topMargin + getStatusBarHeight(activity), + layoutParams.rightMargin, layoutParams.bottomMargin); + needOffsetView.setTag(TAG_KEY_HAVE_SET_OFFSET, true); + } + } + + /** + * 为 fragment 头部是 ImageView 的设置状态栏透明 + * + * @param activity fragment 对应的 activity + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTranslucentForImageViewInFragment(Activity activity, View needOffsetView) { + setTranslucentForImageViewInFragment(activity, DEFAULT_STATUS_BAR_ALPHA, needOffsetView); + } + + /** + * 为 fragment 头部是 ImageView 的设置状态栏透明 + * + * @param activity fragment 对应的 activity + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTransparentForImageViewInFragment(Activity activity, View needOffsetView) { + setTranslucentForImageViewInFragment(activity, 0, needOffsetView); + } + + /** + * 为 fragment 头部是 ImageView 的设置状态栏透明 + * + * @param activity fragment 对应的 activity + * @param statusBarAlpha 状态栏透明度 + * @param needOffsetView 需要向下偏移的 View + */ + public static void setTranslucentForImageViewInFragment(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha, + View needOffsetView) { + setTranslucentForImageView(activity, statusBarAlpha, needOffsetView); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + clearPreviousSetting(activity); + } + } + + /** + * 隐藏伪状态栏 View + * + * @param activity 调用的 Activity + */ + public static void hideFakeStatusBarView(Activity activity) { + ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); + View fakeStatusBarView = decorView.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + fakeStatusBarView.setVisibility(View.GONE); + } + View fakeTranslucentView = decorView.findViewById(FAKE_TRANSLUCENT_VIEW_ID); + if (fakeTranslucentView != null) { + fakeTranslucentView.setVisibility(View.GONE); + } + } + + /////////////////////////////////////////////////////////////////////////////////// + + @TargetApi(Build.VERSION_CODES.KITKAT) + private static void clearPreviousSetting(Activity activity) { + ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); + View fakeStatusBarView = decorView.findViewById(FAKE_STATUS_BAR_VIEW_ID); + if (fakeStatusBarView != null) { + decorView.removeView(fakeStatusBarView); + ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0); + rootView.setPadding(0, 0, 0, 0); + } + } + + /** + * 添加半透明矩形条 + * + * @param activity 需要设置的 activity + * @param statusBarAlpha 透明值 + */ + private static void addTranslucentView(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha) { + ViewGroup contentView = activity.findViewById(android.R.id.content); + View fakeTranslucentView = contentView.findViewById(FAKE_TRANSLUCENT_VIEW_ID); + if (fakeTranslucentView != null) { + if (fakeTranslucentView.getVisibility() == View.GONE) { + fakeTranslucentView.setVisibility(View.VISIBLE); + } + fakeTranslucentView.setBackgroundColor(Color.argb(statusBarAlpha, 0, 0, 0)); + } else { + contentView.addView(createTranslucentStatusBarView(activity, statusBarAlpha)); + } + } + + /** + * 生成一个和状态栏大小相同的彩色矩形条 + * + * @param activity 需要设置的 activity + * @param color 状态栏颜色值 + * @return 状态栏矩形条 + */ + private static View createStatusBarView(Activity activity, @ColorInt int color) { + return createStatusBarView(activity, color, 0); + } + + /** + * 生成一个和状态栏大小相同的半透明矩形条 + * + * @param activity 需要设置的activity + * @param color 状态栏颜色值 + * @param alpha 透明值 + * @return 状态栏矩形条 + */ + private static View createStatusBarView(Activity activity, @ColorInt int color, int alpha) { + // 绘制一个和状态栏一样高的矩形 + View statusBarView = new View(activity); + LinearLayout.LayoutParams params = + new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity)); + statusBarView.setLayoutParams(params); + statusBarView.setBackgroundColor(calculateStatusColor(color, alpha)); + statusBarView.setId(FAKE_STATUS_BAR_VIEW_ID); + return statusBarView; + } + + /** + * 设置根布局参数 + */ + private static void setRootView(Activity activity) { + ViewGroup parent = activity.findViewById(android.R.id.content); + for (int i = 0, count = parent.getChildCount(); i < count; i++) { + View childView = parent.getChildAt(i); + if (childView instanceof ViewGroup) { + childView.setFitsSystemWindows(true); + ((ViewGroup) childView).setClipToPadding(true); + } + } + } + + /** + * 设置透明 + */ + private static void setTransparentForWindow(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + activity.getWindow() + .getDecorView() + .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + activity.getWindow() + .setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + + /** + * 使状态栏透明 + */ + @TargetApi(Build.VERSION_CODES.KITKAT) + private static void transparentStatusBar(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + } else { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + + /** + * 创建半透明矩形 View + * + * @param alpha 透明值 + * @return 半透明 View + */ + private static View createTranslucentStatusBarView(Activity activity, int alpha) { + // 绘制一个和状态栏一样高的矩形 + View statusBarView = new View(activity); + LinearLayout.LayoutParams params = + new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity)); + statusBarView.setLayoutParams(params); + statusBarView.setBackgroundColor(Color.argb(alpha, 0, 0, 0)); + statusBarView.setId(FAKE_TRANSLUCENT_VIEW_ID); + return statusBarView; + } + + /** + * 获取状态栏高度 + * + * @param context context + * @return 状态栏高度 + */ + private static int getStatusBarHeight(Context context) { + // 获得状态栏高度 + int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); + return context.getResources().getDimensionPixelSize(resourceId); + } + + /** + * 计算状态栏颜色 + * + * @param color color值 + * @param alpha alpha值 + * @return 最终的状态栏颜色 + */ + private static int calculateStatusColor(@ColorInt int color, int alpha) { + if (alpha == 0) { + return color; + } + float a = 1 - alpha / 255f; + int red = color >> 16 & 0xff; + int green = color >> 8 & 0xff; + int blue = color & 0xff; + red = (int) (red * a + 0.5); + green = (int) (green * a + 0.5); + blue = (int) (blue * a + 0.5); + return 0xff << 24 | red << 16 | green << 8 | blue; + } + + + /** + * 状态栏亮色模式,设置状态栏黑色文字、图标, + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * + * @param activity + * @return 1:MIUUI 2:Flyme 3:android6.0 + */ + public static int StatusBarLightMode(Activity activity) { + int result = 0; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (MIUISetStatusBarLightMode(activity, true)) { + result = 1; + } else if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) { + result = 2; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + result = 3; + } + } + return result; + } + + /** + * 已知系统类型时,设置状态栏黑色文字、图标。 + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * + * @param activity + * @param type 1:MIUUI 2:Flyme 3:android6.0 + */ + public static void StatusBarLightMode(Activity activity, int type) { + if (type == 1) { + MIUISetStatusBarLightMode(activity, true); + } else if (type == 2) { + FlymeSetStatusBarLightMode(activity.getWindow(), true); + } else if (type == 3) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + } + + } + + /** + * 状态栏暗色模式,清除MIUI、flyme或6.0以上版本状态栏黑色文字、图标 + */ + public static void StatusBarDarkMode(Activity activity, int type) { + if (type == 1) { + MIUISetStatusBarLightMode(activity, false); + } else if (type == 2) { + FlymeSetStatusBarLightMode(activity.getWindow(), false); + } else if (type == 3) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + + } + + + /** + * 设置状态栏图标为深色和魅族特定的文字风格 + * 可以用来判断是否为Flyme用户 + * + * @param window 需要设置的窗口 + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + */ + public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) { + boolean result = false; + if (window != null) { + try { + WindowManager.LayoutParams lp = window.getAttributes(); + Field darkFlag = WindowManager.LayoutParams.class + .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); + Field meizuFlags = WindowManager.LayoutParams.class + .getDeclaredField("meizuFlags"); + darkFlag.setAccessible(true); + meizuFlags.setAccessible(true); + int bit = darkFlag.getInt(null); + int value = meizuFlags.getInt(lp); + if (dark) { + value |= bit; + } else { + value &= ~bit; + } + meizuFlags.setInt(lp, value); + window.setAttributes(lp); + result = true; + } catch (Exception e) { + + } + } + return result; + } + + /** + * 需要MIUIV6以上 + * + * @param activity + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + */ + public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) { + boolean result = false; + Window window = activity.getWindow(); + if (window != null) { + Class clazz = window.getClass(); + try { + int darkModeFlag = 0; + @SuppressLint("PrivateApi") Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); + Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); + darkModeFlag = field.getInt(layoutParams); + Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); + if (dark) { + extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体 + } else { + extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体 + } + result = true; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上 + if (dark) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + } + } catch (Exception ignored) { + + } + } + return result; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/UiUtlis.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/UiUtlis.java new file mode 100755 index 0000000..44f6d8f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/utils/UiUtlis.java @@ -0,0 +1,110 @@ +package com.rehome.scbaxj.utils; + +import android.content.Context; +import android.text.TextUtils; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 一个ui的工具类 + */ +public class UiUtlis { + + public static String getText(EditText editText) { + return editText.getText().toString().trim(); + } + + public static String getString(Context context, int id) { + return context.getResources().getString(id); + } + + /** + * 隐藏键盘 + * + * @param editText EditText + * @param context Context + */ + public static void hideInput(EditText editText, Context context) { + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); + } + + /** + * URL加密 + * + * @param text 加密的文本 + * @return + */ + public static String encoder(String text) { + + String name = ""; + try { + name = URLEncoder.encode(text, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return name; + } + + /** + * String类型转double + * + * @param text 文本 + * @return + */ + public static double getNum(String text) { + double num = 0; + try { + num = Double.parseDouble(text); + } catch (Exception e) { + e.printStackTrace(); + } + return num; + } + + /** + * 判断计划 + * + * @param time + * @return + */ + public static boolean isdelete(String time) { + + if (!time.isEmpty()) { + + String str = ""; + if (time.indexOf("-") != -1) { + str = "yyyy-MM-dd HH:mm:ss"; + } + + if (time.indexOf("/") != -1) { + str = "yyyy/MM/dd HH:mm:ss"; + } + + SimpleDateFormat sdf = new SimpleDateFormat(str); + //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = sdf.parse(time); + } catch (ParseException e) { + e.printStackTrace(); + } + long l1 = date.getTime();//服务器返回时间 + long l2 = System.currentTimeMillis();//系统时间 + return l1 < l2; + } + return false; + } + + public static boolean isEmpty(EditText editText) { + + return TextUtils.isEmpty(editText.getText().toString()); + } + +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AllCheckDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AllCheckDialog.java new file mode 100644 index 0000000..361ac08 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AllCheckDialog.java @@ -0,0 +1,103 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + +/** + * Created by Rehome-rjb1 on 2017/5/31. + * 是否审核的对话框 + */ + +public class AllCheckDialog extends Dialog { + + + TextView tvTitle; + + TextView tvMsg; + + TextView dialogCancel; + + TextView dialogCommit; + + LinearLayout layDialogCancel; + + private AuditDialogListener listener; + + public AllCheckDialog(@NonNull Context context, String msg, AuditDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_allcheck_dialog); + findView(); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + this.listener = listener; + setCancelable(false); + setTvMsg(msg); + } + + private void findView(){ + tvTitle = findViewById(R.id.tv_title); + tvMsg = findViewById(R.id.tv_msg); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + } + + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + tvMsg.setText(msg); + } + } + + public void setTvTitle(String title) { + if (!TextUtils.isEmpty(title)) { + tvTitle.setText(title); + } + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface AuditDialogListener { + void confirm(); + + void cancel(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AuditDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AuditDialog.java new file mode 100755 index 0000000..bcfa8a7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AuditDialog.java @@ -0,0 +1,94 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + +/** + * Created by Rehome-rjb1 on 2017/5/31. + * 是否审核的对话框 + */ + +public class AuditDialog extends Dialog { + + + TextView tvMsg; + + TextView dialogCancel; + + TextView dialogCommit; + + LinearLayout layDialogCancel; + + private AuditDialogListener listener; + + public AuditDialog(@NonNull Context context, String msg, AuditDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_audit_dialog); + findView(); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + this.listener = listener; + setCancelable(false); + setTvMsg(msg); + } + + private void findView(){ + tvMsg = findViewById(R.id.tv_msg); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + } + + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + tvMsg.setText(msg); + } + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface AuditDialogListener { + void confirm(); + + void cancel(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoGridView.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoGridView.java new file mode 100755 index 0000000..2a637ec --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoGridView.java @@ -0,0 +1,37 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.widget.GridView; + +/** + * Created by Rehome-rjb1 on 2017/5/16. + * 自适应的gridview + */ + +public class AutoGridView extends GridView { + + public AutoGridView(Context context) { + super(context); + } + + public AutoGridView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AutoGridView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + return super.dispatchTouchEvent(ev); + } + + @Override + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); + super.onMeasure(widthMeasureSpec, expandSpec); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoListView.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoListView.java new file mode 100755 index 0000000..cca1c05 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoListView.java @@ -0,0 +1,36 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.widget.ListView; + +/** + * Created by Rehome-rjb1 on 2017/5/16. + * 自适应的listview + */ + +public class AutoListView extends ListView { + public AutoListView(Context context) { + super(context); + } + + public AutoListView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AutoListView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + return super.dispatchTouchEvent(ev); + } + + @Override + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); + super.onMeasure(widthMeasureSpec, expandSpec); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoRadioGroup.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoRadioGroup.java new file mode 100755 index 0000000..189e40e --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/AutoRadioGroup.java @@ -0,0 +1,80 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.ViewGroup; +import android.widget.RadioGroup; + +import com.zhy.autolayout.AutoLayoutInfo; +import com.zhy.autolayout.utils.AutoLayoutHelper; + +/** + * Created by hupei on 2016/icon2/29 9:59. + */ +public class AutoRadioGroup extends RadioGroup +{ + private AutoLayoutHelper mHelper = new AutoLayoutHelper(this); + + public AutoRadioGroup(Context context) + { + super(context); + } + + public AutoRadioGroup(Context context, AttributeSet attrs) + { + super(context, attrs); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) + { + if (!isInEditMode()) + mHelper.adjustChildren(); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) + { + super.onLayout(changed, l, t, r, b); + } + + @Override + public LayoutParams generateLayoutParams(AttributeSet attrs) + { + return new LayoutParams(getContext(), attrs); + } + + public static class LayoutParams extends RadioGroup.LayoutParams + implements AutoLayoutHelper.AutoLayoutParams + { + private AutoLayoutInfo mAutoLayoutInfo; + + public LayoutParams(Context c, AttributeSet attrs) + { + super(c, attrs); + mAutoLayoutInfo = AutoLayoutHelper.getAutoLayoutInfo(c, attrs); + } + + @Override + public AutoLayoutInfo getAutoLayoutInfo() + { + return mAutoLayoutInfo; + } + + public LayoutParams(int width, int height) + { + super(width, height); + } + + public LayoutParams(ViewGroup.LayoutParams source) + { + super(source); + } + + public LayoutParams(MarginLayoutParams source) + { + super(source); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaCheckDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaCheckDialog.java new file mode 100644 index 0000000..17175c4 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaCheckDialog.java @@ -0,0 +1,109 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import com.rehome.scbaxj.databinding.DialogBaCheckBinding; + +/** + * Created by HuangWenfei on 2023/01/06. + * 保安巡检对话框 + */ + +public class BaCheckDialog extends Dialog { + + protected Context context; + protected View mView; + protected DialogBaCheckBinding binding; + protected BaCheckDialogListener listener; + protected String msg; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(mView); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + setTvMsg(msg); + binding.bottomBtnView.dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + binding.bottomBtnView.dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + + } + + public BaCheckDialog(@NonNull Context context, String msg, BaCheckDialogListener listener) { + super(context); + this.context=context; + this.listener = listener; + this.msg=msg; + binding = DialogBaCheckBinding.inflate(getLayoutInflater()); + mView = binding.getRoot(); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + } + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + binding.tvMsg.setText(msg); + } + } + + public void setBtnLeftText(String msg) { + binding.bottomBtnView.dialogCancel.setText("查看现场记事"); + } + + public void setTvTitle(String title) { + if (!TextUtils.isEmpty(title)) { + binding.tvTitle.setText(title); + } + } + + public void hideBottomClick() { + binding.bottomBtnView.layDialogBottomView.setVisibility(View.GONE); + } + + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return manager.getCurrentWindowMetrics().getBounds().width(); + }else{ + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + } + + public interface BaCheckDialogListener { + void confirm(); + void cancel(); + } +} + diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaseDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaseDialog.java new file mode 100644 index 0000000..fc564c9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/BaseDialog.java @@ -0,0 +1,57 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import android.os.Build; +import android.os.Bundle; +import android.view.Display; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.view.WindowMetrics; + +import androidx.annotation.NonNull; + +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.databinding.DialogBaseBinding; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-06 14:11 + * 描述: + */ +class BaseDialog extends Dialog { + protected View mView; + protected DialogBaseBinding mBinding; + protected Context context; + + public BaseDialog(@NonNull Context context) { + super(context); + this.context=context; + mBinding = DialogBaseBinding.inflate(getLayoutInflater()); + mView = mBinding.getRoot(); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(mView); + Window window = this.getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + Display d = window.getWindowManager().getDefaultDisplay(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setAttributes(lp); + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return manager.getCurrentWindowMetrics().getBounds().width(); + }else{ + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ClearEditText.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ClearEditText.java new file mode 100755 index 0000000..439100f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ClearEditText.java @@ -0,0 +1,126 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.appcompat.widget.AppCompatEditText; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import com.rehome.scbaxj.R; + + +/** + * Created by Rehome-rjb1 on 2017/5/9. + * 一个可以清空文本框的EditText + */ + +public class ClearEditText extends AppCompatEditText implements View.OnTouchListener, View.OnFocusChangeListener, TextWatcher { + + private Drawable mClearTextIcon; + private OnFocusChangeListener mOnFocusChangeListener; + private OnTouchListener mOnTouchListener; + + public ClearEditText(final Context context) { + super(context); + init(context); + } + + public ClearEditText(final Context context, final AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public ClearEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + private void init(final Context context) { + + final Drawable drawable = ContextCompat.getDrawable(context, R.mipmap.del); + final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); //Wrap the drawable so that it can be tinted pre Lollipop + DrawableCompat.setTint(wrappedDrawable, getCurrentHintTextColor()); + mClearTextIcon = wrappedDrawable; + +// mClearTextIcon= context.getResources().getDrawable(R.drawable.icon_delete_32); + //设置图片在右边 + mClearTextIcon.setBounds(0, 0, mClearTextIcon.getIntrinsicHeight(), mClearTextIcon.getIntrinsicHeight()); + //默认设置为隐藏状态1 + setClearIconVisible(false); + super.setOnTouchListener(this); + super.setOnFocusChangeListener(this); + addTextChangedListener(this); + } + + @Override + public void setOnFocusChangeListener(OnFocusChangeListener l) { + mOnFocusChangeListener = l; + } + + @Override + public void setOnTouchListener(OnTouchListener l) { + mOnTouchListener = l; + } + + @Override + public void onFocusChange(View v, boolean hasFocus) { + //如果获取焦点。文本大于0就显示删除按钮, + if (hasFocus) { + setClearIconVisible(getText().length() > 0); + } else { + setClearIconVisible(false); + } + if (mOnFocusChangeListener != null) { + mOnFocusChangeListener.onFocusChange(v, hasFocus); + } + } + + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + final int x = (int) motionEvent.getX(); + //点击删除按钮,就清空字符串 + if (mClearTextIcon.isVisible() && x > getWidth() - getPaddingRight() - mClearTextIcon.getIntrinsicWidth()) { + if (motionEvent.getAction() == MotionEvent.ACTION_UP) { + setError(null); + setText(""); + } + return true; + } + return mOnTouchListener != null && mOnTouchListener.onTouch(view, motionEvent); + } + + @Override + public final void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { + //有获取到焦点且文本发生变化时候,显示删除按钮 + if (isFocused()) { + setClearIconVisible(text.length() > 0); + } + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void afterTextChanged(Editable s) { + + } + + //设置删除图标是否隐藏 + private void setClearIconVisible(final boolean visible) { + mClearTextIcon.setVisible(visible, false); + final Drawable[] compoundDrawables = getCompoundDrawables(); + setCompoundDrawables( + compoundDrawables[0], + compoundDrawables[1], + visible ? mClearTextIcon : null, + compoundDrawables[3]); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ConfirmDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ConfirmDialog.java new file mode 100644 index 0000000..d2cf5d9 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ConfirmDialog.java @@ -0,0 +1,99 @@ +package com.rehome.scbaxj.weight; + + + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import com.rehome.scbaxj.databinding.DialogBaCheckBinding; +import com.rehome.scbaxj.databinding.DialogConfirmBinding; + +/** + * Create By HuangWenFei + * 创建日期:2023-01-12 11:55 + * 描述: + */ + +public class ConfirmDialog extends Dialog { + + protected Context context; + protected View mView; + protected DialogConfirmBinding binding; + protected ConfirmDialogListener listener; + protected String msg; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(mView); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + setTvMsg(msg); + binding.bottomBtnView.dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + + } + + public ConfirmDialog(@NonNull Context context, String msg, ConfirmDialogListener listener) { + super(context); + this.context=context; + this.listener = listener; + this.msg=msg; + binding = DialogConfirmBinding.inflate(getLayoutInflater()); + mView = binding.getRoot(); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + } + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + binding.tvMsg.setText(msg); + } + } + + + public void setTvTitle(String title) { + if (!TextUtils.isEmpty(title)) { + binding.tvTitle.setText(title); + } + } + + public void hideBottomClick() { + binding.bottomBtnView.bottomClick.setVisibility(View.GONE); + } + + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return manager.getCurrentWindowMetrics().getBounds().width(); + }else{ + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + } + + public interface ConfirmDialogListener { + void confirm(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/DateTimePickDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/DateTimePickDialog.java new file mode 100755 index 0000000..bc44b34 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/DateTimePickDialog.java @@ -0,0 +1,198 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.DatePicker; +import android.widget.TextView; +import android.widget.TimePicker; + +import com.rehome.scbaxj.R; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +/** + * 时间日期选择器 + * Created by Rehome-rjb1 on 2017/4/10. + */ + +public class DateTimePickDialog extends Dialog implements View.OnClickListener, DatePicker.OnDateChangedListener, + TimePicker.OnTimeChangedListener { + + private TextView tv_dialog_title, tv_dialog_msg, tv_dialog_commit, tv_dialog_cancel; + private View lay_dialog_title, lay_dialog_cancel, lay_dialog_commit; + private DateTimePickDialog.CommitClickListener commitClickListener; + private DatePicker datePicker; + private TimePicker timePicker; + private String dateTime, outPutDateTime, outPutDateTime1, outPutDateTime2,outPutDateTime3; + private Calendar calendar = Calendar.getInstance(); + private Calendar nowCalendar = Calendar.getInstance();//现在时间 + private Calendar tempCalendar = Calendar.getInstance();//历史时间 + + + private SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); + private SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + private SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); + private SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private SimpleDateFormat simpleDateFormat5 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm"); + + public DateTimePickDialog(Context context, DateTimePickDialog.CommitClickListener commitClickListener) { + super(context); + this.commitClickListener = commitClickListener; + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_datetime_dialog); + + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 4 / 5; + window.setGravity(Gravity.CENTER); + + lay_dialog_title = findViewById(R.id.lay_dialog_title); + tv_dialog_title = findViewById(R.id.dialog_title); + + lay_dialog_cancel = findViewById(R.id.lay_dialog_cancel); +// lay_dialog_commit = findViewById(R.id.lay_dialog_commit); + + tv_dialog_cancel = findViewById(R.id.dialog_cancel); + tv_dialog_commit = findViewById(R.id.dialog_commit); + + datePicker = findViewById(R.id.datePicker); + timePicker = findViewById(R.id.timePicker); + + if (calendar != null) { + initDateTime(datePicker, timePicker, calendar); + } + + timePicker.setIs24HourView(true); + timePicker.setOnTimeChangedListener(this); + tv_dialog_cancel.setOnClickListener(this); + tv_dialog_commit.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.dialog_cancel: + dismiss(); + break; + case R.id.dialog_commit: + commitClickListener.confirm(outPutDateTime, outPutDateTime1,outPutDateTime2,outPutDateTime3); + dismiss(); + break; + } + } + + public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { + onDateChanged(null, 0, 0, 0); + } + + /** + * 时间改变时候回调 + * + * @param view + * @param year 年 + * @param monthOfYear 月 + * @param dayOfMonth 日 + */ + public void onDateChanged(DatePicker view, int year, int monthOfYear, + int dayOfMonth) { + tempCalendar.set(datePicker.getYear(), datePicker.getMonth(), + datePicker.getDayOfMonth(), timePicker.getCurrentHour(), + timePicker.getCurrentMinute(),0); + + /** + * 如果当前时间大于选择的时间,就重置时间 + */ +// if (nowCalendar.getTimeInMillis() > tempCalendar.getTimeInMillis()) { +// changeDateTime(datePicker, timePicker, nowCalendar); +// } else { + calendar = tempCalendar; + dateTime = simpleDateFormat1.format(calendar.getTime()); + tv_dialog_title.setText(dateTime); + outPutDateTime = simpleDateFormat2.format(calendar.getTime()); + outPutDateTime1 = simpleDateFormat3.format(calendar.getTime()); + outPutDateTime2 = simpleDateFormat4.format(calendar.getTime()); + outPutDateTime3= simpleDateFormat5.format(calendar.getTime()); +// } + } + + /** + * 改变时间 + * + * @param datePicker 日期选择控件 + * @param timePicker 时间选择控件 + * @param calendar 日历类 + */ + private void changeDateTime(DatePicker datePicker, TimePicker timePicker, Calendar calendar) { + datePicker.init(calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH), this); + //设置不显示年 + if (datePicker != null) { + ((ViewGroup) ((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(0).setVisibility(View.GONE); + } + tv_dialog_title.setText(simpleDateFormat1.format(calendar.getTime())); + + //设置显示时分 + timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); + timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); + } + + /** + * 初始化时间 + * + * @param datePicker 日期选择控件 + * @param timePicker 时间选择控件 + * @param calendar 日历类 + */ + private void initDateTime(DatePicker datePicker, TimePicker timePicker, Calendar calendar) { +// calendar.add(Calendar.DATE, 1); + datePicker.init(calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH), this); +// 设置不显示年 + if (datePicker != null) { + ((ViewGroup) ((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(0).setVisibility(View.GONE); + } + + calendar.set(datePicker.getYear(), datePicker.getMonth(), + datePicker.getDayOfMonth(), timePicker.getCurrentHour(), + timePicker.getCurrentMinute(),0); + + + tv_dialog_title.setText(simpleDateFormat1.format(calendar.getTime())); + //设置显示时分 + timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); + timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); + tempCalendar = calendar; + outPutDateTime = simpleDateFormat2.format(calendar.getTime()); + outPutDateTime1 = simpleDateFormat3.format(calendar.getTime()); + outPutDateTime2 = simpleDateFormat4.format(calendar.getTime()); + outPutDateTime3 = simpleDateFormat5.format(calendar.getTime()); + } + + public interface CommitClickListener { + /** + * @param outPutDate 精确到分 + * @param outPutDate1 精确到天 + * @param outPutDate2 精确到秒 + */ + void confirm(String outPutDate, String outPutDate1, String outPutDate2,String outPutDateTime3); + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/EditDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/EditDialog.java new file mode 100644 index 0000000..ec0545f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/EditDialog.java @@ -0,0 +1,171 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import com.rehome.scbaxj.R; + + +/** + * Created by Administrator on 2018/1/31. + */ + +public class EditDialog extends Dialog { + private Button yes, no;//确定按钮 + private TextView titleTv;//消息标题文本 + private EditText et_phone;//输入电话 + private String titleStr;//从外界设置的title文本 + private String messageStr;//从外界设置的消息文本 + //确定文本和取消文本的显示内容 + private String yesStr, noStr; + + private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器 + private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器 + + /** + * 设置取消按钮的显示内容和监听 + * + * @param str + * @param onNoOnclickListener + */ + public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) { + if (str != null) { + noStr = str; + } + this.noOnclickListener = onNoOnclickListener; + } + + /** + * 设置确定按钮的显示内容和监听 + * + * @param str + * @param onYesOnclickListener + */ + public void setYesOnclickListener(String str, onYesOnclickListener onYesOnclickListener) { + if (str != null) { + yesStr = str; + } + this.yesOnclickListener = onYesOnclickListener; + } + + public EditDialog(Context context) { + super(context, R.style.Dialog_Msg); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_edit); + //按空白处不能取消动画 + setCanceledOnTouchOutside(false); + + //初始化界面控件 + initView(); + //初始化界面数据 + initData(); + //初始化界面控件的事件 + initEvent(); + + } + + /** + * 初始化界面的确定和取消监听器 + */ + private void initEvent() { + //设置确定按钮被点击后,向外界提供监听 + yes.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //dismiss(); + if (yesOnclickListener != null) { + yesOnclickListener.onYesClick(et_phone.getText().toString()); + } + } + }); + + no.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //dismiss(); + if (noOnclickListener != null) { + noOnclickListener.onNoClick(); + } + } + }); + } + + /** + * 初始化界面控件的显示数据 + */ + private void initData() { + //如果用户自定了title和message + if (titleStr != null) { + titleTv.setText(titleStr); + } + if (messageStr != null) { + et_phone.setText(messageStr); + } + //如果设置按钮的文字 + if (yesStr != null) { + yes.setText(yesStr); + } + } + + /** + * 初始化界面控件 + */ + private void initView() { + yes = (Button) findViewById(R.id.yes); + no = (Button) findViewById(R.id.no); + titleTv = (TextView) findViewById(R.id.title); + et_phone = (EditText) findViewById(R.id.et_phone); + } + + /** + * 从外界Activity为Dialog设置标题 + * + * @param title + */ + public void setTitle(String title) { + titleStr = title; + } + + /** + * 从外界Activity为Dialog设置dialog的message + * + * @param message + */ + public void setMessage(String message) { + messageStr = message; + } + + /** + * 设置确定按钮和取消被点击的接口 + */ + public interface onYesOnclickListener { + public void onYesClick(String phone); + } + + public interface onNoOnclickListener { + public void onNoClick(); + } + + @Override + public void show() { + super.show(); + /** + * 设置宽度全屏,要设置在show的后面 + */ + WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); + layoutParams.width= ViewGroup.LayoutParams.MATCH_PARENT; + layoutParams.height= ViewGroup.LayoutParams.MATCH_PARENT; + getWindow().getDecorView().setPadding(0, 0, 0, 0); + getWindow().setAttributes(layoutParams); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/InputLayout.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/InputLayout.java new file mode 100755 index 0000000..9d95ff2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/InputLayout.java @@ -0,0 +1,242 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.annotation.Nullable; +import android.text.Html; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.View; +import android.widget.ImageButton; +import android.widget.TextView; + +import com.rehome.scbaxj.R; +import com.zhy.autolayout.AutoLinearLayout; +import com.zhy.autolayout.utils.AutoUtils; + +/** + * Created by Rehome-rjb1 on 2017/5/9. + *

+ * 输入框 + * + * + * + * + * + * + * + * + * + */ + +public class InputLayout extends AutoLinearLayout { + + TextView tvTitle; + + ClearEditText etContent; + + TextView tvContent; + + NumAddSubView numAddSubView; + + ImageButton ibtnSelect; + + private View view; + + public InputLayout(Context context) { + super(context, null); + initView(); + } + + public InputLayout(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initView(); + if (attrs != null) { + TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.InputLayout); + + String title = type.getString(R.styleable.InputLayout_tv_title); + Boolean isShowSelect = type.getBoolean(R.styleable.InputLayout_isShowSelect, false); + Boolean isShowTextView = type.getBoolean(R.styleable.InputLayout_isShowTextView, false); + Boolean isShowNumSubView = type.getBoolean(R.styleable.InputLayout_isShowNumSubView, false); + String hintText = type.getString(R.styleable.InputLayout_hintText); + Boolean must = type.getBoolean(R.styleable.InputLayout_must, false); + + int minValue = type.getInt(R.styleable.InputLayout_minValue, 1); + numAddSubView.setMinNum(minValue); + + setHintText(hintText); + setTvTitle(title, must); + isShowIbtnSelect(isShowSelect); + isShowTextView(isShowTextView); + isShowNumSubView(isShowNumSubView); + type.recycle(); + } + } + + + public InputLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(); + } + + private void initView() { + + if (view == null) { + view = View.inflate(getContext(), R.layout.layout_input, this); + AutoUtils.auto(view); + findView(); + } + + etContent.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + + if (event != null) { + return (event.getKeyCode() == KeyEvent.KEYCODE_ENTER); + } else { + return false; + } + } + }); + + } + + private void findView(){ + tvTitle = view.findViewById(R.id.tv_title); + etContent = view.findViewById(R.id.et_content); + tvContent = view.findViewById(R.id.tv_content); + numAddSubView = view.findViewById(R.id.numAddSubView); + ibtnSelect = view.findViewById(R.id.ibtn_select); + } + + public void setTvTitle(String title, boolean must) { + + if (must) { + String mustTitle = title + "*"; + tvTitle.setText(Html.fromHtml(mustTitle + ":")); + } else { + tvTitle.setText(title + ":"); + } + } + + public void isShowIbtnSelect(boolean isShow) { + ibtnSelect.setVisibility(isShow ? VISIBLE : GONE); + } + + public void isShowTextView(boolean isShow) { + + if (isShow) { + tvContent.setVisibility(VISIBLE); + etContent.setVisibility(GONE); + } + } + + public void isShowNumSubView(boolean isShow) { + numAddSubView.setVisibility(isShow ? VISIBLE : GONE); + } + + /** + * 设置选择控件的点击事件 + * + * @param listener + */ + public void setIbtnSelectOnClickListener(OnClickListener listener) { + ibtnSelect.setOnClickListener(listener); + } + + /** + * 设置文本框点击事件 + * + * @param listener + */ + public void setTvContentOnClickListener(OnClickListener listener) { + tvContent.setOnClickListener(listener); + } + + + /** + * 设置文本内容 + * + * @param content + */ + public void setContent(String content) { + + if (tvContent.getVisibility() == VISIBLE) { + tvContent.setText(content); + } else { + etContent.setText(content); + } + } + + public void setHintText(String hintText) { + tvContent.setHint(hintText); + } + + /** + * 获取文本内容 + * + * @return + */ + public String getContent() { + String content; + if (tvContent.getVisibility() == VISIBLE) { + content = tvContent.getText().toString(); + } else { + content = etContent.getText().toString(); + } + return content; + } + + /** + * 设置为+号的按钮 + */ + public void setIbtnSelectIcon() { + ibtnSelect.setImageResource(R.mipmap.add_gray); + } + + /** + * 获取加减控件的值 + * + * @return + */ + public String getNum() { + return numAddSubView.getNum(); + } + + public void setNum(String num) { + numAddSubView.setNum(num); + } + + /** + * 设置不可编辑 + * + * @param enabled + */ + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + + etContent.setVisibility(VISIBLE); + tvContent.setVisibility(GONE); + + etContent.setEnabled(enabled); + tvContent.setEnabled(enabled); + ibtnSelect.setEnabled(enabled); + numAddSubView.setEnabled(enabled); + } + + /** + * 设置为数字类型的InputType + */ + public void setEtNumInputType() { + etContent.setInputType(InputType.TYPE_CLASS_NUMBER); + } + + /** + * 设置为数字类型的InputType 可加小数点 + */ + public void setNo() { + etContent.setInputType(InputType.TYPE_CLASS_PHONE); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ListDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ListDialog.java new file mode 100755 index 0000000..a49e7b7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/ListDialog.java @@ -0,0 +1,146 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.util.Log; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.AbsListView; +import android.widget.ArrayAdapter; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.adapter.CommonAdapter; +import java.util.List; + +/** + * Created by Rehome-rjb1 on 2017/5/18. + * 列表模式的dialog + */ + +public class ListDialog extends Dialog { + + + ListView lv; + + TextView tvTitle; + + LinearLayout llTitle; + + TextView dialogCancel; + + TextView dialogCommit; + + LinearLayout layDialogCancel; + + private CommonAdapter adapter; + private List datas; + + private ListDialogListener listener; + + + public ListDialog(@NonNull Context context, List datas, ListDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_take_out_time); + findView(); + this.listener = listener; + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + setCancelable(false); + + this.datas = datas; + if (datas != null) { + setAdapter(); + } + } + + private void findView(){ + tvTitle = findViewById(R.id.tv_title); + lv = findViewById(R.id.lv); + llTitle = findViewById(R.id.ll_title); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + int position = lv.getCheckedItemPosition(); + Log.i("app",String.valueOf(position)); + listener.selectText(datas.get(position), position); + } + } + }); + } + + public void setTvTitle(String title) { + tvTitle.setText(title); + } + + public void hideTitle() { + llTitle.setVisibility(View.GONE); + } + + private void setAdapter() { + + if (adapter == null) { +// adapter = new CommonAdapter(getContext(), R.layout.item_content, datas) { +// @Override +// protected void convert(ViewHolder viewHolder, String item, int position) { +// viewHolder.setText(R.id.tv_text, item); +// } +// }; + + ArrayAdapter adapter = new ArrayAdapter<>(getContext(),android.R.layout.simple_list_item_single_choice,datas); + + lv.setAdapter(adapter); + // 必选设置为单选 + lv.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); + if(datas!=null&&datas.size()>0){ + lv.setItemChecked(0,true); + } + +// lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView parent, View view, int position, long id) { +// if (listener != null) { +// listener.selectText(datas.get(position), position); +// //dismiss(); +// } +// } +// }); + + } else { + adapter.notifyDataSetChanged(); + } + + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface ListDialogListener { + void selectText(String text, int position); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/LoadDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/LoadDialog.java new file mode 100755 index 0000000..0891e67 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/LoadDialog.java @@ -0,0 +1,128 @@ +package com.rehome.scbaxj.weight; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.text.TextUtils; +import android.view.Display; +import android.view.KeyEvent; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; +import android.widget.Toast; + +import com.rehome.scbaxj.R; + + +/** + * Created by Rehome-rjb1 on 2017/5/17. + * 加载框1 + */ + +public class LoadDialog extends Dialog { + + + private static LoadDialog loadDialog; + + private boolean cancelable; + + private String tipMsg; + + + public LoadDialog(final Context ctx, boolean cancelable, String tipMsg) { + super(ctx); + + this.cancelable = cancelable; + this.tipMsg = tipMsg; + + this.getContext().setTheme(android.R.style.Theme_DeviceDefault_Dialog_NoActionBar_MinWidth); + setContentView(R.layout.layout_dialog); + // 必须放在加载布局后 + setparams(); + TextView tv = findViewById(R.id.tvLoad); + if (!TextUtils.isEmpty(tipMsg)) { + tv.setVisibility(View.VISIBLE); + tv.setText(tipMsg); + } + } + + private void setparams() { + this.setCancelable(cancelable); + this.setCanceledOnTouchOutside(false); + WindowManager windowManager = getWindow().getWindowManager(); + Display display = windowManager.getDefaultDisplay(); + WindowManager.LayoutParams lp = this.getWindow().getAttributes(); + // Dialog宽度 + lp.width = (int) (display.getWidth() * 0.7); + Window window = getWindow(); + window.setAttributes(lp); + window.getDecorView().getBackground().setAlpha(0); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (!cancelable) { + Toast.makeText(getContext(), tipMsg, Toast.LENGTH_SHORT).show(); + return true; + } + } + return super.onKeyDown(keyCode, event); + } + + + public static void show(Context context) { + show(context, null, true); + } + + + public static void show(Context context, String message) { + show(context, message, true); + } + + + public static void show(Context context, int resourceId) { + show(context, context.getResources().getString(resourceId), true); + } + + + private static void show(Context context, String message, boolean cancelable) { + if (context instanceof Activity) { + if (((Activity) context).isFinishing()) { + return; + } + } + if (loadDialog != null && loadDialog.isShowing()) { + return; + } + loadDialog = new LoadDialog(context, cancelable, message); + loadDialog.show(); + } + + public static void dismiss(Context context) { + try { + if (context instanceof Activity) { + if (((Activity) context).isFinishing()) { + loadDialog = null; + return; + } + } + + if (loadDialog != null && loadDialog.isShowing()) { + Context loadContext = loadDialog.getContext(); + if (loadContext != null && loadContext instanceof Activity) { + if (((Activity) loadContext).isFinishing()) { + loadDialog = null; + return; + } + } + loadDialog.dismiss(); + loadDialog = null; + } + } catch (Exception e) { + e.printStackTrace(); + loadDialog = null; + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialog.java new file mode 100644 index 0000000..99d37b8 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialog.java @@ -0,0 +1,104 @@ +package com.rehome.scbaxj.weight; + + + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + +/** + * Created by Rehome-rjb1 on 2017/5/31. + * 是否审核的对话框 + */ + +public class MeasureDialog extends Dialog { + + TextView tvTitle; + + TextView tvMsg; + + TextView dialogCancel; + + TextView dialogCommit; + + LinearLayout layDialogCancel; + + private AuditDialogListener listener; + + public MeasureDialog(@NonNull Context context, String msg, AuditDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_measure_dialog); + findView(); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + this.listener = listener; + setCancelable(false); + setTvMsg(msg); + } + + private void findView(){ + tvTitle = findViewById(R.id.tv_title); + tvMsg = findViewById(R.id.tv_msg); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + } + + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + tvMsg.setText(msg); + } + } + + public void setTvTitle(String title) { + if (!TextUtils.isEmpty(title)) { + tvTitle.setText(title); + } + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface AuditDialogListener { + void confirm(); + + void cancel(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialogThree.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialogThree.java new file mode 100644 index 0000000..df940dd --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MeasureDialogThree.java @@ -0,0 +1,116 @@ +package com.rehome.scbaxj.weight; + + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + +/** + * Created by Rehome-rjb1 on 2017/5/31. + * 是否审核的对话框 + */ + +public class MeasureDialogThree extends Dialog { + + + TextView tvTitle; + + TextView tvMsg; + + TextView dialogCancel; + + TextView dialogCommit; + + TextView dialogCommitInorter; + + LinearLayout layDialogCancel; + + private AuditDialogListener listener; + + public MeasureDialogThree(@NonNull Context context, String msg, AuditDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_measure_dialog_three); + findView(); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 3 / 4; + window.setGravity(Gravity.CENTER); + this.listener = listener; + setCancelable(false); + setTvMsg(msg); + } + + private void findView(){ + tvTitle = findViewById(R.id.tv_title); + tvMsg = findViewById(R.id.tv_msg); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + dialogCommitInorter = findViewById(R.id.dialog_commit_inorter); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + dialogCommitInorter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirmInornate(); + } + } + }); + } + + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + tvMsg.setText(msg); + } + } + + public void setTvTitle(String title) { + if (!TextUtils.isEmpty(title)) { + tvTitle.setText(title); + } + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface AuditDialogListener { + void confirm(); + void confirmInornate(); + void cancel(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MjEditDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MjEditDialog.java new file mode 100644 index 0000000..167ec04 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/MjEditDialog.java @@ -0,0 +1,158 @@ +package com.rehome.scbaxj.weight; + +/** + * Create By HuangWenFei + * 创建日期:2023-03-03 17:09 + * 描述:免检提交对话框 + */ + + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.R; + + +/** + * Created by Administrator on 2018/1/31. + */ + +public class MjEditDialog extends Dialog { + private Button yes, no;//确定按钮 + private TextView titleTv;//消息标题文本 + private EditText et_phone;//输入电话 + private String titleStr;//从外界设置的title文本 + private String messageStr;//从外界设置的消息文本 + //确定文本和取消文本的显示内容 + private String yesStr, noStr; + + private DialogListener listener;//取消,确定按钮被点击了的监听器 + + public MjEditDialog(Context context, DialogListener listener) { + super(context, R.style.Dialog_Msg); + this.listener = listener; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_mj_edit); + //按空白处不能取消动画 + setCanceledOnTouchOutside(false); + + //初始化界面控件 + initView(); + //初始化界面数据 + initData(); + //初始化界面控件的事件 + initEvent(); + + } + + /** + * 初始化界面的确定和取消监听器 + */ + private void initEvent() { + //设置确定按钮被点击后,向外界提供监听 + yes.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //dismiss(); + if (listener != null) { + if (TextUtils.isEmpty(et_phone.getText().toString().trim())) { + et_phone.setError("免检原因必填"); + listener.onYesClick(""); + } else { + dismiss(); + listener.onYesClick(et_phone.getText().toString().trim()); + } + } + } + }); + + no.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.onNoClick(); + } + } + }); + } + + /** + * 初始化界面控件的显示数据 + */ + private void initData() { + //如果用户自定了title和message + if (titleStr != null) { + titleTv.setText(titleStr); + } + if (messageStr != null) { + et_phone.setText(messageStr); + } + //如果设置按钮的文字 + if (yesStr != null) { + yes.setText(yesStr); + } + } + + /** + * 初始化界面控件 + */ + private void initView() { + yes = (Button) findViewById(R.id.yes); + no = (Button) findViewById(R.id.no); + titleTv = (TextView) findViewById(R.id.title); + et_phone = (EditText) findViewById(R.id.et_phone); + } + + /** + * 从外界Activity为Dialog设置标题 + * + * @param title + */ + public void setTitle(String title) { + titleStr = title; + } + + /** + * 从外界Activity为Dialog设置dialog的message + * + * @param message + */ + public void setMessage(String message) { + messageStr = message; + } + + /** + * 设置确定按钮和取消被点击的接口 + */ + public interface DialogListener { + public void onYesClick(String noCheckReason); + + public void onNoClick(); + } + + @Override + public void show() { + super.show(); + /** + * 设置宽度全屏,要设置在show的后面 + */ + WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); + layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; + layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT; + getWindow().getDecorView().setPadding(0, 0, 0, 0); + getWindow().setAttributes(layoutParams); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NoscrollViewPager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NoscrollViewPager.java new file mode 100755 index 0000000..f282903 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NoscrollViewPager.java @@ -0,0 +1,41 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import androidx.viewpager.widget.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + * 禁止滑动的ViewPager + */ + +public class NoscrollViewPager extends ViewPager { + + public NoscrollViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NoscrollViewPager(Context context) { + super(context); + } + + /** + * 什么都不用做 + * @param arg0 + * @return + */ + + @Override + public boolean onTouchEvent(MotionEvent arg0) { + return false; + } + + /** + * false表示不拦截事件 + */ + @Override + public boolean onInterceptTouchEvent(MotionEvent arg0) { + return false; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NumAddSubView.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NumAddSubView.java new file mode 100755 index 0000000..813c232 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/NumAddSubView.java @@ -0,0 +1,120 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.annotation.Nullable; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + + +/** + * 可以加减的控件 + */ +public class NumAddSubView extends LinearLayout { + + ImageButton ibtnSub; + + TextView tvNum; + + ImageButton ibtnAdd; + + private View view; + + private int maxNum = 100; + private int minNum = 1; + + public NumAddSubView(Context context) { + super(context, null); + initView(); + } + + public NumAddSubView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initView(); + + if (attrs != null) { + TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.NumAddSubView); + maxNum = type.getInt(R.styleable.NumAddSubView_maxNum, 100); + minNum = type.getInt(R.styleable.NumAddSubView_minNum, 1); + } + } + + public NumAddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(); + } + + private void initView() { + + if (view == null) { + view = View.inflate(getContext(), R.layout.num_add_sub_layout, this); + findView(); + } + + tvNum.setText("1"); + } + + private void findView(){ + ibtnSub = view.findViewById(R.id.ibtn_sub); + tvNum = view.findViewById(R.id.tv_num); + ibtnAdd = view.findViewById(R.id.ibtn_add); + ibtnAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int nowMax = getNum(tvNum) + 1; + if (nowMax <= maxNum) { + tvNum.setText(nowMax + ""); + if (listener != null) { + listener.numChange(tvNum.getText().toString()); + } + } + } + }); + ibtnSub.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int nowMin = getNum(tvNum) - 1; + if (nowMin >= minNum) { + tvNum.setText(nowMin + ""); + if (listener != null) { + listener.numChange(tvNum.getText().toString()); + } + } + } + }); + } + + public void setMaxNum(int maxNum) { + this.maxNum = maxNum; + } + + public void setMinNum(int minNum) { + this.minNum = minNum; + } + + public void setNum(String num) { + tvNum.setText(num); + } + + public int getNum(TextView num) { + return Integer.parseInt(num.getText().toString()); + } + + public String getNum() { + return tvNum.getText().toString(); + } + + private NumChangeListener listener; + + public void setListener(NumChangeListener listener) { + this.listener = listener; + } + + public interface NumChangeListener { + void numChange(String num); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/SettingIpDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/SettingIpDialog.java new file mode 100755 index 0000000..fe3ac7a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/SettingIpDialog.java @@ -0,0 +1,92 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import androidx.appcompat.app.AlertDialog; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.rehome.scbaxj.R; + + +/** + * Created by Administrator on 2016/10/22. + */ + +public class SettingIpDialog { + + private Context mContext; + private AlertDialog dialog; + private TextView tv_title; + private Button btn_save; + private Button btn_cancel; + private Window mWindow; + private EditText wifi_ip; + private EditText mobile_ip; + private InputMethodManager input; + + public SettingIpDialog(Context context) { + mContext = context; + dialog = new AlertDialog.Builder(context).create(); + dialog.setCancelable(true); + dialog.show(); + mWindow = dialog.getWindow(); + mWindow.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + mWindow.setContentView(R.layout.setting_ip); + wifi_ip = mWindow.findViewById(R.id.et_wifi_ip); + mobile_ip = mWindow.findViewById(R.id.et_4g_ip); + tv_title = mWindow.findViewById(R.id.tv_title); + btn_cancel = mWindow.findViewById(R.id.btn_qx); + btn_save = mWindow.findViewById(R.id.btn_qd); + } + + public void setSaveOnClick(View.OnClickListener listener) { + btn_save.setOnClickListener(listener); + } + + + public void setCancelOnClick(View.OnClickListener listener) { + btn_cancel.setOnClickListener(listener); + } + + /** + * 设置Title + * + * @param title + */ + public void setTitle(String title) { + tv_title.setText(title); + } + + public void setWifi_ip(String wifi_ip) { + this.wifi_ip.setText(wifi_ip); + } + + public void setMobile_ip(String mobile_ip) { + this.mobile_ip.setText(mobile_ip); + } + + public String getWifiIp() { + return wifi_ip.getText().toString().trim(); + } + + public String getMobileIp() { + return mobile_ip.getText().toString().trim(); + } + + public EditText getWifi_ip() { + return wifi_ip; + } + + public EditText getMobile_ip() { + return mobile_ip; + } + + public void close() { + dialog.dismiss(); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/TopicRecycleViewDivider.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/TopicRecycleViewDivider.java new file mode 100644 index 0000000..0c4f708 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/TopicRecycleViewDivider.java @@ -0,0 +1,291 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +/** + * author: duke + * version: 2.0 + * dateTime: 2020-03-11 19:30 + * description: + */ +public class TopicRecycleViewDivider extends RecyclerView.ItemDecoration { + + // 绘制分割线的画笔 + private Paint paint; + // 如果是画笔绘制,记录分割线宽度或高度 px + private int paintWidthPX = 5; + + // 如果需要绘制给定的 drawable + private Drawable drawableDivider; + + // 用画笔绘制颜色,还是绘制特定的drawable + private DrawType drawType; + + // 注意:列表的方向,非分割线的方向 + // LinearLayoutManager.HORIZONTAL 或 LinearLayoutManager.VERTICAL + private int orientation = LinearLayoutManager.VERTICAL; + + // 是否需要忽略第一个 item 后面的分割线,有些需求需要 + private boolean isSkipFirstItemBelowLine = false; + // 是否需要忽略最后一个 item 后面的分割线,大多数需求都需要 + private boolean isSkipLaseItemBelowLine = true; + + /** + * 忽略 第一个 item 下方或右侧的分割线。个别需要需要 + * + * @param skipFirstItemBelowLine 是否忽略 + * @return this + */ + public TopicRecycleViewDivider skipFirstItemBelowLine(boolean skipFirstItemBelowLine) { + isSkipFirstItemBelowLine = skipFirstItemBelowLine; + return this; + } + + /** + * 忽略 最后一个 item 下方或右侧的分割线。一般都需要 + * + * @param skipLaseItemBelowLine 是否忽略 + * @return this + */ + public TopicRecycleViewDivider skipLaseItemBelowLine(boolean skipLaseItemBelowLine) { + isSkipLaseItemBelowLine = skipLaseItemBelowLine; + return this; + } + + /** + * 设置列表方向,非分割线的 + * + * @param listOrientation 列表方向,
+ * LinearLayoutManager.HORIZONTAL or LinearLayoutManager.VERTICAL
+ * @return this + */ + public TopicRecycleViewDivider setListOrientation(int listOrientation) { + if (orientation != LinearLayoutManager.VERTICAL && orientation != LinearLayoutManager.HORIZONTAL) { + throw new IllegalArgumentException("Parameter of orientation is error. Please see LinearLayoutManager ..."); + } + orientation = listOrientation; + return this; + } + + /** + * 构造函数 + * + * @param context context + * @param drawableId 分割线图片 + */ + public TopicRecycleViewDivider(Context context, int drawableId) { + drawType = DrawType.USE_DRAWABLE; + drawableDivider = ContextCompat.getDrawable(context, drawableId); + } + + /** + * 自定义分割线 + * + * @param dividerHeightPX 分割线高度 px + * @param dividerColorInt 分割线颜色 + */ + public TopicRecycleViewDivider(int dividerHeightPX, int dividerColorInt) { + drawType = DrawType.USE_PAINT; + paintWidthPX = dividerHeightPX; + // 绘制纯颜色 (之一:可以绘制纯颜色) + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(dividerColorInt); + paint.setStyle(Paint.Style.FILL); + } + + + /** + * 看图说话:get Item Offsets,获得item的偏移量。此方法用来控制item的偏移 + * + * @param outRect outRect 表示在 item 的 上、下、左、右 四周撑开的距离,默认值为 0 + * @param view 当前的 holder view + * @param parent recyclerView + * @param state state + */ + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + + int index = parent.getChildAdapterPosition(view); + // 忽略第一个 item 的分割线 + if (isSkipFirstItemBelowLine && index == 0) { + return; + } + int totalSize = state.getItemCount(); + // 忽略最后一个 item 的分割线 + if (isSkipLaseItemBelowLine && index == totalSize - 1) { + return; + } + + /** + * 列表的方向为横向,画分割线就是纵向的,需要确定的是 child 的右边偏移值 + * 留出空间画分割线 + */ + if (orientation == LinearLayoutManager.HORIZONTAL) { + int x = 0; + switch (drawType) { + case USE_PAINT: + x = paintWidthPX; + break; + case USE_DRAWABLE: + x = drawableDivider.getIntrinsicWidth(); + break; + } + outRect.set(0, 0, x, 0); + } + + /** + * 列表的方向为纵向,画分割线就是横向的,需要确定的是 child 的下边偏移值 + * 留出空间画分割线 + */ + else if (this.orientation == LinearLayoutManager.VERTICAL) { + int x = 0; + switch (drawType) { + case USE_PAINT: + x = paintWidthPX; + break; + case USE_DRAWABLE: + x = drawableDivider.getIntrinsicHeight(); + break; + } + outRect.set(0, 0, 0, x); + } + } + + /** + * 绘制分割线 + * + * @param c canvas + * @param parent paint + * @param state state + */ + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDraw(c, parent, state); + if (orientation == LinearLayoutManager.VERTICAL) { + // 列表是纵向的,需要绘制横向的分割线 + drawHorizontalLine(c, parent); + } else { + // 列表是横向的,需要绘制纵向的分割线 + drawVerticalLine(c, parent); + } + } + + /** + * 绘制横向 item 分割线。左、上、右都是可计算的,下需要获取给定的高度值 + * + * @param canvas canvas + * @param parent paint + */ + private void drawHorizontalLine(Canvas canvas, RecyclerView parent) { + // 左边:到父容器的 left 内间距位置值 + final int left = parent.getPaddingLeft(); + // 右边:到父容器的 right 内间距位置值 + final int right = parent.getMeasuredWidth() - parent.getPaddingRight(); + final int childSize = parent.getChildCount(); + // 循环绘制每条分割线 + for (int i = 0; i < childSize; i++) { + if (isSkipFirstItemBelowLine && i == 0) { + continue; + } + if (isSkipLaseItemBelowLine && i == childSize - 1) { + continue; + } + final View child = parent.getChildAt(i); + if (!(child.getLayoutParams() instanceof RecyclerView.LayoutParams)) { + continue; + } + RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); + // 上边:具体的某条分割线的上边以 child 的 (bottom + bottomMargin) 位置值 + final int top = child.getBottom() + layoutParams.bottomMargin; + // 下边:根据类型判断 + int bottom; + switch (drawType) { + case USE_PAINT: + // 构造方法声明使用画笔绘制 + // 下边:top 加上指定的高度 + bottom = top + paintWidthPX; + canvas.drawRect(left, top, right, bottom, paint); + break; + case USE_DRAWABLE: + // 构造方法声明使用 drawable + // 下边:top 加上指定的高度 + bottom = top + drawableDivider.getIntrinsicHeight(); + drawableDivider.setBounds(left, top, right, bottom); + drawableDivider.draw(canvas); + break; + } + } + } + + /** + * 绘制纵向 item 分割线。上、下、左都是可计算的,右侧需要获取给定的宽度值 + * + * @param canvas canvas + * @param parent parent + */ + private void drawVerticalLine(Canvas canvas, RecyclerView parent) { + // 上边:到父容器的 top 内间距位置值 + final int top = parent.getPaddingTop(); + // 下边:到父容器的 bottom 内间距位置值 + final int bottom = parent.getMeasuredHeight() - parent.getPaddingBottom(); + final int childSize = parent.getChildCount(); + // 循环绘制每条分割线 + for (int i = 0; i < childSize; i++) { + if (isSkipFirstItemBelowLine && i == 0) { + continue; + } + if (isSkipLaseItemBelowLine && i == childSize - 1) { + continue; + } + final View child = parent.getChildAt(i); + if (!(child.getLayoutParams() instanceof RecyclerView.LayoutParams)) { + continue; + } + RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); + // 左边:具体的某条分割线的左边以 child 的 (right + rightMargin) 位置值 + final int left = child.getRight() + layoutParams.rightMargin; + // 右边:根据类型判断 + int right; + switch (drawType) { + case USE_PAINT: + // 构造方法声明使用画笔绘制 + // 右边:left 加上指定的宽度 + right = left + paintWidthPX; + canvas.drawRect(left, top, right, bottom, paint); + break; + case USE_DRAWABLE: + // 构造方法声明使用 drawable + // 右边:left 加上指定的宽度 + right = left + drawableDivider.getIntrinsicWidth(); + drawableDivider.setBounds(left, top, right, bottom); + drawableDivider.draw(canvas); + break; + } + } + } + + public enum DrawType { + USE_PAINT(1), // 用画笔绘制纯颜色 + USE_DRAWABLE(2); // 绘制特定的 drawable + + private final int type; + + DrawType(int type) { + this.type = type; + } + + public int getType() { + return type; + } + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/UpdateAuditDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/UpdateAuditDialog.java new file mode 100755 index 0000000..4a28162 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/UpdateAuditDialog.java @@ -0,0 +1,94 @@ +package com.rehome.scbaxj.weight; + +import android.app.Dialog; +import android.content.Context; +import androidx.annotation.NonNull; +import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.scbaxj.R; + +/** + * Created by Rehome-rjb1 on 2017/5/31. + * 是否审核的对话框 + */ + +public class UpdateAuditDialog extends Dialog { + + + TextView tvMsg; + + TextView dialogCancel; + + TextView dialogCommit; + + LinearLayout layDialogCancel; + + private AuditDialogListener listener; + + public UpdateAuditDialog(@NonNull Context context, String msg, AuditDialogListener listener) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setBackgroundDrawableResource(android.R.color.transparent); + setContentView(R.layout.layout_update_audit_dialog); + findView(); + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = (getScreenWidth(context)) * 2 / 3; + window.setGravity(Gravity.CENTER); + this.listener = listener; + setCancelable(false); + setTvMsg(msg); + } + + private void findView(){ + tvMsg = findViewById(R.id.tv_msg); + dialogCancel = findViewById(R.id.dialog_cancel); + dialogCommit = findViewById(R.id.dialog_commit); + layDialogCancel = findViewById(R.id.lay_dialog_cancel); + dialogCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.cancel(); + } + } + }); + dialogCommit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + if (listener != null) { + listener.confirm(); + } + } + }); + } + + + public void setTvMsg(String msg) { + if (!TextUtils.isEmpty(msg)) { + tvMsg.setText(msg); + } + } + + //获取屏幕宽度 + public static int getScreenWidth(Context context) { + WindowManager manager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + return display.getWidth(); + } + + public interface AuditDialogListener { + void confirm(); + + void cancel(); + } +} \ No newline at end of file diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/WaitDialog.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/WaitDialog.java new file mode 100755 index 0000000..be24ad2 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/WaitDialog.java @@ -0,0 +1,34 @@ +/* + * Copyright 2015 Yan Zhenjie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.rehome.scbaxj.weight; + +import android.app.ProgressDialog; +import android.content.Context; +import android.view.Window; + +/** + * 加载框 + */ +public class WaitDialog extends ProgressDialog { + + public WaitDialog(Context context, String msg) { + super(context); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setCanceledOnTouchOutside(false); + setProgressStyle(STYLE_SPINNER); + setMessage(msg); + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/toastviewbymyself.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/toastviewbymyself.java new file mode 100755 index 0000000..1ceaded --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/weight/toastviewbymyself.java @@ -0,0 +1,45 @@ +package com.rehome.scbaxj.weight; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.rehome.scbaxj.R; + +import static com.rehome.scbaxj.R.layout.toastviewlayout; + +/** + * Created by ruihong on 2017/8/15. + */ + +public class toastviewbymyself { + + private Toast mToast; + + private toastviewbymyself(Context context, CharSequence text, int duration) { + View v = LayoutInflater.from(context).inflate(toastviewlayout, null); + TextView textView = v.findViewById(R.id.textView1); + textView.setText(text); + mToast = new Toast(context); + mToast.setDuration(duration); + mToast.setView(v); + } + + public static toastviewbymyself makeText(Context context, CharSequence text, int duration) { + return new toastviewbymyself(context, text, duration); + } + + public void show() { + if (mToast != null) { + mToast.show(); + } + } + + public void setGravity(int gravity, int xOffset, int yOffset) { + if (mToast != null) { + mToast.setGravity(gravity, xOffset, yOffset); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/AutoFocusCallback.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/AutoFocusCallback.java new file mode 100755 index 0000000..2e9bfe7 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/AutoFocusCallback.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.hardware.Camera; +import android.os.Handler; +import android.os.Message; +import android.util.Log; + +final class AutoFocusCallback implements Camera.AutoFocusCallback { + + private static final String TAG = AutoFocusCallback.class.getSimpleName(); + + private static final long AUTOFOCUS_INTERVAL_MS = 1500L; + + private Handler autoFocusHandler; + private int autoFocusMessage; + + void setHandler(Handler autoFocusHandler, int autoFocusMessage) { + this.autoFocusHandler = autoFocusHandler; + this.autoFocusMessage = autoFocusMessage; + } + + public void onAutoFocus(boolean success, Camera camera) { + if (autoFocusHandler != null) { + Message message = autoFocusHandler.obtainMessage(autoFocusMessage, success); + autoFocusHandler.sendMessageDelayed(message, AUTOFOCUS_INTERVAL_MS); + autoFocusHandler = null; + } else { + Log.d(TAG, "Got auto-focus callback, but no handler for it"); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraConfigurationManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraConfigurationManager.java new file mode 100755 index 0000000..d65bf21 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraConfigurationManager.java @@ -0,0 +1,283 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.content.Context; +import android.graphics.Point; +import android.hardware.Camera; +import android.os.Build; +import android.util.Log; +import android.view.Display; +import android.view.WindowManager; + +import java.lang.reflect.Method; +import java.util.regex.Pattern; + +final class CameraConfigurationManager { + + private static final String TAG = CameraConfigurationManager.class.getSimpleName(); + + private static final int TEN_DESIRED_ZOOM = 27; + private static final int DESIRED_SHARPNESS = 30; + + private static final Pattern COMMA_PATTERN = Pattern.compile(","); + + private final Context context; + private Point screenResolution; + private Point cameraResolution; + private int previewFormat; + private String previewFormatString; + + CameraConfigurationManager(Context context) { + this.context = context; + } + + /** + * Reads, one time, values from the camera that are needed by the app. + */ + void initFromCameraParameters(Camera camera) { + Camera.Parameters parameters = camera.getParameters(); + previewFormat = parameters.getPreviewFormat(); + previewFormatString = parameters.get("preview-format"); + Log.d(TAG, "Default preview format: " + previewFormat + '/' + previewFormatString); + WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + screenResolution = new Point(display.getWidth(), display.getHeight()); + Log.d(TAG, "Screen resolution: " + screenResolution); + cameraResolution = getCameraResolution(parameters, screenResolution); + Log.d(TAG, "Camera resolution: " + screenResolution); + } + + /** + * Sets the camera up to take preview images which are used for both preview and decoding. + * We detect the preview format here so that buildLuminanceSource() can build an appropriate + * LuminanceSource subclass. In the future we may want to force YUV420SP as it's the smallest, + * and the planar Y can be used for barcode scanning without background copy in some cases. + */ + void setDesiredCameraParameters(Camera camera) { + Camera.Parameters parameters = camera.getParameters(); + Log.d(TAG, "Setting preview size: " + cameraResolution); + parameters.setPreviewSize(cameraResolution.x, cameraResolution.y); + setFlash(parameters); + setZoom(parameters); + setDisplayOrientation(camera, 90); + camera.setParameters(parameters); + } + + Point getCameraResolution() { + return cameraResolution; + } + + Point getScreenResolution() { + return screenResolution; + } + + int getPreviewFormat() { + return previewFormat; + } + + String getPreviewFormatString() { + return previewFormatString; + } + + private static Point getCameraResolution(Camera.Parameters parameters, Point screenResolution) { + + String previewSizeValueString = parameters.get("preview-size-values"); + // saw this on Xperia + if (previewSizeValueString == null) { + previewSizeValueString = parameters.get("preview-size-value"); + } + + Point cameraResolution = null; + + if (previewSizeValueString != null) { + Log.d(TAG, "preview-size-values parameter: " + previewSizeValueString); + cameraResolution = findBestPreviewSizeValue(previewSizeValueString, screenResolution); + } + + if (cameraResolution == null) { + // Ensure that the camera resolution is background multiple of 8, as the screen may not be. + cameraResolution = new Point( + (screenResolution.x >> 3) << 3, + (screenResolution.y >> 3) << 3); + } + + return cameraResolution; + } + + private static Point findBestPreviewSizeValue(CharSequence previewSizeValueString, Point screenResolution) { + int bestX = 0; + int bestY = 0; + int diff = Integer.MAX_VALUE; + for (String previewSize : COMMA_PATTERN.split(previewSizeValueString)) { + + previewSize = previewSize.trim(); + int dimPosition = previewSize.indexOf('x'); + if (dimPosition < 0) { + Log.w(TAG, "Bad preview-size: " + previewSize); + continue; + } + + int newX; + int newY; + try { + newX = Integer.parseInt(previewSize.substring(0, dimPosition)); + newY = Integer.parseInt(previewSize.substring(dimPosition + 1)); + } catch (NumberFormatException nfe) { + Log.w(TAG, "Bad preview-size: " + previewSize); + continue; + } + + int newDiff = Math.abs(newX - screenResolution.x) + Math.abs(newY - screenResolution.y); + if (newDiff == 0) { + bestX = newX; + bestY = newY; + break; + } else if (newDiff < diff) { + bestX = newX; + bestY = newY; + diff = newDiff; + } + + } + + if (bestX > 0 && bestY > 0) { + return new Point(bestX, bestY); + } + return null; + } + + private static int findBestMotZoomValue(CharSequence stringValues, int tenDesiredZoom) { + int tenBestValue = 0; + for (String stringValue : COMMA_PATTERN.split(stringValues)) { + stringValue = stringValue.trim(); + double value; + try { + value = Double.parseDouble(stringValue); + } catch (NumberFormatException nfe) { + return tenDesiredZoom; + } + int tenValue = (int) (10.0 * value); + if (Math.abs(tenDesiredZoom - value) < Math.abs(tenDesiredZoom - tenBestValue)) { + tenBestValue = tenValue; + } + } + return tenBestValue; + } + + private void setFlash(Camera.Parameters parameters) { + // FIXME: This is background hack to turn the flash off on the Samsung Galaxy. + // And this is background hack-hack to work around background different value on the Behold II + // Restrict Behold II check to Cupcake, per Samsung's advice + //if (Build.MODEL.contains("Behold II") && + // CameraManager.SDK_INT == Build.VERSION_CODES.CUPCAKE) { + if (Build.MODEL.contains("Behold II") && CameraManager.SDK_INT == 3) { // icon3 = Cupcake + parameters.set("flash-value", 1); + } else { + parameters.set("flash-value", 2); + } + // This is the standard setting to turn the flash off that all devices should honor. + parameters.set("flash-mode", "off"); + } + + private void setZoom(Camera.Parameters parameters) { + + String zoomSupportedString = parameters.get("zoom-supported"); + if (zoomSupportedString != null && !Boolean.parseBoolean(zoomSupportedString)) { + return; + } + + int tenDesiredZoom = TEN_DESIRED_ZOOM; + + String maxZoomString = parameters.get("max-zoom"); + if (maxZoomString != null) { + try { + int tenMaxZoom = (int) (10.0 * Double.parseDouble(maxZoomString)); + if (tenDesiredZoom > tenMaxZoom) { + tenDesiredZoom = tenMaxZoom; + } + } catch (NumberFormatException nfe) { + Log.w(TAG, "Bad max-zoom: " + maxZoomString); + } + } + + String takingPictureZoomMaxString = parameters.get("taking-picture-zoom-max"); + if (takingPictureZoomMaxString != null) { + try { + int tenMaxZoom = Integer.parseInt(takingPictureZoomMaxString); + if (tenDesiredZoom > tenMaxZoom) { + tenDesiredZoom = tenMaxZoom; + } + } catch (NumberFormatException nfe) { + Log.w(TAG, "Bad taking-picture-zoom-max: " + takingPictureZoomMaxString); + } + } + + String motZoomValuesString = parameters.get("mot-zoom-values"); + if (motZoomValuesString != null) { + tenDesiredZoom = findBestMotZoomValue(motZoomValuesString, tenDesiredZoom); + } + + String motZoomStepString = parameters.get("mot-zoom-step"); + if (motZoomStepString != null) { + try { + double motZoomStep = Double.parseDouble(motZoomStepString.trim()); + int tenZoomStep = (int) (10.0 * motZoomStep); + if (tenZoomStep > 1) { + tenDesiredZoom -= tenDesiredZoom % tenZoomStep; + } + } catch (NumberFormatException nfe) { + // continue + } + } + + // Set zoom. This helps encourage the user to pull back. + // Some devices like the Behold have background zoom parameter + if (maxZoomString != null || motZoomValuesString != null) { + parameters.set("zoom", String.valueOf(tenDesiredZoom / 10.0)); + } + + // Most devices, like the Hero, appear to expose this zoom parameter. + // It takes on values like "27" which appears to mean icon2.7x zoom + if (takingPictureZoomMaxString != null) { + parameters.set("taking-picture-zoom", tenDesiredZoom); + } + } + + public static int getDesiredSharpness() { + return DESIRED_SHARPNESS; + } + + /** + * compatible icon1.icon6 + * @param camera + * @param angle + */ + protected void setDisplayOrientation(Camera camera, int angle){ + Method downPolymorphic; + try + { + downPolymorphic = camera.getClass().getMethod("setDisplayOrientation", int.class); + if (downPolymorphic != null) + downPolymorphic.invoke(camera, angle); + } + catch (Exception e1) + { + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraManager.java new file mode 100755 index 0000000..82f53ab --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/CameraManager.java @@ -0,0 +1,328 @@ +/* + * Copyright (C) 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.content.Context; +import android.graphics.PixelFormat; +import android.graphics.Point; +import android.graphics.Rect; +import android.hardware.Camera; +import android.os.Build; +import android.os.Handler; +import android.util.Log; +import android.view.SurfaceHolder; + +import java.io.IOException; + +/** + * This object wraps the Camera service object and expects to be the only one talking to it. The + * implementation encapsulates the steps needed to take preview-sized images, which are used for + * both preview and decoding. + */ +public final class CameraManager { + + private static final String TAG = CameraManager.class.getSimpleName(); + + private static final int MIN_FRAME_WIDTH = 350; + private static final int MIN_FRAME_HEIGHT = 350; + private static final int MAX_FRAME_WIDTH = 700; + private static final int MAX_FRAME_HEIGHT + = 630; + + private static CameraManager cameraManager; + + static final int SDK_INT; // Later we can use Build.VERSION.SDK_INT + + static { + int sdkInt; + try { + sdkInt = Integer.parseInt(Build.VERSION.SDK); + } catch (NumberFormatException nfe) { + // Just to be safe + sdkInt = 10000; + } + SDK_INT = sdkInt; + } + + private final Context context; + private final CameraConfigurationManager configManager; + private static Camera camera; + private Rect framingRect; + private Rect framingRectInPreview; + private boolean initialized; + private boolean previewing; + private final boolean useOneShotPreviewCallback; + /** + * Preview frames are delivered here, which we pass on to the registered handler. Make sure to + * clear the handler so it will only receive one message. + */ + private final PreviewCallback previewCallback; + /** + * Autofocus callbacks arrive here, and are dispatched to the Handler which requested them. + */ + private final AutoFocusCallback autoFocusCallback; + + /** + * Initializes this static object with the Context of the calling Activity. + * + * @param context The Activity which wants to use the camera. + */ + public static void init(Context context) { + if (cameraManager == null) { + cameraManager = new CameraManager(context); + } + } + + /** + * Gets the CameraManager singleton instance. + * + * @return A reference to the CameraManager singleton. + */ + public static CameraManager get() { + return cameraManager; + } + + public static Camera getCamera() { + return camera; + } + + private CameraManager(Context context) { + + this.context = context; + this.configManager = new CameraConfigurationManager(context); + + // Camera.setOneShotPreviewCallback() has background race condition in Cupcake, so we use the older + // Camera.setPreviewCallback() on icon1.icon5 and earlier. For Donut and later, we need to use + // the more efficient one shot callback, as the older one can swamp the system and cause it + // to run out of memory. We can't use SDK_INT because it was introduced in the Donut SDK. + //useOneShotPreviewCallback = Integer.parseInt(Build.VERSION.SDK) > Build.VERSION_CODES.CUPCAKE; + useOneShotPreviewCallback = Integer.parseInt(Build.VERSION.SDK) > 3; // icon3 = Cupcake + + previewCallback = new PreviewCallback(configManager, useOneShotPreviewCallback); + autoFocusCallback = new AutoFocusCallback(); + } + + /** + * Opens the camera driver and initializes the hardware parameters. + * + * @param holder The surface object which the camera will draw preview frames into. + * @throws IOException Indicates the camera driver failed to open. + */ + public void openDriver(SurfaceHolder holder) throws IOException { + if (camera == null) { + camera = Camera.open(); + if (camera == null) { + throw new IOException(); + } + camera.setPreviewDisplay(holder); + + if (!initialized) { + initialized = true; + configManager.initFromCameraParameters(camera); + } + configManager.setDesiredCameraParameters(camera); + + + FlashlightManager.enableFlashlight(); + } + } + + /** + * Closes the camera driver if still in use. + */ + public void closeDriver() { + if (camera != null) { + FlashlightManager.disableFlashlight(); + camera.release(); + camera = null; + } + } + + /** + * Asks the camera hardware to begin drawing preview frames to the screen. + */ + public void startPreview() { + if (camera != null && !previewing) { + camera.startPreview(); + previewing = true; + } + } + + /** + * Tells the camera to stop drawing preview frames. + */ + public void stopPreview() { + if (camera != null && previewing) { + if (!useOneShotPreviewCallback) { + camera.setPreviewCallback(null); + } + camera.stopPreview(); + previewCallback.setHandler(null, 0); + autoFocusCallback.setHandler(null, 0); + previewing = false; + } + } + + /** + * A single preview frame will be returned to the handler supplied. The data will arrive as byte[] + * in the message.obj field, with width and height encoded as message.arg1 and message.arg2, + * respectively. + * + * @param handler The handler to send the message to. + * @param message The what field of the message to be sent. + */ + public void requestPreviewFrame(Handler handler, int message) { + if (camera != null && previewing) { + previewCallback.setHandler(handler, message); + if (useOneShotPreviewCallback) { + camera.setOneShotPreviewCallback(previewCallback); + } else { + camera.setPreviewCallback(previewCallback); + } + } + } + + /** + * Asks the camera hardware to perform an autofocus. + * + * @param handler The Handler to notify when the autofocus completes. + * @param message The message to deliver. + */ + public void requestAutoFocus(Handler handler, int message) { + if (camera != null && previewing) { + autoFocusCallback.setHandler(handler, message); + //Log.d(TAG, "Requesting auto-focus callback"); + camera.autoFocus(autoFocusCallback); + } + } + + /** + * Calculates the framing rect which the UI should draw to show the user where to place the + * barcode. This target helps with alignment as well as forces the user to hold the device + * far enough away to ensure the image will be in focus. + * + * @return The rectangle to draw on screen in window coordinates. + */ + public Rect getFramingRect() { + Point screenResolution = configManager.getScreenResolution(); + if (framingRect == null) { + if (camera == null) { + return null; + } + int width = screenResolution.x * 3 / 4; + if (width < MIN_FRAME_WIDTH) { + width = MIN_FRAME_WIDTH; + } else if (width > MAX_FRAME_WIDTH) { + width = MAX_FRAME_WIDTH; + } + int height = screenResolution.y * 3 / 4; + if (height < MIN_FRAME_HEIGHT) { + height = MIN_FRAME_HEIGHT; + } else if (height > MAX_FRAME_HEIGHT) { + height = MAX_FRAME_HEIGHT; + } + int leftOffset = (screenResolution.x - width) / 2; + int topOffset = (screenResolution.y - height) / 2; + framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height); + Log.d(TAG, "Calculated framing rect: " + framingRect); + } + return framingRect; + } + + /** + * Like {@link #getFramingRect} but coordinates are in terms of the preview frame, + * not UI / screen. + */ + public Rect getFramingRectInPreview() { + if (framingRectInPreview == null) { + Rect rect = new Rect(getFramingRect()); + Point cameraResolution = configManager.getCameraResolution(); + Point screenResolution = configManager.getScreenResolution(); + //modify here +// rect.left = rect.left * cameraResolution.x / screenResolution.x; +// rect.right = rect.right * cameraResolution.x / screenResolution.x; +// rect.top = rect.top * cameraResolution.y / screenResolution.y; +// rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y; + rect.left = rect.left * cameraResolution.y / screenResolution.x; + rect.right = rect.right * cameraResolution.y / screenResolution.x; + rect.top = rect.top * cameraResolution.x / screenResolution.y; + rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y; + framingRectInPreview = rect; + } + return framingRectInPreview; + } + + /** + * Converts the result points from still resolution coordinates to screen coordinates. + * + * @param points The points returned by the Reader subclass through Result.getResultPoints(). + * @return An array of Points scaled to the size of the framing rect and offset appropriately + * so they can be drawn in screen coordinates. + */ + /* + public Point[] convertResultPoints(ResultPoint[] points) { + Rect frame = getFramingRectInPreview(); + int count = points.length; + Point[] output = new Point[count]; + for (int x = 0; x < count; x++) { + output[x] = new Point(); + output[x].x = frame.left + (int) (points[x].getX() + 0.5f); + output[x].y = frame.top + (int) (points[x].getY() + 0.5f); + } + return output; + } + */ + + /** + * A factory method to build the appropriate LuminanceSource object based on the format + * of the preview buffers, as described by Camera.Parameters. + * + * @param data A preview frame. + * @param width The width of the image. + * @param height The height of the image. + * @return A PlanarYUVLuminanceSource instance. + */ + public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data, int width, int height) { + Rect rect = getFramingRectInPreview(); + int previewFormat = configManager.getPreviewFormat(); + String previewFormatString = configManager.getPreviewFormatString(); + switch (previewFormat) { + // This is the standard Android format which all devices are REQUIRED to support. + // In theory, it's the only one we should ever care about. + case PixelFormat.YCbCr_420_SP: + // This format has never been seen in the wild, but is compatible as we only care + // about the Y channel, so allow it. + case PixelFormat.YCbCr_422_SP: + return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top, + rect.width(), rect.height()); + default: + // The Samsung Moment incorrectly uses this variant instead of the 'sp' version. + // Fortunately, it too has all the Y data up front, so we can read it. + if ("yuv420p".equals(previewFormatString)) { + return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top, + rect.width(), rect.height()); + } + } + throw new IllegalArgumentException("Unsupported picture format: " + + previewFormat + '/' + previewFormatString); + } + + public Context getContext() { + return context; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/FlashlightManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/FlashlightManager.java new file mode 100755 index 0000000..278b566 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/FlashlightManager.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.os.IBinder; +import android.util.Log; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * This class is used to activate the weak light on some camera phones (not flash) + * in order to illuminate surfaces for scanning. There is no official way to do this, + * but, classes which allow access to this function still exist on some devices. + * This therefore proceeds through background great deal of reflection. + * + * See + * http://almondmendoza.com/2009/01/05/changing-the-screen-brightness-programatically/ and + * + * http://code.google.com/p/droidled/source/browse/trunk/src/com/droidled/demo/DroidLED.java. + * Thanks to Ryan Alford for pointing out the availability of this class. + */ +final class FlashlightManager { + + private static final String TAG = FlashlightManager.class.getSimpleName(); + + private static final Object iHardwareService; + private static final Method setFlashEnabledMethod; + static { + iHardwareService = getHardwareService(); + setFlashEnabledMethod = getSetFlashEnabledMethod(iHardwareService); + if (iHardwareService == null) { + Log.v(TAG, "This device does supports control of background flashlight"); + } else { + Log.v(TAG, "This device does not support control of background flashlight"); + } + } + + private FlashlightManager() { + } + + + //FIXME + static void enableFlashlight() { + setFlashlight(false); + } + + static void disableFlashlight() { + setFlashlight(false); + } + + private static Object getHardwareService() { + Class serviceManagerClass = maybeForName("android.os.ServiceManager"); + if (serviceManagerClass == null) { + return null; + } + + Method getServiceMethod = maybeGetMethod(serviceManagerClass, "getService", String.class); + if (getServiceMethod == null) { + return null; + } + + Object hardwareService = invoke(getServiceMethod, null, "hardware"); + if (hardwareService == null) { + return null; + } + + Class iHardwareServiceStubClass = maybeForName("android.os.IHardwareService$Stub"); + if (iHardwareServiceStubClass == null) { + return null; + } + + Method asInterfaceMethod = maybeGetMethod(iHardwareServiceStubClass, "asInterface", IBinder.class); + if (asInterfaceMethod == null) { + return null; + } + + return invoke(asInterfaceMethod, null, hardwareService); + } + + private static Method getSetFlashEnabledMethod(Object iHardwareService) { + if (iHardwareService == null) { + return null; + } + Class proxyClass = iHardwareService.getClass(); + return maybeGetMethod(proxyClass, "setFlashlightEnabled", boolean.class); + } + + private static Class maybeForName(String name) { + try { + return Class.forName(name); + } catch (ClassNotFoundException cnfe) { + // OK + return null; + } catch (RuntimeException re) { + Log.w(TAG, "Unexpected error while finding class " + name, re); + return null; + } + } + + private static Method maybeGetMethod(Class clazz, String name, Class... argClasses) { + try { + return clazz.getMethod(name, argClasses); + } catch (NoSuchMethodException nsme) { + // OK + return null; + } catch (RuntimeException re) { + Log.w(TAG, "Unexpected error while finding method " + name, re); + return null; + } + } + + private static Object invoke(Method method, Object instance, Object... args) { + try { + return method.invoke(instance, args); + } catch (IllegalAccessException e) { + Log.w(TAG, "Unexpected error while invoking " + method, e); + return null; + } catch (InvocationTargetException e) { + Log.w(TAG, "Unexpected error while invoking " + method, e.getCause()); + return null; + } catch (RuntimeException re) { + Log.w(TAG, "Unexpected error while invoking " + method, re); + return null; + } + } + + private static void setFlashlight(boolean active) { + if (iHardwareService != null) { + invoke(setFlashEnabledMethod, iHardwareService, active); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PlanarYUVLuminanceSource.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PlanarYUVLuminanceSource.java new file mode 100755 index 0000000..e983020 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PlanarYUVLuminanceSource.java @@ -0,0 +1,133 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.graphics.Bitmap; + +import com.google.zxing.LuminanceSource; + +/** + * This object extends LuminanceSource around an array of YUV data returned from the camera driver, + * with the option to crop to background rectangle within the full data. This can be used to exclude + * superfluous pixels around the perimeter and speed up decoding. + * + * It works for any pixel format where the Y channel is planar and appears first, including + * YCbCr_420_SP and YCbCr_422_SP. + * + * @author dswitkin@google.com (Daniel Switkin) + */ +public final class PlanarYUVLuminanceSource extends LuminanceSource { + private final byte[] yuvData; + private final int dataWidth; + private final int dataHeight; + private final int left; + private final int top; + + public PlanarYUVLuminanceSource(byte[] yuvData, int dataWidth, int dataHeight, int left, int top, + int width, int height) { + super(width, height); + + if (left + width > dataWidth || top + height > dataHeight) { + throw new IllegalArgumentException("Crop rectangle does not fit within image data."); + } + + this.yuvData = yuvData; + this.dataWidth = dataWidth; + this.dataHeight = dataHeight; + this.left = left; + this.top = top; + } + + @Override + public byte[] getRow(int y, byte[] row) { + if (y < 0 || y >= getHeight()) { + throw new IllegalArgumentException("Requested row is outside the image: " + y); + } + int width = getWidth(); + if (row == null || row.length < width) { + row = new byte[width]; + } + int offset = (y + top) * dataWidth + left; + System.arraycopy(yuvData, offset, row, 0, width); + return row; + } + + @Override + public byte[] getMatrix() { + int width = getWidth(); + int height = getHeight(); + + // If the caller asks for the entire underlying image, save the copy and give them the + // original data. The docs specifically warn that result.length must be ignored. + if (width == dataWidth && height == dataHeight) { + return yuvData; + } + + int area = width * height; + byte[] matrix = new byte[area]; + int inputOffset = top * dataWidth + left; + + // If the width matches the full width of the underlying data, perform background single copy. + if (width == dataWidth) { + System.arraycopy(yuvData, inputOffset, matrix, 0, area); + return matrix; + } + + // Otherwise copy one cropped row at background time. + byte[] yuv = yuvData; + for (int y = 0; y < height; y++) { + int outputOffset = y * width; + System.arraycopy(yuv, inputOffset, matrix, outputOffset, width); + inputOffset += dataWidth; + } + return matrix; + } + + @Override + public boolean isCropSupported() { + return true; + } + + public int getDataWidth() { + return dataWidth; + } + + public int getDataHeight() { + return dataHeight; + } + + public Bitmap renderCroppedGreyscaleBitmap() { + int width = getWidth(); + int height = getHeight(); + int[] pixels = new int[width * height]; + byte[] yuv = yuvData; + int inputOffset = top * dataWidth + left; + + for (int y = 0; y < height; y++) { + int outputOffset = y * width; + for (int x = 0; x < width; x++) { + int grey = yuv[inputOffset + x] & 0xff; + pixels[outputOffset + x] = 0xFF000000 | (grey * 0x00010101); + } + inputOffset += dataWidth; + } + + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + bitmap.setPixels(pixels, 0, width, 0, 0, width, height); + return bitmap; + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PreviewCallback.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PreviewCallback.java new file mode 100755 index 0000000..defd62f --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/camera/PreviewCallback.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.camera; + +import android.graphics.Point; +import android.hardware.Camera; +import android.os.Handler; +import android.os.Message; +import android.util.Log; + +final class PreviewCallback implements Camera.PreviewCallback { + + private static final String TAG = PreviewCallback.class.getSimpleName(); + + private final CameraConfigurationManager configManager; + private final boolean useOneShotPreviewCallback; + private Handler previewHandler; + private int previewMessage; + + PreviewCallback(CameraConfigurationManager configManager, boolean useOneShotPreviewCallback) { + this.configManager = configManager; + this.useOneShotPreviewCallback = useOneShotPreviewCallback; + } + + void setHandler(Handler previewHandler, int previewMessage) { + this.previewHandler = previewHandler; + this.previewMessage = previewMessage; + } + + public void onPreviewFrame(byte[] data, Camera camera) { + Point cameraResolution = configManager.getCameraResolution(); + if (!useOneShotPreviewCallback) { + camera.setPreviewCallback(null); + } + if (previewHandler != null) { + Message message = previewHandler.obtainMessage(previewMessage, cameraResolution.x, + cameraResolution.y, data); + message.sendToTarget(); + previewHandler = null; + } else { + Log.d(TAG, "Got preview callback, but no handler for it"); + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/CaptureActivityHandler.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/CaptureActivityHandler.java new file mode 100755 index 0000000..9094d13 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/CaptureActivityHandler.java @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.MipcaActivityCapture; +import com.rehome.scbaxj.zxing.camera.CameraManager; +import com.rehome.scbaxj.zxing.view.ViewfinderResultPointCallback; + +import java.util.Vector; + +/** + * This class handles all the messaging which comprises the state machine for capture. + */ +public final class CaptureActivityHandler extends Handler { + + private static final String TAG = CaptureActivityHandler.class.getSimpleName(); + + private final MipcaActivityCapture activity; + private final DecodeThread decodeThread; + private State state; + + private enum State { + PREVIEW, + SUCCESS, + DONE + } + + public CaptureActivityHandler(MipcaActivityCapture activity, Vector decodeFormats, + String characterSet) { + this.activity = activity; + decodeThread = new DecodeThread(activity, decodeFormats, characterSet, + new ViewfinderResultPointCallback(activity.getViewfinderView())); + decodeThread.start(); + state = State.SUCCESS; + // Start ourselves capturing previews and decoding. + CameraManager.get().startPreview(); + restartPreviewAndDecode(); + } + + @Override + public void handleMessage(Message message) { + switch (message.what) { + case R.id.auto_focus: + //Log.d(TAG, "Got auto-focus message"); + // When one auto focus pass finishes, start another. This is the closest thing to + // continuous AF. It does seem to hunt background bit, but I'm not sure what else to do. + if (state == State.PREVIEW) { + CameraManager.get().requestAutoFocus(this, R.id.auto_focus); + } + break; + case R.id.restart_preview: + Log.d(TAG, "Got restart preview message"); + restartPreviewAndDecode(); + break; + case R.id.decode_succeeded: + Log.d(TAG, "Got decode succeeded message"); + state = State.SUCCESS; + Bundle bundle = message.getData(); + + /***********************************************************************/ + Bitmap barcode = bundle == null ? null : + (Bitmap) bundle.getParcelable(DecodeThread.BARCODE_BITMAP);//���ñ����߳� + + activity.handleDecode((Result) message.obj, barcode);//���ؽ��? /***********************************************************************/ + break; + case R.id.decode_failed: + // We're decoding as fast as possible, so when one decode fails, start another. + state = State.PREVIEW; + CameraManager.get().requestPreviewFrame(decodeThread.getHandler(), R.id.decode); + break; + case R.id.return_scan_result: + Log.d(TAG, "Got return scan result message"); + activity.setResult(Activity.RESULT_OK, (Intent) message.obj); + activity.finish(); + break; + case R.id.launch_product_query: + Log.d(TAG, "Got product query message"); + String url = (String) message.obj; + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); + activity.startActivity(intent); + break; + } + } + + public void quitSynchronously() { + state = State.DONE; + CameraManager.get().stopPreview(); + Message quit = Message.obtain(decodeThread.getHandler(), R.id.quit); + quit.sendToTarget(); + try { + decodeThread.join(); + } catch (InterruptedException e) { + // continue + } + + // Be absolutely sure we don't send any queued up messages + removeMessages(R.id.decode_succeeded); + removeMessages(R.id.decode_failed); + } + + private void restartPreviewAndDecode() { + if (state == State.SUCCESS) { + state = State.PREVIEW; + CameraManager.get().requestPreviewFrame(decodeThread.getHandler(), R.id.decode); + CameraManager.get().requestAutoFocus(this, R.id.auto_focus); + activity.drawViewfinder(); + } + } + + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeFormatManager.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeFormatManager.java new file mode 100755 index 0000000..19af1a1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeFormatManager.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.content.Intent; +import android.net.Uri; + +import com.google.zxing.BarcodeFormat; + +import java.util.Arrays; +import java.util.List; +import java.util.Vector; +import java.util.regex.Pattern; + +final class DecodeFormatManager { + + private static final Pattern COMMA_PATTERN = Pattern.compile(","); + + static final Vector PRODUCT_FORMATS; + static final Vector ONE_D_FORMATS; + static final Vector QR_CODE_FORMATS; + static final Vector DATA_MATRIX_FORMATS; + static { + PRODUCT_FORMATS = new Vector(5); + PRODUCT_FORMATS.add(BarcodeFormat.UPC_A); + PRODUCT_FORMATS.add(BarcodeFormat.UPC_E); + PRODUCT_FORMATS.add(BarcodeFormat.EAN_13); + PRODUCT_FORMATS.add(BarcodeFormat.EAN_8); + ONE_D_FORMATS = new Vector(PRODUCT_FORMATS.size() + 4); + ONE_D_FORMATS.addAll(PRODUCT_FORMATS); + ONE_D_FORMATS.add(BarcodeFormat.CODE_39); + ONE_D_FORMATS.add(BarcodeFormat.CODE_93); + ONE_D_FORMATS.add(BarcodeFormat.CODE_128); + ONE_D_FORMATS.add(BarcodeFormat.ITF); + QR_CODE_FORMATS = new Vector(1); + QR_CODE_FORMATS.add(BarcodeFormat.QR_CODE); + DATA_MATRIX_FORMATS = new Vector(1); + DATA_MATRIX_FORMATS.add(BarcodeFormat.DATA_MATRIX); + } + + private DecodeFormatManager() {} + + static Vector parseDecodeFormats(Intent intent) { + List scanFormats = null; + String scanFormatsString = intent.getStringExtra(Intents.Scan.SCAN_FORMATS); + if (scanFormatsString != null) { + scanFormats = Arrays.asList(COMMA_PATTERN.split(scanFormatsString)); + } + return parseDecodeFormats(scanFormats, intent.getStringExtra(Intents.Scan.MODE)); + } + + static Vector parseDecodeFormats(Uri inputUri) { + List formats = inputUri.getQueryParameters(Intents.Scan.SCAN_FORMATS); + if (formats != null && formats.size() == 1 && formats.get(0) != null){ + formats = Arrays.asList(COMMA_PATTERN.split(formats.get(0))); + } + return parseDecodeFormats(formats, inputUri.getQueryParameter(Intents.Scan.MODE)); + } + + private static Vector parseDecodeFormats(Iterable scanFormats, + String decodeMode) { + if (scanFormats != null) { + Vector formats = new Vector(); + try { + for (String format : scanFormats) { + formats.add(BarcodeFormat.valueOf(format)); + } + return formats; + } catch (IllegalArgumentException iae) { + // ignore it then + } + } + if (decodeMode != null) { + if (Intents.Scan.PRODUCT_MODE.equals(decodeMode)) { + return PRODUCT_FORMATS; + } + if (Intents.Scan.QR_CODE_MODE.equals(decodeMode)) { + return QR_CODE_FORMATS; + } + if (Intents.Scan.DATA_MATRIX_MODE.equals(decodeMode)) { + return DATA_MATRIX_FORMATS; + } + if (Intents.Scan.ONE_D_MODE.equals(decodeMode)) { + return ONE_D_FORMATS; + } + } + return null; + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeHandler.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeHandler.java new file mode 100755 index 0000000..221990b --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeHandler.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.util.Log; + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.DecodeHintType; +import com.google.zxing.MultiFormatReader; +import com.google.zxing.ReaderException; +import com.google.zxing.Result; +import com.google.zxing.common.HybridBinarizer; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.base.MipcaActivityCapture; +import com.rehome.scbaxj.zxing.camera.CameraManager; +import com.rehome.scbaxj.zxing.camera.PlanarYUVLuminanceSource; + +import java.util.Hashtable; + +final class DecodeHandler extends Handler { + + private static final String TAG = DecodeHandler.class.getSimpleName(); + + private final MipcaActivityCapture activity; + private final MultiFormatReader multiFormatReader; + + DecodeHandler(MipcaActivityCapture activity, Hashtable hints) { + multiFormatReader = new MultiFormatReader(); + multiFormatReader.setHints(hints); + this.activity = activity; + } + + @Override + public void handleMessage(Message message) { + switch (message.what) { + case R.id.decode: + //Log.d(TAG, "Got decode message"); + decode((byte[]) message.obj, message.arg1, message.arg2); + break; + case R.id.quit: + Looper.myLooper().quit(); + break; + } + } + + /** + * Decode the data within the viewfinder rectangle, and time how long it took. For efficiency, + * reuse the same reader objects from one decode to the next. + * + * @param data The YUV preview frame. + * @param width The width of the preview frame. + * @param height The height of the preview frame. + */ + private void decode(byte[] data, int width, int height) { + long start = System.currentTimeMillis(); + Result rawResult = null; + + //modify here + byte[] rotatedData = new byte[data.length]; + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) + rotatedData[x * height + height - y - 1] = data[x + y * width]; + } + int tmp = width; // Here we are swapping, that's the difference to #11 + width = height; + height = tmp; + + PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(rotatedData, width, height); + BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); + try { + rawResult = multiFormatReader.decodeWithState(bitmap); + } catch (ReaderException re) { + // continue + } finally { + multiFormatReader.reset(); + } + + if (rawResult != null) { + long end = System.currentTimeMillis(); + Log.d(TAG, "Found barcode (" + (end - start) + " ms):\n" + rawResult.toString()); + Message message = Message.obtain(activity.getHandler(), R.id.decode_succeeded, rawResult); + Bundle bundle = new Bundle(); + bundle.putParcelable(DecodeThread.BARCODE_BITMAP, source.renderCroppedGreyscaleBitmap()); + message.setData(bundle); + //Log.d(TAG, "Sending decode succeeded message..."); + message.sendToTarget(); + } else { + Message message = Message.obtain(activity.getHandler(), R.id.decode_failed); + message.sendToTarget(); + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeThread.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeThread.java new file mode 100755 index 0000000..74bf5f0 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/DecodeThread.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.os.Handler; +import android.os.Looper; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.DecodeHintType; +import com.google.zxing.ResultPointCallback; +import com.rehome.scbaxj.base.MipcaActivityCapture; + +import java.util.Hashtable; +import java.util.Vector; +import java.util.concurrent.CountDownLatch; + + +final class DecodeThread extends Thread { + public static final String BARCODE_BITMAP = "barcode_bitmap"; + private final MipcaActivityCapture activity; + private final Hashtable hints; + private Handler handler; + private final CountDownLatch handlerInitLatch; + + DecodeThread(MipcaActivityCapture activity, + Vector decodeFormats, + String characterSet, + ResultPointCallback resultPointCallback) { + + this.activity = activity; + handlerInitLatch = new CountDownLatch(1); + + hints = new Hashtable(3); + + if (decodeFormats == null || decodeFormats.isEmpty()) { + decodeFormats = new Vector(); + decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS); + decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS); + decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS); + } + + hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats); + + if (characterSet != null) { + hints.put(DecodeHintType.CHARACTER_SET, characterSet); + } + + hints.put(DecodeHintType.NEED_RESULT_POINT_CALLBACK, resultPointCallback); + } + + Handler getHandler() { + try { + handlerInitLatch.await(); + } catch (InterruptedException ie) { + // continue? + } + return handler; + } + + @Override + public void run() { + Looper.prepare(); + handler = new DecodeHandler(activity, hints); + handlerInitLatch.countDown(); + Looper.loop(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/FinishListener.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/FinishListener.java new file mode 100755 index 0000000..29879ba --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/FinishListener.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.app.Activity; +import android.content.DialogInterface; + +/** + * Simple listener used to exit the app in background few cases. + * + */ +public final class FinishListener + implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener, Runnable { + + private final Activity activityToFinish; + + public FinishListener(Activity activityToFinish) { + this.activityToFinish = activityToFinish; + } + + public void onCancel(DialogInterface dialogInterface) { + run(); + } + + public void onClick(DialogInterface dialogInterface, int i) { + run(); + } + + public void run() { + activityToFinish.finish(); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/InactivityTimer.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/InactivityTimer.java new file mode 100755 index 0000000..4c2fb6a --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/InactivityTimer.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +import android.app.Activity; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; + +/** + * Finishes an activity after background period of inactivity. + */ +public final class InactivityTimer { + + private static final int INACTIVITY_DELAY_SECONDS = 5 * 60; + + private final ScheduledExecutorService inactivityTimer = + Executors.newSingleThreadScheduledExecutor(new DaemonThreadFactory()); + private final Activity activity; + private ScheduledFuture inactivityFuture = null; + + public InactivityTimer(Activity activity) { + this.activity = activity; + onActivity(); + } + + public void onActivity() { + cancel(); + inactivityFuture = inactivityTimer.schedule(new FinishListener(activity), + INACTIVITY_DELAY_SECONDS, + TimeUnit.SECONDS); + } + + private void cancel() { + if (inactivityFuture != null) { + inactivityFuture.cancel(true); + inactivityFuture = null; + } + } + + public void shutdown() { + cancel(); + inactivityTimer.shutdown(); + } + + private static final class DaemonThreadFactory implements ThreadFactory { + public Thread newThread(Runnable runnable) { + Thread thread = new Thread(runnable); + thread.setDaemon(true); + return thread; + } + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/Intents.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/Intents.java new file mode 100755 index 0000000..910e562 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/decoding/Intents.java @@ -0,0 +1,190 @@ +/* + * Copyright (C) 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.decoding; + +/** + * This class provides the constants to use when sending an Intent to Barcode Scanner. + * These strings are effectively API and cannot be changed. + */ +public final class Intents { + private Intents() { + } + + public static final class Scan { + /** + * Send this intent to open the Barcodes app in scanning mode, find background barcode, and return + * the results. + */ + public static final String ACTION = "com.google.zxing.client.android.SCAN"; + + /** + * By default, sending Scan.ACTION will decode all barcodes that we understand. However it + * may be useful to limit scanning to certain formats. Use Intent.putExtra(MODE, value) with + * one of the values below ({@link #PRODUCT_MODE}, {@link #ONE_D_MODE}, {@link #QR_CODE_MODE}). + * Optional. + * + * Setting this is effectively shorthnad for setting explicit formats with {@link #SCAN_FORMATS}. + * It is overridden by that setting. + */ + public static final String MODE = "SCAN_MODE"; + + /** + * Comma-separated list of formats to scan for. The values must match the names of + * {@link com.google.zxing.BarcodeFormat}s, such as {@link com.google.zxing.BarcodeFormat#EAN_13}. + * Example: "EAN_13,EAN_8,QR_CODE" + * + * This overrides {@link #MODE}. + */ + public static final String SCAN_FORMATS = "SCAN_FORMATS"; + + /** + * @see com.google.zxing.DecodeHintType#CHARACTER_SET + */ + public static final String CHARACTER_SET = "CHARACTER_SET"; + + /** + * Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get + * prices, reviews, etc. for products. + */ + public static final String PRODUCT_MODE = "PRODUCT_MODE"; + + /** + * Decode only 1D barcodes (currently UPC, EAN, Code 39, and Code 128). + */ + public static final String ONE_D_MODE = "ONE_D_MODE"; + + /** + * Decode only QR codes. + */ + public static final String QR_CODE_MODE = "QR_CODE_MODE"; + + /** + * Decode only Data Matrix codes. + */ + public static final String DATA_MATRIX_MODE = "DATA_MATRIX_MODE"; + + /** + * If background barcode is found, Barcodes returns RESULT_OK to onActivityResult() of the app which + * requested the scan via startSubActivity(). The barcodes contents can be retrieved with + * intent.getStringExtra(RESULT). If the user presses Back, the result code will be + * RESULT_CANCELED. + */ + public static final String RESULT = "SCAN_RESULT"; + + /** + * Call intent.getStringExtra(RESULT_FORMAT) to determine which barcode format was found. + * See Contents.Format for possible values. + */ + public static final String RESULT_FORMAT = "SCAN_RESULT_FORMAT"; + + /** + * Setting this to false will not save scanned codes in the history. + */ + public static final String SAVE_HISTORY = "SAVE_HISTORY"; + + private Scan() { + } + } + + public static final class Encode { + /** + * Send this intent to encode background piece of data as background QR code and display it full screen, so + * that another person can scan the barcode from your screen. + */ + public static final String ACTION = "com.google.zxing.client.android.ENCODE"; + + /** + * The data to encode. Use Intent.putExtra(DATA, data) where data is either background String or background + * Bundle, depending on the type and format specified. Non-QR Code formats should + * just use background String here. For QR Code, see Contents for details. + */ + public static final String DATA = "ENCODE_DATA"; + + /** + * The type of data being supplied if the format is QR Code. Use + * Intent.putExtra(TYPE, type) with one of Contents.Type. + */ + public static final String TYPE = "ENCODE_TYPE"; + + /** + * The barcode format to be displayed. If this isn't specified or is blank, + * it defaults to QR Code. Use Intent.putExtra(FORMAT, format), where + * format is one of Contents.Format. + */ + public static final String FORMAT = "ENCODE_FORMAT"; + + private Encode() { + } + } + + public static final class SearchBookContents { + /** + * Use Google Book Search to search the contents of the book provided. + */ + public static final String ACTION = "com.google.zxing.client.android.SEARCH_BOOK_CONTENTS"; + + /** + * The book to search, identified by ISBN number. + */ + public static final String ISBN = "ISBN"; + + /** + * An optional field which is the text to search for. + */ + public static final String QUERY = "QUERY"; + + private SearchBookContents() { + } + } + + public static final class WifiConnect { + /** + * Internal intent used to trigger connection to background wi-fi network. + */ + public static final String ACTION = "com.google.zxing.client.android.WIFI_CONNECT"; + + /** + * The network to connect to, all the configuration provided here. + */ + public static final String SSID = "SSID"; + + /** + * The network to connect to, all the configuration provided here. + */ + public static final String TYPE = "TYPE"; + + /** + * The network to connect to, all the configuration provided here. + */ + public static final String PASSWORD = "PASSWORD"; + + private WifiConnect() { + } + } + + + public static final class Share { + /** + * Give the user background choice of items to encode as background barcode, then render it as background QR Code and + * display onscreen for background friend to scan with their phone. + */ + public static final String ACTION = "com.google.zxing.client.android.SHARE"; + + private Share() { + } + } +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderResultPointCallback.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderResultPointCallback.java new file mode 100755 index 0000000..91b68e1 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderResultPointCallback.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2009 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.view; + +import com.google.zxing.ResultPoint; +import com.google.zxing.ResultPointCallback; + +public final class ViewfinderResultPointCallback implements ResultPointCallback { + + private final ViewfinderView viewfinderView; + + public ViewfinderResultPointCallback(ViewfinderView viewfinderView) { + this.viewfinderView = viewfinderView; + } + + public void foundPossibleResultPoint(ResultPoint point) { + viewfinderView.addPossibleResultPoint(point); + } + +} diff --git a/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderView.java b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderView.java new file mode 100755 index 0000000..2863a15 --- /dev/null +++ b/SCBAXJ/app/src/main/java/com/rehome/scbaxj/zxing/view/ViewfinderView.java @@ -0,0 +1,253 @@ +/* + * Copyright (C) 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rehome.scbaxj.zxing.view; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.Typeface; +import android.util.AttributeSet; +import android.view.View; + +import com.google.zxing.ResultPoint; +import com.rehome.scbaxj.R; +import com.rehome.scbaxj.zxing.camera.CameraManager; + +import java.util.Collection; +import java.util.HashSet; + + +/** + * This view is overlaid on top of the camera preview. It adds the viewfinder + * rectangle and partial transparency outside it, as well as the laser scanner + * animation and result points. + * + */ +public final class ViewfinderView extends View { + private static final String TAG = "log"; + /** + * ˢ�½����ʱ�� + */ + private static final long ANIMATION_DELAY = 10L; + private static final int OPAQUE = 0xFF; + + /** + * �ĸ���ɫ�߽Ƕ�Ӧ�ij��� + */ + private int ScreenRate; + + /** + * �ĸ���ɫ�߽Ƕ�Ӧ�Ŀ�� + */ + private static final int CORNER_WIDTH = 10; + /** + * ɨ����е��м��ߵĿ�� + */ + private static final int MIDDLE_LINE_WIDTH = 6; + + /** + * ɨ����е��м��ߵ���ɨ������ҵļ�϶ + */ + private static final int MIDDLE_LINE_PADDING = 5; + + /** + * �м�������ÿ��ˢ���ƶ��ľ��� + */ + private static final int SPEEN_DISTANCE = 5; + + /** + * �ֻ�����Ļ�ܶ� + */ + private static float density; + /** + * �����С + */ + private static final int TEXT_SIZE = 16; + /** + * �������ɨ�������ľ��� + */ + private static final int TEXT_PADDING_TOP = 30; + + /** + * ���ʶ�������� + */ + private Paint paint; + + /** + * �м们���ߵ����λ�� + */ + private int slideTop; + + /** + * �м们���ߵ���׶�λ�� + */ + private int slideBottom; + + /** + * ��ɨ��Ķ�ά��������������û��������ܣ���ʱ������ + */ + private Bitmap resultBitmap; + private final int maskColor; + private final int resultColor; + + private final int resultPointColor; + private Collection possibleResultPoints; + private Collection lastPossibleResultPoints; + + boolean isFirst; + + public ViewfinderView(Context context, AttributeSet attrs) { + super(context, attrs); + + density = context.getResources().getDisplayMetrics().density; + //������ת����dp + ScreenRate = (int)(20 * density); + + paint = new Paint(); + Resources resources = getResources(); + maskColor = resources.getColor(R.color.viewfinder_mask); + resultColor = resources.getColor(R.color.result_view); + + resultPointColor = resources.getColor(R.color.possible_result_points); + possibleResultPoints = new HashSet(5); + } + + @Override + public void onDraw(Canvas canvas) { + Rect frame = CameraManager.get().getFramingRect(); + if (frame == null) { + return; + } + + //��ʼ���м��߻��������ϱߺ����±� + if(!isFirst){ + isFirst = true; + slideTop = frame.top; + slideBottom = frame.bottom; + } + + int width = canvas.getWidth(); + int height = canvas.getHeight(); + + paint.setColor(resultBitmap != null ? resultColor : maskColor); + + canvas.drawRect(0, 0, width, frame.top, paint); + canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint); + canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1, + paint); + canvas.drawRect(0, frame.bottom + 1, width, height, paint); + + + + if (resultBitmap != null) { + // Draw the opaque result bitmap over the scanning rectangle + paint.setAlpha(OPAQUE); + canvas.drawBitmap(resultBitmap, frame.left, frame.top, paint); + } else { + + paint.setColor(Color.GREEN); + canvas.drawRect(frame.left, frame.top, frame.left + ScreenRate, + frame.top + CORNER_WIDTH, paint); + canvas.drawRect(frame.left, frame.top, frame.left + CORNER_WIDTH, frame.top + + ScreenRate, paint); + canvas.drawRect(frame.right - ScreenRate, frame.top, frame.right, + frame.top + CORNER_WIDTH, paint); + canvas.drawRect(frame.right - CORNER_WIDTH, frame.top, frame.right, frame.top + + ScreenRate, paint); + canvas.drawRect(frame.left, frame.bottom - CORNER_WIDTH, frame.left + + ScreenRate, frame.bottom, paint); + canvas.drawRect(frame.left, frame.bottom - ScreenRate, + frame.left + CORNER_WIDTH, frame.bottom, paint); + canvas.drawRect(frame.right - ScreenRate, frame.bottom - CORNER_WIDTH, + frame.right, frame.bottom, paint); + canvas.drawRect(frame.right - CORNER_WIDTH, frame.bottom - ScreenRate, + frame.right, frame.bottom, paint); + + + slideTop += SPEEN_DISTANCE; + if(slideTop >= frame.bottom){ + slideTop = frame.top; + } + canvas.drawRect(frame.left + MIDDLE_LINE_PADDING, slideTop - MIDDLE_LINE_WIDTH/2, frame.right - MIDDLE_LINE_PADDING,slideTop + MIDDLE_LINE_WIDTH/2, paint); + + + //��ɨ���������� + paint.setColor(Color.WHITE); + paint.setTextSize(TEXT_SIZE * density); + paint.setAlpha(0x40); + paint.setTypeface(Typeface.create("System", Typeface.BOLD)); + canvas.drawText("将二维码/条码放入框内即可扫描", frame.left, frame.bottom + (float)TEXT_PADDING_TOP *density, paint); + + + + Collection currentPossible = possibleResultPoints; + Collection currentLast = lastPossibleResultPoints; + if (currentPossible.isEmpty()) { + lastPossibleResultPoints = null; + } else { + possibleResultPoints = new HashSet(5); + lastPossibleResultPoints = currentPossible; + paint.setAlpha(OPAQUE); + paint.setColor(resultPointColor); + for (ResultPoint point : currentPossible) { + canvas.drawCircle(frame.left + point.getX(), frame.top + + point.getY(), 6.0f, paint); + } + } + if (currentLast != null) { + paint.setAlpha(OPAQUE / 2); + paint.setColor(resultPointColor); + for (ResultPoint point : currentLast) { + canvas.drawCircle(frame.left + point.getX(), frame.top + + point.getY(), 3.0f, paint); + } + } + + + //ֻˢ��ɨ�������ݣ������ط���ˢ�� + postInvalidateDelayed(ANIMATION_DELAY, frame.left, frame.top, + frame.right, frame.bottom); + + } + } + + public void drawViewfinder() { + resultBitmap = null; + invalidate(); + } + + /** + * Draw background bitmap with the result points highlighted instead of the live + * scanning display. + * + * @param barcode + * An image of the decoded barcode. + */ + public void drawResultBitmap(Bitmap barcode) { + resultBitmap = barcode; + invalidate(); + } + + public void addPossibleResultPoint(ResultPoint point) { + possibleResultPoints.add(point); + } + +} diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/bg_input_filter.xml b/SCBAXJ/app/src/main/res/drawable-xhdpi/bg_input_filter.xml new file mode 100644 index 0000000..e5e6394 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable-xhdpi/bg_input_filter.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_off_normal.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_off_normal.png new file mode 100644 index 0000000..e51c5d3 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_off_normal.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_on_normal.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_on_normal.png new file mode 100644 index 0000000..04ee9bd Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/btn_check_on_normal.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/head_photo.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/head_photo.png new file mode 100755 index 0000000..40f5dff Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/head_photo.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_add_image.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_add_image.png new file mode 100644 index 0000000..38e38da Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_add_image.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_delete_menu.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_delete_menu.png new file mode 100755 index 0000000..2025f26 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_delete_menu.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_search.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_search.png new file mode 100644 index 0000000..68d1025 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/ic_search.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_apply.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_apply.png new file mode 100755 index 0000000..0159868 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_apply.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_mentions.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_mentions.png new file mode 100755 index 0000000..4f5c406 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_mentions.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_myphone.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_myphone.png new file mode 100755 index 0000000..993bb1f Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_myphone.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_order.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_order.png new file mode 100755 index 0000000..30600b9 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_order.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone.png new file mode 100755 index 0000000..75ab1c2 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone1.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone1.png new file mode 100755 index 0000000..ff10d30 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_phone1.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_started.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_started.png new file mode 100755 index 0000000..95d361d Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/icon_started.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/logo_hz.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/logo_hz.png new file mode 100755 index 0000000..894ab26 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/logo_hz.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_collapse.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_collapse.png new file mode 100644 index 0000000..4594e7f Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_collapse.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_expand.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_expand.png new file mode 100644 index 0000000..33111b2 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/outline_list_expand.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/search.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/search.png new file mode 100755 index 0000000..e0f640d Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/search.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/select_btn_check.xml b/SCBAXJ/app/src/main/res/drawable-xhdpi/select_btn_check.xml new file mode 100644 index 0000000..4f4bd1b --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable-xhdpi/select_btn_check.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts.png new file mode 100755 index 0000000..a316ef9 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts_hover.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts_hover.png new file mode 100755 index 0000000..e31b408 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_contacts_hover.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home.png new file mode 100755 index 0000000..e75ecf8 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home_hover.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home_hover.png new file mode 100755 index 0000000..90ade02 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_home_hover.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me.png new file mode 100755 index 0000000..f4723b6 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me_hover.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me_hover.png new file mode 100755 index 0000000..c9ea913 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/tab_me_hover.png differ diff --git a/SCBAXJ/app/src/main/res/drawable-xhdpi/wechat.png b/SCBAXJ/app/src/main/res/drawable-xhdpi/wechat.png new file mode 100755 index 0000000..f5c9522 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable-xhdpi/wechat.png differ diff --git a/SCBAXJ/app/src/main/res/drawable/auth_button_login.xml b/SCBAXJ/app/src/main/res/drawable/auth_button_login.xml new file mode 100755 index 0000000..226a114 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/auth_button_login.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/auth_tab_header_text.xml b/SCBAXJ/app/src/main/res/drawable/auth_tab_header_text.xml new file mode 100755 index 0000000..54692d7 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/auth_tab_header_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/bg_dj_edittext.xml b/SCBAXJ/app/src/main/res/drawable/bg_dj_edittext.xml new file mode 100755 index 0000000..db8d75a --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/bg_dj_edittext.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/bg_edittext.xml b/SCBAXJ/app/src/main/res/drawable/bg_edittext.xml new file mode 100755 index 0000000..c24c1ed --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/bg_edittext.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/bg_gray_solid.xml b/SCBAXJ/app/src/main/res/drawable/bg_gray_solid.xml new file mode 100755 index 0000000..48e0965 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/bg_gray_solid.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/bg_tab.xml b/SCBAXJ/app/src/main/res/drawable/bg_tab.xml new file mode 100755 index 0000000..a1aee49 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/bg_tab.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/border_line_while.xml b/SCBAXJ/app/src/main/res/drawable/border_line_while.xml new file mode 100755 index 0000000..01d57a1 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/border_line_while.xml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/border_red_roval_sign.xml b/SCBAXJ/app/src/main/res/drawable/border_red_roval_sign.xml new file mode 100755 index 0000000..0c51c76 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/border_red_roval_sign.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/btn_bg_red.xml b/SCBAXJ/app/src/main/res/drawable/btn_bg_red.xml new file mode 100755 index 0000000..c8ee90a --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/btn_bg_red.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/btnshape.xml b/SCBAXJ/app/src/main/res/drawable/btnshape.xml new file mode 100755 index 0000000..824f8a1 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/btnshape.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/card_background.xml b/SCBAXJ/app/src/main/res/drawable/card_background.xml new file mode 100755 index 0000000..3ee88e4 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/card_background.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/card_background_selector.xml b/SCBAXJ/app/src/main/res/drawable/card_background_selector.xml new file mode 100755 index 0000000..3c41bfd --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/card_background_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/card_state_pressed.xml b/SCBAXJ/app/src/main/res/drawable/card_state_pressed.xml new file mode 100755 index 0000000..fde3b00 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/card_state_pressed.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/contacts.xml b/SCBAXJ/app/src/main/res/drawable/contacts.xml new file mode 100755 index 0000000..8eb52d2 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/contacts.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/delete.png b/SCBAXJ/app/src/main/res/drawable/delete.png new file mode 100644 index 0000000..2025f26 Binary files /dev/null and b/SCBAXJ/app/src/main/res/drawable/delete.png differ diff --git a/SCBAXJ/app/src/main/res/drawable/dialog_radius.xml b/SCBAXJ/app/src/main/res/drawable/dialog_radius.xml new file mode 100755 index 0000000..88f96a5 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/dialog_radius.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/edit_background.xml b/SCBAXJ/app/src/main/res/drawable/edit_background.xml new file mode 100644 index 0000000..9cefe49 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/edit_background.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/edit_bg.xml b/SCBAXJ/app/src/main/res/drawable/edit_bg.xml new file mode 100755 index 0000000..b494d9f --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/edit_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/edittext.xml b/SCBAXJ/app/src/main/res/drawable/edittext.xml new file mode 100755 index 0000000..f46590f --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/edittext.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/home.xml b/SCBAXJ/app/src/main/res/drawable/home.xml new file mode 100755 index 0000000..5414847 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/home.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/me.xml b/SCBAXJ/app/src/main/res/drawable/me.xml new file mode 100755 index 0000000..5066e47 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/me.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/pressed_bg_blue88.xml b/SCBAXJ/app/src/main/res/drawable/pressed_bg_blue88.xml new file mode 100755 index 0000000..f5832cc --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/pressed_bg_blue88.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/presslogout.xml b/SCBAXJ/app/src/main/res/drawable/presslogout.xml new file mode 100644 index 0000000..d761154 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/presslogout.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/presslr.xml b/SCBAXJ/app/src/main/res/drawable/presslr.xml new file mode 100755 index 0000000..9173168 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/presslr.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/radiobutton.xml b/SCBAXJ/app/src/main/res/drawable/radiobutton.xml new file mode 100755 index 0000000..46515a3 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radiobutton.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/radius.xml b/SCBAXJ/app/src/main/res/drawable/radius.xml new file mode 100755 index 0000000..07ddc9d --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_a1.xml b/SCBAXJ/app/src/main/res/drawable/radius_a1.xml new file mode 100755 index 0000000..4c1fb56 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_a1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_a2.xml b/SCBAXJ/app/src/main/res/drawable/radius_a2.xml new file mode 100755 index 0000000..10be0b5 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_a2.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_a3.xml b/SCBAXJ/app/src/main/res/drawable/radius_a3.xml new file mode 100755 index 0000000..e5b7150 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_a3.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_a4.xml b/SCBAXJ/app/src/main/res/drawable/radius_a4.xml new file mode 100755 index 0000000..3f68485 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_a4.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_b1.xml b/SCBAXJ/app/src/main/res/drawable/radius_b1.xml new file mode 100755 index 0000000..514cb42 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_b1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_b2.xml b/SCBAXJ/app/src/main/res/drawable/radius_b2.xml new file mode 100755 index 0000000..65c57ed --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_b2.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_c1.xml b/SCBAXJ/app/src/main/res/drawable/radius_c1.xml new file mode 100755 index 0000000..839feee --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_c1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_c6.xml b/SCBAXJ/app/src/main/res/drawable/radius_c6.xml new file mode 100644 index 0000000..f2e5bb4 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_c6.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_c7.xml b/SCBAXJ/app/src/main/res/drawable/radius_c7.xml new file mode 100755 index 0000000..3ae14dd --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_c7.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_d1.xml b/SCBAXJ/app/src/main/res/drawable/radius_d1.xml new file mode 100755 index 0000000..aee5efc --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_d1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_e2.xml b/SCBAXJ/app/src/main/res/drawable/radius_e2.xml new file mode 100755 index 0000000..543ecff --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_e2.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/radius_e3.xml b/SCBAXJ/app/src/main/res/drawable/radius_e3.xml new file mode 100755 index 0000000..ce8393b --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/radius_e3.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/red_dot.xml b/SCBAXJ/app/src/main/res/drawable/red_dot.xml new file mode 100755 index 0000000..eb80fcc --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/red_dot.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/selector_list_item.xml b/SCBAXJ/app/src/main/res/drawable/selector_list_item.xml new file mode 100755 index 0000000..24a5e0e --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/selector_list_item.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape.xml b/SCBAXJ/app/src/main/res/drawable/shape.xml new file mode 100755 index 0000000..9159133 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape_bottom_corner.xml b/SCBAXJ/app/src/main/res/drawable/shape_bottom_corner.xml new file mode 100644 index 0000000..d5e525a --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape_bottom_corner.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape_corner.xml b/SCBAXJ/app/src/main/res/drawable/shape_corner.xml new file mode 100755 index 0000000..a9575a0 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape_corner.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape_dialog_bg.xml b/SCBAXJ/app/src/main/res/drawable/shape_dialog_bg.xml new file mode 100755 index 0000000..f9012f4 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape_dialog_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape_edit_dialog_bg.xml b/SCBAXJ/app/src/main/res/drawable/shape_edit_dialog_bg.xml new file mode 100644 index 0000000..097c39d --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape_edit_dialog_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/shape_edittext.xml b/SCBAXJ/app/src/main/res/drawable/shape_edittext.xml new file mode 100755 index 0000000..7bbb6c5 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/shape_edittext.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/SCBAXJ/app/src/main/res/drawable/text_red_circ.xml b/SCBAXJ/app/src/main/res/drawable/text_red_circ.xml new file mode 100755 index 0000000..57dfb60 --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/text_red_circ.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/drawable/textstatus1.xml b/SCBAXJ/app/src/main/res/drawable/textstatus1.xml new file mode 100644 index 0000000..bc038be --- /dev/null +++ b/SCBAXJ/app/src/main/res/drawable/textstatus1.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/layout/acticity_mainaqjc.xml b/SCBAXJ/app/src/main/res/layout/acticity_mainaqjc.xml new file mode 100755 index 0000000..76e1c42 --- /dev/null +++ b/SCBAXJ/app/src/main/res/layout/acticity_mainaqjc.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/SCBAXJ/app/src/main/res/layout/activity_aqjclb.xml b/SCBAXJ/app/src/main/res/layout/activity_aqjclb.xml new file mode 100755 index 0000000..bdb8972 --- /dev/null +++ b/SCBAXJ/app/src/main/res/layout/activity_aqjclb.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/SCBAXJ/app/src/main/res/layout/activity_aqjclbinfo.xml b/SCBAXJ/app/src/main/res/layout/activity_aqjclbinfo.xml new file mode 100755 index 0000000..010ad1d --- /dev/null +++ b/SCBAXJ/app/src/main/res/layout/activity_aqjclbinfo.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +