--- /dev/null
+<?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
<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
<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
<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
--- /dev/null
+<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
--- /dev/null
+<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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<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>","</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	" />
+ <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	" 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("#");" language="JAVA" />
+ <watch expression="msg1.split("#")" language="JAVA" />
+ <watch expression="msg2.split("#");" language="JAVA" />
+ <watch expression=""33".split("#")" language="JAVA" />
+ </configuration>
+ </watches-manager>
+ </component>
+ <component name="debuggerHistoryManager">
+ <expressions id="watch">
+ <expression>
+ <expression-string>"33".split("#")</expression-string>
+ <language-id>JAVA</language-id>
+ <evaluation-mode>EXPRESSION</evaluation-mode>
+ </expression>
+ <expression>
+ <expression-string>msg1.split("#")</expression-string>
+ <language-id>JAVA</language-id>
+ <evaluation-mode>EXPRESSION</evaluation-mode>
+ </expression>
+ <expression>
+ <expression-string>msg2.split("#");</expression-string>
+ <language-id>JAVA</language-id>
+ <evaluation-mode>EXPRESSION</evaluation-mode>
+ </expression>
+ <expression>
+ <expression-string>msg.split("#")</expression-string>
+ <language-id>JAVA</language-id>
+ <evaluation-mode>EXPRESSION</evaluation-mode>
+ </expression>
+ <expression>
+ <expression-string>msg.split("#");</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
<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
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 {
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', {
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
--- /dev/null
+@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
<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
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;
public class MainActivity extends AppCompatActivity {
- private Toastc toast = null;
-
+ private protocolMainServer mProtocolMainServer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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();
- }
}
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+package com.ic.protocol.bean;\r
+\r
+public class serverStatus {\r
+}\r
--- /dev/null
+package com.ic.protocol.bean;\r
+\r
+public class simStatus {\r
+}\r
--- /dev/null
+package com.ic.protocol.bean;\r
+\r
+public class stepCounter {\r
+}\r
--- /dev/null
+package com.ic.protocol.service;\r
+\r
+public class connectionServer {\r
+}\r
--- /dev/null
+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
--- /dev/null
+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
-package com.ic.protocol;
+package com.ic.protocol.utils;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
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>
<resources>
- <string name="app_name">RxSocketDemo</string>
+ <string name="app_name">ICProtocolServer</string>
</resources>
--- /dev/null
+#Thu Dec 19 12:42:40 CST 2019\r
+VERSION_CODE=101\r
--- /dev/null
+# 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>(...);
+}
--- /dev/null
+# 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>(...);
+}
<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
# 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