部分协议完成
authorsnicker <snickersun@163.com>
Sun, 29 Dec 2019 23:38:37 +0000 (07:38 +0800)
committersnicker <snickersun@163.com>
Sun, 29 Dec 2019 23:38:37 +0000 (07:38 +0800)
52 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
.idea/caches/build_file_checksums.ser
.idea/caches/gradle_models.ser
.idea/encodings.xml [new file with mode: 0644]
.idea/gradle.xml
.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_appcompat_v7_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_multidex_1_0_1_aar.xml [new file with mode: 0644]
.idea/libraries/Gradle__com_android_support_multidex_instrumentation_1_0_1_aar.xml [new file with mode: 0644]
.idea/libraries/Gradle__com_android_support_support_annotations_25_1_0_jar.xml
.idea/libraries/Gradle__com_android_support_support_compat_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_ui_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_utils_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_fragment_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_media_compat_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_1_0_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml
.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml
.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml
.idea/libraries/Gradle__io_reactivex_rxjava_1_1_0_jar.xml
.idea/workspace.xml
app/EQC_G5.jks [new file with mode: 0644]
app/app.iml
app/build.gradle
app/see_sha1.bat [new file with mode: 0644]
app/src/main/AndroidManifest.xml
app/src/main/java/com/ic/protocol/MainActivity.java
app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/Config.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/deviceStatus.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/heartRateStatus.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/location.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/serverStatus.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/simStatus.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/bean/stepCounter.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/connectionServer.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/protocolMainServer.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ICLog.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/RxSocket.java [moved from app/src/main/java/com/ic/protocol/RxSocket.java with 99% similarity]
app/src/main/res/layout/activity_main.xml
app/src/main/res/values/strings.xml
app/version_code.properties [new file with mode: 0644]
build/intermediates/proguard-files/proguard-android-optimize.txt-2.2.2 [new file with mode: 0644]
build/intermediates/proguard-files/proguard-android.txt-2.2.2 [new file with mode: 0644]
icsupport.iml
local.properties

index 7e66efc..b37d819 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 0629446..e37426f 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileHashes.bin and b/.gradle/2.14.1/taskArtifacts/fileHashes.bin differ
index aeb0dbc..554eedc 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin differ
index 0432705..7a8dc8f 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin differ
index 4d215b8..8c51fad 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin and b/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin differ
index 48e85ca..6b5012b 100644 (file)
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
index 874991b..fde10d2 100644 (file)
Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644 (file)
index 0000000..c619a20
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project version="4">\r
+  <component name="Encoding">\r
+    <file url="file://$PROJECT_DIR$/app/build.gradle" charset="UTF-8" />\r
+  </component>\r
+</project>
\ No newline at end of file
index 2a80f60..0056249 100644 (file)
@@ -3,11 +3,14 @@
   <component name="GradleSettings">\r
     <option name="linkedExternalProjectsSettings">\r
       <GradleProjectSettings>\r
-        <compositeConfiguration>\r
-          <compositeBuild compositeDefinitionSource="SCRIPT" />\r
-        </compositeConfiguration>\r
         <option name="distributionType" value="DEFAULT_WRAPPED" />\r
         <option name="externalProjectPath" value="$PROJECT_DIR$" />\r
+        <option name="modules">\r
+          <set>\r
+            <option value="$PROJECT_DIR$" />\r
+            <option value="$PROJECT_DIR$/app" />\r
+          </set>\r
+        </option>\r
         <option name="resolveModulePerSourceSet" value="false" />\r
         <option name="testRunner" value="PLATFORM" />\r
       </GradleProjectSettings>\r
index c14248f..3cc59c4 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.1.0/animated-vector-drawable-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.1.0/animated-vector-drawable-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.1.0/animated-vector-drawable-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.1.0/animated-vector-drawable-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 51096cc..8c7f9ee 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:appcompat-v7:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.1.0/appcompat-v7-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.1.0/appcompat-v7-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.1.0/appcompat-v7-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.1.0/appcompat-v7-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_multidex_1_0_1_aar.xml b/.idea/libraries/Gradle__com_android_support_multidex_1_0_1_aar.xml
new file mode 100644 (file)
index 0000000..3ec6c82
--- /dev/null
@@ -0,0 +1,10 @@
+<component name="libraryTable">\r
+  <library name="Gradle: com.android.support:multidex:1.0.1@aar">\r
+    <CLASSES>\r
+      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex/1.0.1/jars/classes.jar!/" />\r
+      <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex/1.0.1/res" />\r
+    </CLASSES>\r
+    <JAVADOC />\r
+    <SOURCES />\r
+  </library>\r
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_multidex_instrumentation_1_0_1_aar.xml b/.idea/libraries/Gradle__com_android_support_multidex_instrumentation_1_0_1_aar.xml
new file mode 100644 (file)
index 0000000..8efd17f
--- /dev/null
@@ -0,0 +1,10 @@
+<component name="libraryTable">\r
+  <library name="Gradle: com.android.support:multidex-instrumentation:1.0.1@aar">\r
+    <CLASSES>\r
+      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex-instrumentation/1.0.1/jars/classes.jar!/" />\r
+      <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex-instrumentation/1.0.1/res" />\r
+    </CLASSES>\r
+    <JAVADOC />\r
+    <SOURCES />\r
+  </library>\r
+</component>
\ No newline at end of file
index 6d92bf1..0b4a8e6 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://$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
+      <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
     </ANNOTATIONS>\r
     <CLASSES>\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
+      <root url="jar://E:/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://$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
+      <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
     </JAVADOC>\r
     <SOURCES>\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
+      <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
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 7b18251..98fe668 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-compat:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-compat/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-compat/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-compat/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-compat/25.1.0/support-compat-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-compat/25.1.0/support-compat-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-compat/25.1.0/support-compat-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-compat/25.1.0/support-compat-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 79c34b0..ca56f34 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-core-ui:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-core-ui/25.1.0/support-core-ui-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-core-ui/25.1.0/support-core-ui-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-core-ui/25.1.0/support-core-ui-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-core-ui/25.1.0/support-core-ui-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 7af2af9..7dd3a2c 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-core-utils:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-core-utils/25.1.0/support-core-utils-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-core-utils/25.1.0/support-core-utils-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-core-utils/25.1.0/support-core-utils-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-core-utils/25.1.0/support-core-utils-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index d7eb9db..e5f9b3e 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-fragment:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-fragment/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-fragment/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-fragment/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-fragment/25.1.0/support-fragment-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-fragment/25.1.0/support-fragment-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-fragment/25.1.0/support-fragment-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-fragment/25.1.0/support-fragment-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 31c3cdc..06cee44 100644 (file)
@@ -1,17 +1,14 @@
 <component name="libraryTable">\r
   <library name="Gradle: com.android.support:support-media-compat:25.1.0@aar">\r
-    <ANNOTATIONS>\r
-      <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-media-compat/25.1.0/annotations.zip!/" />\r
-    </ANNOTATIONS>\r
     <CLASSES>\r
       <root url="jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-media-compat/25.1.0/jars/classes.jar!/" />\r
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-media-compat/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-media-compat/25.1.0/support-media-compat-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-media-compat/25.1.0/support-media-compat-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-media-compat/25.1.0/support-media-compat-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-media-compat/25.1.0/support-media-compat-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 5471c4f..2eeb36f 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/25.1.0/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.1.0/support-vector-drawable-25.1.0-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.1.0/support-vector-drawable-25.1.0-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.1.0/support-vector-drawable-25.1.0-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.1.0/support-vector-drawable-25.1.0-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index dfad6cf..c2b1ef4 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-core/2.2.2/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 1ed2abb..d15151d 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-idling-resource/2.2.2/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index b36e7fa..4d86e76 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support.test/exposed-instrumentation-api-publish/0.5/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 45cdf14..18ad764 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support.test/rules/0.5/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 9736d90..a892495 100644 (file)
@@ -5,10 +5,10 @@
       <root url="file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support.test/runner/0.5/res" />\r
     </CLASSES>\r
     <JAVADOC>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-javadoc.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-javadoc.jar!/" />\r
     </JAVADOC>\r
     <SOURCES>\r
-      <root url="jar://$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-sources.jar!/" />\r
+      <root url="jar://E:/Android/sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-sources.jar!/" />\r
     </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 1346c81..aeceeca 100644 (file)
@@ -4,6 +4,8 @@
       <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/748f0546d5c3c27f1aef07270ffea0c45f0c42a4/rxjava-1.1.0.jar!/" />\r
     </CLASSES>\r
     <JAVADOC />\r
-    <SOURCES />\r
+    <SOURCES>\r
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/d4a0c3bc36ac0ece84cdf7aa08b18c344b467238/rxjava-1.1.0-sources.jar!/" />\r
+    </SOURCES>\r
   </library>\r
 </component>
\ No newline at end of file
index 111c116..5324a42 100644 (file)
@@ -2,11 +2,64 @@
 <project version="4">
   <component name="AndroidLayouts">
     <shared>
-      <config />
+      <config>
+        <device id="wear_square" />
+      </config>
     </shared>
   </component>
+  <component name="AndroidLogFilters">
+    <option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" />
+  </component>
   <component name="ChangeListManager">
-    <list default="true" id="599052e0-1f19-4d79-9d0b-aecda989d96a" name="Default Changelist" comment="" />
+    <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$/local.properties" beforeDir="false" afterPath="$PROJECT_DIR$/local.properties" afterDir="false" />
+    </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
   <component name="DefaultGradleProjectSettings">
-    <option name="testRunner" value="GRADLE" />
-    <option name="delegatedBuild" value="true" />
+    <option name="isMigrated" value="true" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="C41_API_19" />
+  <component name="ExternalProjectsData">
+    <projectState path="$PROJECT_DIR$">
+      <ProjectState />
+    </projectState>
   </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="860316001000107" />
   <component name="ExternalProjectsManager">
     <system id="GRADLE">
       <state>
-        <projects_view />
+        <projects_view>
+          <tree_state>
+            <expand>
+              <path>
+                <item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
+                <item name="icsupport" type="f1a62948:ProjectNode" />
+              </path>
+            </expand>
+            <select />
+          </tree_state>
+        </projects_view>
       </state>
     </system>
   </component>
+  <component name="FavoritesManager">
+    <favorites_list name="icsupport" />
+  </component>
   <component name="FileEditorManager">
-    <leaf>
+    <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">
+          <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>
+      </file>
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
           <provider editor-type-id="android-manifest" />
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="380">
-              <caret line="71" column="39" lean-forward="true" selection-start-line="71" selection-start-column="39" selection-end-line="71" selection-end-column="39" />
+            <state relative-caret-position="206">
+              <caret line="84" selection-start-line="84" selection-end-line="84" />
+            </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">
+          <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>
+      </file>
+      <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="45">
+              <caret line="226" lean-forward="true" selection-start-line="226" selection-end-line="226" />
               <folding>
-                <element signature="e#3053#3071#0" expanded="true" />
+                <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>
       </file>
       <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/src/main/java/com/ic/protocol/bean/deviceStatus.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state>
-              <caret column="23" selection-start-column="23" selection-end-column="23" />
+            <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" />
+              <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" />
+              </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">
+          <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>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/RxSocket.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="-5811">
+              <caret line="38" column="25" selection-start-line="38" selection-start-column="19" selection-end-line="38" selection-end-column="25" />
+              <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">
           <provider selected="true" editor-type-id="text-editor">
-            <state>
-              <caret column="23" selection-start-column="23" selection-end-column="23" />
+            <state relative-caret-position="128">
+              <caret line="1455" selection-start-line="1455" selection-end-line="1455" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://E:/Android/sdk/sources/android-19/android/os/Handler.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>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
+          <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>
           </provider>
         </entry>
       </file>
     </leaf>
   </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Class" />
+      </list>
+    </option>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>onBind</find>
+      <find>protocolMainServer</find>
+      <find>LogToast</find>
+      <find>connectServer</find>
+      <find>socketStatusListener</find>
+      <find>do</find>
+      <find>log</find>
+      <find>handleCmd</find>
+      <find>&quot;,&quot;</find>
+      <find>handleBP28</find>
+    </findStrings>
+    <replaceStrings>
+      <replace>CMDSPLIT</replace>
+    </replaceStrings>
+  </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
+        <option value="$PROJECT_DIR$/app/build.gradle" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/RxSocket.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/serverStatus.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/location.java" />
+        <option value="$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml" />
         <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Config.java" />
+        <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/RxSocket.java" />
-      </list>
-    </option>
-  </component>
-  <component name="ProjectConfigurationFiles">
-    <option name="files">
-      <list>
-        <option value="$PROJECT_DIR$/app/app.iml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_annotations_25_1_0_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_compat_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_ui_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_core_utils_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_fragment_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_media_compat_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_v4_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_github_ChestnutPlus_TestModules_v1_0_16_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_kymjs_rxvolley_rxvolley_1_1_3_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__io_reactivex_rxandroid_1_1_0_aar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__io_reactivex_rxjava_1_1_0_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__junit_junit_4_12_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml" />
-        <option value="$PROJECT_DIR$/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml" />
+        <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" />
       </list>
     </option>
   </component>
   <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="-8" />
-    <option name="y" value="-8" />
-    <option name="width" value="964" />
-    <option name="height" value="784" />
+    <option name="x" value="459" />
+    <option name="y" value="295" />
+    <option name="width" value="1278" />
+    <option name="height" value="728" />
   </component>
   <component name="ProjectView">
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="PackagesPane" />
+      <pane id="Scope" />
       <pane id="AndroidView">
         <subPane>
           <expand>
               <item name="java" 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="java" type="edd41e36:AndroidSourceTypeNode" />
+              <item name="protocol" type="cbb59c9e:AndroidPsiDirectoryNode" />
+              <item name="adapter" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
+              <item name="app" type="feadf853:AndroidModuleNode" />
+              <item name="java" type="edd41e36:AndroidSourceTypeNode" />
+              <item name="protocol" type="cbb59c9e:AndroidPsiDirectoryNode" />
+              <item name="bean" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
+              <item name="app" type="feadf853:AndroidModuleNode" />
+              <item name="java" type="edd41e36:AndroidSourceTypeNode" />
+              <item name="protocol" type="cbb59c9e:AndroidPsiDirectoryNode" />
+              <item name="service" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
+              <item name="app" type="feadf853:AndroidModuleNode" />
+              <item name="java" type="edd41e36:AndroidSourceTypeNode" />
+              <item name="protocol" type="cbb59c9e:AndroidPsiDirectoryNode" />
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
+            </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" />
+            </path>
           </expand>
           <select />
         </subPane>
       </pane>
-      <pane id="Scope" />
       <pane id="ProjectPane" />
+      <pane id="PackagesPane" />
     </panes>
   </component>
   <component name="PropertiesComponent">
-    <property name="android.sdk.path" value="$USER_HOME$/AppData/Local/Android/Sdk" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="DEBUGGABLE_DEVICE" value="sprd-c41_wg-860316001000107" />
+    <property name="DEBUGGABLE_PROCESS" value="com.ic.protocol" />
+    <property name="DEBUGGER_ID" value="Auto" />
+    <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
+    <property name="SHOW_ALL_PROCESSES" value="false" />
+    <property name="android.sdk.path" value="E:/Android/sdk" />
     <property name="not.eligible.for.single.variant.sync" value="true" />
     <property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
   </component>
   </component>
   <component name="TaskManager">
     <task active="true" id="Default" summary="Default task">
-      <changelist id="599052e0-1f19-4d79-9d0b-aecda989d96a" name="Default Changelist" comment="" />
-      <created>1577534766048</created>
+      <changelist id="3cab4ae3-9bca-4cb9-b7a2-2861bcc36b52" name="Default Changelist" comment="" />
+      <created>1577541371535</created>
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
-      <updated>1577534766048</updated>
+      <updated>1577541371535</updated>
     </task>
     <servers />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="1858" height="1096" extended-state="6" />
+    <frame x="-8" y="-8" width="1314" height="784" extended-state="6" />
     <editor active="true" />
     <layout>
-      <window_info active="true" content_ui="combo" id="Project" visible="true" weight="0.3298109" />
-      <window_info id="Structure" side_tool="true" />
-      <window_info id="Build Variants" side_tool="true" />
-      <window_info id="Image Layers" />
-      <window_info id="Designer" />
-      <window_info id="Resources Explorer" />
-      <window_info id="Capture Tool" />
-      <window_info id="Favorites" side_tool="true" />
       <window_info id="Captures" order="0" side_tool="true" weight="0.25" />
-      <window_info anchor="bottom" id="Logcat" />
-      <window_info anchor="bottom" id="Version Control" />
-      <window_info anchor="bottom" id="TODO" />
-      <window_info anchor="bottom" id="Android Profiler" show_stripe_button="false" />
-      <window_info anchor="bottom" id="Terminal" />
-      <window_info anchor="bottom" id="Event Log" side_tool="true" />
-      <window_info anchor="bottom" id="Build" visible="true" weight="0.32952183" />
-      <window_info anchor="right" id="Device File Explorer" side_tool="true" />
-      <window_info anchor="right" id="Capture Analysis" />
-      <window_info anchor="right" id="Gradle" />
-      <window_info anchor="right" id="Theme Preview" />
-      <window_info anchor="right" id="Palette&#9;" />
+      <window_info content_ui="combo" id="Project" order="1" sideWeight="0.49541286" visible="true" weight="0.2200957" />
+      <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="Image Layers" order="5" />
+      <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 active="true" anchor="bottom" id="Debug" order="3" visible="true" weight="0.31029186" />
+      <window_info anchor="bottom" id="Terminal" order="4" weight="0.32872504" />
+      <window_info anchor="bottom" id="Event Log" order="5" side_tool="true" />
+      <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="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" />
     </layout>
   </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java</url>
+          <line>71</line>
+          <properties />
+          <option name="timeStamp" value="2" />
+        </line-breakpoint>
+      </breakpoints>
+    </breakpoint-manager>
+    <watches-manager>
+      <configuration name="app">
+        <watch expression="msg.split(&quot;#&quot;);" language="JAVA" />
+        <watch expression="msg1.split(&quot;#&quot;)" language="JAVA" />
+        <watch expression="msg2.split(&quot;#&quot;);" language="JAVA" />
+        <watch expression="&quot;33&quot;.split(&quot;#&quot;)" language="JAVA" />
+      </configuration>
+    </watches-manager>
+  </component>
+  <component name="debuggerHistoryManager">
+    <expressions id="watch">
+      <expression>
+        <expression-string>&quot;33&quot;.split(&quot;#&quot;)</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
+      <expression>
+        <expression-string>msg1.split(&quot;#&quot;)</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
+      <expression>
+        <expression-string>msg2.split(&quot;#&quot;);</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
+      <expression>
+        <expression-string>msg.split(&quot;#&quot;)</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
+      <expression>
+        <expression-string>msg.split(&quot;#&quot;);</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
+    </expressions>
+  </component>
   <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>
+      </provider>
+    </entry>
+    <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">
+          <caret line="2" column="22" selection-start-line="2" selection-start-column="22" selection-end-line="2" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/stepCounter.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="38">
+          <caret line="2" column="24" selection-start-line="2" selection-start-column="24" selection-end-line="2" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state>
+          <caret lean-forward="true" />
+          <folding>
+            <element signature="e#100#101#0" expanded="true" />
+            <element signature="e#126#127#0" expanded="true" />
+            <element signature="e#494#495#0" expanded="true" />
+            <element signature="e#532#533#0" expanded="true" />
+            <element signature="e#624#625#0" expanded="true" />
+            <element signature="e#656#657#0" expanded="true" />
+            <element signature="e#523#524#0" expanded="true" />
+            <element signature="e#549#550#0" expanded="true" />
+            <element signature="e#632#633#0" expanded="true" />
+            <element signature="e#660#661#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/serverStatus.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="38">
+          <caret line="2" column="25" selection-start-line="2" selection-start-column="25" selection-end-line="2" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/748f0546d5c3c27f1aef07270ffea0c45f0c42a4/rxjava-1.1.0.jar!/rx/functions/Action1.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="19">
+          <caret line="4" lean-forward="true" selection-start-line="4" selection-end-line="4" />
+        </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://$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 relative-caret-position="262">
+          <caret line="43" column="43" selection-start-line="43" selection-start-column="43" selection-end-line="43" selection-end-column="43" />
+        </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/Config.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="142">
+          <caret line="8" column="29" selection-start-line="8" selection-start-column="18" selection-end-line="8" selection-end-column="29" />
+          <folding>
+            <element signature="e#218#219#0" expanded="true" />
+            <element signature="e#249#250#0" expanded="true" />
+            <element signature="e#281#282#0" expanded="true" />
+            <element signature="e#314#315#0" expanded="true" />
+            <element signature="e#353#354#0" expanded="true" />
+            <element signature="e#390#391#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/RxSocket.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="136">
+          <caret line="81" column="56" selection-start-line="81" selection-start-column="36" selection-end-line="81" selection-end-column="56" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
+      <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>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
       <provider editor-type-id="android-manifest" />
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="380">
-          <caret line="71" column="39" lean-forward="true" selection-start-line="71" selection-start-column="39" selection-end-line="71" selection-end-column="39" />
+        <state relative-caret-position="206">
+          <caret line="84" selection-start-line="84" selection-end-line="84" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://E:/Android/sdk/sources/android-25/java/lang/String.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" />
           <folding>
-            <element signature="e#3053#3071#0" expanded="true" />
+            <element signature="e#94423#94424#0" expanded="true" />
+            <element signature="e#94461#94462#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://E:/Android/sdk/sources/android-19/android/app/ActivityThread.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>
+      </provider>
+    </entry>
+    <entry file="file://E:/Android/sdk/sources/android-19/android/os/Handler.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>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
-          <caret column="23" selection-start-column="23" selection-end-column="23" />
+        <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/RxSocket.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/connectionServer.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
-          <caret column="23" selection-start-column="23" selection-end-column="23" />
+        <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">
+      <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>
+      </provider>
+    </entry>
+    <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="66">
+          <caret line="52" column="20" selection-start-line="52" selection-start-column="20" selection-end-line="52" selection-end-column="20" />
+          <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" />
+          </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="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>
+      </provider>
+    </entry>
+    <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="-5811">
+          <caret line="38" column="25" selection-start-line="38" selection-start-column="19" selection-end-line="38" selection-end-column="25" />
+          <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>
-  </component>
-  <component name="masterDetails">
-    <states>
-      <state key="ProjectJDKs.UI">
-        <settings>
-          <last-edited>1.8</last-edited>
-          <splitter-proportions>
-            <option name="proportions">
-              <list>
-                <option value="0.2" />
-              </list>
-            </option>
-          </splitter-proportions>
-        </settings>
-      </state>
-    </states>
   </component>
 </project>
\ No newline at end of file
diff --git a/app/EQC_G5.jks b/app/EQC_G5.jks
new file mode 100644 (file)
index 0000000..2229d46
Binary files /dev/null and b/app/EQC_G5.jks differ
index 2c8e50d..5c2f597 100644 (file)
@@ -85,6 +85,8 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test/runner/0.5/jars" />\r
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/25.1.0/jars" />\r
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/25.1.0/jars" />\r
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/multidex-instrumentation/1.0.1/jars" />\r
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/multidex/1.0.1/jars" />\r
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-compat/25.1.0/jars" />\r
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.1.0/jars" />\r
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.1.0/jars" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />\r
+    <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.android.support:multidex-instrumentation:1.0.1@aar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.android.support.test:rules:0.5@aar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.android.support.test:runner:0.5@aar" level="project" />\r
     <orderEntry type="library" exported="" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />\r
     <orderEntry type="library" exported="" name="Gradle: com.android.support:support-annotations:25.1.0@jar" level="project" />\r
     <orderEntry type="library" exported="" name="Gradle: io.reactivex:rxjava:1.1.0@jar" level="project" />\r
+    <orderEntry type="library" exported="" name="Gradle: com.android.support:multidex:1.0.1@aar" level="project" />\r
     <orderEntry type="library" exported="" name="Gradle: com.android.support:appcompat-v7:25.1.0@aar" level="project" />\r
     <orderEntry type="library" exported="" name="Gradle: com.android.support:support-v4:25.1.0@aar" level="project" />\r
     <orderEntry type="library" exported="" name="Gradle: com.android.support:support-compat:25.1.0@aar" level="project" />\r
index ab03feb..bf2e328 100644 (file)
@@ -1,15 +1,27 @@
 apply plugin: 'com.android.application'
 apply plugin: 'me.tatarka.retrolambda'
+// APK 名称
+static def getApkBaseName() {
+    return "ICSer"
+}
 
 android {
     compileSdkVersion 25
     buildToolsVersion "25.0.1"
+    def currentVersionCode = getVersionCode()
+    def currentVersionName = releaseTime()
     defaultConfig {
-        applicationId "com.hy.RxSocketDemo"
+        applicationId "com.ic.protocol"
         minSdkVersion 19
         targetSdkVersion 25
-        versionCode 1
-        versionName "1.0"
+        versionCode currentVersionCode
+        versionName "${currentVersionName}"
+        multiDexEnabled true
+
+//        buildConfigField "boolean", "DEBUG_MODE", "true"        // 调试版本
+        buildConfigField "boolean", "DEBUG_MODE", "false"
+        // 正式版本
+       
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {
@@ -18,12 +30,39 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
+    signingConfigs {
+        key {
+            storeFile file("EQC_G5.jks")
+            storePassword "123456"
+            keyAlias "watch_g5"
+            keyPassword "123456"
+        }
+    }
+    buildTypes {
+        release {
+            zipAlignEnabled true     // zip 对齐优化
+            shrinkResources true       // 移除未使用的资源文件
+            signingConfig signingConfigs.key
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            renderscriptDebuggable = false
+            debuggable = false
+            jniDebuggable = false
+            manifestPlaceholders = [:]
+        }
+
+        debug {
+            signingConfig signingConfigs.key
+            // 启用 Android 插件压缩器
+//            minifyEnabled true
+//            useProguard false
+        }
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
 }
-
+}
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
@@ -33,3 +72,27 @@ dependencies {
     compile 'com.github.ChestnutPlus:TestModules:v1.0.16'
     testCompile 'junit:junit:4.12'
 }
+def getVersionCode() {
+    def versionCodeFile = file('version_code.properties')
+    if (versionCodeFile.canRead()) {
+        Properties properties = new Properties()
+        properties.load(new FileInputStream(versionCodeFile))
+        def versionCode = properties['VERSION_CODE'].toInteger()//读取version_code.properties文件存放的版本号。
+        def runTasks = gradle.startParameter.taskNames
+        def task = ':app:assembleRelease'
+        if (task in runTasks) {
+            properties['VERSION_CODE'] = (++versionCode).toString()
+            properties.store(versionCodeFile.newWriter(), null)
+        }
+
+        return versionCode
+    } else {
+        throw new GradleException("无法读取version_code.properties文件!")
+    }
+}
+
+def releaseTime() {
+
+    return new Date().format("yyyyMMddHHmm", TimeZone.getTimeZone("GMT+08:00"))
+
+}
\ No newline at end of file
diff --git a/app/see_sha1.bat b/app/see_sha1.bat
new file mode 100644 (file)
index 0000000..2a59867
--- /dev/null
@@ -0,0 +1,9 @@
+@echo off\r
+TITLE ²é¿´Ç©ÃûµÄ sha1\r
+echo ********************************************************\r
+echo Ìáʾ£ºÃÜÔ¿¿â¿ÚÁîÊÇ 123456\r
+echo ********************************************************\r
+echo.\r
+keytool -v -list -keystore EQC_G5.jks\r
+echo ²é¿´Ö¤ÊéÖ¸ÎÆµÄ SHA1 ×Ö¶Î\r
+pause
\ No newline at end of file
index e2b0706..c93f8ac 100644 (file)
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+
+        <service android:name="com.ic.protocol.service.protocolMainServer">   <!--协议通讯服务-->
+            <intent-filter>
+                <action android:name="com.ic.protocol.startsrv" />
+            </intent-filter>
+        </service>
+
     </application>
 
 </manifest>
\ No newline at end of file
index 2c86eff..ea9f7da 100644 (file)
@@ -1,11 +1,15 @@
 package com.ic.protocol;
 
+import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.Toast;
 
+import com.ic.protocol.service.protocolMainServer;
+import com.ic.protocol.utils.RxSocket;
+
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
 
@@ -15,8 +19,7 @@ import rx.schedulers.Schedulers;
 
 public class MainActivity extends AppCompatActivity {
 
-    private Toastc toast = null;
-
+    private protocolMainServer mProtocolMainServer;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -25,120 +28,50 @@ public class MainActivity extends AppCompatActivity {
         Button btnConnect = (Button) findViewById(R.id.btnConnect);
         Button btnDisConnect = (Button) findViewById(R.id.btnDisConnect);
         Button btnWrite = (Button) findViewById(R.id.btnWrite);
-
-        toast = new Toastc(this, Toast.LENGTH_SHORT);
+        Button btnWrite2 = (Button) findViewById(R.id.btnWrite2);
 
         btnConnect.setOnClickListener(clickListener);
         btnDisConnect.setOnClickListener(clickListener);
         btnWrite.setOnClickListener(clickListener);
+        btnWrite2.setOnClickListener(clickListener);
 
-        //监听Socket的收包
-        RxSocket.getInstance().read()
-                .subscribeOn(Schedulers.newThread())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(
-                        bytes -> {
-                            //这里,应该去处理这个消息
-                            LogToast("get Msg :"+new String(bytes)+" (size)" + bytes.length);
-
-                        },
-                        throwable -> {
+        startService(new Intent(this,protocolMainServer.class));// protocol service
+        if (mProtocolMainServer == null ) mProtocolMainServer  = protocolMainServer.getInstance();
 
-                        },
-                        ()->{
-
-                        }
-                );
-
-        //监听Socket的连接状态
-        RxSocket.getInstance().socketStatusListener()
-                .subscribeOn(Schedulers.newThread())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(socketStatus -> {
-                    LogToast("socketStatus:" + socketStatus.name());
-                });
     }
-    /**
-     * 解析域名获取IP数组
-     * @param host
-     * @return
-     */
-    public String parseHostGetIPAddress(String host) {
-        StringBuilder serverip=new StringBuilder("");
-        try {
-            InetAddress[] inetAddressArr = InetAddress.getAllByName(host);
-            if (inetAddressArr != null && inetAddressArr.length > 0) {
-                String[] ipAddressArr = new String[inetAddressArr.length];
 
-                for (int i = 0; i < inetAddressArr.length; i++) {
-                    serverip.append( inetAddressArr[i].getHostAddress());;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        return serverip.toString();
-    }
     private View.OnClickListener clickListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             switch (view.getId()) {
                 case R.id.btnConnect:
                     //进行连接Socket:这里使用的是,在本地上开启了一个服务器。
-                    String serverip= parseHostGetIPAddress("watch.jiai.pro");
-                    RxSocket.getInstance().connectRx(serverip==null?"118.178.155.223":serverip,8090)
-                            .subscribe(
-                                    aBoolean -> {
-                                        LogToast("RxSocket Connect "+aBoolean);
-                                    },
-                                    throwable -> {
-                                        LogToast("RxSocket Connect Error : "+throwable.getMessage());
-                                    },
-                                    () -> {
-
-                                    }
-                            );
+                    if (mProtocolMainServer == null ) mProtocolMainServer  = protocolMainServer.getInstance();
+                    if(mProtocolMainServer !=null)    mProtocolMainServer.connectServer();
                     break;
                 case R.id.btnDisConnect:
                     //断开连接
-                    RxSocket.getInstance().disConnect()
-                            .subscribe(
-                                    aBoolean -> {
-                                        LogToast("RxSocket DisConnect "+aBoolean);
-                                    },
-                                    throwable -> {
-                                        LogToast("RxSocket DisConnect Error : "+throwable.getMessage());
-                                    },
-                                    () -> {
-
-                                    }
-                            );
+                    if (mProtocolMainServer == null ) mProtocolMainServer  = protocolMainServer.getInstance();
+                    if(mProtocolMainServer !=null) mProtocolMainServer.disconnectServer();
                     break;
                 case R.id.btnWrite:
                     //向RxSocket写数据
-                    //示例数据:IWAP00867155030001063#
-                    byte[] test = new String("IWAP00867155030001063#").getBytes();
-                    ByteBuffer byteBuffer = ByteBuffer.wrap(test);
-                    RxSocket.getInstance().write(byteBuffer)
-                            .subscribe(
-                                    aBoolean -> {
-                                        LogToast("RxSocket write "+aBoolean);
-                                    },
-                                    throwable -> {
-                                        LogToast("RxSocket write Error : "+throwable.getMessage());
-                                    },
-                                    () -> {
 
-                                    }
-                            );
+                    if (mProtocolMainServer == null ) mProtocolMainServer  = protocolMainServer.getInstance();
+                    if(mProtocolMainServer !=null) mProtocolMainServer.sendMsg(new String("IWAP00867155030001063#"));
+                    break;
+                case R.id.btnWrite2:
+                    String msg="IWAP00938495856921245#";
+                    String msg1="IWAP0093849566856921245#IWAP0";
+                    String msg2="IWAP00938495856921245#IWAP0093849585692fff5#";
+                    msg.split("#");
+                    msg1.split("#");
+                    msg2.split("#");
+
+
                     break;
             }
         }
     };
 
-    private void LogToast(String msg) {
-        if (msg!=null && msg.length()>0 && toast!=null)
-            toast.setText(msg).show();
-    }
 }
diff --git a/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java b/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java
new file mode 100644 (file)
index 0000000..f8f0854
--- /dev/null
@@ -0,0 +1,282 @@
+package com.ic.protocol.adapter;\r
+\r
+import android.support.annotation.NonNull;\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
+\r
+    private final String CMDHEADER="IW";\r
+    private final String CMDEND="#";\r
+    private final String CMDSPLIT=",";\r
+    public enum CMD_TYPE{\r
+        AP00,\r
+        BP00,\r
+        AP01,\r
+        BP01,\r
+        AP02,\r
+        BP02,\r
+        AP92,\r
+        BP92,\r
+        AP03,\r
+        BP03,\r
+        AP05,\r
+        BP05,\r
+        AP07,\r
+        BP07,\r
+        AP10,\r
+        BP10,\r
+        AP49,\r
+        BP49,\r
+        APTM,\r
+        BPTM,\r
+        AP12,\r
+        BP12,\r
+        AP14,\r
+        BP14,\r
+        AP15,\r
+        BP15,\r
+        AP16,\r
+        BP16,\r
+        AP17,\r
+        BP17,\r
+        AP18,\r
+        BP18,\r
+        AP21,\r
+        BP21,\r
+        AP28,\r
+        BP28,\r
+        AP31,\r
+        BP31,\r
+        AP33,\r
+        BP33,\r
+        APXL,\r
+        BPXL,\r
+        AP84,\r
+        BP84,\r
+        AP85,\r
+        BP85,\r
+        AP86,\r
+        BP86,\r
+        AP89,\r
+        BP89,\r
+        UNKNOWN_CMD,\r
+    }\r
+\r
+    private HashMap<CMD_TYPE,String> cmdMap=null;\r
+\r
+    public protocolAPIHelper(){\r
+\r
+        cmdMap= new HashMap<CMD_TYPE, String>() ;\r
+                cmdMap.put(CMD_TYPE.AP00,"AP00");\r
+                cmdMap.put(CMD_TYPE.BP00,"BP00");\r
+                cmdMap.put(CMD_TYPE.AP01,"AP01");\r
+                cmdMap.put(CMD_TYPE.BP01,"BP01");\r
+                cmdMap.put(CMD_TYPE.AP02,"AP02");\r
+                cmdMap.put(CMD_TYPE.BP02,"BP02");\r
+                cmdMap.put(CMD_TYPE.AP92,"AP92");\r
+                cmdMap.put(CMD_TYPE.BP92,"BP92");\r
+                cmdMap.put(CMD_TYPE.AP03,"AP03");\r
+                cmdMap.put(CMD_TYPE.BP03,"BP03");\r
+                cmdMap.put(CMD_TYPE.AP05,"AP05");\r
+                cmdMap.put(CMD_TYPE.BP05,"BP05");\r
+                cmdMap.put(CMD_TYPE.AP07,"AP07");\r
+                cmdMap.put(CMD_TYPE.BP07,"BP07");\r
+                cmdMap.put(CMD_TYPE.AP10,"AP10");\r
+                cmdMap.put(CMD_TYPE.BP10,"BP10");\r
+                cmdMap.put(CMD_TYPE.AP49,"AP49");\r
+                cmdMap.put(CMD_TYPE.BP49,"BP49");\r
+                cmdMap.put(CMD_TYPE.APTM,"APTM");\r
+                cmdMap.put(CMD_TYPE.BPTM,"BPTM");\r
+                cmdMap.put(CMD_TYPE.AP12,"AP12");\r
+                cmdMap.put(CMD_TYPE.BP12,"BP12");\r
+                cmdMap.put(CMD_TYPE.AP14,"AP14");\r
+                cmdMap.put(CMD_TYPE.BP14,"BP14");\r
+                cmdMap.put(CMD_TYPE.AP15,"AP15");\r
+                cmdMap.put(CMD_TYPE.BP15,"BP15");\r
+                cmdMap.put(CMD_TYPE.AP16,"AP16");\r
+                cmdMap.put(CMD_TYPE.BP16,"BP16");\r
+                cmdMap.put(CMD_TYPE.AP17,"AP17");\r
+                cmdMap.put(CMD_TYPE.BP17,"BP17");\r
+                cmdMap.put(CMD_TYPE.AP18,"AP00");\r
+                cmdMap.put(CMD_TYPE.BP18,"BP18");\r
+                cmdMap.put(CMD_TYPE.AP21,"AP21");\r
+                cmdMap.put(CMD_TYPE.BP21,"BP21");\r
+                cmdMap.put(CMD_TYPE.AP28,"AP28");\r
+                cmdMap.put(CMD_TYPE.BP28,"BP28");\r
+                cmdMap.put(CMD_TYPE.AP31,"AP31");\r
+                cmdMap.put(CMD_TYPE.BP31,"BP31");\r
+                cmdMap.put(CMD_TYPE.AP33,"AP33");\r
+                cmdMap.put(CMD_TYPE.BP33,"BP33");\r
+                cmdMap.put(CMD_TYPE.APXL,"APXL");\r
+                cmdMap.put(CMD_TYPE.BPXL,"BPXL");\r
+                cmdMap.put(CMD_TYPE.AP84,"AP84");\r
+                cmdMap.put(CMD_TYPE.BP84,"BP84");\r
+                cmdMap.put(CMD_TYPE.AP85,"AP85");\r
+                cmdMap.put(CMD_TYPE.BP85,"BP85");\r
+                cmdMap.put(CMD_TYPE.AP86,"AP86");\r
+                cmdMap.put(CMD_TYPE.BP86,"BP86");\r
+                cmdMap.put(CMD_TYPE.AP89,"AP89");\r
+                cmdMap.put(CMD_TYPE.BP89,"BP89");\r
+\r
+    }\r
+\r
+    private StringBuffer cmdbuf=new StringBuffer();\r
+    /*\r
+    输入的字符串,如果有完整命令,返回 true\r
+    否则返回 false\r
+     */\r
+    public boolean isCmdStr(String msg){\r
+        int head_index=msg.indexOf(CMDHEADER);\r
+        if (head_index>=0){\r
+            int end_index=msg.indexOf("#",head_index);\r
+            if (end_index>=0)\r
+            {\r
+                return true;\r
+            }\r
+        }\r
+        return false;\r
+    }\r
+    private void log(String msg) {\r
+        ICLog.log(TAG,msg);\r
+    }\r
+\r
+    private void log(String function,String msg) {\r
+        ICLog.log(TAG,function,msg);\r
+    }\r
+    /*\r
+    返回true 表示 cmd 全部解析成功\r
+    返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用\r
+    字符串通过#号进行识别。\r
+    每个字符串如果发现 #,却又没有Header,“IW”则会被丢弃\r
+     */\r
+    public boolean parserCmd(String cmd_msgbuf){\r
+        boolean iscmdComplete=false;\r
+        boolean ret=true;\r
+        String last_inCompletecmd="";\r
+        cmdbuf.append(cmd_msgbuf);\r
+        /*\r
+        如果不是 #结尾,就认为 接收数据不全,置位。\r
+         */\r
+        if (cmdbuf.toString().endsWith(CMDEND)){\r
+            iscmdComplete=true;\r
+        }\r
+        String [] cmdlist = cmd_msgbuf.split(CMDEND);\r
+        int listlen=cmdlist.length;\r
+        /*\r
+        如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd\r
+         */\r
+        if (cmdlist.length>0 && iscmdComplete==false){\r
+            listlen -=1;\r
+            last_inCompletecmd = cmdlist[listlen];\r
+            log("cmd not complete , "+last_inCompletecmd);\r
+        }\r
+        for (int i = 0; i< listlen ; i++){\r
+            for(CMD_TYPE key: cmdMap.keySet()){\r
+               if ( cmdlist[i].startsWith(CMDHEADER+cmdMap.get(key))){\r
+                log("found cmd keyid=" + key+" ,keyname="+cmdMap.get(key)+" ,  "+cmdlist[i]);\r
+                if(key == CMD_TYPE.BP28){\r
+                    //如果是BP28则 后面的数据是音频,需要保留\r
+                    if ((i+1)<cmdlist.length) {\r
+                        //如果i+1 cmdlist确实在数组范围内,则可以进行数据处理\r
+                        handleCmd(key, cmdlist[i] + "#" + cmdlist[i + 1]);\r
+                        i++;\r
+                    }\r
+\r
+                }else{\r
+                    handleCmd(key,cmdlist[i]);\r
+                }\r
+               }\r
+            }\r
+        }\r
+\r
+        cmdbuf=new StringBuffer().append(last_inCompletecmd);\r
+        return ret;\r
+    }\r
+    public String AP00(deviceStatus ds){\r
+        //示例数据:IWAP00867155030001063#\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.getIMEI()).append(CMDEND).toString();\r
+    }\r
+    public String AP03(deviceStatus 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
+                .append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT)\r
+                .append(ds.getStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString();\r
+    }\r
+\r
+    public String AP28(String name,String msg,int packagecount,int currentpackageindex,int received_success){\r
+        //示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
+                .append(CMDSPLIT).append(name)\r
+                .append(CMDSPLIT).append(msg)\r
+                .append(CMDSPLIT).append(packagecount)\r
+                .append(CMDSPLIT).append(currentpackageindex)\r
+                .append(CMDSPLIT).append(received_success)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+    private boolean handleCmd(CMD_TYPE type,String cmd)\r
+    {\r
+        boolean ret=true;\r
+\r
+        switch (type){\r
+            case BP00:\r
+                handleBP00(cmd);\r
+                break;\r
+            case BP03:\r
+                handleBP03(cmd);\r
+                break;\r
+            case BP28:\r
+                handleBP28(cmd);\r
+                break;\r
+\r
+        }\r
+\r
+\r
+        return ret;\r
+    }\r
+\r
+    //处理 登录 BP00\r
+    private void handleBP00(String cmd){\r
+       String[] msg=cmd.split(CMDSPLIT);\r
+//        get Msg :IWBP00,20191229171933,8# (size)24\r
+//        12-30 01:19:33.861 6492-6492/com.ic.protocol I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 ,  IWBP00,20191229171933,8\r
+\r
+        if (msg.length>=3) {\r
+            log("handleBP00", "Set Datetime " + msg[1]);\r
+            log("handleBP00", "Set TimeZone " + msg[2]);\r
+        }else{\r
+            log("handleBP00","format Error");\r
+        }\r
+    }\r
+\r
+    //处理 心跳 BP03\r
+    private void handleBP03(String cmd){\r
+\r
+    }\r
+    //处理 BP28 语音消息\r
+    private void handleBP28(String cmd) {\r
+        //log("handleBP28 msg"+cmd);\r
+        String[] msg=cmd.split(CMDSPLIT);\r
+        if (msg.length>=7){\r
+            log(msg[1]);\r
+            log(msg[2]);\r
+            log(msg[3]);\r
+            log(msg[4]);\r
+            log(msg[5]);\r
+            log(msg[6]);\r
+            \r
+        }\r
+\r
+    }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/Config.java b/app/src/main/java/com/ic/protocol/bean/Config.java
new file mode 100644 (file)
index 0000000..ee39414
--- /dev/null
@@ -0,0 +1,19 @@
+package com.ic.protocol.bean;\r
+\r
+public class Config {\r
+    private String ServerIP="118.178.155.223";\r
+    private int ServerPort=8090;\r
+    private String ServerHostname="watch.jiai.pro";\r
+\r
+\r
+    public String getServerIP(){\r
+        return ServerIP;\r
+    }\r
+    public int getServerPort(){\r
+        return ServerPort;\r
+    }\r
+    public String getServerHostname(){\r
+        return ServerHostname;\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/deviceStatus.java b/app/src/main/java/com/ic/protocol/bean/deviceStatus.java
new file mode 100644 (file)
index 0000000..379feaa
--- /dev/null
@@ -0,0 +1,59 @@
+package com.ic.protocol.bean;\r
+\r
+public class deviceStatus {\r
+    private String imei="867155030001063";\r
+    private final String UserDebug ="userdebug";\r
+    private final String User ="user";\r
+\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
+    {\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
+    public String getGSMSignal(){\r
+        return "060";\r
+    }\r
+\r
+    public String getGPSLocationStarNums(){\r
+        return "009";\r
+    }\r
+    public String getProtection(){\r
+        return "00";\r
+    }\r
+    public String getWorkMode(){\r
+        return "00";\r
+    }\r
+    public String getStepCount(){\r
+        return "23425";\r
+    }\r
+\r
+    public String getRolltimes(){\r
+        return "00";\r
+    }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java b/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java
new file mode 100644 (file)
index 0000000..12c7ec0
--- /dev/null
@@ -0,0 +1,34 @@
+package com.ic.protocol.bean;\r
+\r
+public class heartRateStatus {\r
+\r
+    private int lastHeartrate;\r
+    private HEARTRATE_WORKINGSTAT currentStat;\r
+    public enum HEARTRATE_WORKINGSTAT {\r
+        HEARTRATE_CLOSED,\r
+        HEARTRATE_OPEN,\r
+        HEARTRATE_NOTWARED,\r
+        HEARTRATE_WARED_AND_TESTING,\r
+        HEARTRATE_TEST_SUCCESS,\r
+        HEARTRATE_TEST_FAILED,\r
+    } ;\r
+\r
+    public boolean isHeartr8ateExists(){\r
+        return true;\r
+    }\r
+\r
+    public HEARTRATE_WORKINGSTAT getHeartrateWorkingStat(){\r
+        return currentStat;\r
+    }\r
+\r
+    public void setHeartrateStat(HEARTRATE_WORKINGSTAT stat){\r
+        currentStat = stat;\r
+    }\r
+    public int getHeartrateData(){\r
+        return lastHeartrate;\r
+    }\r
+\r
+    public void setLastHeartrate(int value){\r
+        lastHeartrate=value;\r
+    }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/location.java b/app/src/main/java/com/ic/protocol/bean/location.java
new file mode 100644 (file)
index 0000000..c905b32
--- /dev/null
@@ -0,0 +1,28 @@
+package com.ic.protocol.bean;\r
+\r
+public class location {\r
+\r
+    private LOCATION_STAT currentStat;\r
+    private LocationPoint currentLP=new LocationPoint();\r
+    public class LocationPoint{\r
+        public double lat;\r
+        public double lon;\r
+    }\r
+    public enum LOCATION_STAT{\r
+        LOCATION_SUCCESS,\r
+        LOCATION_GPS_FAILED,\r
+        LOCATION_WIFI_FAILED,\r
+    }\r
+    public LOCATION_STAT getLocationStat(){\r
+        return currentStat;\r
+    }\r
+\r
+    public LocationPoint  getLocation(){\r
+        return currentLP;\r
+    }\r
+\r
+    public void setLocation(double lat,double lon){\r
+        currentLP.lat=lat;\r
+        currentLP.lon=lon;\r
+    }\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/serverStatus.java b/app/src/main/java/com/ic/protocol/bean/serverStatus.java
new file mode 100644 (file)
index 0000000..9feb076
--- /dev/null
@@ -0,0 +1,4 @@
+package com.ic.protocol.bean;\r
+\r
+public class serverStatus {\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/simStatus.java b/app/src/main/java/com/ic/protocol/bean/simStatus.java
new file mode 100644 (file)
index 0000000..8d5f971
--- /dev/null
@@ -0,0 +1,4 @@
+package com.ic.protocol.bean;\r
+\r
+public class simStatus {\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/bean/stepCounter.java b/app/src/main/java/com/ic/protocol/bean/stepCounter.java
new file mode 100644 (file)
index 0000000..990a921
--- /dev/null
@@ -0,0 +1,4 @@
+package com.ic.protocol.bean;\r
+\r
+public class stepCounter {\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/service/connectionServer.java b/app/src/main/java/com/ic/protocol/service/connectionServer.java
new file mode 100644 (file)
index 0000000..e8d3345
--- /dev/null
@@ -0,0 +1,4 @@
+package com.ic.protocol.service;\r
+\r
+public class connectionServer {\r
+}\r
diff --git a/app/src/main/java/com/ic/protocol/service/protocolMainServer.java b/app/src/main/java/com/ic/protocol/service/protocolMainServer.java
new file mode 100644 (file)
index 0000000..024b8c8
--- /dev/null
@@ -0,0 +1,360 @@
+package com.ic.protocol.service;\r
+\r
+import android.app.Service;\r
+import android.content.Intent;\r
+import android.os.IBinder;\r
+import android.support.annotation.Nullable;\r
+import android.widget.Toast;\r
+\r
+import com.ic.protocol.adapter.protocolAPIHelper;\r
+import com.ic.protocol.bean.Config;\r
+import com.ic.protocol.bean.deviceStatus;\r
+import com.ic.protocol.utils.ICLog;\r
+import com.ic.protocol.utils.RxSocket;\r
+\r
+import java.net.InetAddress;\r
+import java.nio.ByteBuffer;\r
+\r
+import chestnut.ui.Toastc;\r
+import rx.android.schedulers.AndroidSchedulers;\r
+import rx.schedulers.Schedulers;\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.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.Timer;\r
+import java.util.TimerTask;\r
+\r
+public class protocolMainServer extends Service {\r
+    @Nullable\r
+    @Override\r
+    public IBinder onBind(Intent intent) {\r
+        return null;\r
+    }\r
+    private Toastc toast = null;\r
+\r
+    private static protocolMainServer mProtocolServer=null;\r
+\r
+    public boolean isServerConnected(){\r
+        return (RxSocket.getInstance().getSocketStatus()==RxSocket.SocketStatus.CONNECTED)?true:false;\r
+    }\r
+    public boolean sendMsg(String  cmd) {\r
+\r
+\r
+        if(!isServerConnected())\r
+        {\r
+            return false;\r
+        }\r
+                //向RxSocket写数据\r
+        //示例数据:IWAP00867155030001063#\r
+        byte[] test = cmd.getBytes();\r
+        ByteBuffer byteBuffer = ByteBuffer.wrap(test);\r
+        RxSocket.getInstance().write(byteBuffer)\r
+                .subscribe(\r
+                        aBoolean -> {\r
+                            log("RxSocket write " + aBoolean);\r
+                        },\r
+                        throwable -> {\r
+                            log("RxSocket write Error : " + throwable.getMessage());\r
+                        },\r
+                        () -> {\r
+\r
+                        }\r
+                );\r
+        return true;\r
+    }\r
+    public boolean  connectServer(){\r
+\r
+        //进行连接Socket:这里使用的是,在本地上开启了一个服务器。\r
+        String serverip= parseHostGetIPAddress("watch.jiai.pro");\r
+        RxSocket.getInstance().connectRx(serverip==null?"118.178.155.223":serverip,8090)\r
+                .subscribe(\r
+                        aBoolean -> {\r
+                            log("RxSocket Connect "+aBoolean);\r
+                        },\r
+                        throwable -> {\r
+                            log("RxSocket Connect Error : "+throwable.getMessage());\r
+                        },\r
+                        () -> {\r
+\r
+                        }\r
+                );\r
+\r
+\r
+        return true;\r
+    }\r
+\r
+    public boolean disconnectServer(){\r
+\r
+        //断开连接\r
+        RxSocket.getInstance().disConnect()\r
+                .subscribe(\r
+                        aBoolean -> {\r
+                            log("RxSocket DisConnect "+aBoolean);\r
+                        },\r
+                        throwable -> {\r
+                            log("RxSocket DisConnect Error : "+throwable.getMessage());\r
+                        },\r
+                        () -> {\r
+\r
+                        }\r
+                );\r
+\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     * 解析域名获取IP数组\r
+     * @param host\r
+     * @return\r
+     */\r
+    public String parseHostGetIPAddress(String host) {\r
+        StringBuilder serverip=new StringBuilder("");\r
+        try {\r
+            InetAddress[] inetAddressArr = InetAddress.getAllByName(host);\r
+            if (inetAddressArr != null && inetAddressArr.length > 0) {\r
+                String[] ipAddressArr = new String[inetAddressArr.length];\r
+\r
+                for (int i = 0; i < inetAddressArr.length; i++) {\r
+                    serverip.append( inetAddressArr[i].getHostAddress());;\r
+                }\r
+            }\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+            return null;\r
+        }\r
+        return serverip.toString();\r
+    }\r
+\r
+    private void LogToast(String msg) {\r
+//        if (msg!=null && msg.length()>0 && toast!=null)\r
+//            toast.setText(msg).show();\r
+    }\r
+\r
+\r
+     private static final String TAG = "ICSrv." + protocolMainServer.class.getSimpleName();\r
+\r
+    private static boolean mLowPowerMode = false;\r
+    private static boolean mCallStateIsIdle = true;     // 非通话活动\r
+     private TelephonyManager telManager;\r
+    private Timer mTimer_keepalive=null;\r
+\r
+    private Config mConfig=null;\r
+    private deviceStatus mDevStat=null;\r
+    private protocolAPIHelper mProtocolAPI=null;\r
+\r
+    private void log(String msg) {\r
+        ICLog.log(TAG,msg);\r
+    }\r
+\r
+    private void log(String funcName, String msg) {\r
+        ICLog.log(TAG,funcName,msg);\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onCreate() {\r
+\r
+        log("开始监听网络协议状态");\r
+\r
+        IntentFilter intentFilter = new IntentFilter();\r
+        intentFilter.addAction(Intent.ACTION_BATTERY_LOW);       // 低电量提示\r
+        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);   // 低电量变化\r
+        intentFilter.addAction(Intent.ACTION_MANAGE_NETWORK_USAGE);\r
+        try {\r
+            registerReceiver(mIntentReceiver, intentFilter);\r
+        } catch (Exception ignored) {\r
+        }\r
+\r
+\r
+        telManager = (TelephonyManager) getApplicationContext().getSystemService(Service.TELEPHONY_SERVICE);\r
+        assert telManager != null;\r
+//        telManager.listen(mCallStateListener, PhoneStateListener.LISTEN_CALL_STATE);\r
+\r
+\r
+        init_protocols();\r
+\r
+        startTimer();\r
+        mProtocolServer=this;\r
+        super.onCreate();\r
+    }\r
+\r
+    public static protocolMainServer getInstance(){\r
+        return mProtocolServer;\r
+    }\r
+    private void init_protocols(){\r
+\r
+        if (mConfig == null) mConfig = new Config();\r
+        if (mDevStat == null) mDevStat =new deviceStatus();\r
+        if (mProtocolAPI == null) mProtocolAPI = new protocolAPIHelper();\r
+        toast = new Toastc(this, Toast.LENGTH_SHORT);\r
+        //监听Socket的收包\r
+        RxSocket.getInstance().read()\r
+                .subscribeOn(Schedulers.newThread())\r
+                .observeOn(AndroidSchedulers.mainThread())\r
+                .subscribe(\r
+                        bytes -> {\r
+                            //这里,应该去处理这个消息\r
+                            String msg=new String(bytes);\r
+                            log("get Msg :"+msg+" (size)" + bytes.length);\r
+                            mProtocolAPI.parserCmd(msg);\r
+                        },\r
+                        throwable -> {\r
+\r
+                        },\r
+                        ()->{\r
+\r
+                        }\r
+                );\r
+\r
+        //监听Socket的连接状态\r
+        RxSocket.getInstance().socketStatusListener()\r
+                .subscribeOn(Schedulers.newThread())\r
+                .observeOn(AndroidSchedulers.mainThread())\r
+                .subscribe(socketStatus -> {\r
+                    log("socketStatus:" + socketStatus.name());\r
+                });\r
+    }\r
+\r
+    private void startTimer(){\r
+        if (mTimer_keepalive == null) {\r
+            mTimer_keepalive = new Timer();\r
+        }\r
+\r
+        if (mTimer_keepalive !=null){\r
+            mTimer_keepalive.schedule(new TimerTask() {\r
+                @Override\r
+                public void run() {\r
+                    do_timer_task();\r
+                }\r
+            },0,20000);\r
+        }\r
+    }\r
+\r
+    public void do_timer_task(){\r
+\r
+        if(!isServerConnected()) {\r
+            connectServer();\r
+        }\r
+        if( needLogin()){\r
+            log("do_timer_task send cmd "+ mProtocolAPI.AP00(mDevStat));\r
+//        Handler callbackHandler=new Handler();\r
+            String serverip = parseHostGetIPAddress(mConfig.getServerHostname());\r
+            log("getip  "+mConfig.getServerHostname()+"  "+serverip);\r
+//        mConfig.setServerIP(serverip);\r
+//        mConfig.setServerPort(8090);\r
+            sendMsg(mProtocolAPI.AP00(mDevStat));\r
+\r
+\r
+        }\r
+        log("do_timer_task send cmd "+ mProtocolAPI.AP03(mDevStat));\r
+        sendMsg(mProtocolAPI.AP03(mDevStat));\r
+\r
+    }\r
+    private void stopTimer(){\r
+        if (mTimer_keepalive !=null){\r
+            mTimer_keepalive.cancel();\r
+            mTimer_keepalive = null;\r
+        }\r
+    }\r
+\r
+    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
+    @Override\r
+    public void onDestroy() {\r
+        super.onDestroy();\r
+        try {\r
+            unregisterReceiver(mIntentReceiver);\r
+        } catch (Exception ignored) {\r
+        }\r
+    }\r
+\r
+    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {\r
+        @Override\r
+        public void onReceive(Context context, Intent intent) {\r
+            String action = intent.getAction();\r
+            boolean lastIsLowPowerMode = isLowPowerMode();\r
+            log("mIntentReceiver,onReceive", "START");\r
+            log("mIntentReceiver,onReceive", "action: " + action\r
+                    + ", mCallStateIsIdle: " + mCallStateIsIdle);\r
+\r
+            setLowPowerMode(false);\r
+            if (!inCall() && action != null) { // 非通话活动\r
+                boolean currLowPowerMode = false;\r
+                if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {\r
+                    int rawLevel = intent.getIntExtra("level", -1);\r
+                    int scale = intent.getIntExtra("scale", -1);\r
+                    int status = intent.getIntExtra("status", -1);\r
+                    int level = -1; // percentage, or -1 for unknown\r
+\r
+                    if (status != BatteryManager.BATTERY_STATUS_CHARGING) {  // 非充电状态\r
+                        if (rawLevel >= 0 && scale > 0) {\r
+                            level = (rawLevel * 100) / scale;\r
+                            currLowPowerMode = isLowPower(level);\r
+                            log("mIntentReceiver,onReceive", "level: " + level);\r
+                        }\r
+                    }\r
+                } else if (action.equals(Intent.ACTION_BATTERY_LOW)) {\r
+                    log("mIntentReceiver,onReceive", "ACTION_BATTERY_LOW");\r
+                    currLowPowerMode = true;\r
+                }\r
+\r
+                // 只在状态改变时激活桌面\r
+                boolean needActivateLauncher = (currLowPowerMode != lastIsLowPowerMode);\r
+                log("mIntentReceiver,onReceive",\r
+                        "lastIsLowPowerMode:" + lastIsLowPowerMode +\r
+                                "currLowPowerMode:" + currLowPowerMode +\r
+                                ", needActivateLauncher:" + needActivateLauncher);\r
+\r
+                setLowPowerMode(currLowPowerMode);\r
+\r
+\r
+                if (needActivateLauncher) {\r
+                    log("低电量,进入协议省电模式!");\r
+                }\r
+\r
+            }\r
+            log("mIntentReceiver,onReceive", "END");\r
+        }\r
+    };\r
+\r
+    public boolean isLowPowerMode() {\r
+        log("isLowPowerMode", "" + mLowPowerMode);\r
+        return mLowPowerMode;\r
+    }\r
+\r
+    /**\r
+     * 根据电量,判断是否是低电量\r
+     *\r
+     * @param level\r
+     * @return\r
+     */\r
+    public static boolean isLowPower(int level) {\r
+        return (level <= 15);\r
+    }\r
+\r
+    public void setLowPowerMode(boolean v) {\r
+        log("setLowPowerMode", "" + v);\r
+        mLowPowerMode = v;\r
+    }\r
+\r
+    private boolean inCall() {\r
+//        return telManager.getCallState() != TelephonyManager.CALL_STATE_IDLE;\r
+        return false;\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
new file mode 100644 (file)
index 0000000..86d7153
--- /dev/null
@@ -0,0 +1,22 @@
+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
+\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
@@ -1,4 +1,4 @@
-package com.ic.protocol;
+package com.ic.protocol.utils;
 
 import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
index b6352a8..b2ccdf0 100644 (file)
@@ -8,7 +8,7 @@
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context="com.hy.RxSocketDemo.MainActivity">
+    tools:context="com.ic.protocol.MainActivity">
 
     <Button
         android:id="@+id/btnConnect"
         android:layout_alignEnd="@+id/btnConnect"
         android:layout_marginTop="5dp"
         android:text="write" />
+
+    <Button
+        android:id="@+id/btnWrite2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/btnWrite"
+        android:layout_alignEnd="@+id/btnConnect"
+        android:layout_marginTop="5dp"
+        android:text="write" />
 </RelativeLayout>
index 28b9094..e301974 100644 (file)
@@ -1,3 +1,3 @@
 <resources>
-    <string name="app_name">RxSocketDemo</string>
+    <string name="app_name">ICProtocolServer</string>
 </resources>
diff --git a/app/version_code.properties b/app/version_code.properties
new file mode 100644 (file)
index 0000000..21a7b4b
--- /dev/null
@@ -0,0 +1,2 @@
+#Thu Dec 19 12:42:40 CST 2019\r
+VERSION_CODE=101\r
diff --git a/build/intermediates/proguard-files/proguard-android-optimize.txt-2.2.2 b/build/intermediates/proguard-files/proguard-android-optimize.txt-2.2.2
new file mode 100644 (file)
index 0000000..f642ff3
--- /dev/null
@@ -0,0 +1,96 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+#
+# Optimizations: If you don't want to optimize, use the
+# proguard-android.txt configuration file instead of this one, which
+# turns off the optimization flags.  Adding optimization introduces
+# certain risks, since for example not all optimizations performed by
+# ProGuard works on all versions of Dalvik.  The following flags turn
+# off various optimizations known to have issues, but the list may not
+# be complete or up to date. (The "arithmetic" optimization can be
+# used if you are only targeting Android 2.0 or later.)  Make sure you
+# test thoroughly if you go this route.
+-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
+-optimizationpasses 5
+-allowaccessmodification
+-dontpreverify
+
+# The remainder of this file is identical to the non-optimized version
+# of the Proguard configuration file (except that the other file has
+# flags to turn off optimization).
+
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-verbose
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+    void set*(***);
+    *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+    public void *(android.view.View);
+}
+
+# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+    public static final ** CREATOR;
+}
+
+-keepclassmembers class **.R$* {
+    public static <fields>;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+    @android.webkit.JavascriptInterface <methods>;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontwarn android.support.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <methods>;
+}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <fields>;
+}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <init>(...);
+}
diff --git a/build/intermediates/proguard-files/proguard-android.txt-2.2.2 b/build/intermediates/proguard-files/proguard-android.txt-2.2.2
new file mode 100644 (file)
index 0000000..ae8f935
--- /dev/null
@@ -0,0 +1,89 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-verbose
+
+# Optimization is turned off by default. Dex does not like code run
+# through the ProGuard optimize and preverify steps (and performs some
+# of these optimizations on its own).
+-dontoptimize
+-dontpreverify
+# Note that if you want to enable optimization, you cannot just
+# include optimization flags in your own project configuration file;
+# instead you will need to point to the
+# "proguard-android-optimize.txt" file instead of this one from your
+# project.properties file.
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+    void set*(***);
+    *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+    public void *(android.view.View);
+}
+
+# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+    public static final ** CREATOR;
+}
+
+-keepclassmembers class **.R$* {
+    public static <fields>;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+    @android.webkit.JavascriptInterface <methods>;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontwarn android.support.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <methods>;
+}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <fields>;
+}
+
+-keepclasseswithmembers class * {
+    @android.support.annotation.Keep <init>(...);
+}
index 0492c5c..218212a 100644 (file)
@@ -12,7 +12,6 @@
     <exclude-output />\r
     <content url="file://$MODULE_DIR$">\r
       <excludeFolder url="file://$MODULE_DIR$/.gradle" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build" />\r
     </content>\r
     <orderEntry type="jdk" jdkName="JDK" jdkType="JavaSDK" />\r
     <orderEntry type="sourceFolder" forTests="false" />\r
index 3cf5e36..d6723e0 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 19:37:48 CST 2019\r
-sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk\r
+#Sat Dec 28 21:56:10 CST 2019\r
+sdk.dir=E\:\\Android\\sdk\r