Daily upate
authorsnickersun <scy@incartech.cn>
Fri, 3 Jan 2020 12:54:09 +0000 (20:54 +0800)
committersnickersun <scy@incartech.cn>
Fri, 3 Jan 2020 12:54:09 +0000 (20:54 +0800)
71 files changed:
.gradle/2.14.1/taskArtifacts/cache.properties.lock
.gradle/2.14.1/taskArtifacts/fileHashes.bin
.gradle/2.14.1/taskArtifacts/fileSnapshots.bin
.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin
.gradle/2.14.1/taskArtifacts/taskArtifacts.bin
.gradle/5.4.1/fileChanges/last-build.bin [new file with mode: 0644]
.gradle/5.4.1/fileHashes/fileHashes.bin [new file with mode: 0644]
.gradle/5.4.1/fileHashes/fileHashes.lock [new file with mode: 0644]
.gradle/5.4.1/gc.properties [new file with mode: 0644]
.gradle/buildOutputCleanup/buildOutputCleanup.lock [new file with mode: 0644]
.gradle/buildOutputCleanup/cache.properties [new file with mode: 0644]
.gradle/buildOutputCleanup/outputFiles.bin [new file with mode: 0644]
.gradle/vcs-1/gc.properties [new file with mode: 0644]
.idea/caches/build_file_checksums.ser
.idea/libraries/Gradle__com_android_support_support_annotations_25_1_0_jar.xml
.idea/workspace.xml
app/src/main/java/com/ic/protocol/GSensorListener.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/ICContentProvider.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/LocationClient.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/MySqlitOpenHelper.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/NMEAListener.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/adapter/LBSHelper.java
app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java
app/src/main/java/com/ic/protocol/bean/Alarm.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Antioff.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Contact.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Content.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Locations.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/NoticeContent.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/NotificationParam.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/PictureContent.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Runtime.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Silent.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/StepCount.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/StheartRate.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/StringMessage.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Weather.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/deviceStatus.java
app/src/main/java/com/ic/protocol/service/KeepAlive.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/SendChatMessage.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/SilentManager.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/UpLoadDataPoints.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/base/AbstractConnectionService.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/base/AbstractInvokeHandlerService.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/base/BaseService.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/base/ConnectionService.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/base/InvokeHandlerService.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/connectionServer.java
app/src/main/java/com/ic/protocol/service/protocolMainServer.java
app/src/main/java/com/ic/protocol/utils/AlarmHelper.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/BatteryUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/CellInfoUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/Connection.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ConnectionListener.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ContextProxy.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/DBHelper.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/FileCache.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/FileOutputUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ICLog.java [deleted file]
app/src/main/java/com/ic/protocol/utils/Logger.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/NettyConnection.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/NetworkObservable.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ServiceUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/SharPreferenceUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/TimeUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/Util.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/WakeLockUtil.java [new file with mode: 0644]
local.properties

index b37d819..75ab08d 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/cache.properties.lock and b/.gradle/2.14.1/taskArtifacts/cache.properties.lock differ
index e37426f..3547bfa 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileHashes.bin and b/.gradle/2.14.1/taskArtifacts/fileHashes.bin differ
index 554eedc..ada2137 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin differ
index 7a8dc8f..a8e485b 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin differ
index 8c51fad..eb4948b 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin and b/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin differ
diff --git a/.gradle/5.4.1/fileChanges/last-build.bin b/.gradle/5.4.1/fileChanges/last-build.bin
new file mode 100644 (file)
index 0000000..f76dd23
Binary files /dev/null and b/.gradle/5.4.1/fileChanges/last-build.bin differ
diff --git a/.gradle/5.4.1/fileHashes/fileHashes.bin b/.gradle/5.4.1/fileHashes/fileHashes.bin
new file mode 100644 (file)
index 0000000..3b2f4eb
Binary files /dev/null and b/.gradle/5.4.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/5.4.1/fileHashes/fileHashes.lock b/.gradle/5.4.1/fileHashes/fileHashes.lock
new file mode 100644 (file)
index 0000000..c749404
Binary files /dev/null and b/.gradle/5.4.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/5.4.1/gc.properties b/.gradle/5.4.1/gc.properties
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644 (file)
index 0000000..7154b86
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644 (file)
index 0000000..11401a2
--- /dev/null
@@ -0,0 +1,2 @@
+#Thu Jan 02 23:05:28 CST 2020\r
+gradle.version=5.4.1\r
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644 (file)
index 0000000..e67f89b
Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644 (file)
index 0000000..e69de29
index 6b5012b..80b5e47 100644 (file)
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
index 0b4a8e6..6d92bf1 100644 (file)
@@ -1,16 +1,16 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-annotations:25.1.0@jar">\r
     <ANNOTATIONS>\r
-      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-annotations.zip!/" />\r
+      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-annotations.zip!/" />\r
     </ANNOTATIONS>\r
     <CLASSES>\r
-      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0.jar!/" />\r
+      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0.jar!/" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-sources.jar!/" />\r
+      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.1.0/support-annotations-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 5324a42..f50cdb1 100644 (file)
   </component>
   <component name="ChangeListManager">
     <list default="true" id="3cab4ae3-9bca-4cb9-b7a2-2861bcc36b52" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_multidex_1_0_1_aar.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_multidex_instrumentation_1_0_1_aar.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Config.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/location.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/serverStatus.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/simStatus.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/stepCounter.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/cache.properties.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/cache.properties.lock" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileHashes.bin" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/caches/build_file_checksums.ser" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/caches/build_file_checksums.ser" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/caches/gradle_models.ser" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/caches/gradle_models.ser" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/gradle.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/gradle.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_1_0_aar.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_annotations_25_1_0_jar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_annotations_25_1_0_jar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_compat_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_compat_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_ui_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_ui_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_utils_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_utils_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_fragment_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_fragment_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_media_compat_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_media_compat_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_1_0_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_1_0_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle__io_reactivex_rxjava_1_1_0_jar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle__io_reactivex_rxjava_1_1_0_jar.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/app.iml" beforeDir="false" afterPath="$PROJECT_DIR$/app/app.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/RxSocket.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/RxSocket.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/icsupport.iml" beforeDir="false" afterPath="$PROJECT_DIR$/icsupport.iml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/local.properties" beforeDir="false" afterPath="$PROJECT_DIR$/local.properties" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -69,7 +37,7 @@
   <component name="DefaultGradleProjectSettings">
     <option name="isMigrated" value="true" />
   </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="C41_API_19" />
+  <component name="ExecutionTargetManager" SELECTED_TARGET="860320002040898" />
   <component name="ExternalProjectsData">
     <projectState path="$PROJECT_DIR$">
       <ProjectState />
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java">
+        <entry file="file://$PROJECT_DIR$/app/build.gradle">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="512">
-              <caret line="65" column="79" lean-forward="true" selection-start-line="65" selection-start-column="79" selection-end-line="65" selection-end-column="79" />
+            <state relative-caret-position="225">
+              <caret line="73" column="1" selection-start-line="73" selection-start-column="1" selection-end-line="73" selection-end-column="1" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
-          <provider editor-type-id="android-manifest" />
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="206">
-              <caret line="84" selection-start-line="84" selection-end-line="84" />
+            <state relative-caret-position="329">
+              <caret line="343" column="66" lean-forward="true" selection-start-line="343" selection-start-column="66" selection-end-line="343" selection-end-column="66" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#40366#40367#0" expanded="true" />
+                <element signature="e#40402#40403#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/GSensorListener.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="76">
-              <caret line="4" selection-start-line="4" selection-end-line="4" />
+            <state relative-caret-position="-722">
+              <caret line="20" column="13" selection-start-line="20" selection-start-column="13" selection-end-line="20" selection-end-column="13" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICContentProvider.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="45">
-              <caret line="226" lean-forward="true" selection-start-line="226" selection-end-line="226" />
-              <folding>
-                <element signature="imports" expanded="true" />
-                <element signature="e#4370#4371#0" expanded="true" />
-                <element signature="e#4404#4405#0" expanded="true" />
-                <element signature="e#4448#4449#0" expanded="true" />
-                <element signature="e#4482#4483#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="228">
+              <caret line="340" column="35" lean-forward="true" selection-start-line="340" selection-start-column="35" selection-end-line="340" selection-end-column="35" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/BatteryUtil.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="66">
-              <caret line="52" column="20" selection-start-line="52" selection-start-column="20" selection-end-line="52" selection-end-column="20" />
+            <state relative-caret-position="211">
+              <caret line="84" column="28" selection-start-line="84" selection-start-column="28" selection-end-line="84" selection-end-column="28" />
               <folding>
-                <element signature="e#616#617#0" expanded="true" />
-                <element signature="e#633#634#0" expanded="true" />
-                <element signature="e#683#684#0" expanded="true" />
-                <element signature="e#706#707#0" expanded="true" />
-                <element signature="e#756#757#0" expanded="true" />
-                <element signature="e#780#781#0" expanded="true" />
-                <element signature="e#815#816#0" expanded="true" />
-                <element signature="e#842#843#0" expanded="true" />
-                <element signature="e#875#876#0" expanded="true" />
-                <element signature="e#899#900#0" expanded="true" />
-                <element signature="e#936#937#0" expanded="true" />
-                <element signature="e#960#961#0" expanded="true" />
-                <element signature="e#1000#1001#0" expanded="true" />
-                <element signature="e#1024#1025#0" expanded="true" />
+                <element signature="imports" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java">
+        <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/AlarmManager.class">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="114">
-              <caret line="6" selection-start-line="6" selection-end-line="6" />
+            <state relative-caret-position="205">
+              <caret line="48" column="25" selection-start-line="48" selection-start-column="25" selection-end-line="48" selection-end-column="25" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-5811">
-              <caret line="38" column="25" selection-start-line="38" selection-start-column="19" selection-end-line="38" selection-end-column="25" />
+            <state relative-caret-position="335">
+              <caret line="204" column="39" selection-start-line="204" selection-start-column="39" selection-end-line="204" selection-end-column="39" />
               <folding>
                 <element signature="imports" expanded="true" />
-                <element signature="e#284#285#0" expanded="true" />
-                <element signature="e#311#312#0" expanded="true" />
-                <element signature="e#4616#4617#0" expanded="true" />
-                <element signature="e#4650#4651#0" expanded="true" />
-                <element signature="e#4703#4704#0" expanded="true" />
-                <element signature="e#4737#4738#0" expanded="true" />
-                <element signature="e#5465#5466#0" expanded="true" />
-                <element signature="e#5503#5504#0" expanded="true" />
-                <element signature="e#7031#7179#0" expanded="true" />
-                <element signature="e#7178#7179#0" expanded="true" />
-                <element signature="e#7956#7957#0" expanded="true" />
-                <element signature="e#7983#7984#0" expanded="true" />
-                <element signature="e#8316#10445#0" expanded="true" />
-                <element signature="e#10444#10445#0" expanded="true" />
-                <element signature="e#10918#10919#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://E:/Android/sdk/sources/android-19/android/app/ActivityThread.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/DeviceStatus.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="128">
-              <caret line="1455" selection-start-line="1455" selection-end-line="1455" />
+            <state relative-caret-position="171">
+              <caret line="11" selection-start-line="11" selection-end-line="11" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://E:/Android/sdk/sources/android-19/android/os/Handler.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="288">
-              <caret line="103" selection-start-line="103" selection-end-line="103" />
+            <state relative-caret-position="525">
+              <caret line="594" column="33" selection-start-line="594" selection-start-column="33" selection-end-line="594" selection-end-column="33" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="19">
-              <caret line="1" column="44" selection-start-line="1" selection-start-column="44" selection-end-line="1" selection-end-column="44" />
+            <state relative-caret-position="246">
+              <caret line="319" selection-start-line="319" selection-end-line="319" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       <find>handleCmd</find>
       <find>&quot;,&quot;</find>
       <find>handleBP28</find>
+      <find>setSignalStrength</find>
+      <find>imei</find>
+      <find>getCurrentCellInfo</find>
+      <find>setCurrentCellInfo</find>
+      <find>setMccAndMnc</find>
+      <find>onCreate</find>
+      <find>TAG</find>
+      <find>ServerHandler</find>
     </findStrings>
     <replaceStrings>
       <replace>CMDSPLIT</replace>
+      <replace>Logger</replace>
     </replaceStrings>
   </component>
   <component name="Git.Settings">
         <option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/DeviceStatus.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/BatteryUtil.java" />
       </list>
     </option>
   </component>
             </path>
             <path>
               <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="app" type="feadf853:AndroidModuleNode" />
-              <item name="java (generated)" type="edd41e36:AndroidSourceTypeNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="app" type="feadf853:AndroidModuleNode" />
-              <item name="java (generated)" type="edd41e36:AndroidSourceTypeNode" />
-              <item name="protocol" type="cbb59c9e:AndroidPsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="app" type="feadf853:AndroidModuleNode" />
-              <item name="res" type="d4f16f75:AndroidResFolderNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="app" type="feadf853:AndroidModuleNode" />
-              <item name="res" type="d4f16f75:AndroidResFolderNode" />
-              <item name="layout" type="ddeffd01:AndroidResFolderTypeNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="app" type="feadf853:AndroidModuleNode" />
-              <item name="res" type="d4f16f75:AndroidResFolderNode" />
-              <item name="values" type="ddeffd01:AndroidResFolderTypeNode" />
+              <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" />
             </path>
           </expand>
           <select />
         </subPane>
       </pane>
-      <pane id="ProjectPane" />
       <pane id="PackagesPane" />
+      <pane id="ProjectPane" />
     </panes>
   </component>
   <component name="PropertiesComponent">
     <servers />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="1314" height="784" extended-state="6" />
-    <editor active="true" />
+    <frame x="-8" y="-8" width="1858" height="1096" extended-state="6" />
     <layout>
       <window_info id="Captures" order="0" side_tool="true" weight="0.25" />
-      <window_info content_ui="combo" id="Project" order="1" sideWeight="0.49541286" visible="true" weight="0.2200957" />
+      <window_info active="true" content_ui="combo" id="Project" order="1" sideWeight="0.49541286" visible="true" weight="0.21968855" />
       <window_info id="Structure" order="2" side_tool="true" />
       <window_info id="Favorites" order="3" sideWeight="0.5045872" side_tool="true" weight="0.3293461" />
       <window_info id="Build Variants" order="4" side_tool="true" />
       <window_info id="Designer" order="6" />
       <window_info id="Resources Explorer" order="7" />
       <window_info id="Capture Tool" order="8" />
-      <window_info anchor="bottom" id="Find" />
       <window_info anchor="bottom" id="Run" order="0" />
       <window_info anchor="bottom" id="Logcat" order="1" weight="0.5253456" />
       <window_info anchor="bottom" id="TODO" order="2" />
       <window_info anchor="bottom" id="Version Control" order="6" />
       <window_info anchor="bottom" id="Build" order="7" weight="0.33026114" />
       <window_info anchor="bottom" id="Android Profiler" order="8" />
-      <window_info anchor="right" id="Preview" />
+      <window_info anchor="bottom" id="Find" order="9" />
       <window_info anchor="right" id="Device File Explorer" order="0" side_tool="true" />
       <window_info anchor="right" id="Capture Analysis" order="1" />
       <window_info anchor="right" id="Gradle" order="2" weight="0.3293461" />
       <window_info anchor="right" id="Theme Preview" order="3" />
       <window_info anchor="right" id="Palette&#9;" order="4" />
+      <window_info anchor="right" id="Preview" order="5" />
     </layout>
   </component>
   <component name="XDebuggerManager">
           <properties />
           <option name="timeStamp" value="2" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java</url>
+          <line>336</line>
+          <properties />
+          <option name="timeStamp" value="20" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
     <watches-manager>
   <component name="editorHistoryManager">
     <entry file="file://$PROJECT_DIR$/app/build.gradle">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-842">
-          <caret line="40" column="16" selection-start-line="40" selection-start-column="16" selection-end-line="40" selection-end-column="16" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/beans.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="38">
-          <caret line="2" column="18" selection-start-line="2" selection-start-column="18" selection-end-line="2" selection-end-column="18" />
+        <state relative-caret-position="225">
+          <caret line="73" column="1" selection-start-line="73" selection-start-column="1" selection-end-line="73" selection-end-column="1" />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/beans.java" />
     <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/simStatus.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="38">
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-25/java/util/HashMap.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="127">
-          <caret line="1297" column="24" selection-start-line="1297" selection-start-column="19" selection-end-line="1297" selection-end-column="24" />
-          <folding>
-            <element signature="e#47697#47698#0" expanded="true" />
-            <element signature="e#47731#47732#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
+    <entry file="file://E:/Android/sdk/sources/android-25/java/util/HashMap.java" />
     <entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml">
       <provider selected="true" editor-type-id="android-designer2" />
       <provider editor-type-id="text-editor">
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/location.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="95">
-          <caret line="5" column="56" selection-start-line="5" selection-start-column="56" selection-end-line="5" selection-end-column="56" />
-          <folding>
-            <element signature="e#220#221#0" expanded="true" />
-            <element signature="e#244#245#0" expanded="true" />
-            <element signature="e#451#452#0" expanded="true" />
-            <element signature="e#482#483#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://E:/Android/sdk/sources/android-19/com/android/internal/os/ZygoteInit.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="294">
-          <caret line="793" selection-start-line="793" selection-end-line="793" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://E:/Android/sdk/sources/android-25/java/lang/Runtime.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-548">
-          <caret line="56" column="13" selection-start-line="56" selection-start-column="13" selection-end-line="56" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/location.java" />
+    <entry file="file://E:/Android/sdk/sources/android-19/com/android/internal/os/ZygoteInit.java" />
+    <entry file="file://E:/Android/sdk/sources/android-25/java/lang/Runtime.java" />
     <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Config.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="142">
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-25/java/lang/String.java">
+    <entry file="file://E:/Android/sdk/sources/android-25/java/lang/String.java" />
+    <entry file="file://E:/Android/sdk/sources/android-19/android/app/ActivityThread.java" />
+    <entry file="file://E:/Android/sdk/sources/android-19/android/os/Handler.java" />
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="512">
+          <caret line="65" column="79" lean-forward="true" selection-start-line="65" selection-start-column="79" selection-end-line="65" selection-end-column="79" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="76">
+          <caret line="4" selection-start-line="4" selection-end-line="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java" />
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="525">
+          <caret line="594" column="33" selection-start-line="594" selection-start-column="33" selection-end-line="594" selection-end-column="33" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1066">
-          <caret line="2366" column="18" selection-start-line="2366" selection-start-column="18" selection-end-line="2366" selection-end-column="18" />
+        <state relative-caret-position="335">
+          <caret line="204" column="39" selection-start-line="204" selection-start-column="39" selection-end-line="204" selection-end-column="39" />
           <folding>
-            <element signature="e#94423#94424#0" expanded="true" />
-            <element signature="e#94461#94462#0" expanded="true" />
+            <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-19/android/app/ActivityThread.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/DeviceStatus.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="128">
-          <caret line="1455" selection-start-line="1455" selection-end-line="1455" />
+        <state relative-caret-position="171">
+          <caret line="11" selection-start-line="11" selection-end-line="11" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-19/android/os/Handler.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
-          <caret line="103" selection-start-line="103" selection-end-line="103" />
+        <state relative-caret-position="246">
+          <caret line="319" selection-start-line="319" selection-end-line="319" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java">
+    <entry file="file://$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/AlarmManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="512">
-          <caret line="65" column="79" lean-forward="true" selection-start-line="65" selection-start-column="79" selection-end-line="65" selection-end-column="79" />
+        <state relative-caret-position="205">
+          <caret line="48" column="25" selection-start-line="48" selection-start-column="25" selection-end-line="48" selection-end-column="25" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/UpLoadDataPoints.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="76">
-          <caret line="4" selection-start-line="4" selection-end-line="4" />
+        <state relative-caret-position="2755">
+          <caret line="145" column="18" selection-start-line="145" selection-start-column="18" selection-end-line="145" selection-end-column="18" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ICLog.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/BatteryUtil.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="114">
-          <caret line="6" selection-start-line="6" selection-end-line="6" />
+        <state relative-caret-position="211">
+          <caret line="84" column="28" selection-start-line="84" selection-start-column="28" selection-end-line="84" selection-end-column="28" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/deviceStatus.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="66">
-          <caret line="52" column="20" selection-start-line="52" selection-start-column="20" selection-end-line="52" selection-end-column="20" />
+        <state relative-caret-position="329">
+          <caret line="343" column="66" lean-forward="true" selection-start-line="343" selection-start-column="66" selection-end-line="343" selection-end-column="66" />
           <folding>
-            <element signature="e#616#617#0" expanded="true" />
-            <element signature="e#633#634#0" expanded="true" />
-            <element signature="e#683#684#0" expanded="true" />
-            <element signature="e#706#707#0" expanded="true" />
-            <element signature="e#756#757#0" expanded="true" />
-            <element signature="e#780#781#0" expanded="true" />
-            <element signature="e#815#816#0" expanded="true" />
-            <element signature="e#842#843#0" expanded="true" />
-            <element signature="e#875#876#0" expanded="true" />
-            <element signature="e#899#900#0" expanded="true" />
-            <element signature="e#936#937#0" expanded="true" />
-            <element signature="e#960#961#0" expanded="true" />
-            <element signature="e#1000#1001#0" expanded="true" />
-            <element signature="e#1024#1025#0" expanded="true" />
+            <element signature="imports" expanded="true" />
+            <element signature="e#40366#40367#0" expanded="true" />
+            <element signature="e#40402#40403#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Locations.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="226" lean-forward="true" selection-start-line="226" selection-end-line="226" />
+        <state relative-caret-position="589">
+          <caret line="31" selection-start-line="31" selection-end-line="31" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#4370#4371#0" expanded="true" />
-            <element signature="e#4404#4405#0" expanded="true" />
-            <element signature="e#4448#4449#0" expanded="true" />
-            <element signature="e#4482#4483#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/GSensorListener.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-5811">
-          <caret line="38" column="25" selection-start-line="38" selection-start-column="19" selection-end-line="38" selection-end-column="25" />
+        <state relative-caret-position="-722">
+          <caret line="20" column="13" selection-start-line="20" selection-start-column="13" selection-end-line="20" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="753">
+          <caret line="383" column="5" selection-start-line="383" selection-start-column="5" selection-end-line="383" selection-end-column="5" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#284#285#0" expanded="true" />
-            <element signature="e#311#312#0" expanded="true" />
-            <element signature="e#4616#4617#0" expanded="true" />
-            <element signature="e#4650#4651#0" expanded="true" />
-            <element signature="e#4703#4704#0" expanded="true" />
-            <element signature="e#4737#4738#0" expanded="true" />
-            <element signature="e#5465#5466#0" expanded="true" />
-            <element signature="e#5503#5504#0" expanded="true" />
-            <element signature="e#7031#7179#0" expanded="true" />
-            <element signature="e#7178#7179#0" expanded="true" />
-            <element signature="e#7956#7957#0" expanded="true" />
-            <element signature="e#7983#7984#0" expanded="true" />
-            <element signature="e#8316#10445#0" expanded="true" />
-            <element signature="e#10444#10445#0" expanded="true" />
-            <element signature="e#10918#10919#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICContentProvider.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="228">
+          <caret line="340" column="35" lean-forward="true" selection-start-line="340" selection-start-column="35" selection-end-line="340" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>
\ No newline at end of file
diff --git a/app/src/main/java/com/ic/protocol/GSensorListener.java b/app/src/main/java/com/ic/protocol/GSensorListener.java
new file mode 100644 (file)
index 0000000..93d75c6
--- /dev/null
@@ -0,0 +1,184 @@
+package com.ic.protocol;\r
+\r
+import android.annotation.SuppressLint;\r
+import android.content.Context;\r
+import android.hardware.Sensor;\r
+import android.hardware.SensorEvent;\r
+import android.hardware.SensorEventListener;\r
+import android.hardware.SensorManager;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.utils.CellInfoUtil;\r
+import com.ic.protocol.utils.FileOutputUtil;\r
+import com.ic.protocol.utils.Logger;\r
+\r
+import java.util.Timer;\r
+import java.util.TimerTask;\r
+\r
+public class GSensorListener implements SensorEventListener {\r
+  private static final String MY_WAKE_LOCKTAG = "MyWakelockTag_GSensorListener";\r
+  \r
+  public static boolean getStepCountOver = false;\r
+  \r
+  private int CURRENT_STEP;\r
+  \r
+  private int anti_off;\r
+  \r
+  private int haveAddAntiOffCount = -1;\r
+  \r
+  private boolean isFirstSendAntiOff = true;\r
+  \r
+  boolean isReceivedFirstValue;\r
+  \r
+  private Context mContext;\r
+  \r
+  Handler mHandler = new Handler() {\r
+      public void handleMessage(Message msg) {\r
+        super.handleMessage(msg);\r
+        if (msg.what != 100)\r
+          return; \r
+        GSensorListener.this.sensorManager.unregisterListener(GSensorListener.this);\r
+        int i = 0;//EqcAlgorithmNative.native_EqcAlgorithm_Gsensor_get_step();\r
+//        GSensorListener (GSensorListener.this, i);\r
+        StringBuilder stringBuilder1 = new StringBuilder();\r
+        stringBuilder1.append("CURRENT_STEP =");\r
+        stringBuilder1.append(GSensorListener.this.CURRENT_STEP);\r
+        Logger.i(stringBuilder1.toString());\r
+        GSensorListener.this.sendAntiOff(GSensorListener.this.CURRENT_STEP);\r
+//        GSensorListener.access$302(GSensorListener.this, 0);\r
+//        EqcAlgorithmNative.native_EqcAlgorithmMethod6(0.0F, 0.0F, 0.0F, GSensorListener.this.CURRENT_STEP);\r
+        Context context = GSensorListener.this.mContext;\r
+        StringBuilder stringBuilder2 = new StringBuilder();\r
+        stringBuilder2.append("CURRENT_STEP=");\r
+        stringBuilder2.append(GSensorListener.this.CURRENT_STEP);\r
+        FileOutputUtil.fileOutput(context, "CURRENT_STEP", stringBuilder2.toString());\r
+//        GSensorListener.access$502(GSensorListener.this, null);\r
+        GSensorListener.this.releaseWakeLock(GSensorListener.this.mWakeLock);\r
+      }\r
+    };\r
+  \r
+  private TimerTask mMyTimerTask;\r
+  \r
+  private Timer mTimer;\r
+  \r
+  private PowerManager.WakeLock mWakeLock;\r
+  \r
+  private SensorManager sensorManager;\r
+  \r
+  static  {\r
+  \r
+  }\r
+  \r
+  public GSensorListener(SensorManager paramSensorManager, Context context, Runtime dev) {\r
+    this.sensorManager = paramSensorManager;\r
+    this.mContext = context;\r
+  }\r
+  \r
+  private void releaseWakeLock(PowerManager.WakeLock paramWakeLock) {\r
+    if (paramWakeLock == null) {\r
+      Logger.i("Gsensor 没有加锁");\r
+      return;\r
+    }\r
+\r
+\r
+    if (CellInfoUtil.getCellInfoOver) {\r
+      if (paramWakeLock.isHeld()) {\r
+        CellInfoUtil.getCellInfoOver = false;\r
+        getStepCountOver = false;\r
+        paramWakeLock.release();\r
+        return;\r
+      } \r
+    } else {\r
+      getStepCountOver = true;\r
+    } \r
+  }\r
+  \r
+  private void sendAntiOff(int paramInt) {}\r
+  \r
+  public int getStepCount() { return this.CURRENT_STEP; }\r
+  \r
+  public PowerManager.WakeLock getWakeLock() {\r
+    @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakeLock = ((PowerManager)this.mContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(1, "MyWakelockTag_GSensorListener");\r
+    wakeLock.acquire(60000L);\r
+    return wakeLock;\r
+  }\r
+  \r
+  public void onAccuracyChanged(Sensor paramSensor, int paramInt) {}\r
+  \r
+  public void onSensorChanged(SensorEvent paramSensorEvent) {\r
+    int currentStepCount;\r
+    try {\r
+      float f = paramSensorEvent.values[0];\r
+      currentStepCount = (int)f;\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      Logger.i("Exception");\r
+      currentStepCount = 0;\r
+    } \r
+    StringBuilder stringBuilder1 = new StringBuilder();\r
+    stringBuilder1.append("count =");\r
+    stringBuilder1.append(currentStepCount);\r
+    Logger.i(stringBuilder1.toString());\r
+    int step = 0;//EqcAlgorithmNative.native_EqcAlgorithm_Gsensor_get_step();\r
+    if (step == this.CURRENT_STEP && !this.isReceivedFirstValue) {\r
+      this.isReceivedFirstValue = true;\r
+      return;\r
+    } \r
+    if (this.mTimer != null) {\r
+      this.mTimer.cancel();\r
+      this.mTimer.purge();\r
+      this.mTimer = null;\r
+    } \r
+//    sendAntiOff(i);\r
+    this.haveAddAntiOffCount = 0;\r
+    this.CURRENT_STEP = step;\r
+//    EqcAlgorithmNative.native_EqcAlgorithmMethod6(0.0F, 0.0F, 0.0F, this.CURRENT_STEP);\r
+    Context context = this.mContext;\r
+    StringBuilder stringBuilder2 = new StringBuilder();\r
+    stringBuilder2.append("CURRENT_STEP=");\r
+    stringBuilder2.append(this.CURRENT_STEP);\r
+    FileOutputUtil.fileOutput(context, "CURRENT_STEP", stringBuilder2.toString());\r
+    this.sensorManager.unregisterListener(this);\r
+    releaseWakeLock(this.mWakeLock);\r
+  }\r
+  \r
+  public void startListen(PowerManager.WakeLock paramWakeLock) {\r
+    this.mWakeLock = paramWakeLock;\r
+    if (this.haveAddAntiOffCount == 1)\r
+      sendAntiOff(this.CURRENT_STEP); \r
+    this.haveAddAntiOffCount = 1;\r
+    this.isReceivedFirstValue = false;\r
+    (new Thread(new Runnable() {\r
+          public void run() {\r
+            StringBuilder stringBuilder = new StringBuilder();\r
+            stringBuilder.append("registerListener sensorManager=");\r
+            stringBuilder.append(GSensorListener.this.sensorManager);\r
+            Logger.i(stringBuilder.toString());\r
+            GSensorListener.this.sensorManager.registerListener(GSensorListener.this, GSensorListener.this.sensorManager.getDefaultSensor(19), 0);\r
+          }\r
+        })).start();\r
+    if (this.mTimer == null)\r
+      this.mTimer = new Timer(); \r
+    if (this.mMyTimerTask != null)\r
+      this.mMyTimerTask.cancel(); \r
+    class MyTimerTask extends TimerTask {\r
+      public void run() { GSensorListener.this.mHandler.sendEmptyMessage(100); }\r
+    };\r
+    this.mMyTimerTask = new MyTimerTask();\r
+    this.mTimer.schedule(this.mMyTimerTask, 2000L);\r
+  }\r
+  \r
+  public void stopListen() {\r
+    this.sensorManager.unregisterListener(this);\r
+    if (this.mTimer != null) {\r
+      this.mTimer.cancel();\r
+      this.mTimer.purge();\r
+      this.mTimer = null;\r
+    } \r
+    releaseWakeLock(this.mWakeLock);\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/ICContentProvider.java b/app/src/main/java/com/ic/protocol/ICContentProvider.java
new file mode 100644 (file)
index 0000000..0c02ccc
--- /dev/null
@@ -0,0 +1,921 @@
+package com.ic.protocol;\r
+\r
+import android.content.ContentProvider;\r
+import android.content.ContentUris;\r
+import android.content.ContentValues;\r
+import android.content.UriMatcher;\r
+import android.database.Cursor;\r
+import android.database.sqlite.SQLiteDatabase;\r
+import android.net.Uri;\r
+import android.support.annotation.NonNull;\r
+import android.support.annotation.Nullable;\r
+\r
+import java.util.logging.Logger;\r
+\r
+public class ICContentProvider extends ContentProvider {\r
+  private static final int ALARM = 5;\r
+  \r
+  private static final int ALARM_ITEM = 6;\r
+  \r
+  private static final String ALARM_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.alarm";\r
+  \r
+  private static final String ALARM_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.alarm";\r
+  \r
+  private static final String ALARM_TABLE_NAME = "ALARM";\r
+  \r
+  public static final Uri ALARM_URI;\r
+  \r
+  private static final int ANTIOFF = 19;\r
+  \r
+  private static final int ANTIOFF_ITEM = 20;\r
+  \r
+  private static final String ANTIOFF_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.antioff";\r
+  \r
+  private static final String ANTIOFF_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.antioff";\r
+  \r
+  private static final String ANTIOFF_TABLE_NAME = "ANTIOFF";\r
+  \r
+  public static final Uri ANTIOFF_URI;\r
+  \r
+  private static final int CONTACT = 1;\r
+  \r
+  private static final int CONTACT_ITEM = 2;\r
+  \r
+  private static final String CONTACT_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.contact";\r
+  \r
+  private static final String CONTACT_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.contact";\r
+  \r
+  private static final String CONTACT_TABLE_NAME = "CONTACT";\r
+  \r
+  public static final Uri CONTACT_URI;\r
+  \r
+  private static final int DEVICESTATUS = 15;\r
+  \r
+  private static final String DEVICESTATUS_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.deviceStatus";\r
+  \r
+  private static final String DEVICESTATUS_TABLE_NAME = "DEVICESTATUS";\r
+  \r
+  public static final Uri DEVICESTATUS_URL;\r
+  \r
+  private static final int DOWNLOADINFO = 16;\r
+  \r
+  private static final int DOWNLOADINFO_ITEM = 17;\r
+  \r
+  private static final String DOWNLOADINFO_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.downloadInfo";\r
+  \r
+  private static final String DOWNLOADINFO_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.downloadInfo";\r
+  \r
+  private static final String DOWNLOADINFO_TABLE_NAME = "DOWNLOADINFO";\r
+  \r
+  public static final Uri DOWNLOADINFO_URL;\r
+  \r
+  private static final int IKNOWLEDGE = 9;\r
+  \r
+  private static final String IKNOWLEDGE_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.iKnowledge";\r
+  \r
+  private static final String IKNOWLEDGE_TABLE_NAME = "IKNOWLEDGE";\r
+  \r
+  public static final Uri IKNOWLEDGE_URL;\r
+  \r
+  private static final int MESSAGE = 3;\r
+  \r
+  private static final int MESSAGE_ITEM = 4;\r
+  \r
+  private static final String MESSAGE_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.message";\r
+  \r
+  private static final String MESSAGE_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.message";\r
+  \r
+  private static final String MESSAGE_TABLE_NAME = "MESSAGE";\r
+  \r
+  public static final Uri MESSAGE_URI;\r
+  \r
+  private static final int NOTICE = 12;\r
+  \r
+  private static final int NOTICE_ITEM = 13;\r
+  \r
+  private static final String NOTICE_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.notice";\r
+  \r
+  private static final String NOTICE_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.notice";\r
+  \r
+  private static final String NOTICE_TABLE_NAME = "NOTICE";\r
+  \r
+  public static final Uri NOTICE_URL;\r
+  \r
+  private static final int SILENT = 7;\r
+  \r
+  private static final int SILENT_ITEM = 8;\r
+  \r
+  private static final String SILENT_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.silent";\r
+  \r
+  private static final String SILENT_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.silent";\r
+  \r
+  private static final String SILENT_TABLE_NAME = "SILENT";\r
+  \r
+  public static final Uri SILENT_URI;\r
+  \r
+  private static final int STHEART_RATE = 18;\r
+  \r
+  private static final String STHEART_RATE_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.stheartRate";\r
+  \r
+  private static final String STHEART_RATE_TABLE_NAME = "STHEART_RATE";\r
+  \r
+  public static final Uri STHEART_RATE_URL;\r
+  \r
+  private static final int UNREADMSG = 21;\r
+  \r
+  private static final String UNREADMSG_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.unreadMsg";\r
+  \r
+  private static final String UNREADMSG_TABLE_NAME = "UNREADMSG";\r
+  \r
+  public static final Uri UNREAD_MSG_URI = (ANTIOFF_URI = (STHEART_RATE_URL = (DOWNLOADINFO_URL = (DEVICESTATUS_URL = (WEATHER_URL = (NOTICE_URL = (URLDOWNLOADPIC_URL = (IKNOWLEDGE_URL = (SILENT_URI = (ALARM_URI = (MESSAGE_URI = (CONTACT_URI = Uri.parse("content://com.enqualcomm.support/contact")).parse("content://com.enqualcomm.support/message")).parse("content://com.enqualcomm.support/alarm")).parse("content://com.enqualcomm.support/silent")).parse("content://com.enqualcomm.support/iKnowledge")).parse("content://com.enqualcomm.support/urlDownloadPic")).parse("content://com.enqualcomm.support/notice")).parse("content://com.enqualcomm.support/weather")).parse("content://com.enqualcomm.support/deviceStatus")).parse("content://com.enqualcomm.support/downloadInfo")).parse("content://com.enqualcomm.support/stheartRate")).parse("content://com.enqualcomm.support/antioff")).parse("content://com.enqualcomm.support/unreadMsg");\r
+  \r
+  private static final UriMatcher URI_MATCHER = new UriMatcher(-1);\r
+  \r
+  private static final int URLDOWNLOADPIC = 10;\r
+  \r
+  private static final int URLDOWNLOADPIC_ITEM = 11;\r
+  \r
+  private static final String URLDOWNLOADPIC_ITEM_MIME = "vnd.android.cursor.item/vnd.com.enqualcomm.support.urlDownloadPic";\r
+  \r
+  private static final String URLDOWNLOADPIC_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.urlDownloadPic";\r
+  \r
+  private static final String URLDOWNLOADPIC_TABLE_NAME = "URLDOWNLOADPIC";\r
+  \r
+  public static final Uri URLDOWNLOADPIC_URL;\r
+  \r
+  private static final int WEATHER = 14;\r
+  \r
+  private static final String WEATHER_MIME = "vnd.android.cursor.dir/vnd.com.enqualcomm.support.weather";\r
+  \r
+  private static final String WEATHER_TABLE_NAME = "WEATHER";\r
+  \r
+  public static final Uri WEATHER_URL;\r
+  \r
+  private SQLiteDatabase db;\r
+  \r
+  static  {\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "contact", 1);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "contact/#", 2);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "message", 3);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "message/#", 4);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "alarm", 5);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "alarm/#", 6);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "silent", 7);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "silent/#", 8);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "iKnowledge", 9);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "urlDownloadPic", 10);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "urlDownloadPic/#", 11);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "notice", 12);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "notice/#", 13);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "weather", 14);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "deviceStatus", 15);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "downloadInfo", 16);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "downloadInfo/#", 17);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "stheartRate", 18);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "antioff", 19);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "antioff/#", 20);\r
+    URI_MATCHER.addURI("com.enqualcomm.support", "unreadMsg", 21);\r
+  }\r
+  \r
+  private int bulkInsertLocale(String paramString, ContentValues[] paramArrayOfContentValues) {\r
+    this.db.beginTransaction();\r
+    try {\r
+      int i = paramArrayOfContentValues.length;\r
+      for (byte b = 0; b < i; b++) {\r
+        long l = this.db.insert(paramString, null, paramArrayOfContentValues[b]);\r
+        if (l < 0L)\r
+          return 0; \r
+      } \r
+      this.db.setTransactionSuccessful();\r
+      return paramArrayOfContentValues.length;\r
+    } finally {\r
+      this.db.endTransaction();\r
+    } \r
+  }\r
+  \r
+  public int bulkInsert(Uri paramUri, ContentValues[] paramArrayOfContentValues) {\r
+//    switch (URI_MATCHER.match(paramUri)) {\r
+//      default:\r
+//        return 0;\r
+//      case 21:\r
+//        i = bulkInsertLocale("UNREADMSG", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(UNREAD_MSG_URI, null);\r
+//        return i;\r
+//      case 19:\r
+//        i = bulkInsertLocale("ANTIOFF", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+//        return i;\r
+//      case 18:\r
+//        i = bulkInsertLocale("STHEART_RATE", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(STHEART_RATE_URL, null);\r
+//        return i;\r
+//      case 16:\r
+//        i = bulkInsertLocale("DOWNLOADINFO", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+//        return i;\r
+//      case 15:\r
+//        i = bulkInsertLocale("DEVICESTATUS", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(DEVICESTATUS_URL, null);\r
+//        return i;\r
+//      case 14:\r
+//        i = bulkInsertLocale("WEATHER", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(WEATHER_URL, null);\r
+//        return i;\r
+//      case 12:\r
+//        i = bulkInsertLocale("NOTICE", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+//        return i;\r
+//      case 10:\r
+//        i = bulkInsertLocale("URLDOWNLOADPIC", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+//        return i;\r
+//      case 9:\r
+//        i = bulkInsertLocale("IKNOWLEDGE", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(IKNOWLEDGE_URL, null);\r
+//        return i;\r
+//      case 7:\r
+//        i = bulkInsertLocale("SILENT", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+//        return i;\r
+//      case 5:\r
+//        i = bulkInsertLocale("ALARM", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+//        return i;\r
+//      case 3:\r
+//        i = bulkInsertLocale("MESSAGE", paramArrayOfContentValues);\r
+//        getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+//        return i;\r
+//      case 1:\r
+//        break;\r
+//    }\r
+//    int i = bulkInsertLocale("CONTACT", paramArrayOfContentValues);\r
+//    getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+//    return i;\r
+    return 0;\r
+  }\r
+  \r
+  public int delete(Uri paramUri, String paramString, String[] paramArrayOfString) {\r
+    long l;\r
+    int i=0,j;\r
+//    StringBuilder stringBuilder;\r
+//    SQLiteDatabase sQLiteDatabase;\r
+//    switch (URI_MATCHER.match(paramUri)) {\r
+//      default:\r
+//        return 0;\r
+//      case 21:\r
+//        j = this.db.delete("UNREADMSG", paramString, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(UNREAD_MSG_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 20:\r
+//        l = ContentUris.parseId(paramUri);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("ANTIOFF", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 19:\r
+//        j = this.db.delete("ANTIOFF", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 18:\r
+//        j = this.db.delete("STHEART_RATE", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(STHEART_RATE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 17:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("DOWNLOADINFO", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 16:\r
+//        j = this.db.delete("DOWNLOADINFO", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 15:\r
+//        j = this.db.delete("DEVICESTATUS", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DEVICESTATUS_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 14:\r
+//        j = this.db.delete("WEATHER", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(WEATHER_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 13:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("NOTICE", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 12:\r
+//        j = this.db.delete("NOTICE", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 11:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("URLDOWNLOADPIC", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 10:\r
+//        j = this.db.delete("URLDOWNLOADPIC", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 9:\r
+//        j = this.db.delete("IKNOWLEDGE", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(IKNOWLEDGE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 8:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("SILENT", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 7:\r
+//        j = this.db.delete("SILENT", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 6:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("ALARM", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 5:\r
+//        j = this.db.delete("ALARM", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 4:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("MESSAGE", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 3:\r
+//        j = this.db.delete("MESSAGE", stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 2:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.delete("CONTACT", stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 1:\r
+//        break;\r
+//    }\r
+//    int j = this.db.delete("CONTACT", stringBuilder, paramArrayOfString);\r
+//    int i = j;\r
+//    if (j != 0) {\r
+//      getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+//      i = j;\r
+//    }\r
+    return i;\r
+  }\r
+\r
+  @Override\r
+  public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {\r
+    return 0;\r
+  }\r
+\r
+  public String getType(Uri paramUri) {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(paramUri);\r
+    stringBuilder.append("==");\r
+    stringBuilder.append(URI_MATCHER.match(paramUri));\r
+//    Logger.i(stringBuilder.toString());\r
+    switch (URI_MATCHER.match(paramUri)) {\r
+      default:\r
+        return null;\r
+      case 21:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.unreadMsg";\r
+      case 20:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.antioff";\r
+      case 19:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.antioff";\r
+      case 18:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.stheartRate";\r
+      case 17:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.downloadInfo";\r
+      case 16:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.downloadInfo";\r
+      case 15:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.deviceStatus";\r
+      case 14:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.weather";\r
+      case 13:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.notice";\r
+      case 12:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.notice";\r
+      case 11:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.urlDownloadPic";\r
+      case 10:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.urlDownloadPic";\r
+      case 9:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.iKnowledge";\r
+      case 8:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.silent";\r
+      case 7:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.silent";\r
+      case 6:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.alarm";\r
+      case 5:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.alarm";\r
+      case 4:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.message";\r
+      case 3:\r
+        return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.message";\r
+      case 2:\r
+        return "vnd.android.cursor.item/vnd.com.enqualcomm.support.contact";\r
+      case 1:\r
+        break;\r
+    } \r
+    return "vnd.android.cursor.dir/vnd.com.enqualcomm.support.contact";\r
+  }\r
+  \r
+  public Uri insert(Uri paramUri, ContentValues paramContentValues) {\r
+    switch (URI_MATCHER.match(paramUri)) {\r
+      default:\r
+        return null;\r
+      case 21:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("UNREADMSG", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(UNREAD_MSG_URI, null);\r
+        return paramUri;\r
+      case 19:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("ANTIOFF", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+        return paramUri;\r
+      case 18:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("STHEART_RATE", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(STHEART_RATE_URL, null);\r
+        return paramUri;\r
+      case 16:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("DOWNLOADINFO", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+        return paramUri;\r
+      case 15:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("DEVICESTATUS", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(DEVICESTATUS_URL, null);\r
+        return paramUri;\r
+      case 14:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("WEATHER", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(WEATHER_URL, null);\r
+        return paramUri;\r
+      case 12:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("NOTICE", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+        return paramUri;\r
+      case 10:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("URLDOWNLOADPIC", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+        return paramUri;\r
+      case 9:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("IKNOWLEDGE", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(IKNOWLEDGE_URL, null);\r
+        return paramUri;\r
+      case 7:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("SILENT", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+        return paramUri;\r
+      case 5:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("ALARM", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+        return paramUri;\r
+      case 3:\r
+        paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("MESSAGE", null, paramContentValues));\r
+        getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+        return paramUri;\r
+      case 1:\r
+        break;\r
+    } \r
+    paramUri = ContentUris.withAppendedId(paramUri, this.db.insert("CONTACT", null, paramContentValues));\r
+    getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+    return paramUri;\r
+  }\r
+  \r
+  public boolean onCreate() {\r
+//    this.db = (new MySqlitOpenHelper(getContext())).getWritableDatabase();\r
+    return true;\r
+  }\r
+\r
+  @Nullable\r
+  @Override\r
+  public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {\r
+    return null;\r
+  }\r
+\r
+//  public Cursor query(Uri paramUri, String[] paramArrayOfString1, String paramString1, String[] paramArrayOfString2, String paramString2) {\r
+//    long l;\r
+//    StringBuilder stringBuilder;\r
+//    SQLiteDatabase sQLiteDatabase;\r
+//    switch (URI_MATCHER.match(paramUri)) {\r
+//      default:\r
+//        return null;\r
+//      case 21:\r
+//        return this.db.query("UNREADMSG", paramArrayOfString1, paramString1, paramArrayOfString2, null, null, paramString2);\r
+//      case 20:\r
+//        l = ContentUris.parseId(paramUri);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("ANTIOFF", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 19:\r
+//        return this.db.query("ANTIOFF", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 18:\r
+//        return this.db.query("STHEART_RATE", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 17:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("DOWNLOADINFO", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 16:\r
+//        return this.db.query("DOWNLOADINFO", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 15:\r
+//        return this.db.query("DEVICESTATUS", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 14:\r
+//        return this.db.query("WEATHER", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 13:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("NOTICE", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 12:\r
+//        return this.db.query("NOTICE", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 11:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("URLDOWNLOADPIC", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 10:\r
+//        return this.db.query("URLDOWNLOADPIC", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 9:\r
+//        return this.db.query("IKNOWLEDGE", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 8:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("SILENT", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 7:\r
+//        return this.db.query("SILENT", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 6:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("ALARM", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 5:\r
+//        return this.db.query("ALARM", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 4:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("MESSAGE", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 3:\r
+//        return this.db.query("MESSAGE", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//      case 2:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        return sQLiteDatabase.query("CONTACT", paramArrayOfString1, stringBuilder.toString(), null, null, null, null);\r
+//      case 1:\r
+//        break;\r
+//    }\r
+//    return this.db.query("CONTACT", paramArrayOfString1, stringBuilder, paramArrayOfString2, null, null, paramString2);\r
+//  }\r
+  \r
+//  public int update(Uri paramUri, ContentValues paramContentValues, String paramString, String[] paramArrayOfString) {\r
+//    long l;\r
+//    StringBuilder stringBuilder;\r
+//    SQLiteDatabase sQLiteDatabase;\r
+//    switch (URI_MATCHER.match(paramUri)) {\r
+//      default:\r
+//        return 0;\r
+//      case 21:\r
+//        j = this.db.update("UNREADMSG", paramContentValues, paramString, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(UNREAD_MSG_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 20:\r
+//        l = ContentUris.parseId(paramUri);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("ANTIOFF", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 19:\r
+//        j = this.db.update("ANTIOFF", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ANTIOFF_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 18:\r
+//        j = this.db.update("STHEART_RATE", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(STHEART_RATE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 17:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("DOWNLOADINFO", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 16:\r
+//        j = this.db.update("DOWNLOADINFO", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DOWNLOADINFO_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 15:\r
+//        j = this.db.update("DEVICESTATUS", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(DEVICESTATUS_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 14:\r
+//        j = this.db.update("WEATHER", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(WEATHER_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 13:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("NOTICE", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 12:\r
+//        j = this.db.update("NOTICE", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(NOTICE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 11:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("URLDOWNLOADPIC", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 10:\r
+//        j = this.db.update("URLDOWNLOADPIC", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(URLDOWNLOADPIC_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 9:\r
+//        j = this.db.update("IKNOWLEDGE", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(IKNOWLEDGE_URL, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 8:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("SILENT", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 7:\r
+//        j = this.db.update("SILENT", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(SILENT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 6:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("ALARM", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 5:\r
+//        j = this.db.update("ALARM", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(ALARM_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 4:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("MESSAGE", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 3:\r
+//        j = this.db.update("MESSAGE", paramContentValues, stringBuilder, paramArrayOfString);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(MESSAGE_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 2:\r
+//        l = ContentUris.parseId(sQLiteDatabase);\r
+//        sQLiteDatabase = this.db;\r
+//        stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("_id=");\r
+//        stringBuilder.append(l);\r
+//        j = sQLiteDatabase.update("CONTACT", paramContentValues, stringBuilder.toString(), null);\r
+//        i = j;\r
+//        if (j != 0) {\r
+//          getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+//          return j;\r
+//        }\r
+//        return i;\r
+//      case 1:\r
+//        break;\r
+//    }\r
+//    int j = this.db.update("CONTACT", paramContentValues, stringBuilder, paramArrayOfString);\r
+//    int i = j;\r
+//    if (j != 0) {\r
+//      getContext().getContentResolver().notifyChange(CONTACT_URI, null);\r
+//      i = j;\r
+//    }\r
+//    return i;\r
+//  }\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/LocationClient.java b/app/src/main/java/com/ic/protocol/LocationClient.java
new file mode 100644 (file)
index 0000000..0c6307d
--- /dev/null
@@ -0,0 +1,775 @@
+package com.ic.protocol;\r
+\r
+import android.annotation.SuppressLint;\r
+import android.annotation.TargetApi;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Build;\r
+import android.os.PowerManager;\r
+import android.os.SystemClock;\r
+import android.provider.Settings;\r
+\r
+import com.ic.protocol.adapter.LBSHelper;\r
+import com.ic.protocol.bean.Config;\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.protocolMainServer;\r
+import com.ic.protocol.utils.CellInfoUtil;\r
+import com.ic.protocol.utils.DeviceInfoUtil;\r
+import com.ic.protocol.utils.FileCache;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.NettyConnection;\r
+import com.ic.protocol.utils.ServiceUtil;\r
+import com.ic.protocol.utils.SharPreferenceUtil;\r
+import com.ic.protocol.utils.SimSignalUtil;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.utils.TimeUtil;\r
+\r
+import java.util.concurrent.ExecutorService;\r
+import java.util.concurrent.Executors;\r
+import java.util.concurrent.LinkedBlockingDeque;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.locks.Condition;\r
+import java.util.concurrent.locks.ReentrantLock;\r
+\r
+import rx.Single;\r
+import rx.android.schedulers.AndroidSchedulers;\r
+import rx.functions.Action1;\r
+\r
+import static android.location.LocationManager.GPS_PROVIDER;\r
+\r
+public class LocationClient {\r
+  private static final long CHANGENETMODETIME = 43200000L;\r
+  \r
+  private static final int CLOSE_AIRMODE = 0;\r
+  \r
+  private static final int IS_GPS = 0;\r
+  \r
+  private static final int IS_LBS = 2;\r
+  \r
+  private static final int IS_WIFI = 1;\r
+  \r
+  public static final String LACATION_CYCLE = "lacation_cycle";\r
+  \r
+  public static final String LACATION_MODE = "lacation_mode";\r
+  \r
+  private static final int MAX_SIZE = 50;\r
+  \r
+  private static final int OPEN_AIRMODE = 1;\r
+  \r
+  private static final int TIME_OUT = 30000;\r
+  \r
+  private static NettyConnection connection;\r
+  \r
+  private static FileCache fileCache;\r
+  \r
+  private static boolean isLocationCallBack = false;\r
+  \r
+  private static boolean linkOK = false;\r
+  \r
+  private static ReentrantLock lock = new ReentrantLock();\r
+  \r
+  private static boolean mHasWifiResult = true;\r
+  \r
+  @SuppressLint("NewApi")\r
+  public static LinkedBlockingDeque<StringMessage> queue = new LinkedBlockingDeque(50);\r
+  \r
+  private static Runtime runtime;\r
+  \r
+  private int H12StepCount;\r
+  \r
+  private boolean batteryLowNotification;\r
+  \r
+  private boolean batteryNotification;\r
+  \r
+  private String cdmaInfo;\r
+  \r
+  private ExecutorService executor = Executors.newCachedThreadPool();\r
+  \r
+  private GSensorListener gSensorListener;\r
+  \r
+  private boolean haveChanegTo4G;\r
+  \r
+  private long haveChanegTo4GTime;\r
+  \r
+  private String mCellInfo;\r
+  \r
+  Condition mCondition = this.mLock.newCondition();\r
+  \r
+  private LBSHelper mLbsHelper;\r
+  \r
+  ReentrantLock mLock = new ReentrantLock();\r
+  \r
+  private int mPedometer2;\r
+  \r
+  private SimSignalUtil mSignalUtil;\r
+  \r
+  private String mWifiInfo;\r
+  \r
+  private NMEAListener nmeaListener;\r
+  \r
+  private int preLbsCid;\r
+  \r
+  int preNetworkTypeNomber;\r
+  \r
+  private BroadcastReceiver screenOnReceiver = new BroadcastReceiver() {\r
+      public void onReceive(Context param1Context, Intent param1Intent) {\r
+        if ("android.intent.action.SCREEN_ON".equals(param1Intent.getAction())) {\r
+          LocationClient.this.mSignalUtil.setAirMode("CloseAirplane");\r
+//          EqcAlgorithmNative.native_EqcAlgorithmMethod8(0);\r
+        } \r
+      }\r
+    };\r
+  \r
+  public LocationClient(NettyConnection paramNettyConnection, Runtime paramRuntime) {\r
+    connection = paramNettyConnection;\r
+    runtime = paramRuntime;\r
+    fileCache = new FileCache(paramRuntime.getFileDir());\r
+    this.nmeaListener = new NMEAListener(paramRuntime.getContextProxy().getLocationManager(), paramRuntime);\r
+    this.gSensorListener = new GSensorListener(paramRuntime.getContextProxy().getSensorManager(), (paramRuntime.getContextProxy()).context, paramRuntime);\r
+  }\r
+  \r
+  private static StringMessage changeDelayFlag(StringMessage paramStringMessage) {\r
+    String[] arrayOfString2 = paramStringMessage.all();\r
+    if (arrayOfString2 != null) {\r
+      arrayOfString2[7] = "1";\r
+      return paramStringMessage;\r
+    } \r
+    String[] arrayOfString1 = paramStringMessage.isFromCache().split(";");\r
+    arrayOfString2 = new String[arrayOfString1.length - 1];\r
+    arrayOfString1[8] = "1";\r
+    System.arraycopy(arrayOfString1, 0, arrayOfString2, 0, arrayOfString2.length);\r
+    return new StringMessage(arrayOfString2);\r
+  }\r
+  \r
+  private static int getMinSignalStrength(int paramInt) {\r
+    byte b = -105;\r
+    switch (paramInt) {\r
+      default:\r
+        return -105;\r
+      case 2:\r
+        b = -100;\r
+        break;\r
+      case 0:\r
+      case 1:\r
+        break;\r
+    } \r
+    return b;\r
+  }\r
+  \r
+  private void handler2GTo4G() {\r
+    int i = this.mSignalUtil.getNetworkType();\r
+    int j = runtime.getSignalStrength();\r
+    long l = SystemClock.elapsedRealtime();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("networkType=");\r
+    stringBuilder.append(i);\r
+    stringBuilder.append("signalStrength=");\r
+    stringBuilder.append(j);\r
+    stringBuilder.append("haveChanegTo4G=");\r
+    stringBuilder.append(this.haveChanegTo4G);\r
+    Logger.i(stringBuilder.toString());\r
+    switch (i) {\r
+      default:\r
+        return;\r
+      case 2:\r
+        if (j < -93) {\r
+          this.mSignalUtil.changeNetWorkType("2G");\r
+          this.haveChanegTo4GTime = l;\r
+          return;\r
+        } \r
+        return;\r
+      case 0:\r
+      case 1:\r
+        break;\r
+    } \r
+    if (this.haveChanegTo4G || l - this.haveChanegTo4GTime > 43200000L) {\r
+      this.mSignalUtil.changeNetWorkType("4G");\r
+      this.haveChanegTo4G = false;\r
+      this.haveChanegTo4GTime = l;\r
+    } \r
+  }\r
+  \r
+  private void handlerH12() {\r
+    int i = this.gSensorListener.getStepCount();\r
+    this.H12StepCount = DeviceInfoUtil.getStepCount((runtime.getContextProxy()).context);\r
+//    if (i != 0 && Math.abs(this.H12StepCount - this.mPedometer2) > 1000)\r
+//      connection.send(API.H12(runtime, this.H12StepCount));\r
+  }\r
+  \r
+  private static void loadMessage2Queue() {\r
+//    byte b = 0;\r
+//    while (b < 5) {\r
+//      str = fileCache.load();\r
+//      if (str != null) {\r
+//        byte b1 = b + true;\r
+//        try {\r
+//          StringMessage stringMessage = new StringMessage(str);\r
+//          b = b1;\r
+//          if (!queue.offerLast(stringMessage)) {\r
+//            fileCache.put(str);\r
+//            b = b1;\r
+//          }\r
+//        } catch (Exception str) {\r
+//          str.printStackTrace();\r
+//          b = b1;\r
+//        }\r
+//      }\r
+//    }\r
+  }\r
+  \r
+  private void notifiSetAirModeMethod() { (new Thread(new Runnable() {\r
+          public void run() {\r
+            SystemClock.sleep(3000L);\r
+            boolean bool = LocationClient.this.mSignalUtil.IsAirModeOn();\r
+            byte b = 1;\r
+            if (bool != true)\r
+              b = 0; \r
+            StringBuilder stringBuilder = new StringBuilder();\r
+            stringBuilder.append("AirMode==");\r
+            stringBuilder.append(b);\r
+            Logger.i(stringBuilder.toString());\r
+//            EqcAlgorithmNative.native_EqcAlgorithmMethod8(b);\r
+          }\r
+        })).start(); }\r
+  \r
+  private void performAlarm(PowerManager.WakeLock paramWakeLock) {\r
+    if (!runtime.isAirMode)\r
+      CellInfoUtil.setCurrentAttachCellInfo(runtime, paramWakeLock);\r
+    sendBatteryNotification();\r
+  }\r
+  \r
+  private void performExecute(int paramInt1, int paramInt2, int paramInt3, int paramInt4, double paramDouble1, double paramDouble2, double paramDouble3, float paramFloat1, float paramFloat2, int paramInt5, float paramFloat3, long paramLong1, long paramLong2, String paramString1, String paramString2, int paramInt6, long paramLong3, int paramInt7) {\r
+//    StringBuilder stringMessage = new StringBuilder();\r
+//    stringMessage.append("定位方式= ");\r
+//    stringMessage.append(paramInt1);\r
+//    stringMessage.append("定位周期 == ");\r
+//    stringMessage.append(paramInt2);\r
+//    stringMessage.append("定位类型 == ");\r
+//    stringMessage.append(paramInt3);\r
+//    Logger.i(stringMessage.toString());\r
+//    if (paramInt1 == 0) {\r
+//      runtime.setTimestamp(paramLong1);\r
+//      runtime.setLatitude(API.formatLat(paramDouble1));\r
+//      runtime.setLongitude(API.formatLng(paramDouble2));\r
+//      if (runtime.getCdmaInfo() != null) {\r
+//        StringMessage stringMessage1 = API.H02C(runtime, paramInt2, paramInt3, paramInt4, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt5, paramFloat3, paramLong1, paramLong2, paramString1, paramString2, paramInt6, paramLong3, paramInt7);\r
+//      } else {\r
+//        StringMessage stringMessage1 = API.H02(runtime, paramInt2, paramInt3, paramInt4, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt5, paramFloat3, paramLong1, paramLong2, paramString1, paramString2, paramInt6, paramLong3, paramInt7);\r
+//      }\r
+//      try {\r
+//        LauncherCtrl.getInstance((runtime.getContextProxy()).context).setStatusBarIcon("locate_type", 1);\r
+//      } catch (Exception exception) {\r
+//        exception.printStackTrace();\r
+//      }\r
+//    } else {\r
+//      stringMessage = null;\r
+//    }\r
+//    if (paramInt1 == 1) {\r
+//      if (this.mCellInfo == null) {\r
+//        Logger.i("无基站信息");\r
+//        try {\r
+//          LauncherCtrl.getInstance((runtime.getContextProxy()).context).setStatusBarIcon("server_connected", 0);\r
+//          return;\r
+//        } catch (Exception e) {\r
+//          e.printStackTrace();\r
+//          return;\r
+//        }\r
+//      }\r
+//      try {\r
+//        LauncherCtrl.getInstance((runtime.getContextProxy()).context).setStatusBarIcon("locate_type", 3);\r
+//      } catch (Exception e) {\r
+//        e.printStackTrace();\r
+//      }\r
+//      if (runtime.getCdmaInfo() != null) {\r
+//        StringMessage stringMessage1 = API.H14C(runtime, this.mWifiInfo, this.cdmaInfo, paramInt2, paramInt3, paramLong2, paramString1, paramString2, paramLong3);\r
+//      } else {\r
+//        StringMessage stringMessage1 = API.H14(runtime, this.mWifiInfo, this.mCellInfo, paramInt2, paramInt3, paramLong2, paramString1, paramString2, paramLong3);\r
+//      }\r
+//    }\r
+//    if (paramInt1 == 2) {\r
+//      StringMessage stringMessage1;\r
+//      if (runtime.getCdmaInfo() != null) {\r
+//        stringMessage1 = API.H03C(runtime, this.cdmaInfo, paramInt2, paramInt3, paramLong2, paramString1, paramString2, paramLong3);\r
+//      } else {\r
+//        stringMessage1 = API.H03(runtime, this.mCellInfo, paramInt2, paramInt3, paramLong2, stringMessage1, paramString2, paramLong3);\r
+//      }\r
+//      try {\r
+//        LauncherCtrl.getInstance((runtime.getContextProxy()).context).setStatusBarIcon("locate_type", 2);\r
+//        StringMessage stringMessage2 = stringMessage1;\r
+//      } catch (Exception e) {\r
+//        e.printStackTrace();\r
+//        stringMessage = stringMessage1;\r
+//      }\r
+//    }\r
+//    if (stringMessage != null)\r
+//      ServiceUtil.offerQueue(stringMessage);\r
+  }\r
+  \r
+  public static void saveQueue() {\r
+//    lock.lock();\r
+//    try {\r
+//      if (!queue.isEmpty()) {\r
+//        StringBuilder stringBuilder = new StringBuilder();\r
+//        StringMessage stringMessage = (StringMessage)queue.poll();\r
+//        while (stringMessage != null) {\r
+//          if (ServiceUtil.hasSave(stringMessage)) {\r
+//            stringBuilder.append(stringMessage.toString(changeDelayFlag(stringMessage)));\r
+//            stringBuilder.append("\n");\r
+//            stringMessage = (StringMessage)queue.poll();\r
+//          }\r
+//        }\r
+//        str = stringBuilder.toString();\r
+//      } else {\r
+//        str = null;\r
+//      }\r
+//      lock.unlock();\r
+//      return;\r
+//    } finally {\r
+//      lock.unlock();\r
+//    }\r
+  }\r
+  \r
+  private void sendBatteryNotification() {\r
+//    if (runtime.getHaveBatteryChange() && !runtime.getBatterychanging() && !this.batteryNotification) {\r
+//      connection.send(API.H05(runtime, "2"));\r
+//      this.batteryNotification = true;\r
+//    }\r
+//    if (runtime.getBatteryLow() && !runtime.getBatterychanging() && !this.batteryLowNotification) {\r
+//      connection.send(API.H05(runtime, "1"));\r
+//      this.batteryLowNotification = true;\r
+//    }\r
+//    if (runtime.getBatterychanging()) {\r
+//      this.batteryNotification = false;\r
+//      this.batteryLowNotification = false;\r
+//    }\r
+  }\r
+  \r
+  private static StringMessage setNewKey(StringMessage paramStringMessage, String paramString) {\r
+    String str = paramStringMessage.isFromCache();\r
+    if (str != null) {\r
+      String str1 = str.substring(0, 8);\r
+      str = str.substring(str.indexOf(";", 8));\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append(str1);\r
+      stringBuilder.append(paramString);\r
+      stringBuilder.append(str);\r
+      paramStringMessage.refresh(stringBuilder.toString());\r
+      return paramStringMessage;\r
+    } \r
+    paramStringMessage.all()[1] = paramString;\r
+    return paramStringMessage;\r
+  }\r
+  \r
+  public void EqcAlgorithmInterfaceMethod1(final int cycle_location_flag, int paramInt2, final int delay_flag, final double latitude, final double longitude, final double altitude, final float speed, final float bearing, final int sv_no, final float accuracy, final long timestamp_cur, final long timestamp_last_location, final double latitude_last_location, final double longitude_last_location, final int mode, long paramLong3, final int status_cur_location) {\r
+//    StringBuilder stringBuilder1 = new StringBuilder();\r
+//    stringBuilder1.append("cycle_location_flag = ");\r
+//    stringBuilder1.append(paramInt1);\r
+//    stringBuilder1.append("  /location_type = ");\r
+//    stringBuilder1.append(paramInt2);\r
+//    stringBuilder1.append("  /delay_flag = ");\r
+//    stringBuilder1.append(paramInt3);\r
+//    stringBuilder1.append("  /latitude = ");\r
+//    stringBuilder1.append(paramDouble1);\r
+//    stringBuilder1.append("  /longitude = ");\r
+//    stringBuilder1.append(paramDouble2);\r
+//    stringBuilder1.append("  /altitude = ");\r
+//    stringBuilder1.append(paramDouble3);\r
+//    stringBuilder1.append("  /speed = ");\r
+//    stringBuilder1.append(paramFloat1);\r
+//    stringBuilder1.append("  /bearing = ");\r
+//    stringBuilder1.append(paramFloat2);\r
+//    stringBuilder1.append("  /sv_no = ");\r
+//    stringBuilder1.append(paramInt4);\r
+//    stringBuilder1.append("  /accuracy = ");\r
+//    stringBuilder1.append(paramFloat3);\r
+//    stringBuilder1.append("  /timestamp_cur = ");\r
+//    stringBuilder1.append(paramLong1);\r
+//    stringBuilder1.append("  /timestamp_last_location = ");\r
+//    stringBuilder1.append(paramLong2);\r
+//    stringBuilder1.append("  /latitude_last_location = ");\r
+//    stringBuilder1.append(paramDouble4);\r
+//    stringBuilder1.append("  /longitude_last_location = ");\r
+//    stringBuilder1.append(paramDouble5);\r
+//    stringBuilder1.append("  /mode = ");\r
+//    stringBuilder1.append(paramInt5);\r
+//    stringBuilder1.append("  /pedometer = ");\r
+//    stringBuilder1.append(paramLong3);\r
+//    stringBuilder1.append("  /status_cur_location = ");\r
+//    stringBuilder1.append(paramInt6);\r
+//    Logger.i(stringBuilder1.toString());\r
+//    Context context = (runtime.getContextProxy()).context;\r
+//    StringBuilder stringBuilder2 = new StringBuilder();\r
+//    stringBuilder2.append("cycle_location_flag = ");\r
+//    stringBuilder2.append(paramInt1);\r
+//    stringBuilder2.append("  /location_type = ");\r
+//    stringBuilder2.append(paramInt2);\r
+//    stringBuilder2.append("  /delay_flag = ");\r
+//    stringBuilder2.append(paramInt3);\r
+//    stringBuilder2.append("  /latitude = ");\r
+//    stringBuilder2.append(paramDouble1);\r
+//    stringBuilder2.append("  /longitude = ");\r
+//    stringBuilder2.append(paramDouble2);\r
+//    stringBuilder2.append("  /altitude = ");\r
+//    stringBuilder2.append(paramDouble3);\r
+//    stringBuilder2.append("  /speed = ");\r
+//    stringBuilder2.append(paramFloat1);\r
+//    stringBuilder2.append("  /bearing = ");\r
+//    stringBuilder2.append(paramFloat2);\r
+//    stringBuilder2.append("  /sv_no = ");\r
+//    stringBuilder2.append(paramInt4);\r
+//    stringBuilder2.append("  /accuracy = ");\r
+//    stringBuilder2.append(paramFloat3);\r
+//    stringBuilder2.append("  /timestamp_cur = ");\r
+//    stringBuilder2.append(paramLong1);\r
+//    stringBuilder2.append("  /timestamp_last_location = ");\r
+//    stringBuilder2.append(paramLong2);\r
+//    stringBuilder2.append("  /latitude_last_location = ");\r
+//    stringBuilder2.append(paramDouble4);\r
+//    stringBuilder2.append("  /longitude_last_location = ");\r
+//    stringBuilder2.append(paramDouble5);\r
+//    stringBuilder2.append("  /mode = ");\r
+//    stringBuilder2.append(paramInt5);\r
+//    stringBuilder2.append("  /pedometer = ");\r
+//    stringBuilder2.append(paramLong3);\r
+//    stringBuilder2.append("  /status_cur_location = ");\r
+//    stringBuilder2.append(paramInt6);\r
+//    FileOutputUtil.fileOutput(context, "wifiTest", stringBuilder2.toString());\r
+//    this.mPedometer2 = DeviceInfoUtil.getStepCount((runtime.getContextProxy()).context);\r
+//    this.mCellInfo = this.mLbsHelper.getCellInfo(runtime.getContextProxy().getTelephonyManager());\r
+//    if (paramInt6 != 65) {\r
+//      Logger.i("GPS定位失败02");\r
+//      this.mWifiInfo = runtime.currentWifiInfo;\r
+//      this.cdmaInfo = runtime.getCdmaInfo();\r
+//      if (paramInt1 == 2) {\r
+//        this.mCellInfo = runtime.preCellInfo;\r
+//        this.cdmaInfo = runtime.preCdmaInfo;\r
+//        if (this.mWifiInfo != null) {\r
+//          resolveResult(1, paramInt1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, paramDouble4, paramDouble5, paramInt5, this.mPedometer2, paramInt6);\r
+//        } else if (this.mCellInfo != null) {\r
+//          resolveResult(2, paramInt1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, paramDouble4, paramDouble5, paramInt5, this.mPedometer2, paramInt6);\r
+//        }\r
+//      } else {\r
+//        StringBuilder stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("mHasWifiResult=");\r
+//        stringBuilder.append(mHasWifiResult);\r
+//        Logger.i(stringBuilder.toString());\r
+//        isLocationCallBack = true;\r
+//        if (mHasWifiResult) {\r
+//          LocationClient locationClient1 = this;\r
+//          locationClient1.mLbsHelper.registerBroadReceiver();\r
+//          locationClient1.mLbsHelper.getWifiInfo();\r
+//        }\r
+//        LocationClient locationClient = this;\r
+//        locationClient.mLbsHelper.setOnWiFiInfoListener(new LBSHelper.OnWiFiInfoListener() {\r
+//              public void getWifiInfoCallBack(String param1String) {\r
+//                LocationClient.access$002(true);\r
+//                LocationClient.access$102(LocationClient.this, param1String);\r
+//                StringBuilder stringBuilder = new StringBuilder();\r
+//                stringBuilder.append("wifiInfo: ");\r
+//                stringBuilder.append(param1String);\r
+//                stringBuilder.append(",,isLocationCallBack=");\r
+//                stringBuilder.append(isLocationCallBack);\r
+//                Logger.i(stringBuilder.toString());\r
+//                runtime.currentWifiInfo = param1String;\r
+//                if (!isLocationCallBack)\r
+//                  return;\r
+//                if (LocationClient.this.mWifiInfo != null) {\r
+//                  LocationClient.this.resolveResult(1, cycle_location_flag, delay_flag, latitude, longitude, altitude, speed, bearing, sv_no, accuracy, timestamp_cur, timestamp_last_location, latitude_last_location, longitude_last_location, mode, LocationClient.this.mPedometer2, status_cur_location);\r
+//                  return;\r
+//                }\r
+//                if (LocationClient.this.mCellInfo != null)\r
+//                  LocationClient.this.resolveResult(2, cycle_location_flag, delay_flag, latitude, longitude, altitude, speed, bearing, sv_no, accuracy, timestamp_cur, timestamp_last_location, latitude_last_location, longitude_last_location, mode, LocationClient.this.mPedometer2, status_cur_location);\r
+//              }\r
+//            });\r
+//      }\r
+//      runtime.setLocation("0@0");\r
+//      return;\r
+//    }\r
+//    Runtime runtime1 = runtime;\r
+//    stringBuilder2 = new StringBuilder();\r
+//    stringBuilder2.append(paramDouble2);\r
+//    stringBuilder2.append("@");\r
+//    stringBuilder2.append(paramDouble1);\r
+//    runtime1.setLocation(stringBuilder2.toString());\r
+//    resolveResult(0, paramInt1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, paramDouble4, paramDouble5, paramInt5, this.mPedometer2, paramInt6);\r
+  }\r
+  \r
+  public void EqcAlgorithmInterfaceMethod2() {\r
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {\r
+      Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), "gps", true);\r
+    }\r
+    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
+          public void call(Object param1Object) { LocationClient.this.nmeaListener.startListen(); }\r
+        });\r
+    Logger.i("开启GPS开启wifi扫描");\r
+    runtime.currentWifiInfo = null;\r
+    mHasWifiResult = false;\r
+    this.mLbsHelper.registerBroadReceiver();\r
+    this.mLbsHelper.getWifiInfo();\r
+    this.mLbsHelper.setOnWiFiInfoListener(new LBSHelper.OnWiFiInfoListener() {\r
+          public void getWifiInfoCallBack(String param1String) {\r
+//            LocationClient.access$002(true);\r
+//            runtime.currentWifiInfo = param1String;\r
+          }\r
+        });\r
+  }\r
+  \r
+  @TargetApi(Build.VERSION_CODES.FROYO)\r
+  public void EqcAlgorithmInterfaceMethod3() {\r
+//    if (Deliver.is_active_location) {\r
+//      Deliver.is_active_location = false;\r
+//      getLocationWakeLock();\r
+//    }\r
+    Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false);\r
+    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
+          public void call(Object param1Object) { LocationClient.this.nmeaListener.stopListen(); }\r
+        });\r
+  }\r
+  \r
+  public void EqcAlgorithmInterfaceMethod4() { this.mLbsHelper.getAttchCellInfo(runtime.getContextProxy().getTelephonyManager()); }\r
+  \r
+  public void EqcAlgorithmInterfaceMethod5(int paramInt) { SimSignalUtil.getInstance((runtime.getContextProxy()).context); }\r
+  \r
+  public void EqcAlgorithmInterfaceMethod6(int paramInt) {\r
+    boolean bool1 = this.mSignalUtil.IsAirModeOn();\r
+    boolean bool2 = this.mSignalUtil.isScreenON();\r
+    switch (paramInt) {\r
+      default:\r
+        return;\r
+      case 1:\r
+        if (!bool1 && !bool2) {\r
+          this.mSignalUtil.setAirMode("OpenAirplane");\r
+          runtime.isAirMode = true;\r
+          notifiSetAirModeMethod();\r
+          return;\r
+        } \r
+        if (bool1) {\r
+//          EqcAlgorithmNative.native_EqcAlgorithmMethod8(1);\r
+          return;\r
+        } \r
+        return;\r
+      case 0:\r
+        break;\r
+    } \r
+    if (bool1) {\r
+      this.mSignalUtil.setAirMode("CloseAirplane");\r
+      runtime.isAirMode = false;\r
+      notifiSetAirModeMethod();\r
+      return;\r
+    } \r
+//    EqcAlgorithmNative.native_EqcAlgorithmMethod8(0);\r
+  }\r
+  \r
+  public PowerManager.WakeLock getLocationWakeLock() {\r
+    @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakeLock = ((PowerManager)(runtime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(1, "locationSend");\r
+    wakeLock.acquire(1000L);\r
+    return wakeLock;\r
+  }\r
+  \r
+  public void onAlarm(PowerManager.WakeLock paramWakeLock) {\r
+    runtime.preCellInfo = runtime.getCurrentCellInfo();\r
+    runtime.preCdmaInfo = runtime.getCdmaInfo();\r
+    runtime.preTime = TimeUtil.getSystemTime(System.currentTimeMillis() - (protocolMainServer.alarmCycle * 60 * 1000));\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("runtime.preCellInfo=");\r
+    stringBuilder.append(runtime.preCellInfo);\r
+    Logger.i(stringBuilder.toString());\r
+    handlerH12();\r
+    if (!"".equals(runtime.getKey()) && runtime.getKey() != null) {\r
+      this.gSensorListener.startListen(paramWakeLock);\r
+      performAlarm(paramWakeLock);\r
+    } \r
+  }\r
+  \r
+  public void onReceive(StringMessage paramStringMessage) {\r
+    if ("Sport:OK".equals(paramStringMessage.cmd()))\r
+      this.mPedometer2 = this.H12StepCount; \r
+    if (linkOK)\r
+      return; \r
+    if ("Link:OK".equals(paramStringMessage.cmd())) {\r
+      this.mLock.lock();\r
+      try {\r
+        linkOK = true;\r
+        this.mCondition.signal();\r
+        return;\r
+      } finally {\r
+        this.mLock.unlock();\r
+      } \r
+    } \r
+  }\r
+  \r
+  public void resolveResult(int paramInt1, int paramInt2, int paramInt3, double paramDouble1, double paramDouble2, double paramDouble3, float paramFloat1, float paramFloat2, int paramInt4, float paramFloat3, long paramLong1, long paramLong2, double paramDouble4, double paramDouble5, int paramInt5, long paramLong3, int paramInt6) {\r
+//    int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3);\r
+//    String str1 = runtime.getLatitude();\r
+//    String str2 = runtime.getLongitude();\r
+//    paramLong2 = runtime.getTimestamp();\r
+//    isLocationCallBack = false;\r
+//    if ((paramInt2 & true) == 1) {\r
+//      Logger.i("开机定位");\r
+//      performExecute(paramInt1, i, 0, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x2) >> 1 == 1) {\r
+//      Logger.i("周期定位");\r
+//      performExecute(paramInt1, i, 1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x4) >> 2 == 1) {\r
+//      Logger.i("主动定位");\r
+//      performExecute(paramInt1, i, 2, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x8) >> 3 == 1) {\r
+//      Logger.i("SOS定位");\r
+//      performExecute(paramInt1, i, 3, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x10) >> 4 == 1) {\r
+//      Logger.i("获取位置信息");\r
+//      performExecute(paramInt1, i, 4, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x20) >> 5 == 1) {\r
+//      Logger.i("定时定位");\r
+//      performExecute(paramInt1, i, 5, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x40) >> 6 == 1) {\r
+//      Logger.i("实时定位");\r
+//      performExecute(paramInt1, i, 6, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x80) >> 7 == 1) {\r
+//      Logger.i("摇一摇");\r
+//      Runtime runtime1 = runtime;\r
+//      LocationClient locationClient = this;\r
+////      ServiceUtil.offerQueue(API.H15(runtime1, locationClient.mWifiInfo, locationClient.mCellInfo, 7));\r
+//    }\r
+//    if ((paramInt2 & 0x100) >> 8 == 1) {\r
+//      Logger.i("脱落报警");\r
+//      performExecute(paramInt1, i, 8, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x200) >> 9 == 1) {\r
+//      Logger.i("照相定位");\r
+//      performExecute(paramInt1, i, 9, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x400) >> 10 == 1) {\r
+//      Logger.i("获取经纬度");\r
+//      performExecute(paramInt1, i, 10, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+//    if ((paramInt2 & 0x800) >> 11 == 1) {\r
+//      Logger.i("获取天气");\r
+//      performExecute(paramInt1, i, 11, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+//    }\r
+  }\r
+  \r
+  public void start() {\r
+    this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+//    EqcAlgorithmNative.EqcAlgorithmNativeSetInterface(this);\r
+//    EqcAlgorithmNative.native_EqcAlgorithm_Gsensor_eint_work_start();\r
+//    EqcAlgorithmNative.native_EqcAlgorithmMethod2();\r
+    this.mLbsHelper = runtime.getLbsHelper();\r
+    int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "value_setting_ver", 0);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("11  value_setting=");\r
+    stringBuilder.append(i);\r
+    Logger.i(stringBuilder.toString());\r
+//    if (i == Config.value_setting) {\r
+//      EqcAlgorithmNative.native_EqcAlgorithmMethod1(SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_mode", 2), SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3));\r
+//    } else {\r
+//      EqcAlgorithmNative.native_EqcAlgorithmMethod1(2, 3);\r
+//      SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "value_setting_ver", Config.value_setting);\r
+      SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "lacation_mode", 2);\r
+      SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3);\r
+//    }\r
+    IntentFilter intentFilter = new IntentFilter();\r
+    intentFilter.addAction("android.intent.action.SCREEN_ON");\r
+    (runtime.getContextProxy()).context.registerReceiver(this.screenOnReceiver, intentFilter);\r
+    (new MyThread2(this.mCondition, this.mLock)).start();\r
+    this.haveChanegTo4GTime = SystemClock.elapsedRealtime();\r
+  }\r
+  \r
+  public void stop() {\r
+//    EqcAlgorithmInterfaceMethod3();\r
+//    EqcAlgorithmNative.EqcAlgorithmNativeSetInterface(null);\r
+    (runtime.getContextProxy()).context.unregisterReceiver(this.screenOnReceiver);\r
+    this.executor.execute(new Runnable() {\r
+          public void run() { LocationClient.saveQueue(); }\r
+        });\r
+    this.gSensorListener.stopListen();\r
+  }\r
+  \r
+  static class MyThread2 extends Thread {\r
+    Condition condition;\r
+    \r
+    boolean isResent = false;\r
+    \r
+    ReentrantLock lock;\r
+    \r
+    public MyThread2(Condition param1Condition, ReentrantLock param1ReentrantLock) {\r
+      this.condition = param1Condition;\r
+      this.lock = param1ReentrantLock;\r
+    }\r
+    \r
+    public void run() {\r
+//      while (true) {\r
+//        StringMessage stringMessage = null;\r
+//        try {\r
+//          StringMessage stringMessage1 = (StringMessage)LocationClient.queue.take();\r
+//          try {\r
+//            if (runtime.getSignalStrength() + 110 < LocationClient.getMinSignalStrength(SimSignalUtil.getInstance((runtime.getContextProxy()).context).getNetworkType())) {\r
+//              LocationClient.saveQueue();\r
+//              stringMessage = stringMessage1;\r
+//            } else {\r
+//              exception = LocationClient.setNewKey(stringMessage1, runtime.IMEI_CID_KEY());\r
+//              stringMessage = exception;\r
+//              null = StringMessageEncoder.toString(exception);\r
+//              stringMessage = exception;\r
+//              Context context = (runtime.getContextProxy()).context;\r
+//              stringMessage = exception;\r
+//              StringBuilder stringBuilder = new StringBuilder();\r
+//              stringMessage = exception;\r
+//              stringBuilder.append("send=");\r
+//              stringMessage = exception;\r
+//              stringBuilder.append(null);\r
+//              stringMessage = exception;\r
+//              FileOutputUtil.fileOutput(context, "LocationInfo", stringBuilder.toString());\r
+//              stringMessage = exception;\r
+//              connection.send(exception);\r
+//              stringMessage = exception;\r
+//              this.lock.lock();\r
+//              stringMessage = exception;\r
+//              LocationClient.access$1102(false);\r
+//              try {\r
+//                if (KeepAlive.isConnected) {\r
+//                  this.condition.await(30000L, TimeUnit.MILLISECONDS);\r
+//                } else if (exception.all() != null && exception.all()[0].equals("#@H10@#")) {\r
+//                  this.condition.await(30000L, TimeUnit.MILLISECONDS);\r
+//                } else {\r
+//                  this.condition.await(5000L, TimeUnit.MILLISECONDS);\r
+//                }\r
+//                if (linkOK) {\r
+//                  if (exception.all() != null && exception.all()[0].equals("#@H43@#")) {\r
+//                    this.isResent = false;\r
+//                    Deliver.releaseWakeLockForGetWifiList();\r
+//                  } else if (exception.all() != null && exception.all()[0].equals("#@H42@#")) {\r
+//                    Deliver.releaseWakeLockForGetWifiList();\r
+//                  }\r
+//                  if (LocationClient.queue.peek() == null)\r
+//                    LocationClient.loadMessage2Queue();\r
+//                  stringMessage = exception;\r
+//                  this.lock.unlock();\r
+//                  continue;\r
+//                }\r
+//              } finally {\r
+//                stringMessage = exception;\r
+//                this.lock.unlock();\r
+//                stringMessage = exception;\r
+//              }\r
+//            }\r
+//          } catch (Exception e) {\r
+//            stringMessage = stringMessage1;\r
+//          }\r
+//        } catch (Exception e) {\r
+//          e.printStackTrace();\r
+//        }\r
+//      }\r
+    }\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/MySqlitOpenHelper.java b/app/src/main/java/com/ic/protocol/MySqlitOpenHelper.java
new file mode 100644 (file)
index 0000000..6b64602
--- /dev/null
@@ -0,0 +1,57 @@
+package com.ic.protocol;\r
+\r
+import android.content.Context;\r
+import android.database.sqlite.SQLiteDatabase;\r
+import android.database.sqlite.SQLiteOpenHelper;\r
+\r
+import com.ic.protocol.utils.Logger;\r
+\r
+\r
+public class MySqlitOpenHelper extends SQLiteOpenHelper {\r
+  public MySqlitOpenHelper(Context paramContext) { super(paramContext, "data", null, 7); }\r
+  \r
+  public void onCreate(SQLiteDatabase paramSQLiteDatabase) {\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE CONTACT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,NAME TEXT ,NUMBER TEXT ,ICON TEXT ,EXTRA TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE ALARM(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,WEEK TEXT ,RING TEXT ,STATUS TEXT ,NAME TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE SILENT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE IKNOWLEDGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SCORE TEXT ,AWARD TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE URLDOWNLOADPIC(_id INTEGER PRIMARY KEY AUTOINCREMENT ,URL TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE NOTICE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT,NAME TEXT,NUMBER TEXT,ID TEXT,CATEGORY TEXT,FREQUENCY TEXT,CONTENT TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE WEATHER(_id INTEGER PRIMARY KEY AUTOINCREMENT ,WEATHER_TYPE TEXT,MIN_TEMPERATURE TEXT,MAX_TEMPERATURE TEXT,CUR_TEMPERATURE TEXT,WEATHER_INDEX TEXT,WEATHER_INFO TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE DEVICESTATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IS_SILENCE TEXT,START_MONITOR TEXT,END_MONITOR TEXT,IS_ALARM INTEGER)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE DOWNLOADINFO(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IMSI TEXT,TIME TEXT,NUMBER TEXT,TOTAL_NUMBER TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE STHEART_RATE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,INTERVAL TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE ANTIOFF(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)");\r
+    paramSQLiteDatabase.execSQL("CREATE TABLE UNREADMSG(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,ID TEXT ,COUNT INTEGER,RECVTIME INTEGER)");\r
+  }\r
+  \r
+  public void onUpgrade(SQLiteDatabase paramSQLiteDatabase, int paramInt1, int paramInt2) {\r
+    if (paramInt1 < 2)\r
+      paramSQLiteDatabase.execSQL("CREATE TABLE DOWNLOADINFO(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IMSI TEXT,TIME TEXT,NUMBER TEXT,TOTAL_NUMBER TEXT)"); \r
+    if (paramInt1 < 3)\r
+      paramSQLiteDatabase.execSQL("CREATE TABLE STHEART_RATE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,INTERVAL TEXT)"); \r
+    if (paramInt1 < 4) {\r
+      Logger.i("数据库升级了");\r
+      paramSQLiteDatabase.execSQL("ALTER TABLE MESSAGE ADD COLUMN ICON");\r
+    } \r
+    if (paramInt1 < 5) {\r
+      Logger.i("数据库升级了 5");\r
+      paramSQLiteDatabase.execSQL("CREATE TABLE ANTIOFF(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)");\r
+    } \r
+    if (paramInt1 < 6) {\r
+      Logger.i("数据库升级了 6");\r
+      paramSQLiteDatabase.execSQL("CREATE TABLE UNREADMSG(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,ID TEXT ,COUNT INTEGER,RECVTIME INTEGER)");\r
+    } \r
+    if (paramInt1 < 7) {\r
+      Logger.i("数据库升级了");\r
+      paramSQLiteDatabase.execSQL("ALTER TABLE DEVICESTATUS ADD COLUMN IS_ALARM");\r
+    } \r
+  }\r
+}\r
+\r
+\r
+/* Location:              D:\android\ApkIDE3.3\ApkIDE\Worksrc\com.enqualcomm.support\!\com\enqualcomm\support\MySqlitOpenHelper.class\r
+ * Java compiler version: 6 (50.0)\r
+ * JD-Core Version:       1.0.7\r
+ */
\ No newline at end of file
diff --git a/app/src/main/java/com/ic/protocol/NMEAListener.java b/app/src/main/java/com/ic/protocol/NMEAListener.java
new file mode 100644 (file)
index 0000000..62b1b7f
--- /dev/null
@@ -0,0 +1,50 @@
+package com.ic.protocol;\r
+\r
+import android.annotation.SuppressLint;\r
+import android.location.GpsStatus;\r
+import android.location.GpsStatus.NmeaListener;\r
+import android.location.Location;\r
+import android.location.LocationListener;\r
+import android.location.LocationManager;\r
+import android.os.Bundle;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+@SuppressLint("NewApi")\r
+public class NMEAListener implements NmeaListener, LocationListener {\r
+  private boolean listening;\r
+  \r
+  private LocationManager locationManager;\r
+  \r
+  Runtime runtime;\r
+  \r
+  public NMEAListener(LocationManager paramLocationManager, Runtime paramRuntime) {\r
+    this.locationManager = paramLocationManager;\r
+    this.runtime = paramRuntime;\r
+  }\r
+  \r
+  public void onLocationChanged(Location paramLocation) {}\r
+  \r
+  public void onNmeaReceived(long paramLong, String paramString) {\r
+//    EqcAlgorithmNative.native_EqcAlgorithmMethod5(paramString);\r
+  }\r
+  \r
+  public void onProviderDisabled(String paramString) {}\r
+  \r
+  public void onProviderEnabled(String paramString) {}\r
+  \r
+  public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) {}\r
+  \r
+  @SuppressLint("NewApi")\r
+  public boolean startListen() {\r
+    this.locationManager.requestLocationUpdates("gps", 0L, 0.0F, this);\r
+    this.listening = true;\r
+    return this.locationManager.addNmeaListener(this);\r
+  }\r
+  \r
+  @SuppressLint("NewApi")\r
+  public void stopListen() {\r
+    this.locationManager.removeNmeaListener(this);\r
+    this.locationManager.removeUpdates(this);\r
+    this.listening = false;\r
+  }\r
+}\r
index 4d87d91..ee62cc5 100644 (file)
@@ -1,6 +1,7 @@
 package com.ic.protocol.adapter;\r
 \r
 import android.Manifest;\r
+import android.annotation.SuppressLint;\r
 import android.content.BroadcastReceiver;\r
 import android.content.Context;\r
 import android.content.Intent;\r
@@ -12,8 +13,6 @@ import android.os.Build;
 import android.os.Handler;\r
 import android.os.Message;\r
 import android.os.SystemClock;\r
-import android.support.annotation.Nullable;\r
-import android.support.v4.app.ActivityCompat;\r
 import android.telephony.CellLocation;\r
 import android.telephony.NeighboringCellInfo;\r
 import android.telephony.PhoneStateListener;\r
@@ -22,8 +21,9 @@ import android.telephony.TelephonyManager;
 import android.telephony.cdma.CdmaCellLocation;\r
 import android.telephony.gsm.GsmCellLocation;\r
 \r
-import com.ic.protocol.bean.deviceStatus;\r
-import com.ic.protocol.utils.ICLog;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.utils.FileOutputUtil;\r
+import com.ic.protocol.utils.Logger;\r
 \r
 import java.util.Collections;\r
 import java.util.Comparator;\r
@@ -38,7 +38,6 @@ import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
 import static android.net.wifi.WifiManager.WIFI_STATE_ENABLING;\r
 import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;\r
 import static android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS;\r
-import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE;\r
 \r
 public class LBSHelper {\r
     private boolean IS_HASOPEN = false;\r
@@ -50,13 +49,13 @@ public class LBSHelper {
     private LBSHelper.MyPhoneStateListener mMyListener;\r
     int mNetworkType;\r
     private static Timer mTimer;\r
-    public deviceStatus runtime;\r
+    public Runtime runtime;\r
     private BroadcastReceiver wifiChangedReceiver;\r
     private String wifiInfoResult;\r
     private WifiManager wifiManager;\r
 \r
 \r
-    public LBSHelper(Context _context, WifiManager _wifiManager, deviceStatus dev) {\r
+    public LBSHelper(Context _context, WifiManager _wifiManager, Runtime dev) {\r
         this.wifiManager = _wifiManager;\r
         this.context = _context;\r
         this.runtime = dev;\r
@@ -165,7 +164,7 @@ public class LBSHelper {
 \r
     }\r
 \r
-    @Nullable\r
+\r
     private StringBuilder handScanResults() {\r
         List aplist = this.wifiManager.getScanResults();\r
         if (aplist.size() < 2) {\r
@@ -226,6 +225,7 @@ public class LBSHelper {
         return this.getCellInfo(tm);\r
     }\r
 \r
+    @SuppressLint("NewApi")\r
     public String getCellInfo(TelephonyManager telephonyManager) {\r
         int var3 = Build.VERSION.SDK_INT;\r
         int var2 = 0;\r
@@ -233,7 +233,7 @@ public class LBSHelper {
         if (var3 > 23) {\r
             var4 = telephonyManager.getSimOperator();\r
             if (var4 == null) {\r
-                ICLog.i("operator == null");\r
+                Logger.i("operator == null");\r
                 return null;\r
             }\r
 \r
@@ -243,19 +243,10 @@ public class LBSHelper {
         }\r
 \r
         if (var4 != null && var4.length() > 3) {\r
-            if (ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {\r
-                // TODO: Consider calling\r
-                //    ActivityCompat#requestPermissions\r
-                // here to request the missing permissions, and then overriding\r
-                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,\r
-                //                                          int[] grantResults)\r
-                // to handle the case where the user grants the permission. See the documentation\r
-                // for ActivityCompat#requestPermissions for more details.\r
-                return "Failed Check permission for getCellLocation";\r
-            }\r
+\r
             CellLocation celllocation = telephonyManager.getCellLocation();\r
             if (celllocation == null) {\r
-                ICLog.i("cellLocation = null");\r
+                Logger.i("cellLocation = null");\r
                 return null;\r
             } else {\r
                 StringBuilder gsmSb = new StringBuilder(var4);\r
@@ -272,10 +263,11 @@ public class LBSHelper {
                     gsmSb.append(gsmCell.getCid());\r
                     gsmSb.append(",");\r
                     gsmSb.append(this.mLastSignal);\r
-                     this.runtime.getLocationInstance().setCID(gsmCell.getCid());\r
-                     this.runtime.getLocationInstance().setLAC(gsmCell.getLac());\r
-                     this.runtime.setCdmaInfo(gsmSb.toString());\r
-                    ICLog.i("GsmCellLocation "+ gsmSb.toString());\r
+                     this.runtime.setCid(String.format("",gsmCell.getCid()));\r
+//                     this.runtime.setLAC(gsmCell.getLac());\r
+                     this.runtime.setCellinfo(gsmSb.toString());\r
+                    Logger.i("GsmCellLocation "+ gsmSb.toString());\r
+                     FileOutputUtil.fileOutput(this.context, "onCellLocationChanged", gsmSb.toString());\r
                 } else if (celllocation instanceof CdmaCellLocation) {\r
                     CdmaCellLocation cdmaCelllocation = (CdmaCellLocation)celllocation;\r
                     cdmaSB.append(cdmaCelllocation.getSystemId());\r
@@ -290,13 +282,13 @@ public class LBSHelper {
                     cdmaSB.append(",");\r
                     cdmaSB.append(this.mLastSignal);\r
                     this.runtime.setCdmaInfo(cdmaSB.toString());\r
-                    ICLog.i("CdmaCellLocation");\r
+                    Logger.i("CdmaCellLocation");\r
                     Context var16 = this.context;\r
                     StringBuilder var8 = new StringBuilder();\r
                     var8.append("CDMA_info=");\r
                     var8.append(cdmaSB.toString());\r
-                    ICLog.i(var8.toString());\r
-//                    FileOutputUtil.fileOutput(var16, "onCellLocationChanged", var8.toString());\r
+                    Logger.i(var8.toString());\r
+                    FileOutputUtil.fileOutput(var16, "onCellLocationChanged", var8.toString());\r
                 } else {\r
                     this.runtime.setCdmaInfo((String)null);\r
                 }\r
@@ -306,14 +298,14 @@ public class LBSHelper {
                 cdmaSB = new StringBuilder();\r
                 cdmaSB.append("lbsInfo CurrentCellInfo== ");\r
                 cdmaSB.append(this.runtime.getCurrentCellInfo());\r
-                ICLog.i(cdmaSB.toString());\r
+                Logger.i(cdmaSB.toString());\r
 \r
                 Context var13 = this.context;\r
                 StringBuilder var17 = new StringBuilder();\r
                 var17.append("lbsInfo currentCellInfo== ");\r
                 var17.append(this.runtime.getCurrentCellInfo());\r
-//                FileOutputUtil.fileOutput(var13, "cellInfoTest", var17.toString());\r
-                ICLog.i("cellInfoTest "+ var17.toString());\r
+                FileOutputUtil.fileOutput(var13, "cellInfoTest", var17.toString());\r
+                Logger.i("cellInfoTest "+ var17.toString());\r
                 List neighboringCell_list = telephonyManager.getNeighboringCellInfo();\r
                 if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {\r
                     Iterator cell = neighboringCell_list.iterator();\r
@@ -339,11 +331,11 @@ public class LBSHelper {
                         }\r
                     }\r
                 }\r
-                ICLog.i("return "+ gsmSb.toString());\r
+                Logger.i("return "+ gsmSb.toString());\r
                 return gsmSb.toString();\r
             }\r
         } else {\r
-            ICLog.i("operator == null || operator.length() <= 3");\r
+            Logger.i("operator == null || operator.length() <= 3");\r
             return null;\r
         }\r
     }\r
@@ -372,6 +364,7 @@ public class LBSHelper {
         private MyPhoneStateListener() {\r
         }\r
 \r
+        @SuppressLint("NewApi")\r
         public void onSignalStrengthsChanged(SignalStrength ss) {\r
             super.onSignalStrengthsChanged(ss);\r
 //            if (((TelephonyManager) LBSHelper.this.context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType() == NETWORK_TYPE_LTE) {\r
index 326791d..199644e 100644 (file)
@@ -1,16 +1,9 @@
 package com.ic.protocol.adapter;\r
 \r
-import android.support.annotation.NonNull;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.utils.Logger;\r
 \r
-import com.ic.protocol.bean.Config;\r
-import com.ic.protocol.bean.deviceStatus;\r
-import com.ic.protocol.bean.heartRateStatus;\r
-import com.ic.protocol.utils.ICLog;\r
-\r
-import java.util.Collection;\r
 import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.Set;\r
 \r
 public class protocolAPIHelper {\r
     private static final String TAG = "ICSrv." + protocolAPIHelper.class.getSimpleName();\r
@@ -147,11 +140,11 @@ public class protocolAPIHelper {
         return false;\r
     }\r
     private void log(String msg) {\r
-        ICLog.log(TAG,msg);\r
+        Logger.log(TAG,msg);\r
     }\r
 \r
     private void log(String function,String msg) {\r
-        ICLog.log(TAG,function,msg);\r
+        Logger.log(TAG,function,msg);\r
     }\r
     /*\r
     返回true 表示 cmd 全部解析成功\r
@@ -202,19 +195,19 @@ public class protocolAPIHelper {
         cmdbuf=new StringBuffer().append(last_inCompletecmd);\r
         return ret;\r
     }\r
-    public String AP00(deviceStatus ds){\r
+    public String AP00(Runtime ds){\r
         //示例数据:IWAP00867155030001063#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.getIMEI()).append(CMDEND).toString();\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
     }\r
-    public String AP03(deviceStatus ds){\r
+    public String AP03(Runtime ds){\r
         //示例数据:IWAP03,06000908000102,5555,30#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(ds.getGSMSignal())\r
-                .append(ds.getGPSLocationStarNums()).append(ds.getBatteryLevel()).append("0")\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(ds.getSignalStrength())\r
+                .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT)\r
-                .append(ds.getStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString();\r
+                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(0/*rolltime*/).append(CMDEND).toString();\r
     }\r
 \r
-    public String AP01(deviceStatus ds){\r
+    public String AP01(Runtime ds){\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Alarm.java b/app/src/main/java/com/ic/protocol/bean/Alarm.java
new file mode 100644 (file)
index 0000000..45341e6
--- /dev/null
@@ -0,0 +1,62 @@
+package com.ic.protocol.bean;\r
+\r
+public class Alarm {\r
+  public String name;\r
+  \r
+  public String ring;\r
+  \r
+  public String status;\r
+  \r
+  public String time;\r
+  \r
+  public String week;\r
+  \r
+  public Alarm(String paramString1, String paramString2, String paramString3, String paramString4) {\r
+    this.time = paramString1;\r
+    this.week = paramString2;\r
+    this.ring = paramString3;\r
+    this.status = paramString4;\r
+  }\r
+  \r
+  public Alarm(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
+    this.time = paramString1;\r
+    this.week = paramString2;\r
+    this.ring = paramString3;\r
+    this.status = paramString4;\r
+    this.name = paramString5;\r
+  }\r
+  \r
+  public boolean equals(Object obj) {\r
+    if (this == obj)\r
+      return true; \r
+    if (obj != null) {\r
+      if (getClass() != obj.getClass())\r
+        return false;\r
+      Alarm alarm = (Alarm)obj;\r
+      return !this.time.equals(alarm.time) ? false : (!this.week.equals(alarm.week) ? false : (!this.ring.equals(alarm.ring) ? false : (!this.status.equals(alarm.status) ? false : this.name.equals(alarm.name))));\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Alarm{time='");\r
+    stringBuilder.append(this.time);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", week='");\r
+    stringBuilder.append(this.week);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", ring='");\r
+    stringBuilder.append(this.ring);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", status='");\r
+    stringBuilder.append(this.status);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", name='");\r
+    stringBuilder.append(this.name);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Antioff.java b/app/src/main/java/com/ic/protocol/bean/Antioff.java
new file mode 100644 (file)
index 0000000..8f77d44
--- /dev/null
@@ -0,0 +1,62 @@
+package com.ic.protocol.bean;\r
+\r
+public class Antioff {\r
+  public String cur_sys_status;\r
+  \r
+  public String end;\r
+  \r
+  public long endTimeMillis;\r
+  \r
+  public String start;\r
+  \r
+  public long startTimeMillis;\r
+  \r
+  public String status;\r
+  \r
+  public String week;\r
+  \r
+  public Antioff(String paramString1, String paramString2, String paramString3, String paramString4) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+  }\r
+  \r
+  public Antioff(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+    this.cur_sys_status = paramString5;\r
+  }\r
+  \r
+  public boolean equals(Object obj) {\r
+    if (this == obj)\r
+      return true; \r
+    if (obj != null) {\r
+      if (getClass() != obj.getClass())\r
+        return false;\r
+      Antioff paramObject = (Antioff)obj;\r
+      return !this.start.equals(paramObject.start) ? false : (!this.end.equals(paramObject.end) ? false : (!this.week.equals(paramObject.week) ? false : this.status.equals(paramObject.status)));\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Antioff{start='");\r
+    stringBuilder.append(this.start);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", end='");\r
+    stringBuilder.append(this.end);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", week='");\r
+    stringBuilder.append(this.week);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", status='");\r
+    stringBuilder.append(this.status);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Contact.java b/app/src/main/java/com/ic/protocol/bean/Contact.java
new file mode 100644 (file)
index 0000000..e4808a4
--- /dev/null
@@ -0,0 +1,102 @@
+package com.ic.protocol.bean;\r
+\r
+import android.os.Parcel;\r
+import android.os.Parcelable;\r
+\r
+public class Contact implements Parcelable {\r
+  public static final int CATEGORY_ADMIN = 1;\r
+  \r
+  public static final int CATEGORY_CALL = 3;\r
+  \r
+  public static final int CATEGORY_CARE = 2;\r
+  \r
+  public static final int CATEGORY_GROUP = 0;\r
+  \r
+  public static final int CATEGORY_PARTNER = 4;\r
+  \r
+  public static final int CATEGORY_VIDEO = 5;\r
+  \r
+  public static final int CATEGORY_VOLTE = 6;\r
+  \r
+  public static final Creator<Contact> CREATOR = new Creator<Contact>() {\r
+      public Contact createFromParcel(Parcel param1Parcel) { return new Contact(param1Parcel); }\r
+      \r
+      public Contact[] newArray(int param1Int) { return new Contact[param1Int]; }\r
+    };\r
+  \r
+  public static final String GROUP_FAMILY = "1@-1";\r
+  \r
+  String GROUP_ALL = "1@-3";\r
+  \r
+  String GROUP_PARTNER = "1@-2";\r
+  \r
+  public int category;\r
+  \r
+  public String extra;\r
+  \r
+  public String icon_index;\r
+  \r
+  public String name;\r
+  \r
+  public String number;\r
+  \r
+  public Contact(int paramInt, String paramString1, String paramString2) {\r
+    this.category = paramInt;\r
+    this.name = paramString1;\r
+    this.number = paramString2;\r
+  }\r
+  \r
+  public Contact(int paramInt, String paramString1, String paramString2, String paramString3) {\r
+    this.category = paramInt;\r
+    this.name = paramString1;\r
+    this.number = paramString2;\r
+    this.extra = paramString3;\r
+  }\r
+  \r
+  public Contact(int paramInt, String paramString1, String paramString2, String paramString3, String paramString4) {\r
+    this.category = paramInt;\r
+    this.name = paramString1;\r
+    this.number = paramString2;\r
+    this.icon_index = paramString3;\r
+    this.extra = paramString4;\r
+  }\r
+  \r
+  protected Contact(Parcel paramParcel) {\r
+    this.category = paramParcel.readInt();\r
+    this.name = paramParcel.readString();\r
+    this.number = paramParcel.readString();\r
+    this.icon_index = paramParcel.readString();\r
+    this.extra = paramParcel.readString();\r
+  }\r
+  \r
+  public int describeContents() { return 0; }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Contact{category=");\r
+    stringBuilder.append(this.category);\r
+    stringBuilder.append(", name='");\r
+    stringBuilder.append(this.name);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", number='");\r
+    stringBuilder.append(this.number);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", icon_index='");\r
+    stringBuilder.append(this.icon_index);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", extra='");\r
+    stringBuilder.append(this.extra);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+  \r
+  public void writeToParcel(Parcel paramParcel, int paramInt) {\r
+    paramParcel.writeInt(this.category);\r
+    paramParcel.writeString(this.name);\r
+    paramParcel.writeString(this.number);\r
+    paramParcel.writeString(this.icon_index);\r
+    paramParcel.writeString(this.extra);\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Content.java b/app/src/main/java/com/ic/protocol/bean/Content.java
new file mode 100644 (file)
index 0000000..aa44c7b
--- /dev/null
@@ -0,0 +1,101 @@
+package com.ic.protocol.bean;\r
+\r
+public abstract class Content {\r
+  public static final int CATEGORY_EMOJI = 5;\r
+  \r
+  public static final int CATEGORY_LOCATION = 6;\r
+  \r
+  public static final int CATEGORY_PICTURE = 2;\r
+  \r
+  public static final int CATEGORY_TEXT = 3;\r
+  \r
+  public static final int CATEGORY_VIDEO = 4;\r
+  \r
+  public static final int CATEGORY_VOICE = 1;\r
+  \r
+  public static final int CONTACT_CATEGORY_FAMILY = 1;\r
+  \r
+  public static final int CONTACT_CATEGORY_GROUP = 3;\r
+  \r
+  public static final int CONTACT_CATEGORY_PARTNER = 2;\r
+  \r
+  public static final int IN = 1;\r
+  \r
+  public static final int OUT = 2;\r
+  \r
+  public static final int REMOTE_CAMERA_OSS = 7;\r
+  \r
+  public static final int STATUS_ERROR = 5;\r
+  \r
+  public static final int STATUS_LOADING = 1;\r
+  \r
+  public static final int STATUS_READ = 3;\r
+  \r
+  public static final int STATUS_SEND2OSS = 4;\r
+  \r
+  public static final int STATUS_UNREAD = 2;\r
+  \r
+  public int category;\r
+  \r
+  public int contactCategory;\r
+  \r
+  public String contactNumber;\r
+  \r
+  public String content;\r
+  \r
+  public String icon;\r
+  \r
+  public int inOrOut;\r
+  \r
+  public long localTime;\r
+  \r
+  public String preview;\r
+  \r
+  public String serverTime;\r
+  \r
+  public int status;\r
+  \r
+  protected Content(int paramInt1, String paramString1, String paramString2, int paramInt2, int paramInt3, int paramInt4, String paramString3, String paramString4, long paramLong) {\r
+    this.category = paramInt1;\r
+    this.content = paramString1;\r
+    this.preview = paramString2;\r
+    this.status = paramInt2;\r
+    this.inOrOut = paramInt3;\r
+    this.contactCategory = paramInt4;\r
+    this.contactNumber = paramString3;\r
+    this.serverTime = paramString4;\r
+    this.localTime = paramLong;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Content{category=");\r
+    stringBuilder.append(this.category);\r
+    stringBuilder.append(", content='");\r
+    stringBuilder.append(this.content);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", preview='");\r
+    stringBuilder.append(this.preview);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", status=");\r
+    stringBuilder.append(this.status);\r
+    stringBuilder.append(", inOrOut=");\r
+    stringBuilder.append(this.inOrOut);\r
+    stringBuilder.append(", contactCategory=");\r
+    stringBuilder.append(this.contactCategory);\r
+    stringBuilder.append(", contactNumber='");\r
+    stringBuilder.append(this.contactNumber);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", serverTime='");\r
+    stringBuilder.append(this.serverTime);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", localTime=");\r
+    stringBuilder.append(this.localTime);\r
+    stringBuilder.append(", icon='");\r
+    stringBuilder.append(this.icon);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Locations.java b/app/src/main/java/com/ic/protocol/bean/Locations.java
new file mode 100644 (file)
index 0000000..e0d9ec0
--- /dev/null
@@ -0,0 +1,31 @@
+package com.ic.protocol.bean;\r
+\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+import java.util.Locale;\r
+\r
+public class Locations {\r
+  private String lat;\r
+  \r
+  private String lon;\r
+  \r
+  private long timeMs;\r
+  \r
+  public Locations(String paramString1, String paramString2) {\r
+    this.lat = paramString2;\r
+    this.lon = paramString1;\r
+  }\r
+  \r
+  public Locations(String paramString1, String paramString2, long paramLong) {\r
+    this.lat = paramString2;\r
+    this.lon = paramString1;\r
+    this.timeMs = paramLong;\r
+  }\r
+  \r
+  public String getLat() { return this.lat; }\r
+  \r
+  public String getLon() { return this.lon; }\r
+  \r
+  public String getTime() { return (new SimpleDateFormat("yyyy-MM-dd#HH:mm:ss", Locale.getDefault())).format(new Date(this.timeMs)).replace("#", "T"); }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/NoticeContent.java b/app/src/main/java/com/ic/protocol/bean/NoticeContent.java
new file mode 100644 (file)
index 0000000..951d578
--- /dev/null
@@ -0,0 +1,90 @@
+package com.ic.protocol.bean;\r
+\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+\r
+public class NoticeContent {\r
+  public String noticeCategory;\r
+  \r
+  public String noticeContent;\r
+  \r
+  public String noticeFrequency;\r
+  \r
+  public String noticeID;\r
+  \r
+  public String noticeName;\r
+  \r
+  public String noticeNumber;\r
+  \r
+  public String noticeTime;\r
+  \r
+  public NoticeContent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5, String paramString6, String paramString7) {\r
+    this.noticeTime = paramString1;\r
+    this.noticeName = paramString2;\r
+    this.noticeNumber = paramString3;\r
+    this.noticeID = paramString4;\r
+    this.noticeCategory = paramString5;\r
+    this.noticeFrequency = paramString6;\r
+    this.noticeContent = paramString7;\r
+  }\r
+  \r
+  public static NoticeContent from(NoticeContent paramNoticeContent, byte[] paramArrayOfByte, File paramFile) {\r
+//    byte b = paramArrayOfByte[0];\r
+//    byte[] arrayOfByte = new byte[b];\r
+//    System.arraycopy(paramArrayOfByte, 1, arrayOfByte, 0, b);\r
+//    ArrayList arrayList2 = Util.split(arrayOfByte, (byte)59, 0);\r
+//    ArrayList arrayList1 = Util.split((byte[])arrayList2.get(3), (byte)58, 0);\r
+//    String str2 = new String((byte[])arrayList1.get(0));\r
+//    String str3 = new String((byte[])arrayList1.get(1));\r
+//    StringBuilder stringBuilder1 = new StringBuilder();\r
+//    stringBuilder1.append(new String((byte[])arrayList2.get(1)));\r
+//    stringBuilder1.append(new String((byte[])arrayList2.get(2)));\r
+//    String str4 = stringBuilder1.toString();\r
+//    String str5 = new String((byte[])arrayList2.get(4));\r
+//    String str6 = new String((byte[])arrayList2.get(5));\r
+//    String str7 = new String((byte[])arrayList2.get(6));\r
+//    int i = paramArrayOfByte.length - 1 - b;\r
+//    int j = paramArrayOfByte.length;\r
+//    StringBuilder stringBuilder2 = new StringBuilder();\r
+//    stringBuilder2.append(str5);\r
+//    stringBuilder2.append(".amr");\r
+//    String str1 = Util.saveFile(paramArrayOfByte, j - i, i, paramFile, stringBuilder2.toString());\r
+//    Util.getDuration(str1);\r
+//    paramNoticeContent.noticeTime = str4;\r
+//    paramNoticeContent.noticeName = str2;\r
+//    paramNoticeContent.noticeNumber = str3;\r
+//    paramNoticeContent.noticeID = str5;\r
+//    paramNoticeContent.noticeCategory = str6;\r
+//    paramNoticeContent.noticeFrequency = str7;\r
+//    paramNoticeContent.noticeContent = str1;\r
+    return paramNoticeContent;\r
+  }\r
+  \r
+  public static NoticeContent placeHolderIn(String paramString) { return new NoticeContent(null, null, null, paramString, "1", "0", null); }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("NoticeContent{noticeTime='");\r
+    stringBuilder.append(this.noticeTime);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", noticeName='");\r
+    stringBuilder.append(this.noticeName);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", noticeNumber='");\r
+    stringBuilder.append(this.noticeNumber);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", noticeID='");\r
+    stringBuilder.append(this.noticeID);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", noticeCategory=");\r
+    stringBuilder.append(this.noticeCategory);\r
+    stringBuilder.append(", noticeFrequency=");\r
+    stringBuilder.append(this.noticeFrequency);\r
+    stringBuilder.append(", noticeContent='");\r
+    stringBuilder.append(this.noticeContent);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/NotificationParam.java b/app/src/main/java/com/ic/protocol/bean/NotificationParam.java
new file mode 100644 (file)
index 0000000..eb46422
--- /dev/null
@@ -0,0 +1,54 @@
+package com.ic.protocol.bean;\r
+\r
+public class NotificationParam {\r
+  public static final int ADD_NEW_ONE = 1;\r
+  \r
+  public static final int APP_CALL = 2;\r
+  \r
+  public static final int APP_WECHAT = 1;\r
+  \r
+  public static final int DEL_SOMEONE = 3;\r
+  \r
+  public static final int READ_SOMEONE = 2;\r
+  \r
+  public int category;\r
+  \r
+  public String id;\r
+  \r
+  public long lastRevTime;\r
+  \r
+  public int noReadmsgCount = 0;\r
+  \r
+  public NotificationParam(int paramInt1, String paramString, int paramInt2, long paramLong) {\r
+    this.category = paramInt1;\r
+    this.id = paramString;\r
+    this.noReadmsgCount = paramInt2;\r
+    this.lastRevTime = paramLong;\r
+  }\r
+  \r
+  public NotificationParam init() { return new NotificationParam(this.category, this.id, this.noReadmsgCount, this.lastRevTime); }\r
+  \r
+  public void setNotificationMsgCount(int paramInt) { this.noReadmsgCount = paramInt; }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("notification{category=");\r
+    stringBuilder.append(this.category);\r
+    stringBuilder.append(", id='");\r
+    stringBuilder.append(this.id);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", noReadmsgCount='");\r
+    stringBuilder.append(this.noReadmsgCount);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", lastRevTime=");\r
+    stringBuilder.append(this.lastRevTime);\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
+\r
+\r
+/* Location:              D:\android\ApkIDE3.3\ApkIDE\Worksrc\com.enqualcomm.support\!\com\enqualcomm\support\bean\NotificationParam.class\r
+ * Java compiler version: 6 (50.0)\r
+ * JD-Core Version:       1.0.7\r
+ */
\ No newline at end of file
diff --git a/app/src/main/java/com/ic/protocol/bean/PictureContent.java b/app/src/main/java/com/ic/protocol/bean/PictureContent.java
new file mode 100644 (file)
index 0000000..c37797b
--- /dev/null
@@ -0,0 +1,51 @@
+package com.ic.protocol.bean;\r
+\r
+\r
+import com.ic.protocol.utils.Util;\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+\r
+public class PictureContent extends Content {\r
+  private PictureContent(String paramString1, String paramString2, int paramInt1, int paramInt2, int paramInt3, String paramString3, String paramString4, long paramLong) { super(2, paramString1, paramString2, paramInt1, paramInt2, paramInt3, paramString3, paramString4, paramLong); }\r
+  \r
+  public static PictureContent from(PictureContent paramPictureContent, byte[] paramArrayOfByte, File paramFile) {\r
+    byte b = paramArrayOfByte[0];\r
+    byte[] arrayOfByte = new byte[b];\r
+    System.arraycopy(paramArrayOfByte, 1, arrayOfByte, 0, b);\r
+    ArrayList arrayList = Util.split(arrayOfByte, (byte)59, 0);\r
+    StringBuilder stringBuilder1 = new StringBuilder();\r
+    stringBuilder1.append(new String((byte[])arrayList.get(1)));\r
+    stringBuilder1.append(new String((byte[])arrayList.get(2)));\r
+    String str2 = stringBuilder1.toString();\r
+    String str1 = new String((byte[])arrayList.get(4));\r
+    StringBuilder stringBuilder2 =new StringBuilder( new String((byte[])arrayList.get(5)));\r
+    if ("1".equals(stringBuilder2)) {\r
+      stringBuilder2 = new StringBuilder();\r
+      stringBuilder2.append(str1);\r
+      stringBuilder2.append(".png");\r
+      str1 = stringBuilder2.toString();\r
+    } else if ("2".equals(stringBuilder2)) {\r
+      stringBuilder2 = new StringBuilder();\r
+      stringBuilder2.append(str1);\r
+      stringBuilder2.append(".jpg");\r
+      str1 = stringBuilder2.toString();\r
+    } else {\r
+      stringBuilder2 = new StringBuilder();\r
+      stringBuilder2.append(str1);\r
+      stringBuilder2.append(".bmp");\r
+      str1 = stringBuilder2.toString();\r
+    } \r
+    int i = paramArrayOfByte.length - 1 - b;\r
+    paramPictureContent.content = Util.saveFile(paramArrayOfByte, paramArrayOfByte.length - i, i, paramFile, str1);\r
+    paramPictureContent.status = 2;\r
+    paramPictureContent.serverTime = str2;\r
+    return paramPictureContent;\r
+  }\r
+  \r
+  public static PictureContent placeHolderIn(int paramInt, String paramString1, String paramString2) { return new PictureContent(paramString2, null, 1, 1, paramInt, paramString1, null, System.currentTimeMillis()); }\r
+  \r
+  public static PictureContent placeHolderOut(int paramInt, String paramString1, String paramString2) { return new PictureContent(paramString2, null, 1, 2, paramInt, paramString1, null, System.currentTimeMillis()); }\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Runtime.java b/app/src/main/java/com/ic/protocol/bean/Runtime.java
new file mode 100644 (file)
index 0000000..f4a2ba1
--- /dev/null
@@ -0,0 +1,495 @@
+package com.ic.protocol.bean;\r
+\r
+\r
+import com.ic.protocol.adapter.LBSHelper;\r
+import com.ic.protocol.utils.ContextProxy;\r
+import com.ic.protocol.utils.DBHelper;\r
+import com.ic.protocol.utils.Logger;\r
+\r
+import java.io.File;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Calendar;\r
+import java.util.Date;\r
+import java.util.Locale;\r
+\r
+public class Runtime {\r
+  public int SignalStrength;\r
+  \r
+  private String battery;\r
+  \r
+  private boolean batteryLow;\r
+  \r
+  private boolean batterychanging;\r
+  \r
+  public String belong;\r
+  \r
+  private File cacheDir;\r
+  \r
+  private String cdmaInfo;\r
+  \r
+  public String cellidByAt;\r
+  \r
+  public String cellinfo;\r
+  \r
+  private String cid = "";\r
+  \r
+  private ContextProxy contextProxy;\r
+  \r
+  private String currentCellInfo;\r
+  \r
+  public String currentWifiInfo;\r
+  \r
+  private DBHelper dbHelper;\r
+  \r
+  private String device_id;\r
+  \r
+  private String device_key;\r
+  \r
+  private File fileDir;\r
+  \r
+  private boolean haveBatteryChange;\r
+  \r
+  private String haveBuy;\r
+  \r
+  private String haveTry;\r
+  \r
+  private String host = "watch.enqualcomm.com";\r
+  \r
+  private String imei = "867155030001063";\r
+  \r
+  private String imei_cid = "";\r
+  \r
+  private String imei_cid_key = "";\r
+  \r
+  private String imsi = "";\r
+  \r
+  public boolean isAirMode;\r
+  \r
+  private boolean isNeedAntioff;\r
+  \r
+  private String key = "";\r
+  \r
+  public String lacByAt;\r
+  \r
+  private String latitude;\r
+  \r
+  private LBSHelper lbsHelper;\r
+  \r
+  private String location;\r
+  \r
+  private boolean lockSimInfo;\r
+  \r
+  private String longitude;\r
+  \r
+  private String mccAndMnc;\r
+  \r
+  private int port = 11445;\r
+  \r
+  public String preCdmaInfo;\r
+  \r
+  public String preCellInfo;\r
+  \r
+  public String preTime;\r
+  \r
+  public int saveStepCount;\r
+  \r
+  private boolean shutdown;\r
+  \r
+  private boolean testServerProp;\r
+  \r
+  private long timestamp;\r
+  \r
+  public int totalStepCount;\r
+  \r
+  private String videoID;\r
+  \r
+  public String IMEI() { return this.imei; }\r
+  \r
+  public String IMEI_CID() { return this.imei_cid; }\r
+  \r
+  public String IMEI_CID_KEY() { return this.imei_cid_key; }\r
+  \r
+  public String IMSI() { return this.imsi; }\r
+  \r
+  public boolean getAntioffStatus() { return this.isNeedAntioff; }\r
+  \r
+  public String getBattery() { return this.battery; }\r
+  \r
+  public boolean getBatteryLow() { return this.batteryLow; }\r
+  \r
+  public boolean getBatterychanging() { return this.batterychanging; }\r
+  \r
+  public String getBelong() { return this.belong; }\r
+  \r
+  public File getCacheDir() { return this.cacheDir; }\r
+  \r
+  public String getCdmaInfo() { return this.cdmaInfo; }\r
+  \r
+  public String getCellidInfoByAt() { return this.cellidByAt; }\r
+  \r
+  public String getCellinfo() { return this.cellinfo; }\r
+  \r
+  public String getCid() { return this.cid; }\r
+  \r
+  public ContextProxy getContextProxy() { return this.contextProxy; }\r
+  \r
+  public String getCurrentCellInfo() { return this.currentCellInfo; }\r
+  \r
+  public DBHelper getDbHelper() { return this.dbHelper; }\r
+  \r
+  public String getDevice_id() { return this.device_id; }\r
+  \r
+  public String getDevice_key() { return this.device_key; }\r
+  \r
+  public File getFileDir() { return this.fileDir; }\r
+  \r
+  public boolean getHaveBatteryChange() { return this.haveBatteryChange; }\r
+  \r
+  public String getHaveBuy() { return this.haveBuy; }\r
+  \r
+  public String getHaveTry() { return this.haveTry; }\r
+  \r
+  public String getHost() { return this.testServerProp ? "121.42.192.174" : this.host; }\r
+  \r
+  public String getKey() { return this.key; }\r
+  \r
+  public String getLacInfoByAt() { return this.lacByAt; }\r
+  \r
+  public String getLatitude() { return this.latitude; }\r
+  \r
+  public LBSHelper getLbsHelper() { return this.lbsHelper; }\r
+  \r
+  public String getLocation() { return this.location; }\r
+  \r
+  public boolean getLockSimInfo() { return this.lockSimInfo; }\r
+  \r
+  public String getLongitude() { return this.longitude; }\r
+  \r
+  public String getMccAndMnc() { return this.mccAndMnc; }\r
+  \r
+  public int getPort() { return this.port; }\r
+  \r
+  public int getSaveStepCount() { return this.saveStepCount; }\r
+  \r
+  public int getSignalStrength() { return this.SignalStrength; }\r
+  \r
+  public boolean getTestServerProp() { return this.testServerProp; }\r
+  \r
+  public long getTimestamp() { return this.timestamp; }\r
+  \r
+  public int getTotalStepCount() { return this.totalStepCount; }\r
+  \r
+  public String getVideoID() { return this.videoID; }\r
+  \r
+  public boolean isShutdown() { return this.shutdown; }\r
+  \r
+  public void setAntioffStatus(boolean paramBoolean) { this.isNeedAntioff = paramBoolean; }\r
+  \r
+  public void setBattery(String paramString) { this.battery = paramString; }\r
+  \r
+  public void setBatteryLow(boolean paramBoolean) { this.batteryLow = paramBoolean; }\r
+  \r
+  public void setBatterychanging(boolean paramBoolean) { this.batterychanging = paramBoolean; }\r
+  \r
+  public void setBelong(String paramString) { this.belong = paramString; }\r
+  \r
+  public void setCacheDir(File paramFile) { this.cacheDir = paramFile; }\r
+  \r
+  public void setCdmaInfo(String paramString) { this.cdmaInfo = paramString; }\r
+  \r
+  public void setCellinfo(String paramString) { this.cellinfo = paramString; }\r
+  \r
+  public void setCid(String paramString) { this.cid = paramString; }\r
+  \r
+  public void setContextProxy(ContextProxy paramContextProxy) { this.contextProxy = paramContextProxy; }\r
+  \r
+  public void setCurrentCellInfo(String paramString) { this.currentCellInfo = paramString; }\r
+  \r
+  public void setDBHelper(DBHelper paramDBHelper) { this.dbHelper = paramDBHelper; }\r
+  \r
+  public void setDevice_id(String paramString) { this.device_id = paramString; }\r
+  \r
+  public void setDevice_key(String paramString) { this.device_key = paramString; }\r
+  \r
+  public void setFileDir(File paramFile) { this.fileDir = paramFile; }\r
+  \r
+  public void setHaveBatteryChange(boolean paramBoolean) { this.haveBatteryChange = paramBoolean; }\r
+  \r
+  public void setHaveBuy(String paramString) { this.haveBuy = paramString; }\r
+  \r
+  public void setHaveTry(String paramString) { this.haveTry = paramString; }\r
+  \r
+  public void setHostAndPort(String paramString, int paramInt) {\r
+    this.host = paramString;\r
+    this.port = paramInt;\r
+  }\r
+  \r
+  public void setImeiAndCid(String paramString1, String paramString2) {\r
+    this.imei = paramString1;\r
+    this.cid = paramString2;\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    this.imei_cid = stringBuilder.toString();\r
+  }\r
+  \r
+  public void setImsi(String paramString) { this.imsi = paramString; }\r
+  \r
+  public void setKey(String paramString) {\r
+    this.key = paramString;\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(this.imei_cid);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString);\r
+    this.imei_cid_key = stringBuilder.toString();\r
+  }\r
+  \r
+  public void setLatitude(String paramString) { this.latitude = paramString; }\r
+  \r
+  public void setLbsHelper(LBSHelper paramLBSHelper) { this.lbsHelper = paramLBSHelper; }\r
+  \r
+  public void setLbsInfoByAt(String paramString1, String paramString2) {\r
+    this.lacByAt = paramString1;\r
+    this.cellidByAt = paramString2;\r
+  }\r
+  \r
+  public void setLocation(String paramString) { this.location = paramString; }\r
+  \r
+  public void setLockSimInfo(boolean paramBoolean) { this.lockSimInfo = paramBoolean; }\r
+  \r
+  public void setLongitude(String paramString) { this.longitude = paramString; }\r
+  \r
+  public void setMccAndMnc(String MccMnc) {\r
+    this.mccAndMnc = MccMnc;\r
+\r
+    String [] list=MccMnc.split(",");\r
+    if (list.length>=2){\r
+      gpsp.setMCC(list[0]);\r
+      gpsp.setMNC(list[1]);\r
+    }\r
+    Logger.i("setMccAndMnc "+MccMnc);\r
+  }\r
+  \r
+  public void setSaveStepCount(int paramInt) { this.saveStepCount = paramInt; }\r
+  \r
+  public void setShutdown(boolean paramBoolean) { this.shutdown = paramBoolean; }\r
+  \r
+  public void setSignalStrength(int signal) {\r
+    this.SignalStrength = signal;\r
+    Logger.i("setSignalStrength "+signal);\r
+  }\r
+  \r
+  public void setTestServerProp(boolean paramBoolean) { this.testServerProp = paramBoolean; }\r
+  \r
+  public void setTimestamp(long paramLong) { this.timestamp = paramLong; }\r
+  \r
+  public void setTotalStepCount(int paramInt) { this.totalStepCount = paramInt; }\r
+  \r
+  public void setVideoID(String paramString) { this.videoID = paramString; }\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+  private final String UserDebug = "userdebug";\r
+  private final String User = "user";\r
+\r
+\r
+  private ICLocation gpsp = null;\r
+\r
+  private String wifiInfo="";\r
+\r
+  public void setWifiinfo(String info){\r
+    wifiInfo=info;\r
+  }\r
+\r
+  public String getWifiInfo(){\r
+    return wifiInfo;\r
+  }\r
+\r
+  public Runtime() {\r
+    if (gpsp == null) gpsp = new ICLocation();\r
+  }\r
+\r
+  public ICLocation getLocationInstance(){\r
+    return gpsp;\r
+  }\r
+  public String getIMEI() {\r
+    return imei;\r
+  }\r
+\r
+\r
+  public boolean isNetworkAvailable() {\r
+    return true;\r
+  }\r
+\r
+\r
+  /*\r
+  return UserDebug , User\r
+   */\r
+  public String BuildType() {\r
+    return UserDebug;\r
+  }\r
+\r
+\r
+  public String HardwareInfo() {\r
+    return "SC9820E C41 V1.0";\r
+  }\r
+\r
+  public String BuildVersion() {\r
+    return "C41-GW-V0.0.1";\r
+  }\r
+\r
+  public String getBatteryLevel() {\r
+    return "100";\r
+  }\r
+\r
+  /*    AP03 心跳包     */\r
+  public String getGSMSignal() {\r
+    return "060";\r
+  }\r
+\r
+  public String getGPSLocationStarNums() {\r
+    return "009";\r
+  }\r
+\r
+  public String getProtection() {\r
+    return "00";\r
+  }\r
+\r
+  public String getWorkMode() {\r
+    return "00";\r
+  }\r
+\r
+  public String getStepCount() {\r
+    return "23425";\r
+  }\r
+\r
+  public String getRolltimes() {\r
+    return "00";\r
+  }\r
+  /*  AP03 心跳包 end       */\r
+\r
+  /*  AP01 定位       */\r
+\r
+  /* 返回 2位年2位月2位日, 如2019-12-30 返回 191230*/\r
+  public String getShortDate() {\r
+    String DEFAULT_TIME_FORMAT = "yyMMdd";\r
+    SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);\r
+    String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间\r
+    return dateStr;\r
+  }\r
+\r
+  public void parseDatetiime(String datetimeStr){\r
+\r
+    SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式\r
+    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式\r
+    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");\r
+    Date date1 = null;\r
+    try {\r
+      date1 = dff.parse(datetimeStr);\r
+    } catch (ParseException e) {\r
+      e.printStackTrace();\r
+    }\r
+    String str1 = df1.format(date1);\r
+    String str2 = df2.format(date1);\r
+\r
+  }\r
+  /*061830: 格林尼治时间06 点18 分30 秒 */\r
+  public String getShortTime(){\r
+    String DEFAULT_TIME_FORMAT = "HHmmss";\r
+    //设置时间的格式\r
+    //                      yyyy-MM-dd 1969-12-31\r
+    //                      yyyy-MM-dd 1970-01-01\r
+    //                yyyy-MM-dd HH:mm 1969-12-31 16:00\r
+    //                yyyy-MM-dd HH:mm 1970-01-01 00:00\r
+    //               yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800\r
+    //               yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000\r
+    //        yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800\r
+    //        yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000\r
+    //      yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800\r
+    //      yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000\r
+    //注:HH显示的是24小时制,hh显示的是12小时制\r
+\r
+    SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);\r
+    String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间\r
+//        SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式\r
+//        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式\r
+//        SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");\r
+\r
+    return dateStr;\r
+  }\r
+\r
+  public boolean isGPSFixed(){\r
+    return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED);\r
+  }\r
+\r
+  public String getGPSData(){\r
+//        2232.9806N11404.9355E000.1: 北纬22度32.9806分,东经114度04.9355分,速度为000.1 km/h,如经纬度无效,可默认全为0,如0000.0000N00000.0000E\r
+//        纬度格式为: ddmm.mmmm ,长度不足长度前补0\r
+//        经度格式为:dddmm.mmmm,长度不足前补0\r
+    StringBuilder sb=new StringBuilder();\r
+    int lati=(int)gpsp.getLocation().lat;\r
+    int latl=(int) ((gpsp.getLocation().lat - lati)*10000);\r
+    int loni=(int)gpsp.getLocation().lon;\r
+    int lonl=(int) ((gpsp.getLocation().lon - loni)*10000);\r
+    int speedi=(int)gpsp.getLocation().speed;\r
+    int speedl=(int) ((gpsp.getLocation().speed - speedi)*10);\r
+\r
+    if (isGPSFixed())\r
+    {\r
+      String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",lati,latl,loni,lonl,speedi,speedl);\r
+      sb.append("A").append(gpsStr);\r
+    }else{\r
+      String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",0,0,0,0,0,0);\r
+      sb.append("V").append(gpsStr);\r
+    }\r
+\r
+\r
+    return sb.toString();\r
+  }\r
+\r
+  public String getGPSHeading(){\r
+    int headingi=(int)gpsp.getLocation().heading;\r
+    int headingl=(int) ((gpsp.getLocation().heading - headingi)*100);\r
+    String gpsStr=String.format("%03d.%02d",headingi,headingl);\r
+    return gpsStr;\r
+  }\r
+\r
+\r
+  public String getLBSData(){\r
+\r
+//        460,0,9520,3671 : LBS基站数据,MCC国家码,460为中国,0:MNC,0为移动,9520:LAC,十进制,3671,CID,十进制\r
+    StringBuilder sb=new StringBuilder();\r
+    sb.append(gpsp.getMCC()).append(",")\r
+            .append(gpsp.getMNC()).append(",")\r
+            .append(gpsp.getLAC()).append(",")\r
+            .append(gpsp.getGSMStationCID());\r
+    return sb.toString();\r
+  }\r
+\r
+  public String getWifiData(){\r
+    StringBuilder sb=new StringBuilder();\r
+\r
+    int i=0;\r
+    for (String mac : gpsp.getLBSdata().wifi_aps.keySet()){\r
+      sb.append("AP").append(i).append("|").append(mac).append("|").append(gpsp.getLBSdata().wifi_aps.get(mac)).append(",");\r
+      i++;\r
+    }\r
+    if (i>0){\r
+      int index=sb.lastIndexOf(",");\r
+      sb.replace(index,index+1,"");\r
+    }\r
+    return sb.toString();\r
+  }\r
+  /*  AP01 定位 end       */\r
+\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Silent.java b/app/src/main/java/com/ic/protocol/bean/Silent.java
new file mode 100644 (file)
index 0000000..2b4e853
--- /dev/null
@@ -0,0 +1,62 @@
+package com.ic.protocol.bean;\r
+\r
+public class Silent {\r
+  public String cur_sys_status;\r
+  \r
+  public String end;\r
+  \r
+  public long endTimeMillis;\r
+  \r
+  public String start;\r
+  \r
+  public long startTimeMillis;\r
+  \r
+  public String status;\r
+  \r
+  public String week;\r
+  \r
+  public Silent(String paramString1, String paramString2, String paramString3, String paramString4) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+  }\r
+  \r
+  public Silent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+    this.cur_sys_status = paramString5;\r
+  }\r
+  \r
+  public boolean equals(Object obj) {\r
+    if (this == obj)\r
+      return true; \r
+    if (obj != null) {\r
+      if (getClass() != obj.getClass())\r
+        return false;\r
+      Silent silent = (Silent)obj;\r
+      return !this.start.equals(silent.start) ? false : (!this.end.equals(silent.end) ? false : (!this.week.equals(silent.week) ? false : this.status.equals(silent.status)));\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Silent{start='");\r
+    stringBuilder.append(this.start);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", end='");\r
+    stringBuilder.append(this.end);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", week='");\r
+    stringBuilder.append(this.week);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", status='");\r
+    stringBuilder.append(this.status);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/StepCount.java b/app/src/main/java/com/ic/protocol/bean/StepCount.java
new file mode 100644 (file)
index 0000000..c53feff
--- /dev/null
@@ -0,0 +1,21 @@
+package com.ic.protocol.bean;\r
+\r
+public class StepCount {\r
+  String date;\r
+  \r
+  int stepCount;\r
+  \r
+  public StepCount(int paramInt, String paramString) {\r
+    this.stepCount = paramInt;\r
+    this.date = paramString;\r
+  }\r
+  \r
+  public String getDate() { return this.date; }\r
+  \r
+  public int getStepCount() { return this.stepCount; }\r
+  \r
+  public void setDate(String paramString) { this.date = paramString; }\r
+  \r
+  public void setStepCount(int paramInt) { this.stepCount = paramInt; }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/StheartRate.java b/app/src/main/java/com/ic/protocol/bean/StheartRate.java
new file mode 100644 (file)
index 0000000..4ebc898
--- /dev/null
@@ -0,0 +1,65 @@
+package com.ic.protocol.bean;\r
+\r
+public class StheartRate {\r
+  public String end;\r
+  \r
+  public long endTimeMillis;\r
+  \r
+  public String interval;\r
+  \r
+  public String start;\r
+  \r
+  public long startTimeMillis;\r
+  \r
+  public String status;\r
+  \r
+  public String week;\r
+  \r
+  public StheartRate(String paramString1, String paramString2, String paramString3, String paramString4) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+  }\r
+  \r
+  public StheartRate(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
+    this.start = paramString1;\r
+    this.end = paramString2;\r
+    this.week = paramString3;\r
+    this.status = paramString4;\r
+    this.interval = paramString5;\r
+  }\r
+  \r
+  public boolean equals(Object obj) {\r
+    if (this == obj)\r
+      return true; \r
+    if (obj != null) {\r
+      if (getClass() != obj.getClass())\r
+        return false;\r
+      StheartRate hr = (StheartRate)obj;\r
+      return !this.start.equals(hr.start) ? false : (!this.end.equals(hr.end) ? false : (!this.week.equals(hr.week) ? false : (!this.interval.equals(hr.interval) ? false : this.status.equals(hr.status))));\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("StheartRate{start='");\r
+    stringBuilder.append(this.start);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", end='");\r
+    stringBuilder.append(this.end);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", week='");\r
+    stringBuilder.append(this.week);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", status='");\r
+    stringBuilder.append(this.status);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", interval='");\r
+    stringBuilder.append(this.interval);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/StringMessage.java b/app/src/main/java/com/ic/protocol/bean/StringMessage.java
new file mode 100644 (file)
index 0000000..a89833a
--- /dev/null
@@ -0,0 +1,43 @@
+package com.ic.protocol.bean;\r
+\r
+import java.util.ArrayList;\r
+\r
+public class StringMessage {\r
+  ArrayList<byte[]> bs;\r
+  \r
+  private String cache;\r
+  \r
+  protected String[] fragments;\r
+  \r
+  public boolean u8;\r
+  \r
+  public StringMessage(String paramString) {\r
+    this.cache = paramString;\r
+    this.u8 = true;\r
+  }\r
+  \r
+  public StringMessage(String[] paramArrayOfString) { this(paramArrayOfString, true); }\r
+  \r
+  public StringMessage(String[] paramArrayOfString, ArrayList<byte[]> paramArrayList) {\r
+    this.fragments = paramArrayOfString;\r
+    this.bs = paramArrayList;\r
+  }\r
+  \r
+  public StringMessage(String[] paramArrayOfString, boolean paramBoolean) {\r
+    this.fragments = paramArrayOfString;\r
+    this.u8 = paramBoolean;\r
+  }\r
+  \r
+  public String[] all() { return this.fragments; }\r
+  \r
+  public String cmd() { return this.fragments[0]; }\r
+  \r
+  public String isFromCache() { return this.cache; }\r
+  \r
+  public void refresh(String paramString) { this.cache = paramString; }\r
+  \r
+  public int size() { return (this.fragments != null) ? this.fragments.length : 0; }\r
+  \r
+  public ArrayList<byte[]> source() { return this.bs; }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Weather.java b/app/src/main/java/com/ic/protocol/bean/Weather.java
new file mode 100644 (file)
index 0000000..cd640d4
--- /dev/null
@@ -0,0 +1,39 @@
+package com.ic.protocol.bean;\r
+\r
+public class Weather {\r
+  public String cur_Temperature;\r
+  \r
+  public String max_Temperature;\r
+  \r
+  public String min_Temperature;\r
+  \r
+  public String weatherIndex;\r
+  \r
+  public String weatherInfo;\r
+  \r
+  public String weatherType;\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("Weather{weatherType='");\r
+    stringBuilder.append(this.weatherType);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", min_Temperature='");\r
+    stringBuilder.append(this.min_Temperature);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", max_Temperature='");\r
+    stringBuilder.append(this.max_Temperature);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", cur_Temperature='");\r
+    stringBuilder.append(this.cur_Temperature);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", weatherIndex='");\r
+    stringBuilder.append(this.weatherIndex);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", weatherInfo='");\r
+    stringBuilder.append(this.weatherInfo);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
+}\r
index 8291211..5043d81 100644 (file)
@@ -1,6 +1,6 @@
 package com.ic.protocol.bean;\r
 \r
-import com.ic.protocol.utils.ICLog;\r
+import com.ic.protocol.utils.Logger;\r
 \r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
@@ -8,224 +8,40 @@ import java.util.Calendar;
 import java.util.Date;\r
 import java.util.Locale;\r
 \r
-public class deviceStatus {\r
-    private String imei = "867155030001063";\r
-    private final String UserDebug = "userdebug";\r
-    private final String User = "user";\r
+public class DeviceStatus {\r
+\r
+       \r
+       public String endTime;\r
+  \r
+  public int isAlarm;\r
+  \r
+  public String isSilence;\r
+  \r
+  public String startTime;\r
+  \r
+  public DeviceStatus(String paramString1, String paramString2, String paramString3, int paramInt) {\r
+    this.isSilence = paramString1;\r
+    this.startTime = paramString2;\r
+    this.endTime = paramString3;\r
+    this.isAlarm = paramInt;\r
+  }\r
+  \r
+  public String toString() {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("DeviceStatus{isSilence='");\r
+    stringBuilder.append(this.isSilence);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", startTime='");\r
+    stringBuilder.append(this.startTime);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", endTime='");\r
+    stringBuilder.append(this.endTime);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append(", isAlarm='");\r
+    stringBuilder.append(this.isAlarm);\r
+    stringBuilder.append('\'');\r
+    stringBuilder.append('}');\r
+    return stringBuilder.toString();\r
+  }\r
 \r
-    private ICLocation gpsp = null;\r
-\r
-    private String wifiInfo="";\r
-\r
-    public void setWifiinfo(String info){\r
-        wifiInfo=info;\r
-    }\r
-\r
-    public String getWifiInfo(){\r
-        return wifiInfo;\r
-    }\r
-\r
-    public deviceStatus() {\r
-        if (gpsp == null) gpsp = new ICLocation();\r
-    }\r
-\r
-    public ICLocation getLocationInstance(){\r
-        return gpsp;\r
-    }\r
-    public String getIMEI() {\r
-        return imei;\r
-    }\r
-\r
-\r
-    public boolean isNetworkAvailable() {\r
-        return true;\r
-    }\r
-\r
-    /*\r
-    return UserDebug , User\r
-     */\r
-    public String BuildType() {\r
-        return UserDebug;\r
-    }\r
-\r
-\r
-    public String HardwareInfo() {\r
-        return "SC9820E C41 V1.0";\r
-    }\r
-\r
-    public String BuildVersion() {\r
-        return "C41-GW-V0.0.1";\r
-    }\r
-\r
-    public String getBatteryLevel() {\r
-        return "100";\r
-    }\r
-\r
-    /*    AP03 心跳包     */\r
-    public String getGSMSignal() {\r
-        return "060";\r
-    }\r
-\r
-    public String getGPSLocationStarNums() {\r
-        return "009";\r
-    }\r
-\r
-    public String getProtection() {\r
-        return "00";\r
-    }\r
-\r
-    public String getWorkMode() {\r
-        return "00";\r
-    }\r
-\r
-    public String getStepCount() {\r
-        return "23425";\r
-    }\r
-\r
-    public String getRolltimes() {\r
-        return "00";\r
-    }\r
-    /*  AP03 心跳包 end       */\r
-\r
-    /*  AP01 定位       */\r
-\r
-    /* 返回 2位年2位月2位日, 如2019-12-30 返回 191230*/\r
-    public String getShortDate() {\r
-        String DEFAULT_TIME_FORMAT = "yyMMdd";\r
-        SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);\r
-        String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间\r
-        return dateStr;\r
-    }\r
-\r
-    public void parseDatetiime(String datetimeStr){\r
-\r
-    SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式\r
-    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式\r
-    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");\r
-        Date date1 = null;\r
-        try {\r
-            date1 = dff.parse(datetimeStr);\r
-        } catch (ParseException e) {\r
-            e.printStackTrace();\r
-        }\r
-        String str1 = df1.format(date1);\r
-        String str2 = df2.format(date1);\r
-\r
-    }\r
-    /*061830: 格林尼治时间06 点18 分30 秒 */\r
-    public String getShortTime(){\r
-        String DEFAULT_TIME_FORMAT = "HHmmss";\r
-        //设置时间的格式\r
-        //                      yyyy-MM-dd 1969-12-31\r
-        //                      yyyy-MM-dd 1970-01-01\r
-        //                yyyy-MM-dd HH:mm 1969-12-31 16:00\r
-        //                yyyy-MM-dd HH:mm 1970-01-01 00:00\r
-        //               yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800\r
-        //               yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000\r
-        //        yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800\r
-        //        yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000\r
-        //      yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800\r
-        //      yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000\r
-        //注:HH显示的是24小时制,hh显示的是12小时制\r
-\r
-        SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);\r
-        String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间\r
-//        SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式\r
-//        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式\r
-//        SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");\r
-\r
-        return dateStr;\r
-    }\r
-\r
-    public boolean isGPSFixed(){\r
-        return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED);\r
-    }\r
-\r
-    public String getGPSData(){\r
-//        2232.9806N11404.9355E000.1: 北纬22度32.9806分,东经114度04.9355分,速度为000.1 km/h,如经纬度无效,可默认全为0,如0000.0000N00000.0000E\r
-//        纬度格式为: ddmm.mmmm ,长度不足长度前补0\r
-//        经度格式为:dddmm.mmmm,长度不足前补0\r
-        StringBuilder sb=new StringBuilder();\r
-        int lati=(int)gpsp.getLocation().lat;\r
-        int latl=(int) ((gpsp.getLocation().lat - lati)*10000);\r
-        int loni=(int)gpsp.getLocation().lon;\r
-        int lonl=(int) ((gpsp.getLocation().lon - loni)*10000);\r
-        int speedi=(int)gpsp.getLocation().speed;\r
-        int speedl=(int) ((gpsp.getLocation().speed - speedi)*10);\r
-\r
-         if (isGPSFixed())\r
-        {\r
-            String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",lati,latl,loni,lonl,speedi,speedl);\r
-            sb.append("A").append(gpsStr);\r
-        }else{\r
-             String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",0,0,0,0,0,0);\r
-             sb.append("V").append(gpsStr);\r
-        }\r
-\r
-\r
-        return sb.toString();\r
-    }\r
-\r
-    public String getGPSHeading(){\r
-        int headingi=(int)gpsp.getLocation().heading;\r
-        int headingl=(int) ((gpsp.getLocation().heading - headingi)*100);\r
-        String gpsStr=String.format("%03d.%02d",headingi,headingl);\r
-        return gpsStr;\r
-    }\r
-\r
-    public void setSignalStrength(int signal){\r
-        ICLog.i("setSignalStrength "+signal);\r
-    }\r
-\r
-    public void setMccAndMnc(String MccMnc){\r
-        String [] list=MccMnc.split(",");\r
-        if (list.length>=2){\r
-            gpsp.setMCC(list[0]);\r
-            gpsp.setMNC(list[1]);\r
-        }\r
-        ICLog.i("setMccAndMnc "+MccMnc);\r
-    }\r
-\r
-    public void setCdmaInfo(String cdma){\r
-        ICLog.i("setCdmaInfo "+cdma);\r
-    }\r
-\r
-    private String cellinfo;\r
-    public void setCurrentCellInfo(String _cellinfo){\r
-        ICLog.i("setCurrentCellInfo "+_cellinfo);\r
-        cellinfo = _cellinfo;\r
-    }\r
-\r
-\r
-\r
-    public String getCurrentCellInfo(){\r
-        return cellinfo;\r
-    }\r
-\r
-    public String getLBSData(){\r
-\r
-//        460,0,9520,3671 : LBS基站数据,MCC国家码,460为中国,0:MNC,0为移动,9520:LAC,十进制,3671,CID,十进制\r
-        StringBuilder sb=new StringBuilder();\r
-        sb.append(gpsp.getMCC()).append(",")\r
-                .append(gpsp.getMNC()).append(",")\r
-                .append(gpsp.getLAC()).append(",")\r
-                .append(gpsp.getGSMStationCID());\r
-        return sb.toString();\r
-    }\r
-\r
-    public String getWifiData(){\r
-        StringBuilder sb=new StringBuilder();\r
-\r
-           int i=0;\r
-           for (String mac : gpsp.getLBSdata().wifi_aps.keySet()){\r
-               sb.append("AP").append(i).append("|").append(mac).append("|").append(gpsp.getLBSdata().wifi_aps.get(mac)).append(",");\r
-               i++;\r
-           }\r
-            if (i>0){\r
-                int index=sb.lastIndexOf(",");\r
-                sb.replace(index,index+1,"");\r
-            }\r
-        return sb.toString();\r
-    }\r
-    /*  AP01 定位 end       */\r
 }\r
diff --git a/app/src/main/java/com/ic/protocol/service/KeepAlive.java b/app/src/main/java/com/ic/protocol/service/KeepAlive.java
new file mode 100644 (file)
index 0000000..2f6ea96
--- /dev/null
@@ -0,0 +1,303 @@
+package com.ic.protocol.service;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.SystemClock;\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.base.AbstractConnectionService;\r
+import com.ic.protocol.utils.AlarmWakeUp;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.NettyConnection;\r
+import com.ic.protocol.utils.NetworkObservable;\r
+import com.ic.protocol.utils.ServiceUtil;\r
+import com.ic.protocol.bean.Runtime;\r
+import rx.Subscription;\r
+import rx.functions.Action1;\r
+\r
+public class KeepAlive extends AbstractConnectionService {\r
+  private static final long HEARTBEAT_TIMEOUT = 660000L;\r
+  \r
+  public static boolean connectionError = false;\r
+  \r
+  public static boolean isConnected = false;\r
+  \r
+  private static boolean isInSleepMode = false;\r
+  \r
+  private static int mFlag = 30;\r
+  \r
+  Connection connection;\r
+  \r
+  private int currentReConnectInterval = 11;\r
+  \r
+  private boolean firstReConnected = true;\r
+  \r
+  private long idleTimeMillis;\r
+  \r
+  private int isFirstAsjust;\r
+  \r
+  private int lastReConnectInterval = -1;\r
+  \r
+  private int lastReConnectionNumber = -1;\r
+  \r
+  Context mContext;\r
+  \r
+  NetworkObservable mNetworkObservable = new NetworkObservable();\r
+  \r
+  Runtime mRuntime;\r
+  \r
+  private ShutDownReceiver mShutDownReceiver;\r
+  \r
+  private Subscription mSubscription;\r
+  \r
+  private int reConnectionNumber;\r
+  \r
+  private int reCycleTimes;\r
+  \r
+  private int timeout = 660;\r
+  \r
+  private int totalAdjustTimes;\r
+  \r
+  private int whichTimeAdjust;\r
+  \r
+  static  {\r
+  \r
+  }\r
+  \r
+  private void UpdateHeartBeatTimeout() {\r
+    if (mFlag > 0)\r
+      mFlag--; \r
+    if (mFlag <= 0) {\r
+      getHeartBeatTimeout(this.reConnectionNumber);\r
+      this.lastReConnectionNumber = this.reConnectionNumber;\r
+      this.lastReConnectInterval = this.currentReConnectInterval;\r
+    } \r
+  }\r
+  \r
+  public int getHeartBeatTimeout(int paramInt) {\r
+    if (this.lastReConnectionNumber < this.reConnectionNumber && this.reConnectionNumber != 0) {\r
+      if (this.isFirstAsjust == 0) {\r
+        this.isFirstAsjust = 1;\r
+        if (paramInt > 16) {\r
+          this.currentReConnectInterval = 1;\r
+          this.timeout = 58;\r
+        } else if (paramInt > 9) {\r
+          this.currentReConnectInterval = 2;\r
+          this.timeout = 116;\r
+        } else if (paramInt > 7) {\r
+          this.currentReConnectInterval = 3;\r
+          this.timeout = 174;\r
+        } else if (paramInt > 4) {\r
+          this.currentReConnectInterval = 5;\r
+          this.timeout = 290;\r
+        } else if (paramInt > 0) {\r
+          this.currentReConnectInterval = 8;\r
+          this.timeout = 464;\r
+        } else {\r
+          this.currentReConnectInterval = 11;\r
+          this.timeout = 660;\r
+        } \r
+      } \r
+      paramInt = this.currentReConnectInterval;\r
+      if (paramInt != 5) {\r
+        if (paramInt != 8) {\r
+          if (paramInt != 11) {\r
+            switch (paramInt) {\r
+              default:\r
+                return this.timeout;\r
+              case 3:\r
+                this.currentReConnectInterval = 2;\r
+                this.timeout = 116;\r
+              case 2:\r
+                break;\r
+            } \r
+            this.currentReConnectInterval = 1;\r
+            this.timeout = 58;\r
+          } \r
+          this.currentReConnectInterval = 8;\r
+          this.timeout = 464;\r
+        } \r
+        this.currentReConnectInterval = 5;\r
+        this.timeout = 290;\r
+      } \r
+      this.currentReConnectInterval = 3;\r
+      this.timeout = 174;\r
+    } \r
+    if (this.lastReConnectionNumber == this.reConnectionNumber) {\r
+      if (this.currentReConnectInterval != 11) {\r
+        this.reCycleTimes++;\r
+        if (this.reCycleTimes >= this.currentReConnectInterval) {\r
+          this.reCycleTimes = 0;\r
+          if (this.whichTimeAdjust < 2) {\r
+            paramInt = this.currentReConnectInterval;\r
+            if (paramInt != 5) {\r
+              if (paramInt != 8) {\r
+                switch (paramInt) {\r
+                  default:\r
+                  \r
+                  case 3:\r
+                    this.whichTimeAdjust++;\r
+                    this.currentReConnectInterval = 5;\r
+                    this.timeout = 290;\r
+                  case 2:\r
+                    this.whichTimeAdjust++;\r
+                    this.currentReConnectInterval = 3;\r
+                    this.timeout = 174;\r
+                  case 1:\r
+                    break;\r
+                } \r
+                this.whichTimeAdjust++;\r
+                this.currentReConnectInterval = 2;\r
+                this.timeout = 116;\r
+              } \r
+              this.whichTimeAdjust++;\r
+              this.currentReConnectInterval = 11;\r
+              this.timeout = 660;\r
+            } \r
+            this.whichTimeAdjust++;\r
+            this.currentReConnectInterval = 8;\r
+            this.timeout = 464;\r
+          } \r
+          this.totalAdjustTimes++;\r
+          if (this.totalAdjustTimes >= 720) {\r
+            mFlag = 30;\r
+            this.reConnectionNumber = 0;\r
+            this.lastReConnectionNumber = -1;\r
+            this.totalAdjustTimes = 0;\r
+            this.whichTimeAdjust = 0;\r
+            this.reCycleTimes = 0;\r
+            this.currentReConnectInterval = 11;\r
+          } \r
+        } \r
+      } \r
+      mFlag = 30;\r
+      this.reConnectionNumber = 0;\r
+      this.lastReConnectionNumber = -1;\r
+      this.whichTimeAdjust = 0;\r
+      this.reCycleTimes = 0;\r
+    }\r
+    return 0;\r
+  }\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+    long l = SystemClock.elapsedRealtime();\r
+    if (!isConnected || l - this.idleTimeMillis > 660000L) {\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append("重连");\r
+      stringBuilder.append(isConnected);\r
+      Logger.i(stringBuilder.toString());\r
+      if (!isConnected && this.firstReConnected) {\r
+        this.reConnectionNumber++;\r
+        this.firstReConnected = false;\r
+      } \r
+      if (paramRuntime.getLockSimInfo()) {\r
+        paramConnection.disconnect();\r
+        return;\r
+      } \r
+      paramConnection.connect(paramRuntime.getHost(), paramRuntime.getPort());\r
+    } \r
+  }\r
+  \r
+  public void onAttach(final Connection connection, final Runtime runtime) {\r
+    this.mRuntime = runtime;\r
+    this.mContext = (runtime.getContextProxy()).context;\r
+    this.mNetworkObservable.register(this.mContext);\r
+    this.connection = connection;\r
+    this.mSubscription = this.mNetworkObservable.onChange().subscribe(new Action1<Integer>() {\r
+          private boolean first;\r
+          \r
+          public void call(Integer param1Integer) {\r
+            StringBuilder stringBuilder = new StringBuilder();\r
+            stringBuilder.append("yls  aBoolean=");\r
+            stringBuilder.append(param1Integer);\r
+            stringBuilder.append(",,first=");\r
+            stringBuilder.append(this.first);\r
+            Logger.i(stringBuilder.toString());\r
+            if (param1Integer.intValue() > 0) {\r
+              if (this.first) {\r
+                this.first = false;\r
+                return;\r
+              } \r
+              connection.connect(runtime.getHost(), runtime.getPort());\r
+            } \r
+          }\r
+        });\r
+    IntentFilter intentFilter = new IntentFilter();\r
+    intentFilter.addAction("android.intent.action.ACTION_SHUTDOWN_MOREINFO");\r
+    this.mShutDownReceiver = new ShutDownReceiver();\r
+    this.mContext.registerReceiver(this.mShutDownReceiver, intentFilter);\r
+  }\r
+  \r
+  public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) {\r
+    connectionError = true;\r
+    isConnected = false;\r
+    paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
+//    LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", 1);\r
+    return false;\r
+  }\r
+  \r
+  public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("connectionError=");\r
+    stringBuilder.append(connectionError);\r
+    stringBuilder.append(",sInSleepMode =");\r
+    stringBuilder.append(isInSleepMode);\r
+    Logger.i(stringBuilder.toString());\r
+    if (connectionError) {\r
+      connectionError = false;\r
+//      ServiceUtil.offerQueue(API.H10(paramRuntime), true);\r
+//      if (Deliver.haveSendH42) {\r
+//        ServiceUtil.offerQueue(API.H42(paramRuntime, "0"));\r
+//        Deliver.haveSendH42 = false;\r
+//      }\r
+    } \r
+    isConnected = true;\r
+    this.firstReConnected = true;\r
+    this.idleTimeMillis = SystemClock.elapsedRealtime();\r
+    paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
+    return false;\r
+  }\r
+\r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.mSubscription != null && !this.mSubscription.isUnsubscribed())\r
+      this.mSubscription.unsubscribe(); \r
+    this.mNetworkObservable.unregister(this.mContext);\r
+    this.mContext.unregisterReceiver(this.mShutDownReceiver);\r
+  }\r
+  \r
+  public void onHeartAlarm(NettyConnection paramNettyConnection, Runtime paramRuntime) {\r
+    Logger.i("onHeartAlarm");\r
+    UpdateHeartBeatTimeout();\r
+    if (this.reCycleTimes == 0 && this.currentReConnectInterval != 11){\r
+//      ServiceUtil.offerQueue(API.H10(paramRuntime), true);\r
+    }\r
+\r
+  }\r
+\r
+  public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    this.idleTimeMillis = SystemClock.elapsedRealtime();\r
+    if ("heart".equals(paramStringMessage.cmd()) || "Link:OK".equals(paramStringMessage.cmd()) || "Shutdown:OK".equals(paramStringMessage.cmd()) || "Sport:OK".equals(paramStringMessage.cmd())) {\r
+      if ("Shutdown:OK".equals(paramStringMessage.cmd()))\r
+        paramRuntime.getContextProxy().shutdown(); \r
+      if ("heart".equals(paramStringMessage.cmd()))\r
+        AlarmWakeUp.isNeedWakeUpAlarm(paramRuntime);\r
+      return true;\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public void setSleepMode(boolean paramBoolean) { isInSleepMode = paramBoolean; }\r
+  \r
+  class ShutDownReceiver extends BroadcastReceiver {\r
+    public void onReceive(Context param1Context, Intent param1Intent) {\r
+      boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
+      if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()){\r
+        //        KeepAlive.this.connection.send(API.H11(KeepAlive.this.mRuntime, "3"));\r
+      }\r
+\r
+    }\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/service/SendChatMessage.java b/app/src/main/java/com/ic/protocol/service/SendChatMessage.java
new file mode 100644 (file)
index 0000000..94cef5b
--- /dev/null
@@ -0,0 +1,255 @@
+package com.ic.protocol.service;\r
+\r
+import android.content.ContentResolver;\r
+import android.content.ContentUris;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.Bundle;\r
+import android.os.Message;\r
+import android.os.Messenger;\r
+import android.provider.MediaStore;\r
+\r
+import com.ic.protocol.bean.PictureContent;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.SimSignalUtil;\r
+\r
+import java.io.File;\r
+\r
+import rx.Observable;\r
+import rx.Subscriber;\r
+import rx.schedulers.Schedulers;\r
+\r
+public class SendChatMessage extends AbstractInvokeHandlerService {\r
+  private static final int LOCATION_TYPE = 7;\r
+  \r
+  public static boolean SEND_PAIR = false;\r
+  \r
+  private int mNetworkType;\r
+  \r
+  private SimSignalUtil mSignalUtil;\r
+  \r
+  static  {\r
+  \r
+  }\r
+  \r
+  private void callback(Messenger paramMessenger, int paramInt) {\r
+    if (paramMessenger != null)\r
+      try {\r
+        paramMessenger.send(Message.obtain(null, paramInt));\r
+        return;\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+      }  \r
+  }\r
+  \r
+  private void deleteImage(String paramString, Context paramContext) {\r
+//    Uri uri1;\r
+//    ContentResolver contentResolver = paramContext.getContentResolver();\r
+//    Uri uri2 = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;\r
+//    boolean bool = true;\r
+//    Cursor cursor = MediaStore.Images.Media.query(contentResolver, uri2, new String[] { "_id" }, "_data=?", new String[] { paramString }, null);\r
+//    if (cursor.moveToFirst()) {\r
+//      long l = cursor.getLong(0);\r
+//      uri1 = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, l);\r
+//      if (paramContext.getContentResolver().delete(uri1, null, null) != 1)\r
+//        bool = false;\r
+//    } else {\r
+//      bool = (new File(uri1).delete();\r
+//    }\r
+//    if (bool) {\r
+//      Logger.i("删除成功");\r
+//      return;\r
+//    }\r
+//    Logger.i("删除失败");\r
+  }\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public void onAttach(Connection paramConnection, Runtime paramRuntime) { this.mSignalUtil = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context); }\r
+  \r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public boolean onUserRequest(Intent paramIntent, Connection paramConnection, final Runtime runtime) {\r
+    String str = paramIntent.getAction();\r
+    if ("com.enqualcomm.support.ACTION_REMOTE_CAMERA".equals(str)) {\r
+      this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+      str = paramIntent.getStringExtra("filepath");\r
+      String str1 = paramIntent.getStringExtra("number");\r
+      if (str != null) {\r
+        if (str1 == null)\r
+          return true; \r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("filepath == ");\r
+        stringBuilder.append(str);\r
+        stringBuilder.append("number == ");\r
+        stringBuilder.append(str1);\r
+        Logger.i(stringBuilder.toString());\r
+        final PictureContent pictureContent = PictureContent.placeHolderOut(1, str1, str);\r
+        final Uri uri = runtime.getDbHelper().insertOrUpdate(pictureContent, 0L);\r
+//        Observable.create(new SendFileMessage(API.H30(paramRuntime, str1, "2", new File(str)), paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber<String>() {\r
+//              public void onCompleted() {}\r
+//\r
+//              public void onError(Throwable param1Throwable) {\r
+//                Logger.i("发送失败");\r
+////                this.val$pictureContent.status = 5;\r
+//                runtime.getDbHelper().updateMessage(pictureContent, uri);\r
+//              }\r
+//\r
+//              public void onNext(String param1String) {\r
+//                StringBuilder stringBuilder = new StringBuilder();\r
+//                stringBuilder.append("发送成功:");\r
+//                stringBuilder.append(param1String);\r
+//                Logger.i(stringBuilder.toString());\r
+//                this.val$pictureContent.status = 3;\r
+//                this.val$pictureContent.serverTime = TimeUtil.getSystemTime3();\r
+//                this.val$pictureContent.content = Util.cutFile(this.val$pictureContent.content, runtime.getCacheDir());\r
+//                runtime.getDbHelper().updateMessage(pictureContent, uri);\r
+//              }\r
+//            });\r
+      } else {\r
+        return true;\r
+      } \r
+    } else if (!"SYNC".equals(str) && "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS".equals(str)) {\r
+      Logger.i("添加测试人员名单");\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public boolean onUserRequest(Message paramMessage, Connection paramConnection, final Runtime runtime) {\r
+    Bundle bundle3;\r
+    String str3;\r
+    String str2;\r
+    String str1;\r
+    Bundle bundle2;\r
+    final Messenger callback2;\r
+    int j = paramMessage.what;\r
+    int i = 1;\r
+    switch (j) {\r
+      default:\r
+        return false;\r
+      case 1003:\r
+//        EqcAlgorithmNative.native_EqcAlgorithmMethod3(128);\r
+      case 1002:\r
+        this.mNetworkType = this.mSignalUtil.getNetworkType();\r
+        bundle3 = paramMessage.getData();\r
+        str1 = bundle3.getString("filepath");\r
+        str2 = bundle3.getString("number");\r
+        if (str1 != null) {\r
+          if (str2 == null)\r
+            return true;\r
+          StringBuilder stringBuilder = new StringBuilder();\r
+          stringBuilder.append("filepath == ");\r
+          stringBuilder.append(str1);\r
+          stringBuilder.append("number == ");\r
+          stringBuilder.append(str2);\r
+          Logger.i(stringBuilder.toString());\r
+          final PictureContent pictureContent = PictureContent.placeHolderOut(1, str2, str1);\r
+//          final Uri uri2 = paramRuntime.getDbHelper().insertOrUpdate(pictureContent, bundle3.getLong("id"));\r
+//          FileMessage fileMessage = API.H30(paramRuntime, str2, "0", new File(str1));\r
+//          messenger = paramMessage.replyTo;\r
+//          Observable.create(new SendFileMessage(fileMessage, paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber<String>() {\r
+//                public void onCompleted() {}\r
+//\r
+//                public void onError(Throwable param1Throwable) {\r
+//                  Logger.i("发送失败");\r
+//                  SendChatMessage.this.callback(callback, 500);\r
+//                  this.val$pictureContent.status = 5;\r
+//                  runtime.getDbHelper().updateMessage(pictureContent, uri);\r
+//                }\r
+//\r
+//                public void onNext(String param1String) {\r
+//                  StringBuilder stringBuilder2 = new StringBuilder();\r
+//                  stringBuilder2.append("发送成功:");\r
+//                  stringBuilder2.append(param1String);\r
+//                  Logger.i(stringBuilder2.toString());\r
+//                  SendChatMessage.this.callback(callback, 200);\r
+//                  this.val$pictureContent.status = 3;\r
+//                  this.val$pictureContent.serverTime = TimeUtil.getSystemTime3();\r
+//                  this.val$pictureContent.content = Util.copyFile(this.val$pictureContent.content, runtime.getCacheDir());\r
+//                  StringBuilder stringBuilder1 = new StringBuilder();\r
+//                  stringBuilder1.append("发送成功 pictureContent.content :");\r
+//                  stringBuilder1.append(this.val$pictureContent.content);\r
+//                  Logger.i(stringBuilder1.toString());\r
+//                  runtime.getDbHelper().updateMessage(pictureContent, uri);\r
+//                }\r
+//              });\r
+        } else {\r
+          return true;\r
+        }\r
+      case 1001:\r
+        this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+        this.mNetworkType = this.mSignalUtil.getNetworkType();\r
+        bundle2 = paramMessage.getData();\r
+        str2 = bundle2.getString("filepath");\r
+        str3 = bundle2.getString("number");\r
+        j = bundle2.getInt("category", -1);\r
+        if (str2 != null && str3 != null) {\r
+//          FileMessage fileMessage;\r
+//          if (j == -1)\r
+//            return true;\r
+//          if (j == 1 || j == 2) {\r
+//            fileMessage = API.H21(paramRuntime, str3, "0", new File(str2));\r
+//          } else if (j == 4) {\r
+//            fileMessage = API.H22(paramRuntime, str3, new File(str2));\r
+//            i = 2;\r
+//          } else {\r
+//            i = 3;\r
+//            fileMessage = API.H27(paramRuntime, str3, "0", new File(str2));\r
+//          }\r
+//          final VoiceContent voiceContent = VoiceContent.placeHolderOut(i, str3, str2);\r
+//          final Uri uri2 = paramRuntime.getDbHelper().insertOrUpdate(voiceContent, bundle2.getLong("id"));\r
+//          messenger = messenger.replyTo;\r
+//          Observable.create(new SendFileMessage(fileMessage, paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber<String>() {\r
+//                public void onCompleted() {}\r
+//\r
+//                public void onError(Throwable param1Throwable) {\r
+//                  Logger.i("发送失败");\r
+//                  SendChatMessage.this.callback(callback2, 500);\r
+//                  this.val$voiceContent.status = 5;\r
+//                  runtime.getDbHelper().updateMessage(voiceContent, uri2);\r
+//                }\r
+//\r
+//                public void onNext(String param1String) {\r
+//                  StringBuilder stringBuilder = new StringBuilder();\r
+//                  stringBuilder.append("发送成功:");\r
+//                  stringBuilder.append(param1String);\r
+//                  Logger.i(stringBuilder.toString());\r
+//                  SendChatMessage.this.callback(callback2, 200);\r
+//                  this.val$voiceContent.status = 3;\r
+//                  this.val$voiceContent.serverTime = TimeUtil.getSystemTime3();\r
+//                  this.val$voiceContent.preview = (this.val$voiceContent.content = Util.cutFile(this.val$voiceContent.content, runtime.getCacheDir())).valueOf(Util.getDuration(this.val$voiceContent.content));\r
+//                  runtime.getDbHelper().updateMessage(voiceContent, uri2);\r
+//                }\r
+//              });\r
+        } else {\r
+          return true;\r
+        }\r
+      case 1000:\r
+        break;\r
+    }\r
+//    Bundle bundle1 = paramMessage.getData();\r
+//    i = bundle1.getInt("category");\r
+//    Observable.create(new GetVoice(String.valueOf(i), bundle1.getString("number"), bundle1.getString("filepath"), String.valueOf(i), paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber<VoiceContent>() {\r
+//          Uri uri;\r
+//\r
+//          public void onCompleted() {}\r
+//\r
+//          public void onError(Throwable param1Throwable) {}\r
+//\r
+//          public void onNext(VoiceContent param1VoiceContent) {\r
+//            if (this.uri == null) {\r
+//              this.uri = runtime.getDbHelper().insertOrUpdate(param1VoiceContent);\r
+//              return;\r
+//            }\r
+//            runtime.getDbHelper().updateMessage(param1VoiceContent, this.uri);\r
+//          }\r
+//        });\r
+    return true;\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/SilentManager.java b/app/src/main/java/com/ic/protocol/service/SilentManager.java
new file mode 100644 (file)
index 0000000..6c10193
--- /dev/null
@@ -0,0 +1,854 @@
+package com.ic.protocol.service;\r
+\r
+import android.app.AlarmManager;\r
+import android.app.PendingIntent;\r
+import android.content.BroadcastReceiver;\r
+import android.content.ComponentName;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.database.ContentObserver;\r
+import android.net.Uri;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.Messenger;\r
+import android.telephony.PhoneStateListener;\r
+import android.telephony.TelephonyManager;\r
+\r
+\r
+import com.ic.protocol.service.protocolMainServer;\r
+import com.ic.protocol.ICContentProvider;\r
+import com.ic.protocol.bean.Alarm;\r
+import com.ic.protocol.bean.Antioff;\r
+import com.ic.protocol.bean.NoticeContent;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.bean.Silent;\r
+import com.ic.protocol.bean.StheartRate;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
+import com.ic.protocol.utils.AlarmHelper;\r
+import com.ic.protocol.utils.DBHelper;\r
+import com.ic.protocol.utils.Logger;\r
+\r
+import com.ic.protocol.utils.SharPreferenceUtil;\r
+import com.ic.protocol.utils.TimeUtil;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Calendar;\r
+import java.util.Iterator;\r
+\r
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
+import static java.util.Calendar.DAY_OF_MONTH;\r
+import static java.util.Calendar.HOUR_OF_DAY;\r
+import static java.util.Calendar.MINUTE;\r
+import static java.util.Calendar.MONTH;\r
+import static java.util.Calendar.SECOND;\r
+import static java.util.Calendar.UNDECIMBER;\r
+import static java.util.Calendar.YEAR;\r
+\r
+public class SilentManager extends AbstractInvokeHandlerService {\r
+  private static final long ONE_WEEK = 604800000L;\r
+  \r
+  private ArrayList<Alarm> alarms;\r
+  \r
+  private boolean haveHandSilence;\r
+  \r
+  private boolean isCalling;\r
+  \r
+  AlarmManager mAlarmManager;\r
+  \r
+  private AlramReceiver mAlramReceiver;\r
+  \r
+  Connection mConnection;\r
+  \r
+  ContentObserver mContentObserver = new ContentObserver(new Handler()) {\r
+      public void onChange(boolean param1Boolean) {\r
+        Logger.i("静默有变化");\r
+//        SilentManager.access$002(SilentManager.this, SilentManager.this.querySilent());\r
+        SilentManager.this.getSilentListStartAndEndTime();\r
+        SilentManager.this.handleSilent(SilentManager.this.mRuntime, true);\r
+      }\r
+    };\r
+  \r
+  private Context mContext;\r
+  \r
+  private DBHelper mDbHelper;\r
+  \r
+  private boolean mInSilent;\r
+  \r
+  private String mInterval;\r
+  \r
+  private boolean mIsNeedAntioff;\r
+  \r
+  private boolean mIsStheartRate;\r
+  \r
+//  private MissedCallContentObserver mMissedCallContentObserver;\r
+  \r
+  Runtime mRuntime;\r
+  \r
+  private int mStheartRateInterval;\r
+  \r
+  private int mTodayWeek;\r
+  \r
+  private boolean mValue_isSilence;\r
+  \r
+  private PhoneStateListener phoneStateListener = new PhoneStateListener() {\r
+      public void onCallStateChanged(int param1Int, String param1String) {\r
+        Intent intent;\r
+        super.onCallStateChanged(param1Int, param1String);\r
+        switch (param1Int) {\r
+          default:\r
+            return;\r
+          case 2:\r
+//            SilentManager.access$1702(SilentManager.this, true);\r
+            return;\r
+          case 1:\r
+//            SilentManager.access$1702(SilentManager.this, true);\r
+            intent = new Intent();\r
+            intent.setAction("com.enqualcomm.support.CloseUnreadMsg");\r
+            SilentManager.this.mContext.sendBroadcast(intent);\r
+            return;\r
+          case 0:\r
+            break;\r
+        } \r
+//        SilentManager.access$1702(SilentManager.this, false);\r
+        if (SilentManager.this.haveHandSilence)\r
+          SilentManager.this.handSilence(SilentManager.this.mContext, SilentManager.this.mValue_isSilence); \r
+      }\r
+    };\r
+  \r
+  private ArrayList<Antioff> sAntioffList;\r
+  \r
+  private ArrayList<Silent> silentList;\r
+  \r
+  private ArrayList<StheartRate> stheartRateList;\r
+  \r
+  private ArrayList<NoticeContent> voiceNotice;\r
+  \r
+  private void callback(Messenger paramMessenger, boolean paramBoolean) {\r
+    char c;\r
+    if (paramBoolean) {\r
+      c = 'ɘ';\r
+    } else {\r
+      c = 'ʼ';\r
+    } \r
+    if (paramMessenger != null)\r
+      try {\r
+        paramMessenger.send(Message.obtain(null, c));\r
+        return;\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+      }  \r
+  }\r
+  \r
+  private void cancelAlarm(ArrayList<Alarm> paramArrayList) {\r
+    for (Alarm alarm : paramArrayList) {\r
+      String str1 = alarm.time;\r
+      String str2 = alarm.week;\r
+      String str3 = alarm.ring;\r
+      String str4 = alarm.name;\r
+      char[] arrayOfChar = str2.toCharArray();\r
+      int i = arrayOfChar.length;\r
+      for (byte b = 1; b < i; b++) {\r
+        char c = arrayOfChar[b];\r
+        this.mAlarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/'));\r
+      } \r
+    } \r
+  }\r
+  \r
+  private void cancelNoticeAlarm(ArrayList<NoticeContent> paramArrayList) {\r
+    for (NoticeContent noticeContent : paramArrayList) {\r
+      String str1 = noticeContent.noticeTime;\r
+      String str2 = noticeContent.noticeName;\r
+      String str3 = noticeContent.noticeNumber;\r
+      String str4 = noticeContent.noticeID;\r
+      String str5 = noticeContent.noticeCategory;\r
+      String str6 = noticeContent.noticeFrequency;\r
+      String str7 = noticeContent.noticeContent;\r
+      this.mAlarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7));\r
+    } \r
+  }\r
+  \r
+  private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String paramString4, int paramInt) {\r
+    StringBuilder stringBuilder = new StringBuilder("alarm:");\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString3);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString4);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramInt);\r
+    paramString1 = stringBuilder.toString();\r
+    Intent intent = new Intent(this.mContext, protocolMainServer.class);\r
+    intent.setAction("com.enqualcomm.support.ACTION_CARE_ALARM");\r
+    intent.setData(Uri.parse(paramString1));\r
+    return PendingIntent.getService(this.mContext, 0, intent, FLAG_UPDATE_CURRENT);\r
+  }\r
+  \r
+  private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5, String paramString6, String paramString7) {\r
+    StringBuilder stringBuilder = new StringBuilder("notice:");\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString3);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString4);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString5);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString6);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString7);\r
+    paramString1 = stringBuilder.toString();\r
+    Intent intent = new Intent(this.mContext, protocolMainServer.class);\r
+    intent.setAction("com.enqualcomm.support.ACTION_NOTICE_ALARM");\r
+    intent.setData(Uri.parse(paramString1));\r
+    return PendingIntent.getService(this.mContext, 0, intent, FLAG_UPDATE_CURRENT);\r
+  }\r
+  \r
+  private void getSilentListStartAndEndTime() {\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    this.mTodayWeek = calendar.get(7);\r
+//    for (Silent silent : this.silentList) {\r
+//      calendar.set(13, 0);\r
+//      int i = Integer.parseInt(silent.start.substring(2, 4));\r
+//      int j = Integer.parseInt(silent.start.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      silent.startTimeMillis = calendar.getTimeInMillis();\r
+//      i = Integer.parseInt(silent.end.substring(2, 4));\r
+//      j = Integer.parseInt(silent.end.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      silent.endTimeMillis = calendar.getTimeInMillis();\r
+//    }\r
+  }\r
+  \r
+  private void getStartAndEndSantioffTime() {\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    this.mTodayWeek = calendar.get(7);\r
+//    for (Antioff antioff : this.sAntioffList) {\r
+//      calendar.set(13, 0);\r
+//      int i = Integer.parseInt(antioff.start.substring(2, 4));\r
+//      int j = Integer.parseInt(antioff.start.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      antioff.startTimeMillis = calendar.getTimeInMillis();\r
+//      i = Integer.parseInt(antioff.end.substring(2, 4));\r
+//      j = Integer.parseInt(antioff.end.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      antioff.endTimeMillis = calendar.getTimeInMillis();\r
+//    }\r
+  }\r
+  \r
+  private void getStartAndEndStheartRateTime() {\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    this.mTodayWeek = calendar.get(7);\r
+//    for (StheartRate stheartRate : this.stheartRateList) {\r
+//      calendar.set(13, 0);\r
+//      int i = Integer.parseInt(stheartRate.start.substring(2, 4));\r
+//      int j = Integer.parseInt(stheartRate.start.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      stheartRate.startTimeMillis = calendar.getTimeInMillis();\r
+//      i = Integer.parseInt(stheartRate.end.substring(2, 4));\r
+//      j = Integer.parseInt(stheartRate.end.substring(5, 7));\r
+//      calendar.set(11, i);\r
+//      calendar.set(12, j);\r
+//      stheartRate.endTimeMillis = calendar.getTimeInMillis();\r
+//    }\r
+  }\r
+  \r
+  private void handSilence(Context paramContext, boolean paramBoolean) {\r
+    this.mValue_isSilence = paramBoolean;\r
+    if (this.isCalling) {\r
+      this.haveHandSilence = true;\r
+      return;\r
+    } \r
+    this.haveHandSilence = false;\r
+    SharPreferenceUtil.setPrefBoolean(paramContext, "KEY_ISSILENCE", paramBoolean);\r
+    Intent intent2 = new Intent();\r
+    intent2.setAction("com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE");\r
+    intent2.putExtra("KEY_ISSILENCE", paramBoolean);\r
+    paramContext.sendBroadcast(intent2);\r
+    ComponentName componentName = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.CoreService");\r
+    Intent intent1 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(componentName);\r
+    (this.mRuntime.getContextProxy()).context.startService(intent1);\r
+  }\r
+  \r
+  private void handleSilent(Runtime paramRuntime, boolean paramBoolean) {\r
+    int i = 0;//Calendar.getInstance().get(7);\r
+    if (i != this.mTodayWeek && (i != 1 || this.mTodayWeek != 8)) {\r
+      getSilentListStartAndEndTime();\r
+      queryNotice();\r
+    } \r
+    boolean bool = isSilentTime();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("inSilent=");\r
+    stringBuilder.append(bool);\r
+    Logger.i(stringBuilder.toString());\r
+    if (!this.mInSilent && bool) {\r
+      onSilentStateChange(true);\r
+      handSilence(this.mContext, true);\r
+      this.mDbHelper.upDateStatus("ON");\r
+    } else if (this.mInSilent && !bool) {\r
+      onSilentStateChange(false);\r
+      this.mDbHelper.upDateStatus("OFF");\r
+      handSilence(this.mContext, false);\r
+    } \r
+    this.mInSilent = bool;\r
+    getStartAndEndStheartRateTime();\r
+    isStheartRateTime(paramBoolean);\r
+  }\r
+  \r
+  private boolean haveStartActivity(Context paramContext) {\r
+    int i = ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getCallState();\r
+    if (1 != i && 2 != i) {\r
+      i = 1;\r
+    } else {\r
+      i = 0;\r
+    } \r
+    return (i != 0 && !this.mInSilent && !this.mRuntime.getBatteryLow());\r
+  }\r
+  \r
+  private boolean isAntioffTime(boolean paramBoolean) {\r
+\r
+    return false;\r
+    // Byte code:\r
+    //   0: invokestatic currentTimeMillis : ()J\r
+    //   3: lstore #4\r
+    //   5: aload_0\r
+    //   6: getfield sAntioffList : Ljava/util/ArrayList;\r
+    //   9: astore #8\r
+    //   11: aload_0\r
+    //   12: getfield mTodayWeek : I\r
+    //   15: istore_2\r
+    //   16: iconst_1\r
+    //   17: istore_1\r
+    //   18: iload_2\r
+    //   19: iconst_1\r
+    //   20: if_icmpne -> 34\r
+    //   23: aload_0\r
+    //   24: aload_0\r
+    //   25: getfield mTodayWeek : I\r
+    //   28: bipush #7\r
+    //   30: iadd\r
+    //   31: putfield mTodayWeek : I\r
+    //   34: aload #8\r
+    //   36: invokevirtual iterator : ()Ljava/util/Iterator;\r
+    //   39: astore #8\r
+    //   41: aload #8\r
+    //   43: invokeinterface hasNext : ()Z\r
+    //   48: ifeq -> 386\r
+    //   51: aload #8\r
+    //   53: invokeinterface next : ()Ljava/lang/Object;\r
+    //   58: checkcast com/enqualcomm/support/bean/Antioff\r
+    //   61: astore #9\r
+    //   63: aload #9\r
+    //   65: getfield week : Ljava/lang/String;\r
+    //   68: astore #10\r
+    //   70: new java/lang/StringBuilder\r
+    //   73: dup\r
+    //   74: invokespecial <init> : ()V\r
+    //   77: astore #11\r
+    //   79: aload #11\r
+    //   81: aload_0\r
+    //   82: getfield mTodayWeek : I\r
+    //   85: iconst_1\r
+    //   86: isub\r
+    //   87: invokevirtual append : (I)Ljava/lang/StringBuilder;\r
+    //   90: pop\r
+    //   91: aload #11\r
+    //   93: ldc_w ''\r
+    //   96: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuilder;\r
+    //   99: pop\r
+    //   100: aload #10\r
+    //   102: aload #11\r
+    //   104: invokevirtual toString : ()Ljava/lang/String;\r
+    //   107: invokevirtual contains : (Ljava/lang/CharSequence;)Z\r
+    //   110: ifeq -> 41\r
+    //   113: aload #9\r
+    //   115: getfield startTimeMillis : J\r
+    //   118: lload #4\r
+    //   120: lsub\r
+    //   121: lstore #6\r
+    //   123: lload #6\r
+    //   125: getstatic com/enqualcomm/support/CoreService.alarmCycle : I\r
+    //   128: bipush #60\r
+    //   130: imul\r
+    //   131: sipush #1000\r
+    //   134: imul\r
+    //   135: i2l\r
+    //   136: lcmp\r
+    //   137: ifge -> 237\r
+    //   140: lload #6\r
+    //   142: lconst_0\r
+    //   143: lcmp\r
+    //   144: ifle -> 237\r
+    //   147: aload #9\r
+    //   149: getfield start : Ljava/lang/String;\r
+    //   152: iconst_2\r
+    //   153: iconst_4\r
+    //   154: invokevirtual substring : (II)Ljava/lang/String;\r
+    //   157: invokestatic parseInt : (Ljava/lang/String;)I\r
+    //   160: istore_2\r
+    //   161: aload #9\r
+    //   163: getfield start : Ljava/lang/String;\r
+    //   166: iconst_5\r
+    //   167: bipush #7\r
+    //   169: invokevirtual substring : (II)Ljava/lang/String;\r
+    //   172: invokestatic parseInt : (Ljava/lang/String;)I\r
+    //   175: istore_3\r
+    //   176: aload_0\r
+    //   177: getfield mContext : Landroid/content/Context;\r
+    //   180: iload_2\r
+    //   181: iload_3\r
+    //   182: ldc_w 'com.enqualcomm.support.OTHER_ALARM_START'\r
+    //   185: invokestatic setTimeAlarm : (Landroid/content/Context;IILjava/lang/String;)V\r
+    //   188: new java/lang/StringBuilder\r
+    //   191: dup\r
+    //   192: invokespecial <init> : ()V\r
+    //   195: astore #10\r
+    //   197: aload #10\r
+    //   199: ldc_w '设置起始时间=hour'\r
+    //   202: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuilder;\r
+    //   205: pop\r
+    //   206: aload #10\r
+    //   208: iload_2\r
+    //   209: invokevirtual append : (I)Ljava/lang/StringBuilder;\r
+    //   212: pop\r
+    //   213: aload #10\r
+    //   215: ldc_w 'minute+'\r
+    //   218: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuilder;\r
+    //   221: pop\r
+    //   222: aload #10\r
+    //   224: iload_3\r
+    //   225: invokevirtual append : (I)Ljava/lang/StringBuilder;\r
+    //   228: pop\r
+    //   229: aload #10\r
+    //   231: invokevirtual toString : ()Ljava/lang/String;\r
+    //   234: invokestatic i : (Ljava/lang/Object;)V\r
+    //   237: aload #9\r
+    //   239: getfield endTimeMillis : J\r
+    //   242: lload #4\r
+    //   244: lsub\r
+    //   245: lstore #6\r
+    //   247: lload #6\r
+    //   249: getstatic com/enqualcomm/support/CoreService.alarmCycle : I\r
+    //   252: bipush #60\r
+    //   254: imul\r
+    //   255: sipush #1000\r
+    //   258: imul\r
+    //   259: i2l\r
+    //   260: lcmp\r
+    //   261: ifge -> 361\r
+    //   264: lload #6\r
+    //   266: lconst_0\r
+    //   267: lcmp\r
+    //   268: ifle -> 361\r
+    //   271: aload #9\r
+    //   273: getfield end : Ljava/lang/String;\r
+    //   276: iconst_2\r
+    //   277: iconst_4\r
+    //   278: invokevirtual substring : (II)Ljava/lang/String;\r
+    //   281: invokestatic parseInt : (Ljava/lang/String;)I\r
+    //   284: istore_2\r
+    //   285: aload #9\r
+    //   287: getfield end : Ljava/lang/String;\r
+    //   290: iconst_5\r
+    //   291: bipush #7\r
+    //   293: invokevirtual substring : (II)Ljava/lang/String;\r
+    //   296: invokestatic parseInt : (Ljava/lang/String;)I\r
+    //   299: istore_3\r
+    //   300: aload_0\r
+    //   301: getfield mContext : Landroid/content/Context;\r
+    //   304: iload_2\r
+    //   305: iload_3\r
+    //   306: ldc_w 'com.enqualcomm.support.OTHER_ALARM_END'\r
+    //   309: invokestatic setTimeAlarm : (Landroid/content/Context;IILjava/lang/String;)V\r
+    //   312: new java/lang/StringBuilder\r
+    //   315: dup\r
+    //   316: invokespecial <init> : ()V\r
+    //   319: astore #10\r
+    //   321: aload #10\r
+    //   323: ldc_w '设置结束时间=hour'\r
+    //   326: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuilder;\r
+    //   329: pop\r
+    //   330: aload #10\r
+    //   332: iload_2\r
+    //   333: invokevirtual append : (I)Ljava/lang/StringBuilder;\r
+    //   336: pop\r
+    //   337: aload #10\r
+    //   339: ldc_w 'minute+'\r
+    //   342: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuilder;\r
+    //   345: pop\r
+    //   346: aload #10\r
+    //   348: iload_3\r
+    //   349: invokevirtual append : (I)Ljava/lang/StringBuilder;\r
+    //   352: pop\r
+    //   353: aload #10\r
+    //   355: invokevirtual toString : ()Ljava/lang/String;\r
+    //   358: invokestatic i : (Ljava/lang/Object;)V\r
+    //   361: aload #9\r
+    //   363: getfield startTimeMillis : J\r
+    //   366: lload #4\r
+    //   368: lcmp\r
+    //   369: ifgt -> 41\r
+    //   372: aload #9\r
+    //   374: getfield endTimeMillis : J\r
+    //   377: lload #4\r
+    //   379: lcmp\r
+    //   380: ifle -> 41\r
+    //   383: goto -> 388\r
+    //   386: iconst_0\r
+    //   387: istore_1\r
+    //   388: aload_0\r
+    //   389: getfield mRuntime : Lcom/enqualcomm/support/bean/Runtime;\r
+    //   392: iload_1\r
+    //   393: invokevirtual setAntioffStatus : (Z)V\r
+    //   396: iload_1\r
+    //   397: ireturn }\r
+  }\r
+  private boolean isSilentTime() {\r
+    long l = System.currentTimeMillis();\r
+    if (this.mTodayWeek == 1)\r
+      this.mTodayWeek += 7; \r
+    for (Silent silent : silentList) {\r
+      String str = silent.week;\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append(this.mTodayWeek - 1);\r
+      stringBuilder.append("");\r
+      if (str.contains(stringBuilder.toString())) {\r
+        long l1 = silent.startTimeMillis - l;\r
+        if (l1 < (protocolMainServer.alarmCycle * 60 * 1000) && l1 > 0L) {\r
+          int i = Integer.parseInt(silent.start.substring(2, 4));\r
+          int j = Integer.parseInt(silent.start.substring(5, 7));\r
+          AlarmHelper.setTimeAlarm(this.mContext, i, j, "com.enqualcomm.support.OTHER_ALARM_START");\r
+          StringBuilder stringBuilder1 = new StringBuilder();\r
+          stringBuilder1.append("设置起始时间=hour");\r
+          stringBuilder1.append(i);\r
+          stringBuilder1.append("minute+");\r
+          stringBuilder1.append(j);\r
+          Logger.i(stringBuilder1.toString());\r
+        } \r
+        l1 = silent.endTimeMillis - l;\r
+        if (l1 < (protocolMainServer.alarmCycle * 60 * 1000) && l1 > 0L) {\r
+          int i = Integer.parseInt(silent.end.substring(2, 4));\r
+          int j = Integer.parseInt(silent.end.substring(5, 7));\r
+          AlarmHelper.setTimeAlarm(this.mContext, i, j, "com.enqualcomm.support.OTHER_ALARM_END");\r
+          StringBuilder stringBuilder1 = new StringBuilder();\r
+          stringBuilder1.append("设置结束时间=hour");\r
+          stringBuilder1.append(i);\r
+          stringBuilder1.append("minute+");\r
+          stringBuilder1.append(j);\r
+          Logger.i(stringBuilder1.toString());\r
+        } \r
+        if (silent.startTimeMillis <= l && silent.endTimeMillis > l)\r
+          return true; \r
+      } \r
+    } \r
+    return false;\r
+  }\r
+  \r
+  private boolean isStheartRateTime(boolean paramBoolean) {\r
+    long l = System.currentTimeMillis();\r
+    if (this.mTodayWeek == 1)\r
+      this.mTodayWeek += 7; \r
+    for (StheartRate stheartRate : stheartRateList) {\r
+      String str = stheartRate.week;\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append(this.mTodayWeek - 1);\r
+      stringBuilder.append("");\r
+      if (str.contains(stringBuilder.toString())) {\r
+        long l1 = stheartRate.startTimeMillis - l;\r
+        if (l1 < (protocolMainServer.alarmCycle * 60 * 1000) && l1 > 0L) {\r
+          int i = Integer.parseInt(stheartRate.start.substring(2, 4));\r
+          int j = Integer.parseInt(stheartRate.start.substring(5, 7));\r
+          AlarmHelper.setTimeAlarm(this.mContext, i, j, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START");\r
+        } \r
+        l1 = stheartRate.endTimeMillis - l;\r
+        if (l1 < (protocolMainServer.alarmCycle * 60 * 1000) && l1 > 0L) {\r
+          int i = Integer.parseInt(stheartRate.end.substring(2, 4));\r
+          int j = Integer.parseInt(stheartRate.end.substring(5, 7));\r
+          AlarmHelper.setTimeAlarm(this.mContext, i, j, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END");\r
+        } \r
+        if (stheartRate.startTimeMillis <= l && stheartRate.endTimeMillis > l) {\r
+          this.mInterval = stheartRate.interval;\r
+          if (!paramBoolean) {\r
+            AlarmHelper.setRealTimeAlarm(this.mContext, Integer.parseInt(this.mInterval), "com.eqc.heartrate.action.SILENT_START");\r
+            this.mRuntime.getContextProxy().sendStheartRateBroadcast("com.eqc.heartrate.action.SILENT_START", 0);\r
+          } \r
+          return true;\r
+        } \r
+      } \r
+    } \r
+    return false;\r
+  }\r
+  \r
+  private void onSilentStateChange(boolean paramBoolean) {\r
+    if (this.alarms != null)\r
+      if (paramBoolean) {\r
+        cancelAlarm(this.alarms);\r
+      } else {\r
+        setNewAlarm(this.alarms);\r
+      }  \r
+    if (this.voiceNotice != null) {\r
+      if (paramBoolean) {\r
+        cancelNoticeAlarm(this.voiceNotice);\r
+        return;\r
+      } \r
+      setNewNoticeAlarm(this.voiceNotice);\r
+    } \r
+  }\r
+  \r
+  private ArrayList<Alarm> queryAlarm() {\r
+    ArrayList arrayList = this.mDbHelper.queryAlarm();\r
+    if (!this.mInSilent) {\r
+      if (this.alarms != null)\r
+        cancelAlarm(this.alarms); \r
+      setNewAlarm(arrayList);\r
+    } \r
+    return arrayList;\r
+  }\r
+  \r
+  private ArrayList<Antioff> queryAntioff() { return this.mDbHelper.queryAntioff(true); }\r
+  \r
+  private ArrayList<NoticeContent> queryNotice() {\r
+    String str = TimeUtil.getSystemTime4();\r
+    ArrayList arrayList = this.mDbHelper.queryNotice(str);\r
+    if (!this.mInSilent) {\r
+      if (this.voiceNotice != null)\r
+        cancelNoticeAlarm(this.voiceNotice); \r
+      setNewNoticeAlarm(arrayList);\r
+    } \r
+    return arrayList;\r
+  }\r
+  \r
+  private ArrayList<Silent> querySilent() { return this.mDbHelper.querySilence(true); }\r
+  \r
+  private ArrayList<StheartRate> queryStheartRate() { return this.mDbHelper.queryStheartRate(true); }\r
+  \r
+  private void setNewAlarm(ArrayList<Alarm> paramArrayList) {\r
+    Calendar calendar2 = Calendar.getInstance();\r
+    calendar2.set(SECOND, 0);\r
+    long l = System.currentTimeMillis();\r
+    Iterator iterator = paramArrayList.iterator();\r
+    Calendar calendar1 = calendar2;\r
+//    while (iterator.hasNext()) {\r
+//      PendingIntent pendingIntent2;\r
+//      Alarm alarm = (Alarm)iterator.next();\r
+//      calendar2 = calendar1;\r
+//      long l1 = l;\r
+//      if ("ON".equals(alarm.status)) {\r
+//        int i = Integer.parseInt(alarm.time.substring(2, 4));\r
+//        int j = Integer.parseInt(alarm.time.substring(5, 7));\r
+//        calendar1.set(HOUR_OF_DAY, i);\r
+//        calendar1.set(MINUTE, j);\r
+//        char[] arrayOfChar = alarm.week.toCharArray();\r
+//        j = arrayOfChar.length;\r
+//        i = 1;\r
+//        while (true) {\r
+//          calendar2 = calendar1;\r
+//          l1 = l;\r
+//          if (i < j) {\r
+//            char c = arrayOfChar[i] - '/';\r
+//            calendar1.set(7, c);\r
+//            l1 = calendar1.getTimeInMillis();\r
+//            if (l1 <= l)\r
+//              l1 += 604800000L;\r
+//            pendingIntent2 = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c);\r
+//            AlarmHelper.setAlarm(this.mAlarmManager, l1, pendingIntent2);\r
+//            i++;\r
+//            continue;\r
+//          }\r
+//          break;\r
+//        }\r
+//      }\r
+//      PendingIntent pendingIntent1 = pendingIntent2;\r
+//      l = l1;\r
+//    }\r
+  }\r
+  \r
+  private void setNewNoticeAlarm(ArrayList<NoticeContent> paramArrayList) {\r
+    for (NoticeContent noticeContent : paramArrayList) {\r
+      String str1 = noticeContent.noticeTime;\r
+      String str2 = noticeContent.noticeName;\r
+      String str3 = noticeContent.noticeNumber;\r
+      String str4 = noticeContent.noticeID;\r
+      String str5 = noticeContent.noticeCategory;\r
+      String str6 = noticeContent.noticeFrequency;\r
+      String str7 = noticeContent.noticeContent;\r
+      Calendar calendar = Calendar.getInstance();\r
+      long l = System.currentTimeMillis();\r
+      calendar.set(SECOND, 0);\r
+      if (str1 != null) {\r
+        String str8 = str1.substring(0, 4);\r
+        String str9 = str1.substring(4, 6);\r
+        String str10 = str1.substring(6, 8);\r
+        String str11 = str1.substring(8, 10);\r
+        String str12 = str1.substring(10, 12);\r
+        calendar.set(YEAR, Integer.valueOf(str8).intValue());\r
+        calendar.set(MONTH, Integer.valueOf(str9).intValue() - 1);\r
+        calendar.set(DAY_OF_MONTH, Integer.valueOf(str10).intValue());\r
+        calendar.set(HOUR_OF_DAY, Integer.valueOf(str11).intValue());\r
+        calendar.set(MINUTE, Integer.valueOf(str12).intValue());\r
+        long l1 = calendar.getTimeInMillis();\r
+        if (l1 >= l) {\r
+          PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
+          AlarmHelper.setAlarm(this.mAlarmManager, l1, pendingIntent);\r
+        } \r
+      } \r
+    } \r
+  }\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { handleSilent(paramRuntime, true); }\r
+  \r
+  public void onAttach(Connection paramConnection, Runtime paramRuntime) {\r
+    String str;\r
+    this.mRuntime = paramRuntime;\r
+    this.mConnection = paramConnection;\r
+    this.mContext = (paramRuntime.getContextProxy()).context;\r
+    this.mAlarmManager = (AlarmManager)this.mContext.getSystemService(Context.ALARM_SERVICE);\r
+    this.mDbHelper = paramRuntime.getDbHelper();\r
+    this.silentList = querySilent();\r
+    getSilentListStartAndEndTime();\r
+    this.mInSilent = isSilentTime();\r
+    DBHelper dBHelper = this.mDbHelper;\r
+    if (this.mInSilent) {\r
+      str = "ON";\r
+    } else {\r
+      str = "OFF";\r
+    } \r
+    dBHelper.upDateorInsertDeviceStatus(str);\r
+    handSilence(this.mContext, this.mInSilent);\r
+    this.stheartRateList = queryStheartRate();\r
+    getStartAndEndStheartRateTime();\r
+    this.mIsStheartRate = isStheartRateTime(false);\r
+    this.alarms = queryAlarm();\r
+    this.voiceNotice = queryNotice();\r
+    (paramRuntime.getContextProxy()).context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver);\r
+    this.mAlramReceiver = new AlramReceiver();\r
+    IntentFilter intentFilter = new IntentFilter();\r
+    intentFilter.addAction("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE");\r
+    intentFilter.addAction("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE");\r
+    intentFilter.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE");\r
+    intentFilter.addAction("com.eqc.heartrate.action.RESULT");\r
+    this.mContext.registerReceiver(this.mAlramReceiver, intentFilter);\r
+    paramRuntime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32);\r
+  }\r
+  \r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) {\r
+    (paramRuntime.getContextProxy()).context.getContentResolver().unregisterContentObserver(this.mContentObserver);\r
+    this.mContext.unregisterReceiver(this.mAlramReceiver);\r
+  }\r
+  \r
+  public boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) {\r
+//    String[] arrayOfString = paramIntent.getAction();\r
+//    if ("com.enqualcomm.support.ACTION_CARE_ALARM".equals(arrayOfString)) {\r
+//      str = paramIntent.getDataString();\r
+//      arrayOfString = TimeUtil.getSystemTime();\r
+//      str.substring(6).split("\\.");\r
+//      int i = Integer.parseInt(str.substring(6).split("\\.")[1].substring(0, 2));\r
+//      int j = Integer.parseInt(str.substring(6).split("\\.")[0].substring(2));\r
+//      arrayOfString = arrayOfString.split(";")[1].split(":");\r
+//      int k = Integer.parseInt(arrayOfString[0]);\r
+//      int m = Integer.parseInt(arrayOfString[1]);\r
+//      if (j == k) {\r
+//        if (i != m)\r
+//          return false;\r
+//        if (haveStartActivity(this.mContext))\r
+//          try {\r
+//            Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(str));\r
+//            intent.putExtra("closeAlarm", 0);\r
+//            intent.addFlags(268435456);\r
+//            this.mContext.startActivity(intent);\r
+//            return false;\r
+//          } catch (Exception str) {\r
+//            str.printStackTrace();\r
+//            return false;\r
+//          }\r
+//      } else {\r
+//        return false;\r
+//      }\r
+//    } else if ("com.enqualcomm.support.ACTION_NOTICE_ALARM".equals(arrayOfString)) {\r
+//      str = str.getDataString();\r
+//      if (haveStartActivity(this.mContext))\r
+//        try {\r
+//          Intent intent = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(str));\r
+//          intent.addFlags(268435456);\r
+//          this.mContext.startActivity(intent);\r
+//          return false;\r
+//        } catch (Exception str) {\r
+//          str.printStackTrace();\r
+//          return false;\r
+//        }\r
+//    } else {\r
+//      boolean bool;\r
+//      Logger.i("静默闹钟来了");\r
+//      if ("com.eqc.heartrate.action.SILENT_START".equals(arrayOfString) || "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START".equals(arrayOfString)) {\r
+//        bool = true;\r
+//      } else {\r
+//        bool = false;\r
+//      }\r
+//      handleSilent(paramRuntime, bool ^ true);\r
+//    }\r
+    return false;\r
+  }\r
+  \r
+  public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    Messenger messenger = paramMessage.replyTo;\r
+    if (paramMessage.what == 1005)\r
+      callback(messenger, this.mInSilent); \r
+    return false;\r
+  }\r
+  \r
+  class AlramReceiver extends BroadcastReceiver {\r
+    public void onReceive(Context param1Context, Intent param1Intent) {\r
+      String str = param1Intent.getAction();\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append("action = ");\r
+      stringBuilder.append(str);\r
+      Logger.i(stringBuilder.toString());\r
+      if ("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE".equals(str)) {\r
+//        SilentManager.access$402(SilentManager.this, SilentManager.this.queryNotice());\r
+        return;\r
+      } \r
+      if ("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE".equals(str)) {\r
+//        SilentManager.access$602(SilentManager.this, SilentManager.this.queryAlarm());\r
+        return;\r
+      } \r
+      if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(str)) {\r
+//        SilentManager.access$802(SilentManager.this, SilentManager.this.queryStheartRate());\r
+//        SilentManager.this.getStartAndEndStheartRateTime();\r
+//        SilentManager.this.isStheartRateTime(false);\r
+        return;\r
+      } \r
+      if ("com.eqc.heartrate.action.RESULT".equals(str)) {\r
+        str = param1Intent.getStringExtra("time");\r
+        int i = param1Intent.getIntExtra("value", 0);\r
+        int j = param1Intent.getIntExtra("type", 0);\r
+        StringBuilder stringBuilder1 = new StringBuilder();\r
+        stringBuilder1.append("(");\r
+        stringBuilder1.append(str);\r
+        stringBuilder1.append("@");\r
+        stringBuilder1.append(i);\r
+        stringBuilder1.append("@");\r
+        stringBuilder1.append(j);\r
+        stringBuilder1.append(")");\r
+        str = stringBuilder1.toString();\r
+//        SilentManager.this.mConnection.send(API.H60(SilentManager.this.mRuntime, str));\r
+        return;\r
+      } \r
+      if ("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE".equals(str)) {\r
+//        SilentManager.access$1202(SilentManager.this, SilentManager.this.queryAntioff());\r
+//        SilentManager.this.getStartAndEndSantioffTime();\r
+//        SilentManager.access$1502(SilentManager.this, SilentManager.this.isAntioffTime(false));\r
+      } \r
+    }\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/UpLoadDataPoints.java b/app/src/main/java/com/ic/protocol/service/UpLoadDataPoints.java
new file mode 100644 (file)
index 0000000..296813e
--- /dev/null
@@ -0,0 +1,286 @@
+package com.ic.protocol.service;\r
+\r
+import android.content.Intent;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+\r
+import com.ic.protocol.bean.Locations;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.SharPreferenceUtil;\r
+\r
+import org.json.JSONArray;\r
+import org.json.JSONException;\r
+import org.json.JSONObject;\r
+\r
+import java.util.List;\r
+\r
+public class UpLoadDataPoints extends AbstractInvokeHandlerService {\r
+  private final String REGISTER_CODE = "FIZOF5Rcp0nuWPqf";\r
+  \r
+  private int alarmClock;\r
+  \r
+  private Handler mHandler;\r
+  \r
+  private Runnable mRegisterDeviceTask = new Runnable() {\r
+      public void run() {\r
+//        JSONObject jSONObject = new JSONObject();\r
+//        try {\r
+//          jSONObject.put("sn", UpLoadDataPoints.this.mRuntime.getCid());\r
+//          jSONObject.put("title", "EQC_G5_Device");\r
+//        } catch (JSONException jSONException) {\r
+//          jSONException.printStackTrace();\r
+//        }\r
+//        OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
+//            public void onFailed(Exception param2Exception) { Logger.i(param2Exception.getMessage()); }\r
+//\r
+//            public void onSuccess(String param2String) {\r
+//              try {\r
+//                StringBuilder stringBuilder1 = new JSONObject(param2String);\r
+//                int i = stringBuilder1.optInt("errno");\r
+//                if (i != 0) {\r
+//                  stringBuilder1 = new StringBuilder();\r
+//                  stringBuilder1.append("error : ");\r
+//                  stringBuilder1.append(i);\r
+//                  Logger.i(stringBuilder1.toString());\r
+//                  return;\r
+//                }\r
+//                JSONObject jSONObject = stringBuilder1.optJSONObject("data");\r
+//                if (jSONObject == null) {\r
+//                  Logger.i("data is null");\r
+//                  return;\r
+//                }\r
+//                String str1 = jSONObject.optString("device_id");\r
+//                String str2 = jSONObject.optString("key", null);\r
+//                StringBuilder stringBuilder2 = new StringBuilder();\r
+//                stringBuilder2.append("device_id=");\r
+//                stringBuilder2.append(str1);\r
+//                stringBuilder2.append("DeviceApiKey=");\r
+//                stringBuilder2.append(str2);\r
+//                Logger.i(stringBuilder2.toString());\r
+//                UpLoadDataPoints.this.mRuntime.setDevice_id(str1);\r
+//                UpLoadDataPoints.this.mRuntime.setDevice_key(str2);\r
+//                SharPreferenceUtil.setPrefString((this.this$1.this$0.mRuntime.getContextProxy()).context, "key_device_id", str1);\r
+//                SharPreferenceUtil.setPrefString((this.this$1.this$0.mRuntime.getContextProxy()).context, "key_device_key", str2);\r
+//                if (str2 == null) {\r
+//                  Logger.i("DeviceApiKey is null");\r
+//                  return;\r
+//                }\r
+//                OneNetApi.setAppKey(str2);\r
+//                return;\r
+//              } catch (JSONException param2String) {\r
+//                param2String.printStackTrace();\r
+//                return;\r
+//              }\r
+//            }\r
+//          };\r
+//        OneNetApi.registerDevice("FIZOF5Rcp0nuWPqf", jSONObject.toString(), oneNetApiCallback);\r
+      }\r
+    };\r
+  \r
+  Runtime mRuntime;\r
+  \r
+  private boolean mUpLoadSuccess = true;\r
+  \r
+  private int reLoadNum;\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+    if (paramRuntime.getDevice_id() == null || paramRuntime.getDevice_key() == null)\r
+      this.mHandler.post(this.mRegisterDeviceTask); \r
+    this.alarmClock++;\r
+    if (this.alarmClock >= 10) {\r
+      this.alarmClock = 0;\r
+      if (!this.mUpLoadSuccess && this.reLoadNum < 3) {\r
+        uploadCurrentLocation();\r
+        this.reLoadNum++;\r
+      } else {\r
+        this.reLoadNum = 0;\r
+        this.mUpLoadSuccess = true;\r
+      } \r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append("alarmClock=");\r
+      stringBuilder.append(this.alarmClock);\r
+      stringBuilder.append("mUpLoadSuccess=");\r
+      stringBuilder.append(this.mUpLoadSuccess);\r
+      stringBuilder.append("reLoadNum=");\r
+      stringBuilder.append(this.reLoadNum);\r
+      Logger.i(stringBuilder.toString());\r
+    } \r
+  }\r
+  \r
+  public void onAttach(Connection paramConnection, Runtime paramRuntime) {\r
+    this.mRuntime = paramRuntime;\r
+    this.mHandler = new Handler();\r
+    String str1 = SharPreferenceUtil.getPrefString((paramRuntime.getContextProxy()).context, "key_device_key", null);\r
+    String str2 = SharPreferenceUtil.getPrefString((paramRuntime.getContextProxy()).context, "key_device_id", null);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("sharp_device_id=");\r
+    stringBuilder.append(str2);\r
+    stringBuilder.append("device_key=");\r
+    stringBuilder.append(str1);\r
+    Logger.i(stringBuilder.toString());\r
+    paramRuntime.setDevice_key(str1);\r
+    paramRuntime.setDevice_id(str2);\r
+  }\r
+  \r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) { return false; }\r
+  \r
+  public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) { return false; }\r
+  \r
+  public void uploadCurrentLocation() {\r
+    String str1 = this.mRuntime.getDevice_id();\r
+    String str2 = this.mRuntime.getDevice_key();\r
+    if (str1 != null && str2 != null) {\r
+//      OneNetApi.setAppKey(str2);\r
+//      this.mHandler.post(new UploadCurrentLocationTask(new Locations(this.mRuntime.getLongitude(), this.mRuntime.getLatitude()), str1));\r
+      return;\r
+    } \r
+//    this.mHandler.post(this.mRegisterDeviceTask);\r
+  }\r
+  \r
+  private class UploadCurrentLocationTask implements Runnable {\r
+    private Locations mCurrentLocation;\r
+    \r
+    private String mDeviceID;\r
+    \r
+    UploadCurrentLocationTask(Locations param1Locations, String param1String) {\r
+      this.mCurrentLocation = param1Locations;\r
+      this.mDeviceID = param1String;\r
+    }\r
+    \r
+    public void run() {\r
+//      JSONObject jSONObject1 = new JSONObject();\r
+//      JSONObject jSONObject2 = new JSONObject();\r
+//      try {\r
+//        jSONObject2.put("lon", this.mCurrentLocation.getLon());\r
+//        jSONObject2.put("lat", this.mCurrentLocation.getLat());\r
+//        jSONObject1.put("locations", jSONObject2);\r
+//      } catch (JSONException jSONObject2) {\r
+//        jSONObject2.printStackTrace();\r
+//        UpLoadDataPoints.access$002(UpLoadDataPoints.this, false);\r
+//        UpLoadDataPoints.access$102(UpLoadDataPoints.this, 0);\r
+//      }\r
+//      OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
+//          public void onFailed(Exception param2Exception) {\r
+//            UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
+//            UpLoadDataPoints.access$102(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, 0);\r
+//          }\r
+//\r
+//          public void onSuccess(String param2String) {\r
+//            try {\r
+//              int i = (new JSONObject(param2String)).optInt("errno");\r
+//              if (i != 0) {\r
+//                StringBuilder stringBuilder = new StringBuilder();\r
+//                stringBuilder.append("error : ");\r
+//                stringBuilder.append(i);\r
+//                Logger.i(stringBuilder.toString());\r
+//                UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
+//                return;\r
+//              }\r
+//              UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, true);\r
+//              return;\r
+//            } catch (JSONException param2String) {\r
+//              param2String.printStackTrace();\r
+//              UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
+//              return;\r
+//            }\r
+//          }\r
+//        };\r
+//      OneNetApi.addDataPoints(this.mDeviceID, "3", jSONObject1.toString(), oneNetApiCallback);\r
+    }\r
+  }\r
+  \r
+//  class null implements OneNetApiCallback {\r
+//    null() {}\r
+//\r
+//    public void onFailed(Exception param1Exception) {\r
+//      UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
+//      UpLoadDataPoints.access$102(this.this$1.this$0, 0);\r
+//    }\r
+//\r
+//    public void onSuccess(String param1String) {\r
+//      try {\r
+//        int i = (new JSONObject(param1String)).optInt("errno");\r
+//        if (i != 0) {\r
+//          StringBuilder stringBuilder = new StringBuilder();\r
+//          stringBuilder.append("error : ");\r
+//          stringBuilder.append(i);\r
+//          Logger.i(stringBuilder.toString());\r
+//          UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
+//          return;\r
+//        }\r
+//        UpLoadDataPoints.access$002(this.this$1.this$0, true);\r
+//        return;\r
+//      } catch (JSONException param1String) {\r
+//        param1String.printStackTrace();\r
+//        UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
+//        return;\r
+//      }\r
+//    }\r
+//  }\r
+  \r
+  private static class UploadLocationsTask implements Runnable {\r
+    private String mDeviceID;\r
+    \r
+    private List<Locations> mLocations;\r
+    \r
+    UploadLocationsTask(List<Locations> param1List, String param1String) {\r
+      this.mLocations = param1List;\r
+      this.mDeviceID = param1String;\r
+    }\r
+    \r
+    public void run() {\r
+//      JSONObject jSONObject1 = new JSONObject();\r
+//      JSONArray jSONArray1 = new JSONArray();\r
+//      JSONObject jSONObject2 = new JSONObject();\r
+//      JSONArray jSONArray2 = new JSONArray();\r
+//      try {\r
+//        for (Locations locations : this.mLocations) {\r
+//          JSONObject jSONObject3 = new JSONObject();\r
+//          jSONObject3.put("lon", locations.getLon());\r
+//          jSONObject3.put("lat", locations.getLat());\r
+//          JSONObject jSONObject4 = new JSONObject();\r
+//          jSONObject4.put("at", locations.getTime());\r
+//          jSONObject4.put("value", jSONObject3);\r
+//          jSONArray2.put(jSONObject4);\r
+//        }\r
+//        jSONObject2.put("id", "locations");\r
+//        jSONObject2.put("datapoints", jSONArray2);\r
+//        jSONArray1.put(jSONObject2);\r
+//        jSONObject1.put("datastreams", jSONArray1);\r
+//      } catch (JSONException e) {\r
+//        e.printStackTrace();\r
+//      }\r
+//      OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
+//          public void onFailed(Exception param2Exception) { Logger.i(param2Exception.getMessage()); }\r
+//\r
+//          public void onSuccess(String param2String) {\r
+//            StringBuilder stringBuilder = new StringBuilder();\r
+//            stringBuilder.append("upload location response : ");\r
+//            stringBuilder.append(param2String);\r
+//            Logger.i(stringBuilder.toString());\r
+//            try {\r
+//              int i = (new JSONObject(param2String)).optInt("errno");\r
+//              if (i != 0) {\r
+//                StringBuilder stringBuilder1 = new StringBuilder();\r
+//                stringBuilder1.append("error : ");\r
+//                stringBuilder1.append(i);\r
+//                Logger.i(stringBuilder1.toString());\r
+//                return;\r
+//              }\r
+//            } catch (JSONException param2String) {\r
+//              param2String.printStackTrace();\r
+//            }\r
+//          }\r
+//        };\r
+//      OneNetApi.addDataPoints(this.mDeviceID, jSONObject1.toString(), oneNetApiCallback);\r
+    }\r
+  }\r
+\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/base/AbstractConnectionService.java b/app/src/main/java/com/ic/protocol/service/base/AbstractConnectionService.java
new file mode 100644 (file)
index 0000000..1882c52
--- /dev/null
@@ -0,0 +1,55 @@
+package com.ic.protocol.service.base;\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public abstract class AbstractConnectionService implements ConnectionService {\r
+  protected AbstractConnectionService nextService;\r
+  private boolean isDetach;\r
+  \r
+  public final void processAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+    onAlarmClock(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processAlarmClock(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processAttach(Connection paramConnection, Runtime paramRuntime) {\r
+    this.isDetach = false;\r
+    onAttach(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processAttach(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processConnectionClose(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.isDetach)\r
+      return; \r
+    if (!onConnectionClose(paramConnection, paramRuntime) && this.nextService != null)\r
+      this.nextService.processConnectionClose(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.isDetach)\r
+      return; \r
+    if (!onConnectionOpen(paramConnection, paramRuntime) && this.nextService != null)\r
+      this.nextService.processConnectionOpen(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processDetach(Connection paramConnection, Runtime paramRuntime) {\r
+    this.isDetach = true;\r
+    onDetach(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processDetach(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processServerResponse(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.isDetach)\r
+      return; \r
+    if (!onReceive(paramStringMessage, paramConnection, paramRuntime) && this.nextService != null)\r
+      this.nextService.processServerResponse(paramStringMessage, paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void setNext(AbstractConnectionService paramAbstractConnectionService) { this.nextService = paramAbstractConnectionService; }\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/base/AbstractInvokeHandlerService.java b/app/src/main/java/com/ic/protocol/service/base/AbstractInvokeHandlerService.java
new file mode 100644 (file)
index 0000000..9d0a6b8
--- /dev/null
@@ -0,0 +1,42 @@
+package com.ic.protocol.service.base;\r
+\r
+import android.content.Intent;\r
+import android.os.Message;\r
+\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public abstract class AbstractInvokeHandlerService implements InvokeHandlerService {\r
+  protected AbstractInvokeHandlerService nextService;\r
+  \r
+  public final void processAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+    onAlarmClock(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processAlarmClock(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processAttach(Connection paramConnection, Runtime paramRuntime) {\r
+    onAttach(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processAttach(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processDetach(Connection paramConnection, Runtime paramRuntime) {\r
+    onDetach(paramConnection, paramRuntime);\r
+    if (this.nextService != null)\r
+      this.nextService.processDetach(paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) {\r
+    if (!onUserRequest(paramIntent, paramConnection, paramRuntime) && this.nextService != null)\r
+      this.nextService.processUserRequest(paramIntent, paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void processUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    if (!onUserRequest(paramMessage, paramConnection, paramRuntime) && this.nextService != null)\r
+      this.nextService.processUserRequest(paramMessage, paramConnection, paramRuntime); \r
+  }\r
+  \r
+  public final void setNext(AbstractInvokeHandlerService paramAbstractInvokeHandlerService) { this.nextService = paramAbstractInvokeHandlerService; }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/base/BaseService.java b/app/src/main/java/com/ic/protocol/service/base/BaseService.java
new file mode 100644 (file)
index 0000000..ee3d33f
--- /dev/null
@@ -0,0 +1,13 @@
+package com.ic.protocol.service.base;\r
+\r
+\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+public interface BaseService {\r
+  void onAlarmClock(Connection paramConnection, Runtime paramRuntime);\r
+  \r
+  void onAttach(Connection paramConnection, Runtime paramRuntime);\r
+  \r
+  void onDetach(Connection paramConnection, Runtime paramRuntime);\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/base/ConnectionService.java b/app/src/main/java/com/ic/protocol/service/base/ConnectionService.java
new file mode 100644 (file)
index 0000000..bc3f77a
--- /dev/null
@@ -0,0 +1,15 @@
+package com.ic.protocol.service.base;\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public interface ConnectionService extends BaseService {\r
+  boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime);\r
+  \r
+  boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime);\r
+  \r
+  boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime);\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/service/base/InvokeHandlerService.java b/app/src/main/java/com/ic/protocol/service/base/InvokeHandlerService.java
new file mode 100644 (file)
index 0000000..41dc8e9
--- /dev/null
@@ -0,0 +1,14 @@
+package com.ic.protocol.service.base;\r
+\r
+import android.content.Intent;\r
+import android.os.Message;\r
+\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+public interface InvokeHandlerService extends BaseService {\r
+  boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime);\r
+  \r
+  boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime);\r
+}\r
+\r
+\r
index e8d3345..d32a705 100644 (file)
@@ -1,4 +1,46 @@
 package com.ic.protocol.service;\r
 \r
-public class connectionServer {\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.utils.Connection;\r
+\r
+public class connectionServer implements Connection {\r
+    @Override\r
+    public void close() {\r
+\r
+    }\r
+\r
+    @Override\r
+    public void connect(String paramString, int paramInt) {\r
+\r
+    }\r
+\r
+    @Override\r
+    public void disconnect() {\r
+\r
+    }\r
+\r
+    @Override\r
+    public int getTimeout() {\r
+        return 0;\r
+    }\r
+\r
+    @Override\r
+    public void open() {\r
+\r
+    }\r
+\r
+    @Override\r
+    public void send(StringMessage paramStringMessage) {\r
+\r
+    }\r
+\r
+    @Override\r
+    public boolean sendBlocking(StringMessage paramStringMessage) {\r
+        return false;\r
+    }\r
+\r
+    @Override\r
+    public void setTimeout(int paramInt) {\r
+\r
+    }\r
 }\r
index 7983a3c..bacb1e0 100644 (file)
@@ -1,20 +1,44 @@
 package com.ic.protocol.service;\r
 \r
+import android.annotation.SuppressLint;\r
+import android.app.AlarmManager;\r
+import android.app.Notification;\r
+import android.app.PendingIntent;\r
 import android.app.Service;\r
 import android.content.Intent;\r
 import android.net.wifi.WifiManager;\r
+import android.os.Build;\r
+import android.os.Handler;\r
 import android.os.IBinder;\r
-import android.support.annotation.Nullable;\r
+\r
+import android.os.Message;\r
+import android.os.Messenger;\r
+import android.os.PowerManager;\r
+import android.os.SystemClock;\r
 import android.widget.Toast;\r
 \r
+import com.ic.protocol.LocationClient;\r
 import com.ic.protocol.adapter.LBSHelper;\r
 import com.ic.protocol.adapter.protocolAPIHelper;\r
 import com.ic.protocol.bean.Config;\r
-import com.ic.protocol.bean.ICLocation;\r
-import com.ic.protocol.bean.deviceStatus;\r
-import com.ic.protocol.utils.ICLog;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.base.AbstractConnectionService;\r
+import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
+import com.ic.protocol.utils.AlarmHelper;\r
+import com.ic.protocol.utils.AlarmWakeUp;\r
+import com.ic.protocol.utils.ConnectionListener;\r
+import com.ic.protocol.utils.ContextProxy;\r
+import com.ic.protocol.utils.DBHelper;\r
+import com.ic.protocol.utils.FileOutputUtil;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.NettyConnection;\r
 import com.ic.protocol.utils.RxSocket;\r
+import com.ic.protocol.utils.SharPreferenceUtil;\r
+import com.ic.protocol.utils.SimSignalUtil;\r
+import com.ic.protocol.utils.Util;\r
 \r
+import java.lang.ref.WeakReference;\r
 import java.net.InetAddress;\r
 import java.nio.ByteBuffer;\r
 \r
@@ -24,29 +48,559 @@ import rx.schedulers.Schedulers;
 \r
 import android.content.BroadcastReceiver;\r
 import android.content.Context;\r
-import android.content.Intent;\r
 import android.content.IntentFilter;\r
 import android.os.BatteryManager;\r
-import android.os.Handler;\r
-import android.os.IBinder;\r
 \r
 import android.telephony.TelephonyManager;\r
-import android.util.Log;\r
 \r
+import java.util.Random;\r
 import java.util.Timer;\r
 import java.util.TimerTask;\r
 \r
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
+\r
 public class protocolMainServer extends Service {\r
-    @Nullable\r
-    @Override\r
-    public IBinder onBind(Intent intent) {\r
-        return null;\r
-    }\r
+\r
+\r
     private Toastc toast = null;\r
 \r
     private static protocolMainServer mProtocolServer=null;\r
     private static LBSHelper lbshelper=null;\r
 \r
+\r
+\r
+    public static final String ACTION_ALARM = "com.enqualcomm.support.ACTION_ALARM";\r
+\r
+    private static final int GRAY_SERVICE_ID = 2239;\r
+\r
+    private static final String MY_WAKE_LOCKTAG = "MyWakelockTag";\r
+\r
+    public static int alarmCycle = 1;\r
+\r
+    public static final int interval = 60000;\r
+\r
+    private static int is_allowed_in_sleep_mode = 1;\r
+\r
+    private static boolean is_in_sleep_mode = false;\r
+\r
+    private static boolean is_wifi_network_ok = false;\r
+\r
+    private BroadcastReceiver AtCallbackBroadcastReceiver = new BroadcastReceiver() {\r
+        public void onReceive(Context param1Context, Intent param1Intent) {\r
+            if (param1Intent.getAction().equals("com.eqc.intent.action.callback.at")) {\r
+                String str = param1Intent.getStringExtra("AtResult");\r
+                StringBuilder stringBuilder = new StringBuilder();\r
+                stringBuilder.append("callbackStr =");\r
+                stringBuilder.append(str);\r
+                Logger.i(stringBuilder.toString());\r
+                if (str.indexOf("OK") != -1) {\r
+                    String[] arrayOfString = str.split("\"");\r
+                    if (arrayOfString.length > 4) {\r
+                        str = arrayOfString[1];\r
+                        String str1 = arrayOfString[3];\r
+                        Context context = (protocolMainServer.this.runtime.getContextProxy()).context;\r
+                        StringBuilder stringBuilder1 = new StringBuilder();\r
+                        stringBuilder1.append("AT lbsInfo LAC== ");\r
+                        stringBuilder1.append(Integer.valueOf(str, 16));\r
+                        stringBuilder1.append(",CELLID=");\r
+                        stringBuilder1.append(Integer.valueOf(str1, 16));\r
+                        FileOutputUtil.fileOutput(context, "cellInfoTest", stringBuilder1.toString());\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    };\r
+\r
+    private String actionName = "com.cmcm.interface";\r
+\r
+    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {\r
+        public void onReceive(Context param1Context, Intent param1Intent) {\r
+            StringBuilder stringBuilder2 = new StringBuilder();\r
+            stringBuilder2.append("broadcastReceiver  alarmCycle action==");\r
+            stringBuilder2.append(param1Intent.getAction());\r
+            FileOutputUtil.fileOutput(param1Context, "alarmCycle", stringBuilder2.toString());\r
+            StringBuilder stringBuilder1 = new StringBuilder();\r
+            stringBuilder1.append("时间变化");\r
+            stringBuilder1.append(param1Intent.getAction());\r
+            Logger.i(stringBuilder1.toString());\r
+            protocolMainServer.this.setSleepAlarm();\r
+            protocolMainServer.this.setWakeAlarm();\r
+            protocolMainServer.this.setHeartAlarm();\r
+            protocolMainServer.this.setWeatherAlarm();\r
+            if (protocolMainServer.this.cmcm_call_eiot_into_powersave_mode() == 0)\r
+                AlarmWakeUp.isNeedWakeUpAlarm(protocolMainServer.this.runtime);\r
+        }\r
+    };\r
+\r
+    private static class ServerHandler implements ConnectionListener {\r
+        private final WeakReference<protocolMainServer> mReference;\r
+\r
+        ServerHandler(protocolMainServer param1CoreService) { this.mReference = new WeakReference(param1CoreService); }\r
+\r
+        public void onConnectionClose() {\r
+            protocolMainServer coreService = (protocolMainServer)this.mReference.get();\r
+            if (coreService == null)\r
+                return;\r
+            Logger.i("onConnectionClose++");\r
+            coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime);\r
+        }\r
+\r
+        public void onConnectionOpen() {\r
+            protocolMainServer coreService = (protocolMainServer)this.mReference.get();\r
+            if (coreService == null)\r
+                return;\r
+            coreService.connectionServiceChain.processConnectionOpen(coreService.connection, coreService.runtime);\r
+            Logger.i("onConnectionOpen");\r
+        }\r
+\r
+        public void onReceive(StringMessage param1StringMessage) {\r
+            protocolMainServer coreService = (protocolMainServer)this.mReference.get();\r
+            if (coreService == null)\r
+                return;\r
+            coreService.connectionServiceChain.processServerResponse(param1StringMessage, coreService.connection, coreService.runtime);\r
+            coreService.locationClient.onReceive(param1StringMessage);\r
+        }\r
+    }\r
+    final NettyConnection connection = new NettyConnection(new ServerHandler(this));\r
+    AbstractConnectionService connectionServiceChain;\r
+\r
+    AbstractInvokeHandlerService invokeHandlerServiceChain;\r
+\r
+    private boolean isBinded = false;\r
+\r
+\r
+    LocationClient locationClient;\r
+\r
+//    private Deliver mDeliver;\r
+\r
+    private boolean mHaveSetWeatherAlarm;\r
+\r
+    private KeepAlive mKeepAlive;\r
+\r
+    final Messenger mMessenger = new Messenger(new RequestHandler(this));\r
+\r
+//    private SendPairMessage mSendPairMessage;\r
+\r
+    private SimSignalUtil mSignalUtil;\r
+\r
+    private long mWeatherTime;\r
+\r
+    Runtime runtime;\r
+\r
+    private BroadcastReceiver screenOnReceiver = new BroadcastReceiver() {\r
+        public void onReceive(Context param1Context, Intent param1Intent) {\r
+            if ("android.intent.action.SCREEN_ON".equals(param1Intent.getAction())) {\r
+                StringBuilder stringBuilder = new StringBuilder();\r
+                stringBuilder.append("screen on wake is_wifi_network_ok=");\r
+                stringBuilder.append(is_wifi_network_ok);\r
+                Logger.i(stringBuilder.toString());\r
+                if (is_in_sleep_mode) {\r
+//                    CoreService.access$402(false);\r
+//                    CoreService.access$502(0);\r
+//                    if (CoreService.this.mKeepAlive != null)\r
+//                        CoreService.this.mKeepAlive.setSleepMode(false);\r
+//                    CoreService.this.wakeUpFromSleep();\r
+                }\r
+                if (is_wifi_network_ok) {\r
+//                    CoreService.access$302(false);\r
+//                    Util.turnOnWifiForConnect((this.this$0.runtime.getContextProxy()).context, CoreService.this.runtime);\r
+                    return;\r
+                }\r
+            } else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime)) {\r
+//                CoreService.access$302(true);\r
+//                Util.turnOffWifiForSleep((this.this$0.runtime.getContextProxy()).context, CoreService.this.runtime);\r
+            }\r
+        }\r
+    };\r
+\r
+    private int startAlarmCount = 0;\r
+\r
+    UpLoadDataPoints upLoadDataPoints;\r
+\r
+    static  {\r
+\r
+    }\r
+\r
+    private AbstractConnectionService getConnectionServiceChain() {\r
+//        DNS dNS = new DNS();\r
+//        SynchronousTime synchronousTime = new SynchronousTime();\r
+//        new ProcessEncryptionService();\r
+//        Initialize initialize = new Initialize();\r
+//        CheckSIM checkSIM = new CheckSIM();\r
+        this.mKeepAlive = new KeepAlive();\r
+//        this.mDeliver = new Deliver();\r
+//        dNS.setNext(synchronousTime);\r
+//        synchronousTime.setNext(initialize);\r
+//        initialize.setNext(checkSIM);\r
+//        checkSIM.setNext(this.mKeepAlive);\r
+//        this.mKeepAlive.setNext(this.mDeliver);\r
+        return mKeepAlive;\r
+    }\r
+\r
+    @SuppressLint("NewApi")\r
+    private void getDBFile() {\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append(getExternalCacheDir());\r
+        stringBuilder.append("contacts.db");\r
+        FileOutputUtil.copyFolder("/data/data/com.enqualcomm.support/databases", stringBuilder.toString());\r
+    }\r
+\r
+    private AbstractInvokeHandlerService getInvokeHandlerServiceChain() {\r
+        SendChatMessage sendChatMessage = new SendChatMessage();\r
+//        this.mSendPairMessage = new SendPairMessage();\r
+//        OtherBusiness otherBusiness = new OtherBusiness();\r
+//        SendOssMessage sendOssMessage = new SendOssMessage();\r
+        SilentManager silentManager = new SilentManager();\r
+        Logger.i("BuildConfig.upLoadData=false");\r
+//        this.justTalkLogin = new JustTalkLogin();\r
+        sendChatMessage.setNext(silentManager);\r
+        return sendChatMessage;\r
+    }\r
+\r
+\r
+\r
+    private void loadStepCount() {\r
+        int i = SharPreferenceUtil.getPrefInt(this, "KEY_STEP_COUNT", 0);\r
+        int j = SharPreferenceUtil.getPrefInt(this, "key_save_step_count", 0);\r
+        this.runtime.setSaveStepCount(j);\r
+        this.runtime.setTotalStepCount(i);\r
+    }\r
+\r
+    private void setCleanStepCountAlarm() { AlarmHelper.setCleanStepCountAlarm(this, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"); }\r
+\r
+    private void setSleepAlarm() {}\r
+\r
+    private void setUpdateSecretKeyAlarm() { AlarmHelper.setTimeAlarm(this, 2, 30, "com.enqualcomm.support.UPDATE_SECRET_KEY"); }\r
+\r
+    private void setWakeAlarm() {}\r
+\r
+    private void setWeatherAlarm() { AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, "com.enqualcomm.support.ACTION_WEATHER_ALARM"); }\r
+\r
+    private void wakeUpFromSleep() {\r
+        this.startAlarmCount = 0;\r
+        alarmCycle = 1;\r
+        setAlarm(alarmCycle);\r
+        this.runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_EQC_ALARM", this.runtime);\r
+        this.connection.open();\r
+        this.locationClient.onAlarm(getWakeLock(alarmCycle));\r
+        this.connectionServiceChain.processAlarmClock(this.connection, this.runtime);\r
+        this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime);\r
+        if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) {\r
+            setWeatherAlarm();\r
+            this.mHaveSetWeatherAlarm = false;\r
+        }\r
+        Toast.makeText((this.runtime.getContextProxy()).context, "从深度睡眠中切换模式,联网中", Toast.LENGTH_SHORT).show();\r
+    }\r
+\r
+    public int cmcm_call_eiot_into_powersave_mode() { return 0; }\r
+\r
+    public void deliverDataToCmApp(int paramInt, String paramString) {\r
+        if (paramInt != 500)\r
+            try {\r
+                Intent intent = new Intent(this.actionName);\r
+                intent.putExtra("comjson", paramString);\r
+                intent.putExtra("cmdId", paramInt);\r
+                (this.runtime.getContextProxy()).context.startService(intent);\r
+                return;\r
+            } catch (Exception e) {\r
+                e.printStackTrace();\r
+                return;\r
+            }\r
+        try {\r
+            StringBuilder stringBuilder = new StringBuilder();\r
+            stringBuilder.append("deliver 1  cmd=");\r
+            stringBuilder.append(paramInt);\r
+            stringBuilder.append("---data=");\r
+            stringBuilder.append(paramString);\r
+            Logger.i(stringBuilder.toString());\r
+            Intent intent = new Intent(this.actionName);\r
+            intent.putExtra("comjson", paramString);\r
+            intent.putExtra("cmdId", 999);\r
+            (this.runtime.getContextProxy()).context.startService(intent);\r
+            return;\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+            return;\r
+        }\r
+    }\r
+\r
+    public PowerManager.WakeLock getWakeLock(int paramInt) {\r
+        @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakeLock = ((PowerManager)(this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(1, "MyWakelockTag");\r
+        wakeLock.acquire(3000L);\r
+        return wakeLock;\r
+    }\r
+\r
+    public IBinder onBind(Intent paramIntent) { return this.mMessenger.getBinder(); }\r
+\r
+\r
+    public void onCreateCore() {\r
+        Logger.i("CoreService--onCreate002");\r
+        this.runtime = new Runtime();\r
+        this.runtime.setFileDir(getFilesDir());\r
+        this.runtime.setCacheDir(getExternalCacheDir());\r
+        this.runtime.setDBHelper(new DBHelper(getContentResolver(), this));\r
+        this.runtime.setContextProxy(new ContextProxy(this));\r
+        this.runtime.setLbsHelper(new LBSHelper(this,this.runtime.getContextProxy().getWifiManager(), this.runtime));\r
+        this.connectionServiceChain = getConnectionServiceChain();\r
+        this.invokeHandlerServiceChain = getInvokeHandlerServiceChain();\r
+        if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
+            Logger.i("1 into powersave return");\r
+            return;\r
+        }\r
+        this.connectionServiceChain.processAttach(this.connection, this.runtime);\r
+        this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime);\r
+        setAlarm(alarmCycle);\r
+        FileOutputUtil.fileOutput(this, "alarmCycle", "设置闹钟服务  alarmCycle");\r
+        this.locationClient = new LocationClient(this.connection, this.runtime);\r
+        this.connection.open();\r
+        this.connection.connect(this.runtime.getHost(), this.runtime.getPort());\r
+        this.locationClient.start();\r
+        startService(new Intent(this, InnerService.class));\r
+        startForeground(2239, new Notification());\r
+        IntentFilter intentFilter = new IntentFilter();\r
+        intentFilter.addAction("android.intent.action.TIME_SET");\r
+        intentFilter.addAction("android.intent.action.TIMEZONE_CHANGED");\r
+        registerReceiver(this.broadcastReceiver, intentFilter);\r
+        intentFilter = new IntentFilter();\r
+        intentFilter.addAction("android.intent.action.SCREEN_ON");\r
+        intentFilter.addAction("android.intent.action.SCREEN_OFF");\r
+        (this.runtime.getContextProxy()).context.registerReceiver(this.screenOnReceiver, intentFilter);\r
+        intentFilter = new IntentFilter();\r
+        intentFilter.addAction("com.eqc.intent.action.callback.at");\r
+        registerReceiver(this.AtCallbackBroadcastReceiver, intentFilter);\r
+        this.mSignalUtil = SimSignalUtil.getInstance(this);\r
+        setCleanStepCountAlarm();\r
+        setSleepAlarm();\r
+        setWakeAlarm();\r
+        setHeartAlarm();\r
+        setWeatherAlarm();\r
+        getDBFile();\r
+    }\r
+\r
+\r
+\r
+    public int onStartCommand(Intent paramIntent, int paramInt1, int paramInt2) {\r
+//        if (paramIntent != null) {\r
+//            StringBuilder stringBuilder = new StringBuilder();\r
+//            stringBuilder.append("onStartCommand action=");\r
+//            stringBuilder.append(paramIntent.getAction());\r
+//            Logger.i(stringBuilder.toString());\r
+//            if ("com.enqualcomm.support.ACTION_ALARM".equals(paramIntent.getAction())) {\r
+//                if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
+//                    Logger.i("2 into powersave return");\r
+//                    return 1;\r
+//                }\r
+//                if (this.startAlarmCount < 5 && alarmCycle == 1) {\r
+//                    this.startAlarmCount++;\r
+//                } else {\r
+//                    alarmCycle = SharPreferenceUtil.getPrefInt((this.runtime.getContextProxy()).context, "lacation_cycle", 3);\r
+//                }\r
+//                AlarmWakeUp.setAlarmWakeUpTime();\r
+//                boolean bool = ((PowerManager)getSystemService(POWER_SERVICE)).isScreenOn();\r
+//                if (!bool)\r
+//                    send_at_to_update_lbs();\r
+//                if (Util.isConnectWifi((this.runtime.getContextProxy()).context) && !bool) {\r
+//                    is_wifi_network_ok = true;\r
+//                    Util.turnOffWifiForSleep((this.runtime.getContextProxy()).context, this.runtime);\r
+//                }\r
+//                setAlarm(alarmCycle);\r
+//                this.runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_EQC_ALARM", this.runtime);\r
+//                this.locationClient.onAlarm(getWakeLock(alarmCycle));\r
+//                this.connectionServiceChain.processAlarmClock(this.connection, this.runtime);\r
+//                this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime);\r
+//                if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) {\r
+//                    setWeatherAlarm();\r
+//                    this.mHaveSetWeatherAlarm = false;\r
+//                    return 1;\r
+//                }\r
+//            } else {\r
+//                StringBuilder stringBuilder1;\r
+//                if ("com.enqualcomm.support.SLEEP_ALARM".equals(paramIntent.getAction())) {\r
+//                    Logger.i("SLEEP_ALARM");\r
+//                    is_allowed_in_sleep_mode = 1;\r
+//                    FileOutputUtil.fileOutput(this, "alarmCycle", "SLEEP_ALARM  alarmCycle");\r
+//                    setSleepAlarm();\r
+//                    boolean bool = ((PowerManager)getSystemService(POWER_SERVICE)).isScreenOn();\r
+//                    stringBuilder1 = new StringBuilder();\r
+//                    stringBuilder1.append("ifOpen = ");\r
+//                    stringBuilder1.append(bool);\r
+//                    Logger.i(stringBuilder1.toString());\r
+//                    if (!bool) {\r
+//                        is_in_sleep_mode = true;\r
+//                        if (this.mKeepAlive != null)\r
+//                            this.mKeepAlive.setSleepMode(true);\r
+//                        this.connection.close();\r
+//                        return 1;\r
+//                    }\r
+//                } else {\r
+//                    if ("com.enqualcomm.support.WAKE_ALARM".equals(stringBuilder1.getAction())) {\r
+//                        if (is_in_sleep_mode) {\r
+//                            is_in_sleep_mode = false;\r
+//                            FileOutputUtil.fileOutput(this, "alarmCycle", "WAKE_ALARM  alarmCycle");\r
+//                            if (this.mKeepAlive != null)\r
+//                                this.mKeepAlive.setSleepMode(false);\r
+//                            wakeUpFromSleep();\r
+//                        }\r
+//                        is_allowed_in_sleep_mode = 1;\r
+//                        setWakeAlarm();\r
+//                        return 1;\r
+//                    }\r
+//                    if ("com.enqualcomm.support.HEART_ALARM".equals(stringBuilder1.getAction())) {\r
+//                        if (this.mKeepAlive != null) {\r
+//                            this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);\r
+//                            return 1;\r
+//                        }\r
+//                    } else {\r
+//                        if ("com.enqualcomm.support.ACTION_WEATHER_ALARM".equals(stringBuilder1.getAction())) {\r
+//                            this.mSendPairMessage.resetDownLoadConfig();\r
+//                            this.mSendPairMessage.startDownLoad(this.runtime, false);\r
+//                            return 1;\r
+//                        }\r
+//                        if ("com.enqualcomm.support.ADD_DATAPOINTS".equals(stringBuilder1.getAction())) {\r
+//                            setUpLocationDataAlarm(28800000L);\r
+//                            if (this.upLoadDataPoints != null) {\r
+//                                this.upLoadDataPoints.uploadCurrentLocation();\r
+//                                return 1;\r
+//                            }\r
+//                            Logger.i("upLoadDataPoints=null");\r
+//                            return 1;\r
+//                        }\r
+//                        if ("com.enqualcomm.support.ACTION_STWORKMODE_ALARM".equals(stringBuilder1.getAction())) {\r
+//                            if (this.startAlarmCount >= 5) {\r
+//                                alarmCycle = stringBuilder1.getIntExtra("lacation_cycle", 3);\r
+//                                setAlarm(alarmCycle);\r
+//                            }\r
+//                            stringBuilder1 = new StringBuilder();\r
+//                            stringBuilder1.append("STWORKMODE_ALARM  alarmCycle=");\r
+//                            stringBuilder1.append(alarmCycle);\r
+//                            FileOutputUtil.fileOutput(this, "alarmCycle", stringBuilder1.toString());\r
+//                            return 1;\r
+//                        }\r
+//                        if ("com.enqualcomm.support.UPDATE_SECRET_KEY".equals(stringBuilder1.getAction())) {\r
+//                            setUpdateSecretKeyAlarm();\r
+//                            this.invokeHandlerServiceChain.processUserRequest(stringBuilder1, this.connection, this.runtime);\r
+//                            return 1;\r
+//                        }\r
+//                        if ("com.enqualcomm.support.PASS_DATA".equals(stringBuilder1.getAction())) {\r
+//                            deliverDataToCmApp(stringBuilder1.getIntExtra("cmdId", 0), stringBuilder1.getStringExtra("cmdJsonData"));\r
+//                            return 1;\r
+//                        }\r
+//                        if ("com.enqualcomm.support.MONITOR_EXIT".equals(stringBuilder1.getAction())) {\r
+//                            deliverDataToCmApp(203, null);\r
+//                            return 1;\r
+//                        }\r
+//                        if ("cmcm.call.eiot.into.powersave".equals(stringBuilder1.getAction())) {\r
+//                            if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
+//                                Logger.i("3 into powersave return");\r
+//                                return 1;\r
+//                            }\r
+//                            if (cmcm_call_eiot_into_powersave_mode() == 2) {\r
+//                                Logger.i("1 out powersave");\r
+//                                wakeUpFromSleep();\r
+//                                return 1;\r
+//                            }\r
+//                        } else {\r
+//                            if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
+//                                Logger.i("4 into powersave return");\r
+//                                return 1;\r
+//                            }\r
+//                            if (cmcm_call_eiot_into_powersave_mode() == 2) {\r
+//                                Logger.i("2 out powersave");\r
+//                                wakeUpFromSleep();\r
+//                            }\r
+//                            this.invokeHandlerServiceChain.processUserRequest(stringBuilder1, this.connection, this.runtime);\r
+//                        }\r
+//                    }\r
+//                }\r
+//            }\r
+//        }\r
+        return Service.START_NOT_STICKY;\r
+    }\r
+\r
+    public boolean onUnbind(Intent paramIntent) { return false; }\r
+\r
+    public void send_at_to_update_lbs() {\r
+        Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs");\r
+        intent.putExtra("command", "AT+CREG=2");\r
+        intent.putExtra("arg2", "");\r
+        (this.runtime.getContextProxy()).context.sendBroadcast(intent);\r
+    }\r
+\r
+    public void setAlarm(int paramInt) {\r
+        int i = paramInt;\r
+        if (paramInt == 0)\r
+            i = 3;\r
+        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
+        Intent intent = new Intent(this, protocolMainServer.class);\r
+        intent.setAction("com.enqualcomm.support.ACTION_ALARM");\r
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
+        alarmManager.cancel(pendingIntent);\r
+        long l = SystemClock.elapsedRealtime();\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("SDK_INT=");\r
+        stringBuilder.append(Build.VERSION.SDK_INT);\r
+        stringBuilder.append(",m=,");\r
+        stringBuilder.append(23);\r
+        stringBuilder.append(",kitkat=");\r
+        stringBuilder.append(19);\r
+        Logger.i(stringBuilder.toString());\r
+        if (Build.VERSION.SDK_INT >= 19) {\r
+            alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (i * 60 * 1000), pendingIntent);\r
+            return;\r
+        }\r
+        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (i * 60 * 1000), pendingIntent);\r
+    }\r
+\r
+    public void setHeartAlarm() {}\r
+\r
+    public void setUpLocationDataAlarm(long paramLong) {\r
+        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
+        Intent intent = new Intent(this, protocolMainServer.class);\r
+        intent.setAction("com.enqualcomm.support.ADD_DATAPOINTS");\r
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
+        alarmManager.cancel(pendingIntent);\r
+        alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + paramLong, pendingIntent);\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("interval=");\r
+        stringBuilder.append(paramLong);\r
+        Logger.i(stringBuilder.toString());\r
+    }\r
+\r
+    public static class InnerService extends Service {\r
+        public IBinder onBind(Intent param1Intent) { return null; }\r
+\r
+        @SuppressLint("NewApi")\r
+        public int onStartCommand(Intent param1Intent, int param1Int1, int param1Int2) {\r
+            startForeground(2239, new Notification());\r
+            stopForeground(true);\r
+            stopSelf();\r
+            return super.onStartCommand(param1Intent, param1Int1, param1Int2);\r
+        }\r
+    }\r
+\r
+    private static class RequestHandler extends Handler {\r
+        private final WeakReference<protocolMainServer> mReference;\r
+\r
+        RequestHandler(protocolMainServer param1CoreService) { this.mReference = new WeakReference(param1CoreService); }\r
+\r
+        public void handleMessage(Message param1Message) {\r
+            protocolMainServer coreService = (protocolMainServer)this.mReference.get();\r
+            if (coreService == null)\r
+                return;\r
+            coreService.invokeHandlerServiceChain.processUserRequest(param1Message, coreService.connection, coreService.runtime);\r
+        }\r
+    }\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
     public boolean isServerConnected(){\r
         return (RxSocket.getInstance().getSocketStatus()==RxSocket.SocketStatus.CONNECTED)?true:false;\r
     }\r
@@ -152,16 +706,16 @@ public class protocolMainServer extends Service {
     private Timer mTimer_keepalive=null;\r
     private WifiManager mWifiManager=null;\r
     private Config mConfig=null;\r
-    private static deviceStatus mDevStat=null;\r
+    private static Runtime mDevStat=null;\r
     private protocolAPIHelper mProtocolAPI=null;\r
 \r
 \r
     private void log(String msg) {\r
-        ICLog.log(TAG,msg);\r
+        Logger.log(TAG,msg);\r
     }\r
 \r
     private void log(String funcName, String msg) {\r
-        ICLog.log(TAG,funcName,msg);\r
+        Logger.log(TAG,funcName,msg);\r
     }\r
 \r
 \r
@@ -189,6 +743,8 @@ public class protocolMainServer extends Service {
 \r
         startTimer();\r
         mProtocolServer=this;\r
+\r
+        onCreateCore();\r
         super.onCreate();\r
     }\r
 \r
@@ -199,7 +755,7 @@ public class protocolMainServer extends Service {
 \r
         if (mConfig == null) mConfig = new Config();\r
         if (mDevStat == null) {\r
-            mDevStat =new deviceStatus();\r
+            mDevStat =new Runtime();\r
             log("new mDevStat");\r
         }\r
         if (mProtocolAPI == null) mProtocolAPI = new protocolAPIHelper();\r
@@ -321,10 +877,7 @@ public class protocolMainServer extends Service {
     private boolean needLogin(){\r
         return true;\r
     }\r
-    @Override\r
-    public int onStartCommand(Intent intent, int flags, int startId) {\r
-        return super.onStartCommand(intent, flags, startId);\r
-    }\r
+\r
 \r
 \r
     @Override\r
@@ -334,7 +887,14 @@ public class protocolMainServer extends Service {
             unregisterReceiver(mIntentReceiver);\r
         } catch (Exception ignored) {\r
         }\r
-    }\r
+            this.connectionServiceChain.processDetach(this.connection, this.runtime);\r
+            this.invokeHandlerServiceChain.processDetach(this.connection, this.runtime);\r
+            this.locationClient.stop();\r
+            this.connection.close();\r
+            unregisterReceiver(this.broadcastReceiver);\r
+            unregisterReceiver(this.screenOnReceiver);\r
+            unregisterReceiver(this.AtCallbackBroadcastReceiver);\r
+        }\r
 \r
     private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {\r
         @Override\r
diff --git a/app/src/main/java/com/ic/protocol/utils/AlarmHelper.java b/app/src/main/java/com/ic/protocol/utils/AlarmHelper.java
new file mode 100644 (file)
index 0000000..32a5e0f
--- /dev/null
@@ -0,0 +1,109 @@
+package com.ic.protocol.utils;\r
+\r
+import android.app.AlarmManager;\r
+import android.app.PendingIntent;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.os.Build;\r
+import android.os.SystemClock;\r
+\r
+import java.lang.reflect.Method;\r
+import java.util.Calendar;\r
+\r
+public class AlarmHelper {\r
+  private static final String ACTION_STEP_COUNT_ALARM = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM";\r
+  \r
+  private static final long ONE_DAY = 86400000L;\r
+  \r
+  private static final long ONE_WEEK = 604800000L;\r
+  \r
+  private static Method setImpl;\r
+  \r
+\r
+  \r
+  static  {\r
+      try {\r
+        setImpl = AlarmManager.class.getDeclaredMethod("setImpl", new Class[] { int.class, long.class, long.class, long.class, PendingIntent.class, android.os.WorkSource.class });\r
+        setImpl.setAccessible(true);\r
+\r
+      } catch (Exception exception) {\r
+        exception.printStackTrace();\r
+      }\r
+  }\r
+  \r
+  public static void setAlarm(AlarmManager paramAlarmManager, long paramLong1, long paramLong2, PendingIntent paramPendingIntent) {\r
+\r
+//      try {\r
+//        setImpl.invoke(paramAlarmManager, new Object[] { Integer.valueOf(0), Long.valueOf(paramLong1), Long.valueOf(0L), Long.valueOf(paramLong2), paramPendingIntent, null });\r
+//        return;\r
+//      } catch (Exception exception) {\r
+//        useApi19 = false;\r
+//        paramAlarmManager.setRepeating(0, paramLong1, paramLong2, paramPendingIntent);\r
+//        exception.printStackTrace();\r
+//        return;\r
+//      }\r
+\r
+//    paramAlarmManager.setRepeating(0, paramLong1, paramLong2, paramPendingIntent);\r
+  }\r
+  \r
+  public static void setAlarm(AlarmManager paramAlarmManager, long paramLong, PendingIntent paramPendingIntent) { setAlarm(paramAlarmManager, paramLong, 604800000L, paramPendingIntent); }\r
+  \r
+  public static void setCleanStepCountAlarm(Context paramContext, int paramInt1, int paramInt2, String paramString) {\r
+//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService(Context.ALARM_SERVICE);\r
+//    Intent intent = new Intent(paramContext, ProcessReceiver.class);\r
+//    intent.setAction(paramString);\r
+//    PendingIntent pendingIntent = PendingIntent.getBroadcast(paramContext, 0, intent, 134217728);\r
+//    long l3 = System.currentTimeMillis();\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    calendar.set(11, paramInt1);\r
+//    calendar.set(12, paramInt2);\r
+//    calendar.set(13, 0);\r
+//    long l2 = calendar.getTimeInMillis();\r
+//    long l1 = l2;\r
+//    if (l2 < l3)\r
+//      l1 = l2 + 86400000L;\r
+//    alarmManager.cancel(pendingIntent);\r
+//    alarmManager.setExact(0, l1, pendingIntent);\r
+  }\r
+  \r
+  public static void setRealTimeAlarm(Context paramContext, int paramInt, String paramString) {\r
+//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService("alarm");\r
+//    Intent intent = new Intent(paramContext, com.enqualcomm.support.CoreService.class);\r
+//    intent.setAction(paramString);\r
+//    PendingIntent pendingIntent = PendingIntent.getService(paramContext, 0, intent, 134217728);\r
+//    alarmManager.cancel(pendingIntent);\r
+//    long l = SystemClock.elapsedRealtime();\r
+//    StringBuilder stringBuilder = new StringBuilder();\r
+//    stringBuilder.append("SDK_INT=");\r
+//    stringBuilder.append(Build.VERSION.SDK_INT);\r
+//    stringBuilder.append(",m=,");\r
+//    stringBuilder.append(23);\r
+//    stringBuilder.append(",kitkat=");\r
+//    stringBuilder.append(19);\r
+//    Logger.i(stringBuilder.toString());\r
+//    if (Build.VERSION.SDK_INT >= 19) {\r
+//      alarmManager.setExact(2, l + (paramInt * 60 * 1000), pendingIntent);\r
+//      return;\r
+//    }\r
+//    alarmManager.set(2, l + (paramInt * 60 * 1000), pendingIntent);\r
+  }\r
+  \r
+  public static void setTimeAlarm(Context paramContext, int paramInt1, int paramInt2, String paramString) {\r
+//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService("alarm");\r
+//    Intent intent = new Intent(paramContext, com.enqualcomm.support.CoreService.class);\r
+//    intent.setAction(paramString);\r
+//    PendingIntent pendingIntent = PendingIntent.getService(paramContext, 0, intent, 134217728);\r
+//    long l3 = System.currentTimeMillis();\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    calendar.set(11, paramInt1);\r
+//    calendar.set(12, paramInt2);\r
+//    calendar.set(13, 0);\r
+//    long l2 = calendar.getTimeInMillis();\r
+//    long l1 = l2;\r
+//    if (l2 < l3)\r
+//      l1 = l2 + 86400000L;\r
+//    alarmManager.cancel(pendingIntent);\r
+//    alarmManager.setExact(0, l1, pendingIntent);\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java b/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java
new file mode 100644 (file)
index 0000000..5cc41c6
--- /dev/null
@@ -0,0 +1,32 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.ComponentName;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.os.SystemClock;\r
+\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public class AlarmWakeUp {\r
+  private static long lastAlarmTime;\r
+  \r
+  public static void isNeedWakeUpAlarm(Runtime dev) {\r
+    long l = SystemClock.elapsedRealtime();\r
+    int i = SharPreferenceUtil.getPrefInt((dev.getContextProxy()).context, "lacation_cycle", 3);\r
+    if (l - lastAlarmTime > ((i + 1) * 60 * 1000)) {\r
+      ComponentName componentName = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.CoreService");\r
+      Intent intent = (new Intent("com.enqualcomm.support.ACTION_ALARM")).setComponent(componentName);\r
+      (dev.getContextProxy()).context.startService(intent);\r
+      Context context = (dev.getContextProxy()).context;\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append("currentTimeMillis=");\r
+      stringBuilder.append(l);\r
+      stringBuilder.append("---lastAlarmTime=");\r
+      stringBuilder.append(lastAlarmTime);\r
+      FileOutputUtil.fileOutput(context, "alarmWakeUp", stringBuilder.toString());\r
+    } \r
+  }\r
+  \r
+  public static void setAlarmWakeUpTime() { lastAlarmTime = SystemClock.elapsedRealtime(); }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/BatteryUtil.java b/app/src/main/java/com/ic/protocol/utils/BatteryUtil.java
new file mode 100644 (file)
index 0000000..22a55fb
--- /dev/null
@@ -0,0 +1,98 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.ComponentName;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public class BatteryUtil {\r
+  private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {\r
+      public void onReceive(Context param1Context, Intent param1Intent) {\r
+//        if ("android.intent.action.BATTERY_CHANGED".equals(param1Intent.getAction())) {\r
+//          if (param1Intent.getIntExtra("status", 1) == 2) {\r
+//            BatteryUtil.this.mRuntime.setBatterychanging(true);\r
+//            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+//          } else {\r
+//            BatteryUtil.this.mRuntime.setBatterychanging(false);\r
+//          }\r
+//          int i = param1Intent.getIntExtra("level", 0) * 100 / param1Intent.getIntExtra("scale", 100);\r
+//          if (i >= 100) {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("5");\r
+//            stringBuffer.append(100);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
+//            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+//          } else if (i >= 75) {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("50");\r
+//            stringBuffer.append(i);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
+//            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+//          } else if (i >= 50) {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("40");\r
+//            stringBuffer.append(i);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
+//            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+//          } else if (i >= 25) {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("30");\r
+//            stringBuffer.append(i);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
+//            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+//          } else if (i >= 10) {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("20");\r
+//            stringBuffer.append(i);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(true);\r
+//          } else {\r
+//            Runtime runtime = BatteryUtil.this.mRuntime;\r
+//            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
+//            stringBuffer.append("100");\r
+//            stringBuffer.append(i);\r
+//            runtime.setBattery(stringBuffer.toString());\r
+//            BatteryUtil.this.mRuntime.setHaveBatteryChange(true);\r
+//          }\r
+//          BatteryUtil.this.mBuffer.setLength(0);\r
+//        }\r
+//        if ("android.intent.action.BATTERY_LOW".equals(param1Intent.getAction())) {\r
+//          BatteryUtil.this.mRuntime.setBatteryLow(true);\r
+//          Logger.i("lowbattery finish video_end_call");\r
+//          ComponentName componentName = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.CoreService");\r
+//          Intent intent = (new Intent("com.enqualcomm.support.lowbatteryMsg")).setComponent(componentName);\r
+//          (this.this$0.mRuntime.getContextProxy()).context.startService(intent);\r
+//        }\r
+      }\r
+    };\r
+  \r
+  private StringBuffer mBuffer;\r
+\r
+  Runtime devStat;\r
+  \r
+  public BatteryUtil(Runtime paramRuntime) { this.devStat = paramRuntime; }\r
+  \r
+  public void registerBroadReceiver() {\r
+    this.mBuffer = new StringBuffer();\r
+    IntentFilter intentFilter = new IntentFilter();\r
+    intentFilter.addAction("android.intent.action.BATTERY_CHANGED");\r
+    intentFilter.addAction("android.intent.action.BATTERY_LOW");\r
+    (this.devStat.getContextProxy()).context.registerReceiver(this.batteryChangedReceiver, intentFilter);\r
+  }\r
+  \r
+  public void unregisterBroadReceiver() { (this.devStat.getContextProxy()).context.unregisterReceiver(this.batteryChangedReceiver); }\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/CellInfoUtil.java b/app/src/main/java/com/ic/protocol/utils/CellInfoUtil.java
new file mode 100644 (file)
index 0000000..77730bf
--- /dev/null
@@ -0,0 +1,124 @@
+package com.ic.protocol.utils;\r
+\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+\r
+import com.ic.protocol.GSensorListener;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+public class CellInfoUtil {\r
+  static int BSSS = 0;\r
+  \r
+  static int CELL_ID = 0;\r
+  \r
+  private static int IS2SECOND = 2;\r
+  \r
+  static int LAC = 0;\r
+  \r
+  static int MCC = 0;\r
+  \r
+  static int MNC = 0;\r
+  \r
+  public static boolean getCellInfoOver = false;\r
+  \r
+  private static String mCellInfo;\r
+  \r
+  public static Handler mHandler = new Handler() {\r
+      public void handleMessage(Message param1Message) {\r
+        super.handleMessage(param1Message);\r
+        if (param1Message.what != 100)\r
+          return; \r
+        Logger.i("延时获取基站信息");\r
+//        CellInfoUtil.access$010();\r
+//        CellInfoUtil.setCurrentAttachCellInfo(mRuntime, mWakeLock);\r
+      }\r
+    };\r
+  \r
+  private static Runtime mDevStatus;\r
+  \r
+  private static PowerManager.WakeLock mWakeLock;\r
+  \r
+  private static void releaseWakeLock(PowerManager.WakeLock paramWakeLock) {\r
+    if (paramWakeLock == null) {\r
+      Logger.i("cellInfo 没有加锁");\r
+      return;\r
+    } \r
+    if (GSensorListener.getStepCountOver) {\r
+      if (paramWakeLock.isHeld()) {\r
+        getCellInfoOver = false;\r
+        GSensorListener.getStepCountOver = false;\r
+        paramWakeLock.release();\r
+        return;\r
+      } \r
+    } else {\r
+      getCellInfoOver = true;\r
+    } \r
+  }\r
+  \r
+  public static void removeMessage() { mHandler.removeCallbacksAndMessages(null); }\r
+  \r
+  public static void setCurrentAttachCellInfo(Runtime dev, PowerManager.WakeLock paramWakeLock) {\r
+    mWakeLock = paramWakeLock;\r
+    mDevStatus = dev;\r
+    (new Thread(new Runnable() {\r
+          public void run() {\r
+//            CellInfoUtil.access$302(mDevStatus.getLbsHelper().getAttchCellInfo(mRuntime.getContextProxy().getTelephonyManager()));\r
+            if (mCellInfo != null) {\r
+              String str1 = mDevStatus.getCdmaInfo();\r
+              String str2 = mDevStatus.getMccAndMnc();\r
+              if (str1 != null) {\r
+                String[] arrayOfString2 = str2.split("@");\r
+                String[] arrayOfString1 = str1.split(",");\r
+                CellInfoUtil.MCC = Integer.parseInt(arrayOfString2[0]);\r
+                CellInfoUtil.MNC = Integer.parseInt(arrayOfString2[1]);\r
+                int i = Integer.parseInt(arrayOfString1[0]);\r
+                int j = Integer.parseInt(arrayOfString1[1]);\r
+                int k = Integer.parseInt(arrayOfString1[2]);\r
+                CellInfoUtil.BSSS = Integer.parseInt(arrayOfString1[5]);\r
+//                EqcAlgorithmNative.native_EqcAlgorithmMethod4(3, j, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, i, k);\r
+                CellInfoUtil.releaseWakeLock(mWakeLock);\r
+              } else {\r
+                String[] arrayOfString = mCellInfo.split("\\+")[0].split("@");\r
+                CellInfoUtil.MCC = Integer.parseInt(arrayOfString[0]);\r
+                CellInfoUtil.MNC = Integer.parseInt(arrayOfString[1]);\r
+                CellInfoUtil.LAC = Integer.parseInt(arrayOfString[2]);\r
+                CellInfoUtil.CELL_ID = Integer.parseInt(arrayOfString[3]);\r
+                CellInfoUtil.BSSS = Integer.parseInt(arrayOfString[4]);\r
+//                CellInfoUtil.access$002(2);\r
+//                EqcAlgorithmNative.native_EqcAlgorithmMethod4(0, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
+//                mRuntime.cellinfo = mCellInfo;\r
+              } \r
+//              FileOutputUtil.fileOutput((mRuntime.getContextProxy()).context, "onCellLocationChanged", mCellInfo);\r
+              CellInfoUtil.releaseWakeLock(mWakeLock);\r
+              return;\r
+            } \r
+            if (IS2SECOND <= 0) {\r
+              CellInfoUtil.MCC = 0;\r
+              CellInfoUtil.MNC = 0;\r
+              CellInfoUtil.LAC = 0;\r
+              CellInfoUtil.CELL_ID = -1;\r
+              CellInfoUtil.BSSS = 0;\r
+//              CellInfoUtil.access$002(2);\r
+//              Runtime runtime = mRuntime;\r
+              StringBuilder stringBuilder = new StringBuilder();\r
+              stringBuilder.append(CellInfoUtil.MCC);\r
+              stringBuilder.append("@");\r
+              stringBuilder.append(CellInfoUtil.MNC);\r
+              stringBuilder.append("@");\r
+              stringBuilder.append(CellInfoUtil.LAC);\r
+              stringBuilder.append("@");\r
+              stringBuilder.append(CellInfoUtil.CELL_ID);\r
+              stringBuilder.append("@");\r
+              stringBuilder.append(CellInfoUtil.BSSS);\r
+//              runtime.cellinfo = stringBuilder.toString();\r
+//              EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
+//              FileOutputUtil.fileOutput((mRuntime.getContextProxy()).context, "onCellLocationChanged", mRuntime.cellinfo);\r
+              CellInfoUtil.releaseWakeLock(mWakeLock);\r
+              return;\r
+            } \r
+            CellInfoUtil.mHandler.sendEmptyMessageDelayed(100, 2000L);\r
+          }\r
+        })).start();\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/utils/Connection.java b/app/src/main/java/com/ic/protocol/utils/Connection.java
new file mode 100644 (file)
index 0000000..72deaba
--- /dev/null
@@ -0,0 +1,22 @@
+package com.ic.protocol.utils;\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+\r
+public interface Connection {\r
+  void close();\r
+  \r
+  void connect(String paramString, int paramInt);\r
+  \r
+  void disconnect();\r
+  \r
+  int getTimeout();\r
+  \r
+  void open();\r
+  \r
+  void send(StringMessage paramStringMessage);\r
+  \r
+  boolean sendBlocking(StringMessage paramStringMessage);\r
+  \r
+  void setTimeout(int paramInt);\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/ConnectionListener.java b/app/src/main/java/com/ic/protocol/utils/ConnectionListener.java
new file mode 100644 (file)
index 0000000..88fc69f
--- /dev/null
@@ -0,0 +1,14 @@
+package com.ic.protocol.utils;\r
+\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+\r
+public interface ConnectionListener {\r
+  void onConnectionClose();\r
+  \r
+  void onConnectionOpen();\r
+  \r
+  void onReceive(StringMessage paramStringMessage);\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/ContextProxy.java b/app/src/main/java/com/ic/protocol/utils/ContextProxy.java
new file mode 100644 (file)
index 0000000..619f06f
--- /dev/null
@@ -0,0 +1,469 @@
+package com.ic.protocol.utils;\r
+\r
+import android.app.AlarmManager;\r
+import android.app.PendingIntent;\r
+import android.content.ContentResolver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.database.Cursor;\r
+import android.hardware.SensorManager;\r
+import android.location.LocationManager;\r
+import android.net.Uri;\r
+import android.net.wifi.WifiManager;\r
+import android.os.Build;\r
+import android.os.PowerManager;\r
+import android.telephony.TelephonyManager;\r
+\r
+\r
+import com.ic.protocol.ICContentProvider;\r
+import com.ic.protocol.bean.Alarm;\r
+import com.ic.protocol.bean.NoticeContent;\r
+import com.ic.protocol.bean.Silent;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Calendar;\r
+import java.util.Iterator;\r
+\r
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;\r
+\r
+public class ContextProxy {\r
+  private static final long ONE_WEEK = 604800000L;\r
+  \r
+  private final AlarmManager alarmManager;\r
+  \r
+  public Context context;\r
+  \r
+  private final LocationManager locationManager;\r
+  \r
+  private final ContentResolver resolver;\r
+  \r
+  private final SensorManager sensorManager;\r
+  \r
+  private final TelephonyManager telephonyManager;\r
+  \r
+  private final WifiManager wifiManager;\r
+  \r
+  public ContextProxy(Context _context) {\r
+    this.context = _context;\r
+    this.resolver = context.getContentResolver();\r
+    this.locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);\r
+    this.alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
+    this.telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);\r
+    this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
+    this.sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);\r
+  }\r
+  \r
+  private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, int paramInt) {\r
+    StringBuilder stringBuilder = new StringBuilder("silent:");\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString3);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramInt);\r
+    paramString1 = stringBuilder.toString();\r
+    Intent intent = new Intent(this.context, com.ic.protocol.service.protocolMainServer.class);\r
+    intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
+    intent.putExtra("SilentData", paramString1);\r
+    return PendingIntent.getService(this.context, 0, intent, FLAG_UPDATE_CURRENT);\r
+  }\r
+  \r
+  private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String paramString4, int paramInt) {\r
+    StringBuilder stringBuilder = new StringBuilder("alarm:");\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString3);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString4);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramInt);\r
+    Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(stringBuilder.toString()));\r
+    return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT);\r
+  }\r
+  \r
+  private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5, String paramString6, String paramString7) {\r
+    StringBuilder stringBuilder = new StringBuilder("notice:");\r
+    stringBuilder.append(paramString1);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString2);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString3);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString4);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString5);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString6);\r
+    stringBuilder.append(",");\r
+    stringBuilder.append(paramString7);\r
+    Intent intent = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(stringBuilder.toString()));\r
+    return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT);\r
+  }\r
+  \r
+  private void initAlarmAndSilent() {\r
+//    Calendar calendar2 = Calendar.getInstance();\r
+//    calendar2.set(13, 0);\r
+//    long l = System.currentTimeMillis();\r
+//    Cursor cursor2 = this.context.getContentResolver().query(EQCContentProvider.ALARM_URI, null, null, null, null);\r
+//    byte b2 = 3;\r
+//    byte b1 = 5;\r
+//    char c = '\002';\r
+//    if (cursor2 != null) {\r
+//      while (cursor2.moveToNext()) {\r
+//        if ("ON".equals(cursor2.getString(4))) {\r
+//          String str2 = cursor2.getString(1);\r
+//          String str1 = cursor2.getString(c);\r
+//          String str3 = cursor2.getString(b2);\r
+//          String str4 = cursor2.getString(b1);\r
+//          calendar2.set(11, Integer.parseInt(str2.substring(c, 4)));\r
+//          calendar2.set(12, Integer.parseInt(str2.substring(b1, 7)));\r
+//          char[] arrayOfChar = str1.toCharArray();\r
+//          int i = arrayOfChar.length;\r
+//          byte b = 1;\r
+//          while (b < i) {\r
+//            c = arrayOfChar[b] - '/';\r
+//            calendar2.set(7, c);\r
+//            long l1 = calendar2.getTimeInMillis();\r
+//            if (l1 <= l)\r
+//              l1 += 604800000L;\r
+//            PendingIntent pendingIntent = getPendingIntent(str2, str1, str3, str4, c);\r
+//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+//            b++;\r
+//            c = '\002';\r
+//            b1 = 5;\r
+//            b2 = 3;\r
+//          }\r
+//        }\r
+//      }\r
+//      cursor2.close();\r
+//    }\r
+//    Calendar calendar1 = Calendar.getInstance();\r
+//    calendar1.set(13, 0);\r
+//    Cursor cursor1 = this.context.getContentResolver().query(EQCContentProvider.NOTICE_URL, null, null, null, null);\r
+//    if (cursor1 != null) {\r
+//      while (cursor1.moveToNext()) {\r
+//        String str1 = cursor1.getString(1);\r
+//        String str2 = cursor1.getString(2);\r
+//        String str3 = cursor1.getString(3);\r
+//        String str4 = cursor1.getString(4);\r
+//        String str5 = cursor1.getString(5);\r
+//        String str6 = cursor1.getString(6);\r
+//        String str7 = cursor1.getString(6);\r
+//        if (str1 != null) {\r
+//          String str8 = str1.substring(0, 4);\r
+//          String str9 = str1.substring(4, 6);\r
+//          String str10 = str1.substring(6, 8);\r
+//          String str11 = str1.substring(8, 10);\r
+//          String str12 = str1.substring(10, 12);\r
+//          calendar1.set(1, Integer.valueOf(str8).intValue());\r
+//          calendar1.set(2, Integer.valueOf(str9).intValue());\r
+//          calendar1.set(5, Integer.valueOf(str10).intValue());\r
+//          calendar1.set(11, Integer.valueOf(str11).intValue());\r
+//          calendar1.set(12, Integer.valueOf(str12).intValue());\r
+//          long l1 = calendar1.getTimeInMillis();\r
+//          if (l1 > l) {\r
+//            PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
+//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+//          }\r
+//        }\r
+//      }\r
+//      cursor1.close();\r
+//    }\r
+  }\r
+  \r
+  public LocationManager getLocationManager() { return this.locationManager; }\r
+  \r
+  public ContentResolver getResolver() { return this.resolver; }\r
+  \r
+  public SensorManager getSensorManager() { return this.sensorManager; }\r
+  \r
+  public TelephonyManager getTelephonyManager() { return this.telephonyManager; }\r
+  \r
+  public WifiManager getWifiManager() { return this.wifiManager; }\r
+  \r
+  public void reboot() {\r
+    PowerManager powerManager = (PowerManager)this.context.getSystemService(Context.POWER_SERVICE);\r
+    try {\r
+      powerManager.reboot("remote reboot");\r
+      Logger.i("命令重启");\r
+      return;\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      return;\r
+    } \r
+  }\r
+  \r
+  public void resolverAlarm(ArrayList<Alarm> paramArrayList) {\r
+//    Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null);\r
+//    char c = '\001';\r
+//    if (cursor != null) {\r
+//      while (cursor.moveToNext()) {\r
+//        if ("ON".equals(cursor.getString(4))) {\r
+//          String str1 = cursor.getString(c);\r
+//          String str2 = cursor.getString(2);\r
+//          String str3 = cursor.getString(3);\r
+//          String str4 = cursor.getString(5);\r
+//          char[] arrayOfChar = str2.toCharArray();\r
+//          int i = arrayOfChar.length;\r
+//          byte b = 1;\r
+//          while (b < i) {\r
+//            c = arrayOfChar[b];\r
+//            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/'));\r
+//            b++;\r
+//            c = '\001';\r
+//          }\r
+//        }\r
+//      }\r
+//      cursor.close();\r
+//    }\r
+//    Calendar calendar = Calendar.getInstance();\r
+//    calendar.set(13, 0);\r
+//    long l = System.currentTimeMillis();\r
+//    for (Alarm alarm : paramArrayList) {\r
+//      long l1 = l;\r
+//      if ("ON".equals(alarm.status)) {\r
+//        int i = Integer.parseInt(alarm.time.substring(2, 4));\r
+//        int j = Integer.parseInt(alarm.time.substring(5, 7));\r
+//        calendar.set(11, i);\r
+//        calendar.set(12, j);\r
+//        char[] arrayOfChar = alarm.week.toCharArray();\r
+//        i = arrayOfChar.length;\r
+//        j = 1;\r
+//        while (true) {\r
+//          l1 = l;\r
+//          if (j < i) {\r
+//            c = arrayOfChar[j] - '/';\r
+//            calendar.set(7, c);\r
+//            long l2 = calendar.getTimeInMillis();\r
+//            l1 = l2;\r
+//            if (l2 <= l)\r
+//              l1 = l2 + 604800000L;\r
+//            PendingIntent pendingIntent = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c);\r
+//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+//            j++;\r
+//            continue;\r
+//          }\r
+//          break;\r
+//        }\r
+//      }\r
+//      l = l1;\r
+//    }\r
+  }\r
+  \r
+  public void resolverNotice(ArrayList<NoticeContent> paramArrayList) {\r
+//    Cursor cursor = this.context.getContentResolver().query(EQCContentProvider.NOTICE_URL, null, null, null, null);\r
+//    if (cursor != null) {\r
+//      while (cursor.moveToNext()) {\r
+//        String str1 = cursor.getString(1);\r
+//        String str2 = cursor.getString(2);\r
+//        String str3 = cursor.getString(3);\r
+//        String str4 = cursor.getString(4);\r
+//        String str5 = cursor.getString(5);\r
+//        String str6 = cursor.getString(6);\r
+//        String str7 = cursor.getString(6);\r
+//        this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7));\r
+//      }\r
+//      cursor.close();\r
+//    }\r
+//    for (NoticeContent noticeContent : paramArrayList) {\r
+//      String str1 = noticeContent.noticeTime;\r
+//      String str2 = noticeContent.noticeName;\r
+//      String str3 = noticeContent.noticeNumber;\r
+//      String str4 = noticeContent.noticeID;\r
+//      String str5 = noticeContent.noticeCategory;\r
+//      String str6 = noticeContent.noticeFrequency;\r
+//      String str7 = noticeContent.noticeContent;\r
+//      Calendar calendar = Calendar.getInstance();\r
+//      long l = System.currentTimeMillis();\r
+//      calendar.set(13, 0);\r
+//      if (str1 != null) {\r
+//        String str8 = str1.substring(0, 4);\r
+//        String str9 = str1.substring(4, 6);\r
+//        String str10 = str1.substring(6, 8);\r
+//        String str11 = str1.substring(8, 10);\r
+//        String str12 = str1.substring(10, 12);\r
+//        calendar.set(1, Integer.valueOf(str8).intValue());\r
+//        calendar.set(2, Integer.valueOf(str9).intValue() - 1);\r
+//        calendar.set(5, Integer.valueOf(str10).intValue());\r
+//        calendar.set(11, Integer.valueOf(str11).intValue());\r
+//        calendar.set(12, Integer.valueOf(str12).intValue());\r
+//        long l1 = calendar.getTimeInMillis();\r
+//        if (l1 >= l) {\r
+//          PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
+//          AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+//        }\r
+//      }\r
+//    }\r
+  }\r
+  \r
+  public void resolverSilent(ArrayList<Silent> paramArrayList) {\r
+//    Calendar calendar1 = Calendar.getInstance();\r
+//    calendar1.set(13, 0);\r
+//    Calendar calendar2 = Calendar.getInstance();\r
+//    calendar2.set(13, 0);\r
+//    long l = System.currentTimeMillis();\r
+//    Cursor cursor = this.context.getContentResolver().query(EQCContentProvider.SILENT_URI, null, null, null, null);\r
+//    char c = '\013';\r
+//    int j = 5;\r
+//    int k = 4;\r
+//    if (cursor != null) {\r
+//      char c1 = Character.MIN_VALUE;\r
+//      while (cursor.moveToNext()) {\r
+//        if ("ON".equals(cursor.getString(k))) {\r
+//          String str1 = cursor.getString(1);\r
+//          String str2 = cursor.getString(2);\r
+//          String str3 = cursor.getString(3);\r
+//          if (!c1) {\r
+//            int n = Integer.parseInt(str1.substring(2, k));\r
+//            int i1 = Integer.parseInt(str1.substring(j, 7));\r
+//            calendar1.set(c, n);\r
+//            calendar1.set(12, i1);\r
+//            n = Integer.parseInt(str2.substring(2, k));\r
+//            i1 = Integer.parseInt(str2.substring(j, 7));\r
+//            calendar2.set(c, n);\r
+//            calendar2.set(12, i1);\r
+//          }\r
+//          char[] arrayOfChar = str3.toCharArray();\r
+//          int m = arrayOfChar.length;\r
+//          byte b = 1;\r
+//          char c2 = k;\r
+//          k = j;\r
+//          j = c;\r
+//          while (b < m) {\r
+//            j = arrayOfChar[b] - '/';\r
+//            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, j));\r
+//            c = c1;\r
+//            if (c1 == Character.MIN_VALUE) {\r
+//              calendar1.set(7, j);\r
+//              long l1 = calendar1.getTimeInMillis();\r
+//              calendar2.set(7, j);\r
+//              long l2 = calendar2.getTimeInMillis();\r
+//              c = c1;\r
+//              if (l1 <= l) {\r
+//                c = c1;\r
+//                if (l2 > l)\r
+//                  c = '\001';\r
+//              }\r
+//            }\r
+//            b++;\r
+//            j = 11;\r
+//            k = 5;\r
+//            c2 = '\004';\r
+//            c1 = c;\r
+//          }\r
+//          c = j;\r
+//          j = k;\r
+//          k = c2;\r
+//        }\r
+//      }\r
+//      cursor.close();\r
+//      c = c1;\r
+//    } else {\r
+//      c = Character.MIN_VALUE;\r
+//    }\r
+//    Iterator iterator = paramArrayList.iterator();\r
+//    int i;\r
+//    for (i = 0; iterator.hasNext(); i = k) {\r
+//      Silent silent = (Silent)iterator.next();\r
+//      k = i;\r
+//      if ("ON".equals(silent.status)) {\r
+//        j = Integer.parseInt(silent.start.substring(2, 4));\r
+//        k = Integer.parseInt(silent.start.substring(5, 7));\r
+//        calendar1.set(11, j);\r
+//        calendar1.set(12, k);\r
+//        j = Integer.parseInt(silent.end.substring(2, 4));\r
+//        k = Integer.parseInt(silent.end.substring(5, 7));\r
+//        calendar2.set(11, j);\r
+//        calendar2.set(12, k);\r
+//        char[] arrayOfChar = silent.week.toCharArray();\r
+//        int m = arrayOfChar.length;\r
+//        j = 1;\r
+//        while (true) {\r
+//          k = i;\r
+//          if (j < m) {\r
+//            k = arrayOfChar[j] - '/';\r
+//            calendar1.set(7, k);\r
+//            long l1 = calendar1.getTimeInMillis();\r
+//            calendar2.set(7, k);\r
+//            long l2 = calendar2.getTimeInMillis();\r
+//            if (l1 <= l)\r
+//              if (l2 <= l) {\r
+//                l1 += 604800000L;\r
+//              } else {\r
+//                i = 1;\r
+//              }\r
+//            PendingIntent pendingIntent = getPendingIntent(silent.start, silent.end, silent.week, k);\r
+//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+//            j++;\r
+//            continue;\r
+//          }\r
+//          break;\r
+//        }\r
+//      }\r
+//    }\r
+//    if (c != '\000' && i == 0) {\r
+//      Intent intent = new Intent(this.context, com.enqualcomm.support.CoreService.class);\r
+//      intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
+//      intent.putExtra("SilentData", "silent:cancel");\r
+//      this.context.startService(intent);\r
+//    }\r
+  }\r
+  \r
+  public void sendBroadcast(String cmd, Runtime dev) {\r
+    Intent intent = new Intent();\r
+    intent.putExtra("longitude", dev.getLocationInstance().getLocation().lon);\r
+    intent.putExtra("latitude", dev.getLocationInstance().getLocation().lat);\r
+    intent.setAction(cmd);\r
+    this.context.sendBroadcast(intent);\r
+  }\r
+  \r
+  public void sendBroadcast(boolean paramBoolean) {\r
+    Intent intent = new Intent();\r
+    intent.setAction("com.enqualcomm.support.ACTION_ISCONNECTED");\r
+    intent.putExtra("isConnected", paramBoolean);\r
+    this.context.sendBroadcast(intent);\r
+  }\r
+  \r
+  public void sendStheartRateBroadcast(String paramString, int paramInt) {\r
+    Intent intent = new Intent();\r
+    intent.setAction(paramString);\r
+    intent.putExtra("stheartRateType", paramInt);\r
+    this.context.sendBroadcast(intent, "com.eqc.broadcast.permission");\r
+  }\r
+  \r
+  public void shutdown() {\r
+    String str = Build.VERSION.RELEASE;\r
+    try {\r
+      Object object = Class.forName("android.os.ServiceManager").getMethod("getService", new Class[] { String.class }).invoke(null, new Object[] { "power" });\r
+      object = Class.forName("android.os.IPowerManager$Stub").getMethod("asInterface", new Class[] { android.os.IBinder.class }).invoke(null, new Object[] { object });\r
+      if (str.contains("7.0")) {\r
+        object.getClass().getMethod("shutdown", new Class[] { boolean.class, String.class, boolean.class }).invoke(object, new Object[] { Boolean.valueOf(false), null, Boolean.valueOf(true) });\r
+        return;\r
+      } \r
+      object.getClass().getMethod("shutdown", new Class[] { boolean.class, boolean.class }).invoke(object, new Object[] { Boolean.valueOf(false), Boolean.valueOf(true) });\r
+\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+\r
+    } \r
+  }\r
+  \r
+  public void startSearchActivity() {\r
+    try {\r
+      Intent intent = new Intent("com.enqualcomm.icare.SEARCH");\r
+      intent.setFlags(FLAG_ACTIVITY_NEW_TASK);\r
+      this.context.startActivity(intent);\r
+      return;\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      return;\r
+    } \r
+  }\r
+}\r
+\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/DBHelper.java b/app/src/main/java/com/ic/protocol/utils/DBHelper.java
new file mode 100644 (file)
index 0000000..f4f4e62
--- /dev/null
@@ -0,0 +1,999 @@
+//\r
+// Source code recreated from a .class file by IntelliJ IDEA\r
+// (powered by Fernflower decompiler)\r
+//\r
+\r
+package com.ic.protocol.utils;\r
+\r
+import android.content.ContentProviderOperation;\r
+import android.content.ContentResolver;\r
+import android.content.ContentUris;\r
+import android.content.ContentValues;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.ContentProviderOperation.Builder;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.SystemClock;\r
+import android.provider.ContactsContract.Data;\r
+import android.provider.ContactsContract.RawContacts;\r
+import android.text.TextUtils;\r
+\r
+import com.ic.protocol.ICContentProvider;\r
+import com.ic.protocol.bean.Alarm;\r
+import com.ic.protocol.bean.Antioff;\r
+import com.ic.protocol.bean.Contact;\r
+import com.ic.protocol.bean.Content;\r
+import com.ic.protocol.bean.DeviceStatus;\r
+import com.ic.protocol.bean.NoticeContent;\r
+import com.ic.protocol.bean.NotificationParam;\r
+import com.ic.protocol.bean.Silent;\r
+import com.ic.protocol.bean.StheartRate;\r
+import com.ic.protocol.bean.Weather;\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.concurrent.TimeUnit;\r
+import rx.Observable;\r
+import rx.functions.Action1;\r
+\r
+public class DBHelper {\r
+  private static long lastUpdateTime;\r
+  private Context context;\r
+  private ContentResolver cr;\r
+\r
+  public DBHelper(ContentResolver var1, Context var2) {\r
+    this.cr = var1;\r
+    this.context = var2;\r
+  }\r
+\r
+  private void addAllContact(ArrayList<Contact> var1, ContentResolver var2) {\r
+    Iterator var7 = var1.iterator();\r
+\r
+    while(var7.hasNext()) {\r
+      Contact var5 = (Contact)var7.next();\r
+      ContentValues var6 = new ContentValues();\r
+      long var3 = ContentUris.parseId(var2.insert(RawContacts.CONTENT_URI, var6));\r
+      var6.clear();\r
+      var6.put("raw_contact_id", var3);\r
+      var6.put("mimetype", "vnd.android.cursor.item/name");\r
+      var6.put("data2", var5.name);\r
+      var2.insert(Data.CONTENT_URI, var6);\r
+      var6.clear();\r
+      var6.put("raw_contact_id", var3);\r
+      var6.put("mimetype", "vnd.android.cursor.item/phone_v2");\r
+      var6.put("data1", var5.number);\r
+      var6.put("data2", 2);\r
+      var2.insert(Data.CONTENT_URI, var6);\r
+      var6.clear();\r
+    }\r
+\r
+  }\r
+\r
+  private void deleteAllContact(ArrayList<Contact> var1, String var2, ContentResolver var3) {\r
+    StringBuilder var6 = new StringBuilder();\r
+    var6.append("where=");\r
+    var6.append(var2);\r
+    Logger.i(var6.toString());\r
+    Cursor var7 = var3.query(ICContentProvider.CONTACT_URI, (String[])null, var2, (String[])null, "CATEGORY ASC");\r
+    ArrayList var12 = new ArrayList();\r
+    if (var7 != null) {\r
+      while(true) {\r
+        if (!var7.moveToNext()) {\r
+          StringBuilder var8 = new StringBuilder();\r
+          var8.append("newList=");\r
+          var8.append(var12.toString());\r
+          Logger.i(var8.toString());\r
+          var7.close();\r
+          break;\r
+        }\r
+\r
+        var12.add(new Contact(var7.getInt(1), var7.getString(2), var7.getString(3), var7.getString(4), var7.getString(5)));\r
+      }\r
+    }\r
+\r
+    for(int var4 = 0; var4 < var1.size(); ++var4) {\r
+      String var14 = ((Contact)var1.get(var4)).number;\r
+\r
+      for(int var5 = 0; var5 < var12.size(); ++var5) {\r
+        if (!var14.equals(((Contact)var12.get(var5)).number) && !var14.equals(((Contact)var12.get(var5)).extra)) {\r
+          if (!TextUtils.isEmpty(((Contact)var12.get(var5)).icon_index)) {\r
+            File var17 = new File(((Contact)var12.get(var5)).icon_index);\r
+            if (var17.exists()) {\r
+              var17.delete();\r
+            }\r
+          }\r
+        } else {\r
+          String var16 = ((Contact)var12.get(var5)).icon_index;\r
+          if (!TextUtils.isEmpty(var16) && var16.length() > 10 && var16.contains("/")) {\r
+            ((Contact)var1.get(var4)).icon_index = ((Contact)var12.get(var5)).icon_index;\r
+          }\r
+        }\r
+      }\r
+    }\r
+\r
+    Iterator var11 = var12.iterator();\r
+\r
+    while(var11.hasNext()) {\r
+      String var13 = this.getContactId(var3, ((Contact)var11.next()).number);\r
+      ArrayList var15 = new ArrayList();\r
+      Builder var18 = ContentProviderOperation.newDelete(RawContacts.CONTENT_URI);\r
+      StringBuilder var9 = new StringBuilder();\r
+      var9.append("contact_id=");\r
+      var9.append(var13);\r
+      var15.add(var18.withSelection(var9.toString(), (String[])null).build());\r
+      var18 = ContentProviderOperation.newDelete(Data.CONTENT_URI);\r
+      var9 = new StringBuilder();\r
+      var9.append("contact_id=");\r
+      var9.append(var13);\r
+      var15.add(var18.withSelection(var9.toString(), (String[])null).build());\r
+\r
+      try {\r
+        var3.applyBatch("com.android.contacts", var15);\r
+      } catch (Exception var10) {\r
+        Logger.i(var10.getMessage());\r
+      }\r
+    }\r
+\r
+    var3.delete(ICContentProvider.CONTACT_URI, var2, (String[])null);\r
+  }\r
+\r
+  private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) {\r
+    ContentValues var5 = new ContentValues();\r
+    var5.put("IMSI", var1);\r
+    var5.put("TIME", var4);\r
+    var5.put("NUMBER", var2);\r
+    var5.put("TOTAL_NUMBER", var3);\r
+    return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5);\r
+  }\r
+\r
+  private void saveContactsImpl(ArrayList<Contact> var1, boolean var2, boolean var3, boolean var4, boolean var5, boolean var6) {\r
+    StringBuilder var9 = new StringBuilder();\r
+    var9.append("saveContactsImpl contactList = ");\r
+    var9.append(var1.toString());\r
+    Logger.i(var9.toString());\r
+    var9 = new StringBuilder("CATEGORY IN (");\r
+    if (var2) {\r
+      var9.append(1);\r
+      var9.append(",");\r
+    }\r
+\r
+    if (var3) {\r
+      var9.append(2);\r
+      var9.append(",");\r
+    }\r
+\r
+    if (var4) {\r
+      var9.append(3);\r
+      var9.append(",");\r
+    }\r
+\r
+    if (var5) {\r
+      var9.append(4);\r
+      var9.append(",");\r
+    }\r
+\r
+    if (var6) {\r
+      var9.append(5);\r
+      var9.append(",");\r
+    }\r
+\r
+    int var7 = var9.length();\r
+    if (var7 > 13) {\r
+      var9.setCharAt(var7 - 1, ')');\r
+      this.deleteAllContact(var1, var9.toString(), this.cr);\r
+      int var8 = var1.size();\r
+      if (var8 != 0) {\r
+        ContentValues[] var12 = new ContentValues[var8];\r
+\r
+        for(var7 = 0; var7 < var8; ++var7) {\r
+          Contact var10 = (Contact)var1.get(var7);\r
+          ContentValues var11 = new ContentValues();\r
+          var12[var7] = var11;\r
+          var11.put("CATEGORY", var10.category);\r
+          var11.put("NAME", var10.name);\r
+          var11.put("NUMBER", var10.number);\r
+          var11.put("ICON", var10.icon_index);\r
+          var11.put("EXTRA", var10.extra);\r
+          StringBuilder var13 = new StringBuilder();\r
+          var13.append("contact=");\r
+          var13.append(var10.toString());\r
+          Logger.i(var13.toString());\r
+        }\r
+\r
+        this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var12);\r
+        this.addAllContact(var1, this.cr);\r
+      }\r
+\r
+    }\r
+  }\r
+\r
+  private void upDateMonitorImpl(String var1, String var2) {\r
+    Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null);\r
+    ArrayList var4 = new ArrayList();\r
+    if (var5 != null) {\r
+      while(true) {\r
+        if (!var5.moveToNext()) {\r
+          var5.close();\r
+          break;\r
+        }\r
+\r
+        var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4)));\r
+      }\r
+    }\r
+\r
+    this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null);\r
+    if (var4.size() != 0) {\r
+      ContentValues[] var8 = new ContentValues[var4.size()];\r
+\r
+      for(int var3 = 0; var3 < var4.size(); ++var3) {\r
+        DeviceStatus var6 = (DeviceStatus)var4.get(var3);\r
+        ContentValues var7 = new ContentValues();\r
+        var8[var3] = var7;\r
+        var7.put("IS_SILENCE", var6.isSilence);\r
+        var7.put("START_MONITOR", var1);\r
+        var7.put("END_MONITOR", var2);\r
+        var7.put("IS_ALARM", var6.isAlarm);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8);\r
+    }\r
+\r
+  }\r
+\r
+  public void deleteMessage(Uri var1) {\r
+    this.cr.delete(var1, (String)null, (String[])null);\r
+  }\r
+\r
+  public String getContactId(ContentResolver param1, String param2) {\r
+    // $FF: Couldn't be decompiled\r
+\r
+    return "";\r
+  }\r
+\r
+  public boolean getWeather() {\r
+    Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[])null, (String)null, (String[])null, (String)null);\r
+    if (var5 != null && var5.moveToNext()) {\r
+      String var1 = var5.getString(1);\r
+      String var2 = var5.getString(2);\r
+      String var3 = var5.getString(3);\r
+      String var4 = var5.getString(4);\r
+      String var7 = var5.getString(5);\r
+      StringBuilder var6 = new StringBuilder();\r
+      var6.append("weather_type=");\r
+      var6.append(var1);\r
+      var6.append("min_temperature=");\r
+      var6.append(var2);\r
+      var6.append("max_temperature=");\r
+      var6.append(var3);\r
+      var6.append("cur_temperature=");\r
+      var6.append(var4);\r
+      var6.append("weather_index=");\r
+      var6.append(var7);\r
+      Logger.i(var6.toString());\r
+      return true;\r
+    } else {\r
+      return false;\r
+    }\r
+  }\r
+\r
+  public Uri insertMessage(Content var1) {\r
+    ContentValues var2 = new ContentValues();\r
+    var2.put("CATEGORY", var1.category);\r
+    var2.put("CONTENT", var1.content);\r
+    var2.put("PREVIEW", var1.preview);\r
+    var2.put("STATUS", var1.status);\r
+    var2.put("IN_OR_OUT", var1.inOrOut);\r
+    var2.put("CONTACT_CATEGORY", var1.contactCategory);\r
+    var2.put("CONTACT_NUMBER", var1.contactNumber);\r
+    var2.put("SERVER_TIME", var1.serverTime);\r
+    var2.put("LOCAL_TIME", var1.localTime);\r
+    var2.put("ICON", var1.icon);\r
+    return this.cr.insert(ICContentProvider.MESSAGE_URI, var2);\r
+  }\r
+\r
+  public Uri insertOrUpdate(Content var1) {\r
+    StringBuilder var4 = new StringBuilder("CATEGORY=");\r
+    var4.append(var1.category);\r
+    var4.append(" and CONTENT='");\r
+    var4.append(var1.content);\r
+    var4.append("' and CONTACT_NUMBER='");\r
+    var4.append(var1.contactNumber);\r
+    var4.append("' and CONTACT_CATEGORY=");\r
+    var4.append(var1.contactCategory);\r
+    String var7 = var4.toString();\r
+    Cursor var8 = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, var7, (String[])null, (String)null);\r
+    long var2;\r
+    if (var8 != null) {\r
+      if (var8.moveToNext()) {\r
+        var2 = var8.getLong(0);\r
+      } else {\r
+        var2 = -1L;\r
+      }\r
+\r
+      var8.close();\r
+    } else {\r
+      var2 = -1L;\r
+    }\r
+\r
+    if (var2 != -1L) {\r
+      Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, var2);\r
+      ContentValues var5 = new ContentValues();\r
+      var5.put("STATUS", var1.status);\r
+      var5.put("CONTENT", var1.content);\r
+      this.cr.update(var6, var5, (String)null, (String[])null);\r
+      return var6;\r
+    } else {\r
+      return this.insertMessage(var1);\r
+    }\r
+  }\r
+\r
+  public Uri insertOrUpdate(Content var1, long var2) {\r
+    label21: {\r
+      if (var2 > 0L) {\r
+        ContentResolver var4 = this.cr;\r
+        Uri var5 = ICContentProvider.MESSAGE_URI;\r
+        StringBuilder var6 = new StringBuilder();\r
+        var6.append("_id=");\r
+        var6.append(var2);\r
+        String var10 = var6.toString();\r
+        Cursor var7 = var4.query(var5, new String[]{"_id"}, var10, (String[])null, (String)null);\r
+        if (var7 != null) {\r
+          if (var7.moveToNext()) {\r
+            var2 = var7.getLong(0);\r
+          } else {\r
+            var2 = -1L;\r
+          }\r
+\r
+          var7.close();\r
+          break label21;\r
+        }\r
+      }\r
+\r
+      var2 = -1L;\r
+    }\r
+\r
+    if (var2 != -1L) {\r
+      Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, var2);\r
+      ContentValues var9 = new ContentValues();\r
+      var9.put("STATUS", var1.status);\r
+      this.cr.update(var8, var9, (String)null, (String[])null);\r
+      return var8;\r
+    } else {\r
+      return this.insertMessage(var1);\r
+    }\r
+  }\r
+\r
+  public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) {\r
+    StringBuilder var7 = new StringBuilder("IMSI=");\r
+    var7.append(var1);\r
+    String var9 = var7.toString();\r
+    Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[])null, (String)null);\r
+    long var5;\r
+    if (var10 != null) {\r
+      if (var10.moveToNext()) {\r
+        var5 = var10.getLong(0);\r
+      } else {\r
+        var5 = -1L;\r
+      }\r
+\r
+      var10.close();\r
+    } else {\r
+      var5 = -1L;\r
+    }\r
+\r
+    if (var5 != -1L) {\r
+      Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5);\r
+      ContentValues var8 = new ContentValues();\r
+      var8.put("IMSI", var1);\r
+      var8.put("TIME", var4);\r
+      var8.put("NUMBER", var2);\r
+      var8.put("TOTAL_NUMBER", var3);\r
+      this.cr.update(var11, var8, (String)null, (String[])null);\r
+      return var11;\r
+    } else {\r
+      Logger.i("插入");\r
+      return this.insertDownLoadInfo(var1, var2, var3, var4);\r
+    }\r
+  }\r
+\r
+  public void insertOrUpdateUnreadMsg(NotificationParam var1) {\r
+    StringBuilder var4 = new StringBuilder("id=");\r
+    var4.append(var1.id);\r
+    String var8 = var4.toString();\r
+    Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[])null, (String)null);\r
+    boolean var2 = false;\r
+    boolean var3 = false;\r
+    if (var9 != null) {\r
+      while(true) {\r
+        var2 = var3;\r
+        if (var9.moveToNext()) {\r
+          int var7 = var9.getInt(0);\r
+          if (var7 != var1.category) {\r
+            continue;\r
+          }\r
+\r
+          Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long)var7);\r
+          ContentValues var6 = new ContentValues();\r
+          var6.put("category", var1.category);\r
+          var6.put("id", var1.id);\r
+          var6.put("count", var1.noReadmsgCount);\r
+          var6.put("recvtime", var1.lastRevTime);\r
+          this.cr.update(var5, var6, (String)null, (String[])null);\r
+          var2 = true;\r
+        }\r
+\r
+        var9.close();\r
+        break;\r
+      }\r
+    }\r
+\r
+    if (!var2) {\r
+      ContentValues var10 = new ContentValues();\r
+      var10.put("category", var1.category);\r
+      var10.put("id", var1.id);\r
+      var10.put("count", var1.noReadmsgCount);\r
+      var10.put("recvtime", var1.lastRevTime);\r
+      this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10);\r
+    }\r
+\r
+  }\r
+\r
+  public void insertTest(ArrayList<Contact> var1) {\r
+    int var3 = var1.size();\r
+    if (var3 != 0) {\r
+      ContentValues[] var4 = new ContentValues[var3];\r
+\r
+      for(int var2 = 0; var2 < var3; ++var2) {\r
+        Contact var5 = (Contact)var1.get(var2);\r
+        ContentValues var6 = new ContentValues();\r
+        var4[var2] = var6;\r
+        var6.put("CATEGORY", var5.category);\r
+        var6.put("NAME", var5.name);\r
+        var6.put("NUMBER", var5.number);\r
+        var6.put("ICON", var5.icon_index);\r
+        var6.put("EXTRA", var5.extra);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4);\r
+    }\r
+\r
+  }\r
+\r
+  public ArrayList<Alarm> queryAlarm() {\r
+    ArrayList var1 = new ArrayList();\r
+    Cursor var2 = this.cr.query(ICContentProvider.ALARM_URI, (String[])null, (String)null, (String[])null, (String)null);\r
+    if (var2 != null) {\r
+      while(true) {\r
+        if (!var2.moveToNext()) {\r
+          var2.close();\r
+          break;\r
+        }\r
+\r
+        if ("ON".equals(var2.getString(4))) {\r
+          var1.add(new Alarm(var2.getString(1), var2.getString(2), var2.getString(3), var2.getString(4), var2.getString(5)));\r
+        }\r
+      }\r
+    }\r
+\r
+    return var1;\r
+  }\r
+\r
+  public ArrayList<Antioff> queryAntioff(boolean var1) {\r
+    ContentResolver var3 = this.cr;\r
+    Uri var4 = ICContentProvider.ANTIOFF_URI;\r
+    String var2;\r
+    if (var1) {\r
+      var2 = "STATUS='ON'";\r
+    } else {\r
+      var2 = null;\r
+    }\r
+\r
+    Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
+    ArrayList var6 = new ArrayList();\r
+    if (var5 != null) {\r
+      while(var5.moveToNext()) {\r
+        var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
+      }\r
+\r
+      var5.close();\r
+    }\r
+\r
+    return var6;\r
+  }\r
+\r
+  public Contact queryContactIconInfo(String var1) {\r
+    String var2 = var1;\r
+    Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[])null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC");\r
+    Contact var5 = null;\r
+    Contact var3 = null;\r
+    if (var4 != null) {\r
+      var5 = var3;\r
+      if (var4.moveToNext()) {\r
+        var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5));\r
+      }\r
+\r
+      var4.close();\r
+    }\r
+\r
+    var3 = var5;\r
+    if (var5 == null) {\r
+      String var7 = var2;\r
+      if (var2.contains("@")) {\r
+        var7 = var2.substring(2);\r
+      }\r
+\r
+      Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[])null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC");\r
+      var3 = var5;\r
+      if (var6 != null) {\r
+        if (var6.moveToNext()) {\r
+          var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5));\r
+        }\r
+\r
+        var4.close();\r
+        var3 = var5;\r
+      }\r
+    }\r
+\r
+    return var3;\r
+  }\r
+//\r
+//  public DownloadInfo queryDownloadNumber(String var1) {\r
+//    DownloadInfo var4 = new DownloadInfo(0, 0, "");\r
+//    StringBuilder var5 = new StringBuilder("IMSI=");\r
+//    var5.append(var1);\r
+//    var1 = var5.toString();\r
+//    Cursor var6 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, (String[])null, var1, (String[])null, (String)null);\r
+//    if (var6 != null) {\r
+//      if (var6.moveToNext()) {\r
+//        String var7 = var6.getString(2);\r
+//        int var2 = Integer.parseInt(var6.getString(3));\r
+//        int var3 = Integer.parseInt(var6.getString(4));\r
+//        var4.setNumber(var2);\r
+//        var4.setDownloadMonth(var7);\r
+//        var4.setTotalNumber(var3);\r
+//      }\r
+//\r
+//      var6.close();\r
+//    }\r
+//\r
+//    return var4;\r
+//  }\r
+\r
+  public ArrayList<NoticeContent> queryNotice(String var1) {\r
+    ArrayList var2 = new ArrayList();\r
+    ContentResolver var3 = this.cr;\r
+    Uri var4 = ICContentProvider.NOTICE_URL;\r
+    StringBuilder var5 = new StringBuilder();\r
+    var5.append("TIME like '");\r
+    var5.append(var1);\r
+    var5.append("%'");\r
+    Cursor var6 = var3.query(var4, (String[])null, var5.toString(), (String[])null, (String)null);\r
+    if (var6 != null) {\r
+      while(true) {\r
+        if (!var6.moveToNext()) {\r
+          var6.close();\r
+          break;\r
+        }\r
+\r
+        var2.add(new NoticeContent(var6.getString(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5), var6.getString(6), var6.getString(7)));\r
+      }\r
+    }\r
+\r
+    return var2;\r
+  }\r
+\r
+  public int queryPowerSaveMode() {\r
+    Uri var4 = Uri.parse("content://com.cmcm.service/cmsetting");\r
+    Cursor var6 = this.cr.query(var4, (String[])null, (String)null, (String[])null, (String)null);\r
+    byte var3 = 0;\r
+    byte var2 = 0;\r
+    int var1 = var3;\r
+    if (var6 != null) {\r
+      var1 = var3;\r
+      if (var6.moveToFirst()) {\r
+        while(true) {\r
+          if (var6.getString(var6.getColumnIndex("key")).equals("powersave")) {\r
+            var1 = var6.getInt(var6.getColumnIndex("value"));\r
+            StringBuilder var5 = new StringBuilder();\r
+            var5.append("powersave mode =");\r
+            var5.append(var1);\r
+            Logger.i(var5.toString());\r
+            break;\r
+          }\r
+\r
+          if (!var6.moveToNext()) {\r
+            var1 = var2;\r
+            break;\r
+          }\r
+        }\r
+\r
+        var6.close();\r
+      }\r
+    }\r
+\r
+    return var1;\r
+  }\r
+\r
+  public ArrayList<Silent> querySilence(boolean var1) {\r
+    ContentResolver var3 = this.cr;\r
+    Uri var4 = ICContentProvider.SILENT_URI;\r
+    String var2;\r
+    if (var1) {\r
+      var2 = "STATUS='ON'";\r
+    } else {\r
+      var2 = null;\r
+    }\r
+\r
+    Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
+    ArrayList var6 = new ArrayList();\r
+    if (var5 != null) {\r
+      while(var5.moveToNext()) {\r
+        var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
+      }\r
+\r
+      var5.close();\r
+    }\r
+\r
+    return var6;\r
+  }\r
+\r
+  public ArrayList<StheartRate> queryStheartRate(boolean var1) {\r
+    ContentResolver var3 = this.cr;\r
+    Uri var4 = ICContentProvider.STHEART_RATE_URL;\r
+    String var2;\r
+    if (var1) {\r
+      var2 = "STATUS='ON'";\r
+    } else {\r
+      var2 = null;\r
+    }\r
+\r
+    Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
+    ArrayList var6 = new ArrayList();\r
+    if (var5 != null) {\r
+      while(var5.moveToNext()) {\r
+        var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
+      }\r
+\r
+      var5.close();\r
+    }\r
+\r
+    return var6;\r
+  }\r
+\r
+  public NotificationParam queryUnreadMsg(String id, int value) {\r
+\r
+    Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[])null, (String)null);\r
+    NotificationParam ret = null;\r
+\r
+    if (cursor != null) {\r
+      while(true) {\r
+        if (cursor.moveToNext()) {\r
+          if (cursor.getInt(0) != value) {\r
+            continue;\r
+          }\r
+          ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3));\r
+        }\r
+\r
+        cursor.close();\r
+        break;\r
+      }\r
+    }\r
+\r
+    return ret;\r
+  }\r
+\r
+  public ArrayList<NotificationParam> queryUnreadMsg() {\r
+    ArrayList var1 = new ArrayList();\r
+    Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[])null, (String)null, (String[])null, (String)null);\r
+    if (var2 != null) {\r
+      while(true) {\r
+        if (!var2.moveToNext()) {\r
+          var2.close();\r
+          break;\r
+        }\r
+\r
+        var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3))));\r
+      }\r
+    }\r
+\r
+    return var1;\r
+  }\r
+\r
+  public void resetDatabase() {\r
+    this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.CONTACT_URI, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.MESSAGE_URI, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null);\r
+    this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String)null, (String[])null);\r
+  }\r
+\r
+  public void saveAlarm(ArrayList<Alarm> var1) {\r
+    this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null);\r
+    int var3 = var1.size();\r
+    if (var3 != 0) {\r
+      ContentValues[] var4 = new ContentValues[var3];\r
+\r
+      for(int var2 = 0; var2 < var3; ++var2) {\r
+        Alarm var5 = (Alarm)var1.get(var2);\r
+        ContentValues var6 = new ContentValues();\r
+        var4[var2] = var6;\r
+        var6.put("TIME", var5.time);\r
+        var6.put("WEEK", var5.week);\r
+        var6.put("RING", var5.ring);\r
+        var6.put("STATUS", var5.status);\r
+        var6.put("NAME", var5.name);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.ALARM_URI, var4);\r
+    }\r
+\r
+    this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE"));\r
+  }\r
+\r
+  public void saveAntioff(ArrayList<Antioff> var1) {\r
+    Cursor var5 = this.cr.query(ICContentProvider.ANTIOFF_URI, (String[])null, (String)null, (String[])null, (String)null);\r
+    String var4;\r
+    if (var5 != null) {\r
+      for(var4 = null; var5.moveToNext(); var4 = var5.getString(5)) {\r
+      }\r
+\r
+      var5.close();\r
+    } else {\r
+      var4 = null;\r
+    }\r
+\r
+    this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null);\r
+    int var3 = var1.size();\r
+    if (var3 != 0) {\r
+      ContentValues[] var8 = new ContentValues[var3];\r
+\r
+      for(int var2 = 0; var2 < var3; ++var2) {\r
+        Antioff var6 = (Antioff)var1.get(var2);\r
+        ContentValues var7 = new ContentValues();\r
+        var8[var2] = var7;\r
+        var7.put("START_TIME", var6.start);\r
+        var7.put("END_TIME", var6.end);\r
+        var7.put("WEEK", var6.week);\r
+        var7.put("STATUS", var6.status);\r
+        var7.put("CUR_SYS_STATUS", var4);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, var8);\r
+    }\r
+\r
+    this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"));\r
+  }\r
+\r
+  public void saveContacts(final ArrayList<Contact> var1, final boolean var2, final boolean var3, final boolean var4, final boolean var5, final boolean var6) {\r
+    synchronized(this){}\r
+\r
+    try {\r
+      long var7 = SystemClock.elapsedRealtime();\r
+      if (var7 - lastUpdateTime > 1000L) {\r
+        this.saveContactsImpl(var1, var2, var3, var4, var5, var6);\r
+        lastUpdateTime = var7;\r
+      } else {\r
+        Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+          public void call(Long var1x) {\r
+            DBHelper.this.saveContacts(var1, var2, var3, var4, var5, var6);\r
+          }\r
+        });\r
+      }\r
+    } finally {\r
+      ;\r
+    }\r
+\r
+  }\r
+\r
+  public void saveNoticeContent(ArrayList<NoticeContent> var1) {\r
+    this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null);\r
+    if (var1 != null) {\r
+      int var3 = var1.size();\r
+      if (var3 != 0) {\r
+        ContentValues[] var4 = new ContentValues[var3];\r
+\r
+        for(int var2 = 0; var2 < var3; ++var2) {\r
+          NoticeContent var5 = (NoticeContent)var1.get(var2);\r
+          ContentValues var6 = new ContentValues();\r
+          var4[var2] = var6;\r
+          var6.put("TIME", var5.noticeTime);\r
+          var6.put("NAME", var5.noticeName);\r
+          var6.put("NUMBER", var5.noticeNumber);\r
+          var6.put("ID", var5.noticeID);\r
+          var6.put("CATEGORY", var5.noticeCategory);\r
+          var6.put("FREQUENCY", var5.noticeFrequency);\r
+          var6.put("CONTENT", var5.noticeContent);\r
+        }\r
+\r
+        this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4);\r
+      }\r
+    }\r
+\r
+    this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"));\r
+  }\r
+\r
+  public void saveSilent(ArrayList<Silent> var1) {\r
+    Cursor var5 = this.cr.query(ICContentProvider.SILENT_URI, (String[])null, (String)null, (String[])null, (String)null);\r
+    String var4;\r
+    if (var5 != null) {\r
+      for(var4 = null; var5.moveToNext(); var4 = var5.getString(5)) {\r
+      }\r
+\r
+      var5.close();\r
+    } else {\r
+      var4 = null;\r
+    }\r
+\r
+    this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null);\r
+    int var3 = var1.size();\r
+    if (var3 != 0) {\r
+      ContentValues[] var8 = new ContentValues[var3];\r
+\r
+      for(int var2 = 0; var2 < var3; ++var2) {\r
+        Silent var6 = (Silent)var1.get(var2);\r
+        ContentValues var7 = new ContentValues();\r
+        var8[var2] = var7;\r
+        var7.put("START_TIME", var6.start);\r
+        var7.put("END_TIME", var6.end);\r
+        var7.put("WEEK", var6.week);\r
+        var7.put("STATUS", var6.status);\r
+        var7.put("CUR_SYS_STATUS", var4);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.SILENT_URI, var8);\r
+    }\r
+\r
+  }\r
+\r
+  public void saveStheartRateList(ArrayList<StheartRate> var1) {\r
+    StringBuilder var4 = new StringBuilder();\r
+    var4.append("stheartRateListSize=");\r
+    var4.append(var1.size());\r
+    var4.append("stheartRateList=");\r
+    var4.append(var1.toString());\r
+    Logger.i(var4.toString());\r
+    this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null);\r
+    int var3 = var1.size();\r
+    if (var3 != 0) {\r
+      ContentValues[] var7 = new ContentValues[var3];\r
+\r
+      for(int var2 = 0; var2 < var3; ++var2) {\r
+        StheartRate var5 = (StheartRate)var1.get(var2);\r
+        ContentValues var6 = new ContentValues();\r
+        var7[var2] = var6;\r
+        var6.put("START_TIME", var5.start);\r
+        var6.put("END_TIME", var5.end);\r
+        var6.put("WEEK", var5.week);\r
+        var6.put("STATUS", var5.status);\r
+        var6.put("INTERVAL", var5.interval);\r
+      }\r
+\r
+      this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7);\r
+    }\r
+\r
+    this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"));\r
+  }\r
+\r
+  public void saveUrlDownloadPic(String var1) {\r
+    String[] var8 = var1.split(",");\r
+\r
+    for(int var2 = 0; var2 < var8.length; ++var2) {\r
+      ContentResolver var5 = this.cr;\r
+      Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL;\r
+      String var7 = var8[var2];\r
+      Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String)null);\r
+      long var3;\r
+      if (var9 != null) {\r
+        if (var9.moveToNext()) {\r
+          var3 = var9.getLong(0);\r
+        } else {\r
+          var3 = -1L;\r
+        }\r
+\r
+        var9.close();\r
+      } else {\r
+        var3 = -1L;\r
+      }\r
+\r
+      if (var3 == -1L) {\r
+        ContentValues var10 = new ContentValues();\r
+        var10.put("URL", var8[var2]);\r
+        this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10);\r
+      }\r
+    }\r
+\r
+  }\r
+\r
+  public void saveWeather(Weather var1) {\r
+    this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null);\r
+    ContentValues var2 = new ContentValues();\r
+    var2.put("WEATHER_TYPE", var1.weatherType);\r
+    var2.put("MIN_TEMPERATURE", var1.min_Temperature);\r
+    var2.put("MAX_TEMPERATURE", var1.max_Temperature);\r
+    var2.put("CUR_TEMPERATURE", var1.cur_Temperature);\r
+    var2.put("WEATHER_INDEX", var1.weatherIndex);\r
+    var2.put("WEATHER_INFO", var1.weatherInfo);\r
+    Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2);\r
+    StringBuilder var3 = new StringBuilder();\r
+    var3.append("升级天气==");\r
+    var3.append(var1.toString());\r
+    var3.append("条目=");\r
+    var3.append(var4);\r
+    Logger.i(var3.toString());\r
+  }\r
+\r
+  public void upDateMonitor(final String var1, final String var2) {\r
+    synchronized(this){}\r
+\r
+    try {\r
+      long var3 = SystemClock.elapsedRealtime();\r
+      if (var3 - lastUpdateTime > 1000L) {\r
+        this.upDateMonitorImpl(var1, var2);\r
+        lastUpdateTime = var3;\r
+      } else {\r
+        Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+          public void call(Long var1x) {\r
+            DBHelper.this.upDateMonitor(var1, var2);\r
+          }\r
+        });\r
+      }\r
+    } finally {\r
+      ;\r
+    }\r
+\r
+  }\r
+\r
+  public void upDateStatus(int var1) {\r
+    ContentValues var2 = new ContentValues();\r
+    var2.put("IS_ALARM", var1);\r
+    this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null);\r
+  }\r
+\r
+  public void upDateStatus(String var1) {\r
+    ContentValues var2 = new ContentValues();\r
+    var2.put("IS_SILENCE", var1);\r
+    this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null);\r
+  }\r
+\r
+  public void upDateorInsertDeviceStatus(String var1) {\r
+    Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null);\r
+    ContentValues var3 = new ContentValues();\r
+    var3.put("IS_SILENCE", var1);\r
+    if (var2 != null) {\r
+      if (var2.getCount() == 0) {\r
+        this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3);\r
+        return;\r
+      }\r
+\r
+      this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String)null, (String[])null);\r
+    }\r
+\r
+  }\r
+\r
+  public void updateIcon2SystemContact() {\r
+  }\r
+\r
+  public void updateMessage(Content var1, Uri var2) {\r
+    ContentValues var3 = new ContentValues();\r
+    var3.put("CATEGORY", var1.category);\r
+    var3.put("CONTENT", var1.content);\r
+    var3.put("PREVIEW", var1.preview);\r
+    var3.put("STATUS", var1.status);\r
+    var3.put("IN_OR_OUT", var1.inOrOut);\r
+    var3.put("CONTACT_CATEGORY", var1.contactCategory);\r
+    var3.put("CONTACT_NUMBER", var1.contactNumber);\r
+    var3.put("SERVER_TIME", var1.serverTime);\r
+    var3.put("LOCAL_TIME", var1.localTime);\r
+    this.cr.update(var2, var3, (String)null, (String[])null);\r
+  }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java b/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java
new file mode 100644 (file)
index 0000000..b5261ce
--- /dev/null
@@ -0,0 +1,176 @@
+package com.ic.protocol.utils;\r
+\r
+import android.app.ActivityManager;\r
+import android.content.Context;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.Build;\r
+import android.provider.Settings;\r
+import android.telephony.TelephonyManager;\r
+\r
+import com.ic.protocol.bean.StepCount;\r
+\r
+import java.io.FileInputStream;\r
+import java.util.ArrayList;\r
+\r
+public class DeviceInfoUtil {\r
+  private static final int CID_LENGTH = 16;\r
+  \r
+  public static boolean getCmcmTestServer() {\r
+//    byte b2 = 0;\r
+//    int i = 0;\r
+//    byte b1 = i;\r
+//    try {\r
+//      String str = SystemProperties.get("cmcm.channel.testsv", "");\r
+//      b1 = i;\r
+//      StringBuilder stringBuilder = new StringBuilder();\r
+//      b1 = i;\r
+//      stringBuilder.append("cmcm.channel.testsv = ");\r
+//      b1 = i;\r
+//      stringBuilder.append(str);\r
+//      b1 = i;\r
+//      Logger.i(stringBuilder.toString());\r
+//      b1 = i;\r
+//      i = b2;\r
+//      if (str.equals("1")) {\r
+//        i = 1;\r
+//        b1 = i;\r
+//        StringBuilder stringBuilder1 = new StringBuilder();\r
+//        b1 = i;\r
+//        stringBuilder1.append("---testsv=");\r
+//        b1 = i;\r
+//        stringBuilder1.append(true);\r
+//        b1 = i;\r
+//        Logger.i(stringBuilder1.toString());\r
+//        return true;\r
+//      }\r
+//    } catch (Exception exception) {\r
+//      exception.printStackTrace();\r
+//      i = b1;\r
+//    }\r
+    return false;\r
+  }\r
+  \r
+  public static String getCurStatus(Context paramContext) {\r
+    String str1;\r
+    try {\r
+      str1 = Settings.System.getString(paramContext.getContentResolver(), "eqc_position");\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      str1 = "1";\r
+    }\r
+    String str2 = str1;\r
+    if (str1 == null)\r
+      str2 = "0"; \r
+    return str2;\r
+  }\r
+  \r
+  public static int getCustomId() {\r
+    int i = -1;\r
+//    try {\r
+//      exception = SystemProperties.get("ro.custom.id", "");\r
+//      StringBuilder stringBuilder = new StringBuilder();\r
+//      stringBuilder.append("ro.custom.id = ");\r
+//      stringBuilder.append(exception);\r
+//      Logger.i(stringBuilder.toString());\r
+//      int j = i;\r
+//      if (exception != null) {\r
+//        j = Integer.valueOf(exception).intValue();\r
+//        try {\r
+//          StringBuilder stringBuilder1 = new StringBuilder();\r
+//          stringBuilder1.append("---id=");\r
+//          stringBuilder1.append(j);\r
+//          Logger.i(stringBuilder1.toString());\r
+//          return j;\r
+//        } catch (Exception null) {\r
+//          i = j;\r
+//        }\r
+//      } else {\r
+//        return j;\r
+//      }\r
+//    } catch (Exception exception) {}\r
+//    exception.printStackTrace();\r
+    return i;\r
+  }\r
+  \r
+  public static String getIMEI(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); }\r
+  \r
+  public static String getIMSI(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getSubscriberId(); }\r
+  \r
+  public static boolean getLockSimInfo(Context paramContext) {\r
+//    int j = 0;\r
+//    int i = 0;\r
+//    try {\r
+//      if (Settings.System.getInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked") != 0)\r
+//        i = 1;\r
+//      j = i;\r
+//      StringBuilder stringBuilder = new StringBuilder();\r
+//      j = i;\r
+//      stringBuilder.append("simIsBlocked:");\r
+//      j = i;\r
+//      stringBuilder.append(i);\r
+//      j = i;\r
+//      Logger.i(stringBuilder.toString());\r
+//      return i;\r
+//    } catch (Settings.SettingNotFoundException paramContext) {\r
+//      paramContext.printStackTrace();\r
+//      return j;\r
+//    }\r
+    return false;\r
+  }\r
+  \r
+  public static String getNumber(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number(); }\r
+  \r
+  public static String getSN() {\r
+    try {\r
+      Class clazz = Class.forName("android.os.SystemProperties");\r
+      String str = (String)clazz.getMethod("get", new Class[] { String.class }).invoke(clazz, new Object[] { "ro.product.partitionpath" });\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append(str);\r
+      stringBuilder.append("miscdata");\r
+      FileInputStream fileInputStream = new FileInputStream(stringBuilder.toString());\r
+      byte[] arrayOfByte = new byte[128];\r
+      fileInputStream.read(arrayOfByte);\r
+      fileInputStream.close();\r
+      return new String(arrayOfByte, 28, 16);\r
+    } catch (Exception exception) {\r
+      exception.printStackTrace();\r
+      return null;\r
+    } \r
+  }\r
+  \r
+  public static int getStepCount(Context paramContext) {\r
+    Uri uri = Uri.parse("content://com.eqc.db.watchProvider/step/queryLast");\r
+    ArrayList arrayList = new ArrayList();\r
+    Cursor cursor = paramContext.getContentResolver().query(uri, new String[] { "number", "date" }, null, null, null);\r
+    if (cursor != null && cursor.getCount() > 0) {\r
+      while (cursor.moveToNext())\r
+        arrayList.add(new StepCount(cursor.getInt(0), cursor.getString(1)));\r
+      cursor.close();\r
+    } \r
+    return (arrayList.size() > 0) ? ((StepCount)arrayList.get(0)).getStepCount() : 0;\r
+  }\r
+  \r
+  public static int getStepCount_Custom(Context context) {\r
+    try {\r
+      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {\r
+        return Settings.Global.getInt(context.getContentResolver(), "Steps", 0);\r
+      }\r
+      return 0;\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      return 0;\r
+    } \r
+  }\r
+  \r
+  public static String getSystemVersion() { return Build.VERSION.RELEASE; }\r
+  \r
+  public static boolean isTopActivity(Context paramContext) {\r
+    ArrayList arrayList = new ArrayList();\r
+    arrayList.add("com.enqualcomm.imessage.ui.chat_huohuotu.ChatHuoHuoTuActivity_");\r
+    arrayList.add("com.enqualcomm.imessage.ui.chat.ChatActivity_");\r
+    return arrayList.contains(((ActivityManager.RunningTaskInfo)((ActivityManager)paramContext.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1).get(0)).topActivity.getClassName());\r
+  }\r
+  \r
+  public static void setLockSimInfo(Context paramContext) { Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/utils/FileCache.java b/app/src/main/java/com/ic/protocol/utils/FileCache.java
new file mode 100644 (file)
index 0000000..5f47fd2
--- /dev/null
@@ -0,0 +1,102 @@
+package com.ic.protocol.utils;\r
+\r
+import java.io.File;\r
+import java.util.concurrent.locks.ReentrantLock;\r
+\r
+import okio.BufferedSink;\r
+import okio.BufferedSource;\r
+import okio.Okio;\r
+\r
+public class FileCache {\r
+  private File file;\r
+  \r
+  private File indexFile;\r
+  \r
+  private ReentrantLock lock = new ReentrantLock();\r
+  \r
+  private long skipByteCount;\r
+  \r
+  public FileCache(File paramFile) {\r
+    this.file = new File(paramFile, "location");\r
+    this.indexFile = new File(paramFile, "index");\r
+    if (this.indexFile.exists())\r
+      try {\r
+        BufferedSource bufferedSource = Okio.buffer(Okio.source(this.indexFile));\r
+        this.skipByteCount = bufferedSource.readLong();\r
+        bufferedSource.close();\r
+        return;\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+      }  \r
+  }\r
+  \r
+  public FileCache(File paramFile, String paramString) {\r
+    this.file = new File(paramFile, paramString);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(paramString);\r
+    stringBuilder.append("Index");\r
+    this.indexFile = new File(paramFile, stringBuilder.toString());\r
+    if (this.indexFile.exists())\r
+      try {\r
+        BufferedSource bufferedSource = Okio.buffer(Okio.source(this.indexFile));\r
+        this.skipByteCount = bufferedSource.readLong();\r
+        bufferedSource.close();\r
+        return;\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+      }  \r
+  }\r
+  \r
+  public void clear() {\r
+    this.lock.lock();\r
+    try {\r
+      this.file.delete();\r
+      this.indexFile.delete();\r
+      this.skipByteCount = 0L;\r
+    } catch (Exception exception) {\r
+      exception.printStackTrace();\r
+    } finally {\r
+      String str;\r
+    } \r
+    this.lock.unlock();\r
+  }\r
+  \r
+  public String load() {\r
+    if (this.file.exists()) {\r
+      this.lock.lock();\r
+      try {\r
+        BufferedSource bufferedSource = Okio.buffer(Okio.source(this.file));\r
+        bufferedSource.skip(this.skipByteCount);\r
+        String str = bufferedSource.readUtf8Line();\r
+        bufferedSource.close();\r
+        if (str != null) {\r
+          this.skipByteCount = this.skipByteCount + str.getBytes().length + 1L;\r
+          Okio.buffer(Okio.sink(this.indexFile)).writeLong(this.skipByteCount).close();\r
+        } \r
+        this.lock.unlock();\r
+        return str;\r
+      } catch (Exception exception) {\r
+        exception.printStackTrace();\r
+        this.lock.unlock();\r
+      } finally {\r
+        String str;\r
+      } \r
+    } \r
+    return null;\r
+  }\r
+  \r
+  public void put(String paramString) {\r
+    this.lock.lock();\r
+    try {\r
+      BufferedSink bufferedSink = Okio.buffer(Okio.appendingSink(this.file));\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append(paramString);\r
+      stringBuilder.append("\n");\r
+      bufferedSink.writeUtf8(stringBuilder.toString()).close();\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+    } finally {}\r
+    this.lock.unlock();\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/FileOutputUtil.java b/app/src/main/java/com/ic/protocol/utils/FileOutputUtil.java
new file mode 100644 (file)
index 0000000..052302c
--- /dev/null
@@ -0,0 +1,116 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.Context;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.FileOutputStream;\r
+import java.io.PrintStream;\r
+\r
+public class FileOutputUtil {\r
+  public static void copyFolder(String dirsrc, String dirdst) {\r
+    try {\r
+      (new File(dirdst)).mkdirs();\r
+      String[] arrayOfString = (new File(dirsrc)).list();\r
+      for (byte b = 0; b < arrayOfString.length; b++) {\r
+        File file;\r
+        if (dirsrc.endsWith(File.separator)) {\r
+          StringBuilder stringBuilder = new StringBuilder();\r
+          stringBuilder.append(dirsrc);\r
+          stringBuilder.append(arrayOfString[b]);\r
+          file = new File(stringBuilder.toString());\r
+        } else {\r
+          StringBuilder stringBuilder = new StringBuilder();\r
+          stringBuilder.append(dirsrc);\r
+          stringBuilder.append(File.separator);\r
+          stringBuilder.append(arrayOfString[b]);\r
+          file = new File(stringBuilder.toString());\r
+        } \r
+        if (file.isFile()) {\r
+          FileInputStream fileInputStream = new FileInputStream(file);\r
+          StringBuilder stringBuilder = new StringBuilder();\r
+          stringBuilder.append(dirdst);\r
+          stringBuilder.append("/");\r
+          stringBuilder.append(file.getName().toString());\r
+          FileOutputStream fileOutputStream = new FileOutputStream(stringBuilder.toString());\r
+          byte[] arrayOfByte = new byte[5120];\r
+          while (true) {\r
+            int i = fileInputStream.read(arrayOfByte);\r
+            if (i != -1) {\r
+              fileOutputStream.write(arrayOfByte, 0, i);\r
+              continue;\r
+            } \r
+            break;\r
+          } \r
+          fileOutputStream.flush();\r
+          fileOutputStream.close();\r
+          fileInputStream.close();\r
+        } \r
+        if (file.isDirectory()) {\r
+          StringBuilder stringBuilder1 = new StringBuilder();\r
+          stringBuilder1.append(dirsrc);\r
+          stringBuilder1.append("/");\r
+          stringBuilder1.append(arrayOfString[b]);\r
+          String str = stringBuilder1.toString();\r
+          StringBuilder stringBuilder2 = new StringBuilder();\r
+          stringBuilder2.append(dirdst);\r
+          stringBuilder2.append("/");\r
+          stringBuilder2.append(arrayOfString[b]);\r
+          copyFolder(str, stringBuilder2.toString());\r
+        } \r
+      } \r
+    } catch (Exception e) {\r
+      System.out.println("复制整个文件夹内容操作出错");\r
+      e.printStackTrace();\r
+    } \r
+  }\r
+  \r
+  public static void deleteDir(Context paramContext) { deleteDirWihtFile(new File(String.valueOf(paramContext.getExternalCacheDir()))); }\r
+  \r
+  private static void deleteDirWihtFile(File paramFile) {\r
+    if (paramFile != null)\r
+      try {\r
+        if (paramFile.exists()) {\r
+          if (!paramFile.isDirectory())\r
+            return; \r
+          for (File file : paramFile.listFiles()) {\r
+            if (file.isFile()) {\r
+              file.delete();\r
+            } else if (file.isDirectory()) {\r
+              deleteDirWihtFile(file);\r
+            } \r
+          } \r
+          return;\r
+        } \r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+        return;\r
+      }  \r
+  }\r
+  \r
+  public static void fileOutput(Context paramContext, String filename, String msg) {\r
+    String str = TimeUtil.getSystemTime();\r
+    File dir = paramContext.getExternalCacheDir();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(filename);\r
+    stringBuilder.append(".txt");\r
+    File file = new File(dir, stringBuilder.toString());\r
+    try {\r
+      PrintStream printStream = new PrintStream(new FileOutputStream(file, true));\r
+      StringBuilder stringBuilder1 = new StringBuilder();\r
+      stringBuilder1.append("响应时间==");\r
+      stringBuilder1.append(str);\r
+      stringBuilder1.append("    文件内容==");\r
+      stringBuilder1.append(msg);\r
+      printStream.println(stringBuilder1.toString());\r
+      printStream.close();\r
+\r
+    } catch (FileNotFoundException e) {\r
+      e.printStackTrace();\r
+\r
+    }\r
+\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/ICLog.java b/app/src/main/java/com/ic/protocol/utils/ICLog.java
deleted file mode 100644 (file)
index 551558c..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ic.protocol.utils;\r
-\r
-import android.util.Log;\r
-\r
-public class ICLog {\r
-    private static final boolean DEBUG = true; //BuildConfig.DEBUG;\r
-    private static String getFunctionName() {\r
-        StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();\r
-        if (currentStack == null) {\r
-            return null;\r
-        } else {\r
-            int stackLen = currentStack.length;\r
-\r
-            for(int i = 0; i < stackLen; ++i) {\r
-                StackTraceElement stackElement = currentStack[i];\r
-                if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLog.class.getName())) {\r
-                    StringBuilder sb = new StringBuilder();\r
-                    sb.append("[ ");\r
-                    sb.append(Thread.currentThread().getName());\r
-                    sb.append(": ");\r
-                    sb.append(stackElement.getFileName());\r
-                    sb.append(":");\r
-                    sb.append(stackElement.getLineNumber());\r
-                    sb.append(" ");\r
-                    sb.append(stackElement.getMethodName());\r
-                    sb.append(" ]");\r
-                    return sb.toString();\r
-                }\r
-            }\r
-\r
-            return null;\r
-        }\r
-    }\r
-\r
-    public static void i(Object var0) {\r
-        if (DEBUG) {\r
-            String var1 = getFunctionName();\r
-            if (var1 != null) {\r
-                StringBuilder sb = new StringBuilder();\r
-                sb.append(var1);\r
-                sb.append(" - ");\r
-                sb.append(var0.toString());\r
-                log("WatchService", sb.toString());\r
-                return;\r
-            }\r
-\r
-            log("WatchService", var0.toString());\r
-        }\r
-\r
-    }\r
-    public static  void log(String TAG, String msg) {\r
-        if (DEBUG) {\r
-            Log.i(TAG, msg);\r
-\r
-        }\r
-\r
-\r
-    }\r
-\r
-    public static void log(String TAG,String funcName, String msg) {\r
-        if (DEBUG) {\r
-            Log.i(TAG, "[" + funcName + "]" + msg);\r
-        }\r
-    }\r
-}\r
diff --git a/app/src/main/java/com/ic/protocol/utils/Logger.java b/app/src/main/java/com/ic/protocol/utils/Logger.java
new file mode 100644 (file)
index 0000000..f8a974f
--- /dev/null
@@ -0,0 +1,66 @@
+package com.ic.protocol.utils;\r
+\r
+import android.util.Log;\r
+\r
+public class Logger {\r
+  private static final boolean DEBUG = true;   //BuildConfig.DEBUG;\r
+  private static String getFunctionName() {\r
+    StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();\r
+    if (currentStack == null) {\r
+      return null;\r
+    } else {\r
+      int stackLen = currentStack.length;\r
+\r
+      for(int i = 0; i < stackLen; ++i) {\r
+        StackTraceElement stackElement = currentStack[i];\r
+        if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(Logger.class.getName())) {\r
+          StringBuilder sb = new StringBuilder();\r
+          sb.append("[ ");\r
+          sb.append(Thread.currentThread().getName());\r
+          sb.append(": ");\r
+          sb.append(stackElement.getFileName());\r
+          sb.append(":");\r
+          sb.append(stackElement.getLineNumber());\r
+          sb.append(" ");\r
+          sb.append(stackElement.getMethodName());\r
+          sb.append(" ]");\r
+          return sb.toString();\r
+        }\r
+      }\r
+\r
+      return null;\r
+    }\r
+  }\r
+\r
+  public static void i(Object var0) {\r
+    if (DEBUG) {\r
+      String var1 = getFunctionName();\r
+      if (var1 != null) {\r
+        StringBuilder sb = new StringBuilder();\r
+        sb.append(var1);\r
+        sb.append(" - ");\r
+        sb.append(var0.toString());\r
+        log("WatchService", sb.toString());\r
+        return;\r
+      }\r
+\r
+      log("WatchService", var0.toString());\r
+    }\r
+\r
+  }\r
+  public static  void log(String TAG, String msg) {\r
+    if (DEBUG) {\r
+      Log.i(TAG, msg);\r
+\r
+    }\r
+\r
+\r
+  }\r
+\r
+  public static void log(String TAG,String funcName, String msg) {\r
+    if (DEBUG) {\r
+      Log.i(TAG, "[" + funcName + "]" + msg);\r
+    }\r
+  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/NettyConnection.java b/app/src/main/java/com/ic/protocol/utils/NettyConnection.java
new file mode 100644 (file)
index 0000000..54c7970
--- /dev/null
@@ -0,0 +1,72 @@
+package com.ic.protocol.utils;\r
+\r
+import android.os.SystemClock;\r
+\r
+\r
+import com.ic.protocol.bean.StringMessage;\r
+\r
+import java.net.InetSocketAddress;\r
+import java.util.concurrent.ExecutorService;\r
+import java.util.concurrent.Executors;\r
+\r
+\r
+public class NettyConnection implements Connection {\r
+  private static long realtime_old;\r
+  \r
+  ExecutorService executorService = Executors.newSingleThreadExecutor();\r
+  \r
+  private final ConnectionListener listener;\r
+  \r
+  private int timeout = 60;\r
+  \r
+  public NettyConnection(ConnectionListener paramConnectionListener) { this.listener = paramConnectionListener; }\r
+  \r
+  private void connectImpl(String paramString, int paramInt) {\r
+\r
+\r
+  }\r
+  \r
+  public void close() {\r
+\r
+\r
+  }\r
+  \r
+  public void connect(final String host, final int port) {\r
+    long l = SystemClock.elapsedRealtime();\r
+    if (l - realtime_old < 3000L)\r
+      return; \r
+    realtime_old = l;\r
+    Logger.i("connect1");\r
+    disconnect();\r
+    this.executorService.execute(new Runnable() {\r
+          public void run() {\r
+            NettyConnection.this.connectImpl(host, port);\r
+            Logger.i("connect2");\r
+          }\r
+        });\r
+  }\r
+  \r
+  public void disconnect() {\r
+\r
+\r
+  }\r
+  \r
+  public int getTimeout() { return this.timeout; }\r
+  \r
+  public void open() {\r
+\r
+  }\r
+  \r
+  public void send(StringMessage paramStringMessage) {\r
+\r
+\r
+  }\r
+  \r
+  public boolean sendBlocking(StringMessage paramStringMessage) {\r
+\r
+    return true;\r
+    }\r
+  \r
+  public void setTimeout(int paramInt) { this.timeout = paramInt; }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java b/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java
new file mode 100644 (file)
index 0000000..da58d0e
--- /dev/null
@@ -0,0 +1,67 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.net.ConnectivityManager;\r
+import android.net.NetworkInfo;\r
+\r
+\r
+import com.ic.protocol.service.KeepAlive;\r
+\r
+import rx.Observable;\r
+import rx.subjects.BehaviorSubject;\r
+\r
+public class NetworkObservable {\r
+  BroadcastReceiver mNetStateBroadcastReceiver = new BroadcastReceiver() {\r
+      public void onReceive(Context param1Context, Intent param1Intent) {\r
+        NetworkInfo networkInfo = ((ConnectivityManager)param1Context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();\r
+        if (networkInfo != null && networkInfo.isAvailable()) {\r
+          StringBuilder stringBuilder = new StringBuilder();\r
+          stringBuilder.append("BroadcastReceiver---reConnection++  KeepAlive.isConnected=");\r
+          stringBuilder.append(KeepAlive.isConnected);\r
+          stringBuilder.append(",network_is_down=");\r
+          stringBuilder.append(NetworkObservable.this.network_is_down);\r
+          stringBuilder.append(",network_is_from_no_to_yes=");\r
+          stringBuilder.append(NetworkObservable.this.network_is_from_no_to_yes);\r
+          Logger.i(stringBuilder.toString());\r
+          if (!KeepAlive.isConnected && !NetworkObservable.this.network_is_from_no_to_yes) {\r
+            if (NetworkObservable.this.network_is_down) {\r
+              NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(3));\r
+//              NetworkObservable.access$002(NetworkObservable.this, false);\r
+            } else {\r
+              NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(2));\r
+//              NetworkObservable.access$002(NetworkObservable.this, true);\r
+            } \r
+          } else if (NetworkObservable.this.network_is_from_no_to_yes) {\r
+            NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(1));\r
+          } else if (KeepAlive.isConnected) {\r
+//            NetworkObservable.access$002(NetworkObservable.this, false);\r
+          } \r
+//          NetworkObservable.access$102(NetworkObservable.this, false);\r
+          return;\r
+        } \r
+        Logger.i("网络断开");\r
+//        NetworkObservable.access$102(NetworkObservable.this, true);\r
+        NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(0));\r
+      }\r
+    };\r
+  \r
+  private boolean network_is_down = false;\r
+  \r
+  private boolean network_is_from_no_to_yes = true;\r
+  \r
+  BehaviorSubject<Integer> objectPublishSubject = BehaviorSubject.create();\r
+  \r
+  public Observable<Integer> onChange() { return this.objectPublishSubject.distinctUntilChanged(); }\r
+  \r
+  public void register(Context paramContext) {\r
+    IntentFilter intentFilter = new IntentFilter();\r
+    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");\r
+    paramContext.registerReceiver(this.mNetStateBroadcastReceiver, intentFilter);\r
+  }\r
+  \r
+  public void unregister(Context paramContext) { paramContext.unregisterReceiver(this.mNetStateBroadcastReceiver); }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java b/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java
new file mode 100644 (file)
index 0000000..c6fa19a
--- /dev/null
@@ -0,0 +1,63 @@
+package com.ic.protocol.utils;\r
+\r
+import android.annotation.SuppressLint;\r
+\r
+import com.ic.protocol.LocationClient;\r
+import com.ic.protocol.bean.StringMessage;\r
+\r
+import java.util.concurrent.LinkedBlockingDeque;\r
+\r
+public class ServiceUtil {\r
+  public static boolean hasSave(StringMessage paramStringMessage) {\r
+    String str = paramStringMessage.cmd();\r
+    if (str.length() > 8) {\r
+      str = str.substring(0, 8);\r
+      if ("#@H03@#;".equals(str))\r
+        return true; \r
+      if ("#@H02@#;".equals(str))\r
+        return true; \r
+      if ("#@H14@#;".equals(str))\r
+        return true; \r
+      if ("#@H03C@#;".equals(str))\r
+        return true; \r
+      if ("#@H02C@#;".equals(str))\r
+        return true; \r
+      if ("#@H14C@#;".equals(str))\r
+        return true; \r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public static void offerQueue(StringMessage paramStringMessage) { offerQueue(paramStringMessage, false); }\r
+  \r
+  @SuppressLint("NewApi")\r
+  public static void offerQueue(StringMessage paramStringMessage, boolean paramBoolean) {\r
+    if (paramBoolean) {\r
+      if (!LocationClient.queue.offerFirst(paramStringMessage)) {\r
+        LocationClient.saveQueue();\r
+        LocationClient.queue.offerFirst(paramStringMessage);\r
+        return;\r
+      } \r
+    } else if (!LocationClient.queue.offerLast(paramStringMessage)) {\r
+      LocationClient.saveQueue();\r
+      LocationClient.queue.offerLast(paramStringMessage);\r
+    } \r
+  }\r
+  \r
+//  public static void offerVideoQueue(OssFileContent paramOssFileContent, LinkedBlockingDeque<OssFileContent> paramLinkedBlockingDeque, FileCache paramFileCache) {\r
+//    if (!paramLinkedBlockingDeque.offerLast(paramOssFileContent)) {\r
+//      (new Thread(new Runnable(paramLinkedBlockingDeque, paramFileCache) {\r
+//            public void run() { SendOssMessage.saveVideoPathQueue(queue, fileCache); }\r
+//          })).start();\r
+//      paramLinkedBlockingDeque.offerLast(paramOssFileContent);\r
+//    }\r
+//  }\r
+//\r
+//  public static void offerVideoQueueForThread(OssFileContent paramOssFileContent, LinkedBlockingDeque<OssFileContent> paramLinkedBlockingDeque, FileCache paramFileCache) {\r
+//    if (!paramLinkedBlockingDeque.offerLast(paramOssFileContent)) {\r
+//      SendOssMessage.saveVideoPathQueue(paramLinkedBlockingDeque, paramFileCache);\r
+//      paramLinkedBlockingDeque.offerLast(paramOssFileContent);\r
+//    }\r
+//  }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/SharPreferenceUtil.java b/app/src/main/java/com/ic/protocol/utils/SharPreferenceUtil.java
new file mode 100644 (file)
index 0000000..6e6ac0f
--- /dev/null
@@ -0,0 +1,56 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.Context;\r
+import android.content.SharedPreferences;\r
+import android.preference.PreferenceManager;\r
+\r
+public class SharPreferenceUtil {\r
+\r
+    public static void clearPreference(Context context, SharedPreferences sharedPref) {\r
+        sharedPref.edit().clear().commit();\r
+    }\r
+\r
+    public static boolean getPrefBoolean(Context context, String key, boolean value) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(key, value);\r
+    }\r
+\r
+    public static float getPrefFloat(Context context, String key, float value) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).getFloat(key, value);\r
+    }\r
+\r
+    public static int getPrefInt(Context context, String key, int value) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).getInt(key, value);\r
+    }\r
+\r
+    public static long getPrefLong(Context context, String key, long value) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).getLong(key, value);\r
+    }\r
+\r
+    public static String getPrefString(Context context, String key, String value) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).getString(key, value);\r
+    }\r
+\r
+    public static boolean hasKey(Context context, String key) {\r
+        return PreferenceManager.getDefaultSharedPreferences(context).contains(key);\r
+    }\r
+\r
+    public static void setPrefBoolean(Context context, String key, boolean value) {\r
+        PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(key, value).commit();\r
+    }\r
+\r
+    public static void setPrefFloat(Context context, String key, float value) {\r
+        PreferenceManager.getDefaultSharedPreferences(context).edit().putFloat(key, value).commit();\r
+    }\r
+\r
+    public static void setPrefInt(Context context, String key, int value) {\r
+        PreferenceManager.getDefaultSharedPreferences(context).edit().putInt(key, value).commit();\r
+    }\r
+\r
+    public static void setPrefLong(Context context, String key, long value) {\r
+        PreferenceManager.getDefaultSharedPreferences(context).edit().putLong(key, value).commit();\r
+    }\r
+\r
+    public static void setPrefString(Context context, String key, String value) {\r
+        PreferenceManager.getDefaultSharedPreferences(context).edit().putString(key, value).commit();\r
+    }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java b/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java
new file mode 100644 (file)
index 0000000..f517141
--- /dev/null
@@ -0,0 +1,96 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.hardware.display.DisplayManager;\r
+import android.os.PowerManager;\r
+import android.provider.Settings;\r
+import android.telephony.TelephonyManager;\r
+import android.view.Display;\r
+\r
+import static android.content.Context.POWER_SERVICE;\r
+\r
+public class SimSignalUtil {\r
+  public static final int IS_2G = 0;\r
+  \r
+  public static final int IS_3G = 1;\r
+  \r
+  public static final int IS_4G = 2;\r
+  \r
+  public static final int IS_UNKNOWN = -1;\r
+  \r
+  protected static SimSignalUtil simSignalUtil=null;\r
+  \r
+  Context context;\r
+  \r
+  int last_WorkType = -1;\r
+  \r
+  private int mNetworkType;\r
+  \r
+  int[] netWorkTypeArr = { 2, 2, 2, 2, 2 };\r
+  \r
+  private SimSignalUtil(Context paramContext) {\r
+    this.context = paramContext;\r
+    init();\r
+  }\r
+  \r
+  public static SimSignalUtil getInstance(Context paramContext) {\r
+    if (simSignalUtil ==null)\r
+      simSignalUtil = new SimSignalUtil(paramContext);\r
+    return simSignalUtil;\r
+  }\r
+  public boolean IsAirModeOn() { return (Settings.System.getInt(this.context.getContentResolver(), "airplane_mode_on", 0) == 1); }\r
+  \r
+  public void changeNetWorkType(int paramInt1, int paramInt2) {\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("BuildConfig.upLoadData=falsenetworkType=");\r
+    stringBuilder.append(paramInt1);\r
+    stringBuilder.append("flag=");\r
+    stringBuilder.append(paramInt2);\r
+    Logger.i(stringBuilder.toString());\r
+  }\r
+  \r
+  public void changeNetWorkType(String paramString) {\r
+    Intent intent = new Intent("android.intent.action.NETWORK_MODE_CTRL");\r
+    intent.putExtra("mode", paramString);\r
+    this.context.sendBroadcast(intent);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("changeNetWorkType=");\r
+    stringBuilder.append(paramString);\r
+    Logger.i(stringBuilder.toString());\r
+  }\r
+  \r
+  public int getNetworkType() {\r
+    init();\r
+    return (this.mNetworkType != 3) ? ((this.mNetworkType == 8) ? 1 : ((this.mNetworkType != 1) ? ((this.mNetworkType == 2) ? 0 : ((this.mNetworkType == 4) ? 0 : ((this.mNetworkType != 5) ? ((this.mNetworkType == 6) ? 1 : ((this.mNetworkType == 13) ? 2 : -1)) : 1))) : 0)) : 1;\r
+  }\r
+  \r
+  public void init() { this.mNetworkType = ((TelephonyManager)this.context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType(); }\r
+  \r
+  public boolean isScreenON() {\r
+    if (android.os.Build.VERSION.SDK_INT >= 20) {\r
+      // I'm counting\r
+      // STATE_DOZE, STATE_OFF, STATE_DOZE_SUSPENDED\r
+      // all as "OFF"\r
+      DisplayManager dm = (DisplayManager) this.context.getSystemService(Context.DISPLAY_SERVICE);\r
+      Display[] displays = dm.getDisplays();\r
+      for (Display display : displays) {\r
+        if (display.getState () == Display.STATE_ON\r
+                || display.getState () == Display.STATE_UNKNOWN) {\r
+          return true;\r
+        }\r
+      }\r
+      return false;\r
+    }else {\r
+      // If you use less than API20:\r
+      PowerManager powerManager = (PowerManager) this.context.getSystemService(POWER_SERVICE);\r
+      if (powerManager.isScreenOn()) {\r
+        return true;\r
+      }\r
+    }\r
+    return false;\r
+  }\r
+  \r
+  public void setAirMode(String paramString) {}\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/TimeUtil.java b/app/src/main/java/com/ic/protocol/utils/TimeUtil.java
new file mode 100644 (file)
index 0000000..dd64aba
--- /dev/null
@@ -0,0 +1,27 @@
+package com.ic.protocol.utils;\r
+\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+\r
+public class TimeUtil {\r
+  public static String getLocalTime() { return getLocalTime(System.currentTimeMillis()); }\r
+  \r
+  public static String getLocalTime(long paramLong) { return (new SimpleDateFormat("yyyy/MM/dd,HH:mm:ss")).format(new Date(paramLong)); }\r
+  \r
+  public static String getSystemTime() { return getSystemTime(System.currentTimeMillis()); }\r
+  \r
+  public static String getSystemTime(long paramLong) { return (new SimpleDateFormat("yyyy-MM-dd;HH:mm:ss")).format(new Date(paramLong)); }\r
+  \r
+  public static String getSystemTime2() { return getSystemTime2(System.currentTimeMillis()); }\r
+  \r
+  public static String getSystemTime2(long paramLong) { return (new SimpleDateFormat("yyyyMMdd;HHmmss")).format(new Date(paramLong)); }\r
+  \r
+  public static String getSystemTime3() { return getSystemTime3(System.currentTimeMillis()); }\r
+  \r
+  public static String getSystemTime3(long paramLong) { return (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date(paramLong)); }\r
+  \r
+  public static String getSystemTime4() { return getSystemTime4(System.currentTimeMillis()); }\r
+  \r
+  public static String getSystemTime4(long paramLong) { return (new SimpleDateFormat("yyyyMMdd")).format(new Date(paramLong)); }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/Util.java b/app/src/main/java/com/ic/protocol/utils/Util.java
new file mode 100644 (file)
index 0000000..64577c2
--- /dev/null
@@ -0,0 +1,527 @@
+package com.ic.protocol.utils;\r
+\r
+import android.annotation.TargetApi;\r
+import android.content.Context;\r
+import android.graphics.Bitmap;\r
+import android.graphics.BitmapFactory;\r
+import android.media.MediaPlayer;\r
+import android.net.ConnectivityManager;\r
+import android.net.NetworkInfo;\r
+import android.net.wifi.WifiConfiguration;\r
+import android.net.wifi.WifiManager;\r
+import android.os.Build;\r
+\r
+\r
+import java.io.ByteArrayOutputStream;\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.lang.reflect.Method;\r
+import java.nio.charset.Charset;\r
+import java.util.ArrayList;\r
+import java.util.UUID;\r
+\r
+import okio.BufferedSink;\r
+import okio.Okio;\r
+import okio.Source;\r
+import com.ic.protocol.bean.Runtime;\r
+\r
+import static android.content.Context.CONNECTIVITY_SERVICE;\r
+\r
+public class Util {\r
+  public static Charset UTF_16 = (UTF_8 = Charset.forName("UTF-8")).forName("UTF-16LE");\r
+  \r
+  public static Charset UTF_8;\r
+  \r
+  public static WifiConfiguration GetconfigWifiInfo(Context paramContext, String paramString1, String paramString2, String paramString3) { // Byte code:\r
+    WifiConfiguration wificonfig=new WifiConfiguration();\r
+    return wificonfig;\r
+  }\r
+  public static String byte2hex(byte[] paramArrayOfByte) {\r
+    if (paramArrayOfByte == null)\r
+      throw new IllegalArgumentException("Argument b ( byte array ) is null! "); \r
+    String str = "";\r
+    for (byte b = 0; b < paramArrayOfByte.length; b++) {\r
+      String str1 = Integer.toHexString(paramArrayOfByte[b] & 0xFF);\r
+      if (str1.length() == 1) {\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append(str);\r
+        stringBuilder.append("0");\r
+        stringBuilder.append(str1);\r
+        str = stringBuilder.toString();\r
+      } else {\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append(str);\r
+        stringBuilder.append(str1);\r
+        str = stringBuilder.toString();\r
+      } \r
+    } \r
+    return str.toUpperCase();\r
+  }\r
+  \r
+  public static boolean checkNetwork(Context paramContext) {\r
+    NetworkInfo networkInfo = ((ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE)).getActiveNetworkInfo();\r
+    return (networkInfo != null && networkInfo.isConnected());\r
+  }\r
+  \r
+  public static Method connectWifiByReflectMethod(Context paramContext, int paramInt) {\r
+    Method method;\r
+    WifiManager wifiManager = (WifiManager)paramContext.getSystemService(Context.WIFI_SERVICE);\r
+//    if (Build.VERSION.SDK_INT >= 17) {\r
+//      Logger.i("connectWifiByReflectMethod road 1");\r
+//      Method[] arrayOfMethod = wifiManager.getClass().getDeclaredMethods();\r
+//      int i = arrayOfMethod.length;\r
+//      paramContext = null;\r
+//      byte b = 0;\r
+//      while (b < i) {\r
+//        Method method3 = arrayOfMethod[b];\r
+//        Method method2 = paramContext;\r
+//        if ("connect".equalsIgnoreCase(method3.getName())) {\r
+//          Class[] arrayOfClass = method3.getParameterTypes();\r
+//          method2 = paramContext;\r
+//          if (arrayOfClass != null) {\r
+//            method2 = paramContext;\r
+//            if (arrayOfClass.length > 0) {\r
+//              method2 = paramContext;\r
+//              if ("int".equalsIgnoreCase(arrayOfClass[0].getName()))\r
+//                method2 = method3;\r
+//            }\r
+//          }\r
+//        }\r
+//        b++;\r
+//        method1 = method2;\r
+//      }\r
+//      method = method1;\r
+//      if (method1 != null)\r
+//        try {\r
+//          method1.invoke(wifiManager, new Object[] { Integer.valueOf(paramInt), null });\r
+//          return method1;\r
+//        } catch (Exception method1) {\r
+//          method1.printStackTrace();\r
+//          StringBuilder stringBuilder = new StringBuilder();\r
+//          stringBuilder.append("connectWifiByReflectMethod Android ");\r
+//          stringBuilder.append(Build.VERSION.SDK_INT);\r
+//          stringBuilder.append(" error!");\r
+//          Logger.i(stringBuilder.toString());\r
+//          return null;\r
+//        }\r
+//    } else {\r
+//      if (Build.VERSION.SDK_INT == 16) {\r
+//        Logger.i("connectWifiByReflectMethod road 2");\r
+//        return null;\r
+//      }\r
+//      if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 16) {\r
+//        Logger.i("connectWifiByReflectMethod road 3");\r
+//        Method[] arrayOfMethod = wifiManager.getClass().getDeclaredMethods();\r
+//        int i = arrayOfMethod.length;\r
+//        paramContext = null;\r
+//        byte b = 0;\r
+//        while (b < i) {\r
+//          Method method3 = arrayOfMethod[b];\r
+//          Method method2 = paramContext;\r
+//          if ("connectNetwork".equalsIgnoreCase(method3.getName())) {\r
+//            Class[] arrayOfClass = method3.getParameterTypes();\r
+//            method2 = paramContext;\r
+//            if (arrayOfClass != null) {\r
+//              method2 = paramContext;\r
+//              if (arrayOfClass.length > 0) {\r
+//                method2 = paramContext;\r
+//                if ("int".equalsIgnoreCase(arrayOfClass[0].getName()))\r
+//                  method2 = method3;\r
+//              }\r
+//            }\r
+//          }\r
+//          b++;\r
+//          method1 = method2;\r
+//        }\r
+//        method = method1;\r
+//        if (method1 != null)\r
+//          try {\r
+//            method1.invoke(wifiManager, new Object[] { Integer.valueOf(paramInt) });\r
+//            return method1;\r
+//          } catch (Exception method1) {\r
+//            method1.printStackTrace();\r
+//            StringBuilder stringBuilder = new StringBuilder();\r
+//            stringBuilder.append("connectWifiByReflectMethod Android ");\r
+//            stringBuilder.append(Build.VERSION.SDK_INT);\r
+//            stringBuilder.append(" error!");\r
+//            Logger.i(stringBuilder.toString());\r
+//            return null;\r
+//          }\r
+//        return method;\r
+//      }\r
+//      return null;\r
+//    }\r
+    return null;\r
+  }\r
+  \r
+  public static String copyFile(String paramString, File paramFile) {\r
+//    file = new File(paramString);\r
+//    StringBuilder stringBuilder = new StringBuilder();\r
+//    stringBuilder.append(UUID.randomUUID().toString());\r
+//    stringBuilder.append("_");\r
+//    stringBuilder.append(file.getName());\r
+//    String str = stringBuilder.toString();\r
+//    paramFile = makeDir(paramFile, str);\r
+//    try {\r
+//      paramFile = new File(paramFile, str);\r
+//      BufferedSink bufferedSink = Okio.buffer(Okio.sink(paramFile));\r
+//      Source source = Okio.source(file);\r
+//      bufferedSink.writeAll(source);\r
+//      bufferedSink.close();\r
+//      source.close();\r
+//      return paramFile.getAbsolutePath();\r
+//    } catch (IOException file) {\r
+//      file.printStackTrace();\r
+//      return null;\r
+//    }\r
+    return null;\r
+  }\r
+  \r
+  public static String cutFile(String paramString, File paramFile) {\r
+//    file = new File(paramString);\r
+//    StringBuilder stringBuilder = new StringBuilder();\r
+//    stringBuilder.append(UUID.randomUUID().toString());\r
+//    stringBuilder.append("_");\r
+//    stringBuilder.append(file.getName());\r
+//    String str = stringBuilder.toString();\r
+//    paramFile = makeDir(paramFile, str);\r
+//    try {\r
+//      paramFile = new File(paramFile, str);\r
+//      BufferedSink bufferedSink = Okio.buffer(Okio.sink(paramFile));\r
+//      Source source = Okio.source(file);\r
+//      bufferedSink.writeAll(source);\r
+//      bufferedSink.close();\r
+//      source.close();\r
+//      file.delete();\r
+//      return paramFile.getAbsolutePath();\r
+//    } catch (IOException file) {\r
+//      file.printStackTrace();\r
+//      return null;\r
+//    }\r
+    return null;\r
+  }\r
+  \r
+  public static byte[] decode(byte[] paramArrayOfByte) {\r
+    int i = paramArrayOfByte.length;\r
+    byte[] arrayOfByte = new byte[i];\r
+//    byte b2 = 0;\r
+//    byte b1 = 0;\r
+//    while (b2 < i) {\r
+//      if (paramArrayOfByte[b2] == 56) {\r
+//        byte b4 = b2 + true;\r
+//        byte b3 = b1;\r
+//        if (paramArrayOfByte[b4] == 0) {\r
+//          arrayOfByte[b1] = 56;\r
+//          b3 = b1 + true;\r
+//        }\r
+//        b2 = b4;\r
+//        b1 = b3;\r
+//        if (paramArrayOfByte[b4] == 2) {\r
+//          b1 = b3 + 1;\r
+//          arrayOfByte[b3] = 58;\r
+//          b2 = b4;\r
+//        }\r
+//      } else if (paramArrayOfByte[b2] == 57) {\r
+//        byte b4 = b2 + 1;\r
+//        byte b3 = b1;\r
+//        if (paramArrayOfByte[b4] == 0) {\r
+//          arrayOfByte[b1] = 57;\r
+//          b3 = b1 + 1;\r
+//        }\r
+//        b2 = b4;\r
+//        b1 = b3;\r
+//        if (paramArrayOfByte[b4] == 2) {\r
+//          b1 = b3 + 1;\r
+//          arrayOfByte[b3] = 59;\r
+//          b2 = b4;\r
+//        }\r
+//      } else if (paramArrayOfByte[b2] == 62) {\r
+//        byte b4 = b2 + 1;\r
+//        byte b3 = b1;\r
+//        if (paramArrayOfByte[b4] == 0) {\r
+//          arrayOfByte[b1] = 62;\r
+//          b3 = b1 + 1;\r
+//        }\r
+//        b2 = b4;\r
+//        b1 = b3;\r
+//        if (paramArrayOfByte[b4] == 2) {\r
+//          b1 = b3 + 1;\r
+//          arrayOfByte[b3] = 64;\r
+//          b2 = b4;\r
+//        }\r
+//      } else if (paramArrayOfByte[b2] == 42) {\r
+//        byte b4 = b2 + 1;\r
+//        byte b3 = b1;\r
+//        if (paramArrayOfByte[b4] == 0) {\r
+//          arrayOfByte[b1] = 42;\r
+//          b3 = b1 + 1;\r
+//        }\r
+//        b2 = b4;\r
+//        b1 = b3;\r
+//        if (paramArrayOfByte[b4] == 2) {\r
+//          b1 = b3 + 1;\r
+//          arrayOfByte[b3] = 44;\r
+//          b2 = b4;\r
+//        }\r
+//      } else {\r
+//        byte b = b1 + 1;\r
+//        arrayOfByte[b1] = paramArrayOfByte[b2];\r
+//        b1 = b;\r
+//      }\r
+//      b2++;\r
+//    }\r
+//    paramArrayOfByte = new byte[b1];\r
+//    System.arraycopy(arrayOfByte, 0, paramArrayOfByte, 0, b1);\r
+    return paramArrayOfByte;\r
+  }\r
+  \r
+  public static byte[] encode(byte[] paramArrayOfByte) {\r
+    int i = paramArrayOfByte.length;\r
+    byte[] arrayOfByte = new byte[i * 2];\r
+//    byte b2 = 0;\r
+//    byte b1 = 0;\r
+//    while (b2 < i) {\r
+//      if (paramArrayOfByte[b2] == 56) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 56;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 0;\r
+//      } else if (paramArrayOfByte[b2] == 58) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 56;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 2;\r
+//      } else if (paramArrayOfByte[b2] == 57) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 57;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 0;\r
+//      } else if (paramArrayOfByte[b2] == 59) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 57;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 2;\r
+//      } else if (paramArrayOfByte[b2] == 62) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 62;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 0;\r
+//      } else if (paramArrayOfByte[b2] == 64) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 62;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 2;\r
+//      } else if (paramArrayOfByte[b2] == 42) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 42;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 0;\r
+//      } else if (paramArrayOfByte[b2] == 44) {\r
+//        boolean bool = b1 + true;\r
+//        arrayOfByte[b1] = 42;\r
+//        b1 = bool + true;\r
+//        arrayOfByte[bool] = 2;\r
+//      } else {\r
+//        arrayOfByte[b1] = paramArrayOfByte[b2];\r
+//        b1++;\r
+//      }\r
+//      b2++;\r
+//    }\r
+//    paramArrayOfByte = new byte[b1];\r
+//    System.arraycopy(arrayOfByte, 0, paramArrayOfByte, 0, b1);\r
+    return paramArrayOfByte;\r
+  }\r
+  \r
+  public static int getDuration(String paramString) {\r
+    if (paramString != null) {\r
+      double d1;\r
+      MediaPlayer mediaPlayer = new MediaPlayer();\r
+      try {\r
+        mediaPlayer.setDataSource(paramString);\r
+        mediaPlayer.prepare();\r
+        int i = mediaPlayer.getDuration();\r
+        d1 = i;\r
+        mediaPlayer.release();\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+        mediaPlayer.release();\r
+        d1 = 1000.0D;\r
+      } finally {}\r
+      return (int)Math.ceil(d1 / 1000.0D);\r
+    } \r
+    double d = 1000.0D;\r
+    return 0;\r
+  }\r
+  \r
+  @TargetApi(Build.VERSION_CODES.GINGERBREAD)\r
+  public static String getRealName(byte[] paramArrayOfByte) {\r
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {\r
+      return new String(decode(paramArrayOfByte), UTF_16);\r
+    }else\r
+      return null;\r
+  }\r
+  \r
+  public static boolean isConnectWifi(Context paramContext) {\r
+    ConnectivityManager connectivityManager = (ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE);\r
+    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();\r
+    NetworkInfo.State state = connectivityManager.getNetworkInfo(1).getState();\r
+    return (networkInfo != null && networkInfo.isAvailable() && state == NetworkInfo.State.CONNECTED);\r
+  }\r
+  \r
+  public static boolean isWifiInIdle(Context paramContext) {\r
+    NetworkInfo.State state = ((ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE)).getNetworkInfo(1).getState();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("yls wifi=");\r
+    stringBuilder.append(state);\r
+    Logger.i(stringBuilder.toString());\r
+    return (state == NetworkInfo.State.DISCONNECTED);\r
+  }\r
+  \r
+  public static boolean isWifiIsOpen(Context paramContext, Runtime paramRuntime) {\r
+    return paramRuntime.getContextProxy().getWifiManager().isWifiEnabled();\r
+  }\r
+  \r
+  public static byte[] loadFile(File paramFile) {\r
+//    if (paramFile != null && paramFile.exists())\r
+//      try {\r
+//        if (paramFile.getName().endsWith(".jpg")) {\r
+//          StringBuilder stringBuilder2 = new StringBuilder();\r
+//          stringBuilder2.append("压缩前dataSize=");\r
+//          stringBuilder2.append(paramFile.length());\r
+//          Logger.i(stringBuilder2.toString());\r
+//          ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();\r
+//          Bitmap bitmap = BitmapFactory.decodeFile(paramFile.getAbsolutePath());\r
+//          bitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream);\r
+//          bitmap.recycle();\r
+//          null = byteArrayOutputStream.toByteArray();\r
+//          StringBuilder stringBuilder1 = new StringBuilder();\r
+//          stringBuilder1.append("压缩后dataSize=");\r
+//          stringBuilder1.append(null.length);\r
+//          Logger.i(stringBuilder1.toString());\r
+//          return null;\r
+//        }\r
+//        return Okio.buffer(Okio.source(null)).readByteArray();\r
+//      } catch (IOException paramFile) {\r
+//        paramFile.printStackTrace();\r
+//      }\r
+    return null;\r
+  }\r
+  \r
+  public static File makeDir(File paramFile, String paramString) {\r
+    StringBuilder stringBuilder = new StringBuilder(Integer.toHexString(paramString.hashCode()));\r
+    for (byte b = 2; b < stringBuilder.length(); b += 3)\r
+      stringBuilder.insert(b, "/"); \r
+    paramFile = new File(paramFile, stringBuilder.toString());\r
+    paramFile.mkdirs();\r
+    return paramFile;\r
+  }\r
+  \r
+  public static String saveFile(byte[] paramArrayOfByte, int paramInt1, int paramInt2, File paramFile, String paramString) {\r
+//    StringBuilder stringBuilder = new StringBuilder();\r
+//    stringBuilder.append(UUID.randomUUID().toString());\r
+//    stringBuilder.append("_");\r
+//    stringBuilder.append(paramString);\r
+//    paramString = stringBuilder.toString();\r
+//    paramFile = makeDir(paramFile, paramString);\r
+//    try {\r
+//      paramFile = new File(paramFile, paramString);\r
+//      BufferedSink bufferedSink = Okio.buffer(Okio.sink(paramFile));\r
+//      bufferedSink.write(paramArrayOfByte, paramInt1, paramInt2);\r
+//      bufferedSink.close();\r
+//      return paramFile.getAbsolutePath();\r
+//    } catch (IOException paramArrayOfByte) {\r
+//      paramArrayOfByte.printStackTrace();\r
+//      return null;\r
+//    }\r
+    return null;\r
+  }\r
+  \r
+  public static ArrayList<byte[]> split(byte[] paramArrayOfByte, byte paramByte, int paramInt) {\r
+    ArrayList arrayList = new ArrayList();\r
+    int m = paramArrayOfByte.length;\r
+    int k = paramInt;\r
+    int j = paramInt;\r
+    for (paramInt = k; j < m; paramInt = k) {\r
+      k = paramInt;\r
+      if (paramArrayOfByte[j] == paramByte) {\r
+        k = j - paramInt;\r
+        if (k != 0) {\r
+          byte[] arrayOfByte = new byte[k];\r
+          System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, k);\r
+          arrayList.add(arrayOfByte);\r
+        } \r
+        k = j + 1;\r
+      } \r
+      j++;\r
+    } \r
+    int i = m - paramInt;\r
+    if (i != 0) {\r
+      byte[] arrayOfByte = new byte[i];\r
+      System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, i);\r
+      arrayList.add(arrayOfByte);\r
+    } \r
+    return arrayList;\r
+  }\r
+  \r
+  public static ArrayList<byte[]> split(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2) {\r
+    ArrayList arrayList = new ArrayList();\r
+//    int k = paramArrayOfByte1.length;\r
+//    int m = paramArrayOfByte2.length;\r
+//    int i = 0;\r
+//    int j;\r
+//    for (j = 0; i < k; j = n) {\r
+//      int i1;\r
+//      int n;\r
+//      byte b = 0;\r
+//      while (true) {\r
+//        boolean bool = i + b;\r
+//        i1 = i;\r
+//        n = j;\r
+//        if (bool < k) {\r
+//          i1 = i;\r
+//          n = j;\r
+//          if (paramArrayOfByte1[bool] == paramArrayOfByte2[b]) {\r
+//            n = b + 1;\r
+//            b = n;\r
+//            if (n == m) {\r
+//              n = i - j;\r
+//              if (n != 0) {\r
+//                byte[] arrayOfByte = new byte[n];\r
+//                System.arraycopy(paramArrayOfByte1, j, arrayOfByte, 0, n);\r
+//                arrayList.add(arrayOfByte);\r
+//              }\r
+//              i += m;\r
+//              n = i;\r
+//              i1 = i - 1;\r
+//              break;\r
+//            }\r
+//            continue;\r
+//          }\r
+//        }\r
+//        break;\r
+//      }\r
+//      i = i1 + 1;\r
+//    }\r
+//    i = paramArrayOfByte1.length - j;\r
+//    if (i != 0) {\r
+//      paramArrayOfByte2 = new byte[i];\r
+//      System.arraycopy(paramArrayOfByte1, j, paramArrayOfByte2, 0, i);\r
+//      arrayList.add(paramArrayOfByte2);\r
+//    }\r
+    return arrayList;\r
+  }\r
+  \r
+  public static byte[] subArray(byte[] paramArrayOfByte, int paramInt) { return subArray(paramArrayOfByte, paramInt, paramArrayOfByte.length); }\r
+  \r
+  public static byte[] subArray(byte[] paramArrayOfByte, int paramInt1, int paramInt2) {\r
+    paramInt2 -= paramInt1;\r
+    byte[] arrayOfByte = new byte[paramInt2];\r
+    System.arraycopy(paramArrayOfByte, paramInt1, arrayOfByte, 0, paramInt2);\r
+    return arrayOfByte;\r
+  }\r
+  \r
+  public static void turnOffWifiForSleep(Context paramContext, Runtime paramRuntime) { paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(false); }\r
+  \r
+  public static void turnOnWifiForConnect(Context paramContext, Runtime paramRuntime) { paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(true); }\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/WakeLockUtil.java b/app/src/main/java/com/ic/protocol/utils/WakeLockUtil.java
new file mode 100644 (file)
index 0000000..5e5e519
--- /dev/null
@@ -0,0 +1,16 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.Context;\r
+import android.os.PowerManager;\r
+\r
+import java.util.Objects;\r
+\r
+\r
+public class WakeLockUtil {\r
+  public static PowerManager.WakeLock getWakeLock(Context context, String tag) {\r
+    PowerManager.WakeLock wakeLock = ((PowerManager)(context.getSystemService(Context.POWER_SERVICE))).newWakeLock(1, tag);\r
+    wakeLock.acquire(60000L);\r
+    return wakeLock;\r
+  }\r
+}\r
+\r
index d6723e0..3cc529b 100644 (file)
@@ -4,5 +4,5 @@
 # Location of the SDK. This is only used by Gradle.\r
 # For customization when using a Version Control System, please read the\r
 # header note.\r
-#Sat Dec 28 21:56:10 CST 2019\r
-sdk.dir=E\:\\Android\\sdk\r
+#Fri Jan 03 18:06:44 CST 2020\r
+sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk\r