update socket and alarm timer work now
authorsnickersun <scy@incartech.cn>
Mon, 6 Jan 2020 15:20:53 +0000 (23:20 +0800)
committersnickersun <scy@incartech.cn>
Mon, 6 Jan 2020 15:20:53 +0000 (23:20 +0800)
28 files changed:
.gradle/2.14.1/taskArtifacts/cache.properties.lock
.gradle/2.14.1/taskArtifacts/fileHashes.bin
.gradle/2.14.1/taskArtifacts/fileSnapshots.bin
.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin
.gradle/2.14.1/taskArtifacts/taskArtifacts.bin
.idea/caches/build_file_checksums.ser
.idea/workspace.xml
app/src/main/java/com/ic/protocol/LocationClient.java
app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java
app/src/main/java/com/ic/protocol/bean/Runtime.java
app/src/main/java/com/ic/protocol/bean/heartRateStatus.java
app/src/main/java/com/ic/protocol/service/CheckSIM.java
app/src/main/java/com/ic/protocol/service/Deliver.java
app/src/main/java/com/ic/protocol/service/Initialize.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/KeepAlive.java
app/src/main/java/com/ic/protocol/service/SynchronousTime.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/service/protocolMainServer.java
app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java
app/src/main/java/com/ic/protocol/utils/CameraUtil.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/ContextProxy.java
app/src/main/java/com/ic/protocol/utils/CustomDialog.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/CustomNotification.java [new file with mode: 0644]
app/src/main/java/com/ic/protocol/utils/Logger.java
app/src/main/java/com/ic/protocol/utils/NettyConnection.java
app/src/main/java/com/ic/protocol/utils/NetworkObservable.java
app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java
app/src/main/java/com/ic/protocol/utils/RxSocket.java
library/build.gradle

index ed0f7ca..9bcadf1 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/cache.properties.lock and b/.gradle/2.14.1/taskArtifacts/cache.properties.lock differ
index fe6475d..81625ae 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileHashes.bin and b/.gradle/2.14.1/taskArtifacts/fileHashes.bin differ
index 605fd46..15aca6f 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin differ
index b97dc26..67abdd2 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin and b/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin differ
index 151ad46..92ed880 100644 (file)
Binary files a/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin and b/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin differ
index c2eb294..39c32a6 100644 (file)
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
index 01406ff..1bc2e43 100644 (file)
     <option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="3cab4ae3-9bca-4cb9-b7a2-2861bcc36b52" name="Default Changelist" comment="">
+    <list default="true" id="3cab4ae3-9bca-4cb9-b7a2-2861bcc36b52" name="Default Changelist" comment="20200104">
       <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/gradle.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/gradle.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Gradle____local_jars___E__android_workspace_icsupport_app_libs_okio_2_4_3_jar_unspecified_jar.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_okio_2_4_3_jar_unspecified_jar.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/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.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/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/ICContentProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICContentProvider.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java" 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/adapter/LBSHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/AudioService.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/AudioService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ContextProxy.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ContextProxy.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Logger.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Logger.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java" 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" />
-      <change beforePath="$PROJECT_DIR$/okio/okio.iml" beforeDir="false" afterPath="$PROJECT_DIR$/okio/okio.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/settings.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/settings.gradle" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/RxSocket.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/RxSocket.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/library/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/library/build.gradle" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/StringMessage.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-209">
-              <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="3459">
-              <caret line="480" column="55" selection-start-line="480" selection-start-column="55" selection-end-line="480" selection-end-column="55" />
+            <state relative-caret-position="205">
+              <caret line="187" column="33" lean-forward="true" selection-start-line="187" selection-start-column="33" selection-end-line="187" selection-end-column="33" />
               <folding>
-                <element signature="e#7211#8727#0" expanded="true" />
-                <element signature="e#8726#8727#0" expanded="true" />
-                <element signature="e#28402#28403#0" expanded="true" />
-                <element signature="e#28499#28500#0" expanded="true" />
-                <element signature="e#29332#29333#0" expanded="true" />
-                <element signature="e#29370#29371#0" expanded="true" />
-                <element signature="e#32566#32567#0" expanded="true" />
-                <element signature="e#32593#32594#0" expanded="true" />
-                <element signature="e#35757#35758#0" expanded="true" />
+                <element signature="e#4682#4683#0" expanded="true" />
+                <element signature="e#4771#4772#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/Context.class">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/SynchronousTime.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-114">
-              <caret line="50" column="28" selection-start-line="50" selection-start-column="28" selection-end-line="50" selection-end-column="28" />
+            <state relative-caret-position="130">
+              <caret line="44" column="3" selection-start-line="44" selection-start-column="3" selection-end-line="46" selection-end-column="48" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/Service.class">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="190">
-              <caret line="20" column="44" selection-start-line="20" selection-start-column="28" selection-end-line="20" selection-end-column="44" />
+            <state relative-caret-position="24">
+              <caret line="579" column="25" selection-start-line="579" selection-start-column="25" selection-end-line="579" selection-end-column="25" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Alarm.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Initialize.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="38">
-              <caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
+            <state relative-caret-position="471">
+              <caret line="72" column="75" lean-forward="true" selection-start-line="72" selection-start-column="75" selection-end-line="72" selection-end-column="75" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.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="133">
-              <caret line="12" column="36" selection-start-line="12" selection-start-column="36" selection-end-line="12" selection-end-column="36" />
+            <state relative-caret-position="228">
+              <caret line="581" column="50" selection-start-line="581" selection-start-column="50" selection-end-line="581" selection-end-column="50" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java">
+        <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="229">
-              <caret line="255" column="7" lean-forward="true" selection-start-line="255" selection-start-column="7" selection-end-line="255" selection-end-column="7" />
-              <folding>
-                <element signature="imports" expanded="true" />
-              </folding>
+            <state relative-caret-position="258">
+              <caret line="140" column="88" selection-start-line="140" selection-start-column="88" selection-end-line="140" selection-end-column="88" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="513">
-              <caret line="32" column="2" selection-start-line="32" selection-start-column="2" selection-end-line="32" selection-end-column="2" />
+            <state relative-caret-position="177">
+              <caret line="50" column="43" selection-start-line="50" selection-start-column="43" selection-end-line="50" selection-end-column="43" />
+              <folding>
+                <element signature="e#17063#17104#0" expanded="true" />
+                <element signature="e#17243#17284#0" expanded="true" />
+                <element signature="e#17375#17416#0" expanded="true" />
+                <element signature="e#17510#17551#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomDialog.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="143">
-              <caret line="43" column="24" selection-start-line="43" selection-start-column="24" selection-end-line="43" selection-end-column="24" />
+            <state relative-caret-position="228">
+              <caret line="119" column="21" selection-start-line="119" selection-start-column="21" selection-end-line="119" selection-end-column="21" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java">
+        <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomNotification.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-1627">
-              <caret line="120" column="41" selection-start-line="120" selection-start-column="41" selection-end-line="120" selection-end-column="41" />
+            <state relative-caret-position="2033">
+              <caret line="107" column="42" lean-forward="true" selection-start-line="86" selection-start-column="8" selection-end-line="107" selection-end-column="42" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>FLAG_UPDATE_CURRENT</find>
-      <find>sc</find>
-      <find>134217728</find>
-      <find>EqcAlgorithmInterfaceMethod1</find>
-      <find>waitForWifiListReply</find>
-      <find>268435456</find>
-      <find>simState</find>
-      <find>PassData</find>
-      <find>setSignalStrength</find>
-      <find>268435462</find>
-      <find>getInstance</find>
-      <find>getStatusBarIconState</find>
-      <find>isscre</find>
-      <find>cachedir</find>
-      <find>getExternalCacheDir</find>
-      <find>NetworkObservable</find>
-      <find>setHostAndPort</find>
-      <find>port</find>
-      <find>connectServer</find>
-      <find>MyThread2</find>
-      <find>is_allowed_in_sleep_mode</find>
-      <find>onHeartAlarm</find>
-      <find>LocationClient</find>
-      <find>rx</find>
-      <find>queue</find>
-      <find>onStartCommand</find>
+      <find>ACTION_ALARM</find>
+      <find>heart</find>
+      <find>isHeartrRateExists</find>
       <find>ACTION_EQC_ALARM</find>
-      <find>newAPi</find>
-      <find>send_at_to_update_lbs</find>
-      <find>cmcm_call_eiot_into_powersave_mode</find>
+      <find>mProtocolAPI</find>
+      <find>AP00</find>
+      <find>strncpy</find>
+      <find>Echo</find>
+      <find>message</find>
+      <find>new_socket</find>
+      <find>send</find>
+      <find>mDeliver</find>
+      <find>setHeartAlarm</find>
+      <find>ACTION_STEP_COUNT_ALARM</find>
+      <find>SLEEP_ALARM</find>
+      <find>WAKE_ALARM</find>
+      <find>setAlarm</find>
+      <find>YUN_ALARM_CHANGE</find>
+      <find>SimSignalUtil</find>
+      <find>queue</find>
+      <find>SocketStatus</find>
+      <find>socketStatusListener</find>
+      <find>Stat</find>
+      <find>ProcessReceiver</find>
+      <find>CustomNotification</find>
+      <find>setWakeupAlarm</find>
+      <find>Open</find>
+      <find>ALARM</find>
+      <find>setExact</find>
+      <find>status</find>
     </findStrings>
     <replaceStrings>
       <replace>CMDSPLIT</replace>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <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/java/com/ic/protocol/bean/Config.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Update.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/VoiceContent.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ParseUpdate.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/PassData.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/AudioService.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java" />
-        <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/BootCompleteReceiver.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/CrashHandler.java" />
         <option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
         <option value="$PROJECT_DIR$/library/src/main/java/com/eiot/watch_lib/LauncherCtrl.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICContentProvider.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java" />
-        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java" />
+        <option value="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.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/adapter/protocolAPIHelper.java" />
         <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ContextProxy.java" />
+        <option value="D:/incar/Downloads/test_srv.c" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Initialize.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java" />
+        <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/utils/Logger.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomNotification.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CameraUtil.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomDialog.java" />
+        <option value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.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/service/SynchronousTime.java" />
       </list>
     </option>
   </component>
   <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="459" />
-    <option name="y" value="295" />
+    <option name="x" value="521" />
+    <option name="y" value="34" />
     <option name="width" value="1278" />
     <option name="height" value="728" />
   </component>
               <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="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="values" type="ddeffd01:AndroidResFolderTypeNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="library" type="feadf853:AndroidModuleNode" />
-            </path>
             <path>
               <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
               <item name="library" type="feadf853:AndroidModuleNode" />
-              <item name="java" type="edd41e36:AndroidSourceTypeNode" />
-            </path>
-            <path>
-              <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
-              <item name="library" type="feadf853:AndroidModuleNode" />
-              <item name="java" type="edd41e36:AndroidSourceTypeNode" />
-              <item name="watch_lib" type="cbb59c9e:AndroidPsiDirectoryNode" />
             </path>
             <path>
               <item name="icsupport" type="1abcf292:AndroidViewProjectNode" />
     <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="last_opened_file_path" value="$PROJECT_DIR$/../eqclauncher/library" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils" />
     <property name="not.eligible.for.single.variant.sync" value="true" />
     <property name="project.structure.last.edited" value="Dependencies" />
     <property name="project.structure.proportion" value="0.17" />
     <property name="project.structure.side.proportion" value="0.2" />
     <property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
   </component>
+  <component name="PsdUISettings">
+    <option name="LAST_EDITED_BUILD_TYPE" value="release" />
+  </component>
   <component name="RecentsManager">
     <key name="CopyClassDialog.RECENTS_KEY">
-      <recent name="com.ic.protocol" />
       <recent name="com.ic.protocol.utils" />
+      <recent name="com.ic.protocol.service" />
+      <recent name="com.ic.protocol" />
     </key>
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\workspace\icsupport\app\src\main\java\com\ic\protocol\utils" />
       <recent name="D:\workspace\icsupport\app" />
       <recent name="D:\workspace\icsupport\app\src\main\java\com\ic\protocol" />
       <recent name="E:\android_workspace\icsupport\app\src\main\java\com\ic\protocol\bean" />
       <recent name="E:\android_workspace\icsupport\app\src\main\java\com\ic\protocol\service" />
-      <recent name="E:\android_workspace\icsupport\app\src\main\java\com\ic\protocol" />
     </key>
   </component>
   <component name="RunDashboard">
   </component>
   <component name="ToolWindowManager">
     <frame x="-8" y="-8" width="1858" height="1096" extended-state="6" />
+    <editor active="true" />
     <layout>
-      <window_info id="Captures" order="0" side_tool="true" weight="0.25" />
-      <window_info content_ui="combo" id="Project" order="1" sideWeight="0.49541286" visible="true" weight="0.22135706" />
+      <window_info id="Captures" order="0" sideWeight="0.50390625" side_tool="true" visible="true" weight="0.19299221" />
+      <window_info content_ui="combo" id="Project" order="1" sideWeight="0.49609375" visible="true" weight="0.19299221" />
       <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="Resources Explorer" order="7" />
       <window_info id="Capture Tool" order="8" />
       <window_info anchor="bottom" id="Run" order="0" />
-      <window_info active="true" anchor="bottom" id="Logcat" order="1" visible="true" weight="0.52286905" />
-      <window_info anchor="bottom" id="TODO" order="2" weight="0.32917964" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.2765073" />
+      <window_info active="true" anchor="bottom" id="Logcat" order="1" visible="true" weight="0.46777546" />
+      <window_info anchor="bottom" id="TODO" order="2" weight="0.32848233" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.42099792" />
       <window_info anchor="bottom" id="Terminal" order="4" weight="0.32744282" />
       <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="Version Control" order="6" weight="0.32952183" />
       <window_info anchor="bottom" id="Build" order="7" weight="0.32952183" />
       <window_info anchor="bottom" id="Android Profiler" order="8" />
-      <window_info anchor="bottom" id="Find" order="9" weight="0.4864865" />
+      <window_info anchor="bottom" id="Find" order="9" weight="0.35862786" />
       <window_info anchor="right" id="Capture Analysis" order="0" />
       <window_info anchor="right" id="Gradle" order="1" weight="0.3293461" />
       <window_info anchor="right" id="Theme Preview" order="2" />
           <properties />
           <option name="timeStamp" value="2" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java</url>
+          <line>298</line>
+          <properties />
+          <option name="timeStamp" value="41" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java</url>
+          <line>301</line>
+          <properties />
+          <option name="timeStamp" value="44" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java</url>
+          <line>300</line>
+          <properties />
+          <option name="timeStamp" value="45" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java</url>
+          <line>25</line>
+          <properties />
+          <option name="timeStamp" value="46" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java</url>
+          <line>129</line>
+          <properties />
+          <option name="timeStamp" value="47" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java</url>
+          <line>128</line>
+          <properties />
+          <option name="timeStamp" value="48" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java</url>
+          <line>124</line>
+          <properties />
+          <option name="timeStamp" value="49" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Initialize.java</url>
+          <line>73</line>
+          <properties />
+          <option name="timeStamp" value="50" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Initialize.java</url>
+          <line>72</line>
+          <properties />
+          <option name="timeStamp" value="52" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
   </component>
   <component name="debuggerHistoryManager">
     <expressions id="watch">
+      <expression>
+        <expression-string>Build.VERSION.SDK_INT &gt;= 19</expression-string>
+        <language-id>JAVA</language-id>
+        <evaluation-mode>EXPRESSION</evaluation-mode>
+      </expression>
       <expression>
         <expression-string>&quot;33&quot;.split(&quot;#&quot;)</expression-string>
         <language-id>JAVA</language-id>
     </expressions>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-2570">
-          <caret line="18" column="39" selection-start-line="18" selection-start-column="39" selection-end-line="18" selection-end-column="39" />
-          <folding>
-            <element signature="e#5048#5049#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="249">
+          <caret line="30" column="21" selection-start-line="30" selection-start-column="21" selection-end-line="30" selection-end-column="21" />
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-25/android/provider/Settings.java" />
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/FileCache.java">
+    <entry file="file://$PROJECT_DIR$/app/build.gradle">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="205">
-          <caret line="63" column="16" selection-start-line="63" selection-start-column="16" selection-end-line="63" selection-end-column="16" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state relative-caret-position="171">
+          <caret line="9" column="30" lean-forward="true" selection-start-line="9" selection-start-column="30" selection-end-line="9" selection-end-column="30" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/Service.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="190">
+          <caret line="20" column="44" selection-start-line="20" selection-start-column="28" selection-end-line="20" selection-end-column="44" />
         </state>
       </provider>
     </entry>
-    <entry file="file://E:/Android/sdk/sources/android-25/android/app/PendingIntent.java" />
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Update.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/BootCompleteReceiver.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="447">
-          <caret line="247" column="30" selection-start-line="247" selection-start-column="30" selection-end-line="247" selection-end-column="30" />
+        <state relative-caret-position="228">
+          <caret line="12" column="3" lean-forward="true" selection-start-line="12" selection-start-column="3" selection-end-line="12" selection-end-column="3" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/VoiceContent.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/net/NetworkInfo.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="465">
-          <caret line="38" selection-start-line="38" selection-end-line="38" />
+        <state relative-caret-position="143">
+          <caret line="42" column="19" selection-start-line="42" selection-start-column="19" selection-end-line="42" selection-end-column="19" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#961#962#0" expanded="true" />
+            <element signature="e#1012#1013#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/Intent.class">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="158">
-          <caret line="283" column="50" selection-start-line="283" selection-start-column="28" selection-end-line="283" selection-end-column="50" />
+        <state relative-caret-position="230">
+          <caret line="250" column="62" lean-forward="true" selection-start-line="250" selection-start-column="62" selection-end-line="250" selection-end-column="62" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/java/lang/String.class">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/Context.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2109">
-          <caret line="170" column="15" selection-start-line="170" selection-start-column="15" selection-end-line="170" selection-end-column="15" />
-          <folding>
-            <element signature="e#4574#4575#0" expanded="true" />
-            <element signature="e#4625#4626#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="-114">
+          <caret line="50" column="28" selection-start-line="50" selection-start-column="28" selection-end-line="50" selection-end-column="28" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/PassData.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Config.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="475">
-          <caret line="25" column="10" selection-start-line="25" selection-start-column="10" selection-end-line="25" selection-end-column="10" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state relative-caret-position="38">
+          <caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ParseUpdate.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ConnectionListener.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="231">
-          <caret line="323" column="13" lean-forward="true" selection-start-line="323" selection-start-column="13" selection-end-line="323" selection-end-column="13" />
+        <state relative-caret-position="95">
+          <caret line="5" column="35" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="493">
+          <caret line="601" column="8" selection-start-line="601" selection-start-column="8" selection-end-line="601" selection-end-column="8" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/base/AbstractInvokeHandlerService.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/ContextWrapper.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="152">
-          <caret line="12" column="4" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="4" />
+        <state relative-caret-position="222">
+          <caret line="368" column="18" selection-start-line="368" selection-start-column="18" selection-end-line="368" selection-end-column="18" />
+          <folding>
+            <element signature="e#10776#10777#0" expanded="true" />
+            <element signature="e#10827#10828#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/Intent.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="87">
-          <caret line="68" column="19" selection-start-line="68" selection-start-column="19" selection-end-line="68" selection-end-column="19" />
+        <state relative-caret-position="195">
+          <caret line="576" column="18" selection-start-line="576" selection-start-column="18" selection-end-line="576" selection-end-column="18" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#25167#25168#0" expanded="true" />
+            <element signature="e#25218#25219#0" expanded="true" />
+            <element signature="e#31946#31947#0" expanded="true" />
+            <element signature="e#31997#31998#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/AudioService.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/PendingIntent.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="136">
-          <caret line="85" column="33" selection-start-line="85" selection-start-column="33" selection-end-line="85" selection-end-column="33" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state relative-caret-position="222">
+          <caret line="50" column="32" selection-start-line="50" selection-start-column="32" selection-end-line="50" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml">
-      <provider editor-type-id="android-manifest" />
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/AlarmManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="378">
-          <caret line="134" selection-start-line="134" selection-end-line="134" />
+        <state relative-caret-position="222">
+          <caret line="48" column="16" selection-start-line="48" selection-start-column="16" selection-end-line="48" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/os/PowerManager.class">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/heartRateStatus.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="209">
-          <caret line="14" column="57" lean-forward="true" selection-start-line="14" selection-start-column="57" selection-end-line="14" selection-end-column="57" />
+        <state relative-caret-position="271">
+          <caret line="22" lean-forward="true" selection-start-line="22" selection-end-line="22" />
+          <folding>
+            <element signature="e#407#408#0" expanded="true" />
+            <element signature="e#434#435#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="703">
-          <caret line="37" column="2" selection-start-line="37" selection-start-column="2" selection-end-line="37" selection-end-column="2" />
+        <state relative-caret-position="95">
+          <caret line="16" column="74" lean-forward="true" selection-start-line="16" selection-start-column="74" selection-end-line="16" selection-end-column="74" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#2697#2698#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="38">
-          <caret line="2" column="90" selection-start-line="2" selection-start-column="90" selection-end-line="2" selection-end-column="90" />
+        <state relative-caret-position="133">
+          <caret line="13" column="36" selection-start-line="13" selection-start-column="36" selection-end-line="13" selection-end-column="36" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/BootCompleteReceiver.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/java/util/Calendar.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="228">
-          <caret line="12" column="3" selection-start-line="12" selection-start-column="3" selection-end-line="12" selection-end-column="3" />
+        <state relative-caret-position="253">
+          <caret line="116" column="20" selection-start-line="116" selection-start-column="20" selection-end-line="116" selection-end-column="20" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#3672#3673#0" expanded="true" />
+            <element signature="e#3723#3724#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/pm/PackageManager.class">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/java/lang/Character.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="35">
-          <caret line="158" column="60" selection-start-line="158" selection-start-column="60" selection-end-line="158" selection-end-column="60" />
+        <state relative-caret-position="196">
+          <caret line="58" column="29" selection-start-line="58" selection-start-column="29" selection-end-line="58" selection-end-column="29" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICApplication.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ContextProxy.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="344">
-          <caret line="83" column="38" selection-start-line="83" selection-start-column="38" selection-end-line="83" selection-end-column="38" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state relative-caret-position="92">
+          <caret line="424" column="23" selection-start-line="428" selection-start-column="17" selection-end-line="428" selection-end-column="21" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/library/src/main/java/com/eiot/watch_lib/LauncherCtrl.java">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/library/src/main/java/com/eiot/watch_lib/LauncherCtrl.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Connection.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2185">
-          <caret line="123" column="5" selection-start-line="123" selection-start-column="5" selection-end-line="123" selection-end-column="5" />
+        <state relative-caret-position="285">
+          <caret line="15" column="7" selection-start-line="15" selection-start-column="7" selection-end-line="15" selection-end-column="7" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/DBHelper.java">
+    <entry file="file://D:/incar/Downloads/tcp_server.c">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="128">
-          <caret line="959" column="3" lean-forward="true" selection-start-line="959" selection-start-column="3" selection-end-line="959" selection-end-column="3" />
+        <state relative-caret-position="-4712">
+          <caret line="16" column="1" lean-forward="true" selection-start-line="16" selection-start-column="1" selection-end-line="16" selection-end-column="1" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/ContentProvider.class">
+    <entry file="file://D:/incar/Downloads/test_srv.c">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="171">
-          <caret line="26" column="25" selection-start-line="26" selection-start-column="25" selection-end-line="26" selection-end-column="25" />
-          <folding>
-            <element signature="e#782#783#0" expanded="true" />
-            <element signature="e#833#834#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="95">
+          <caret line="407" column="51" lean-forward="true" selection-start-line="407" selection-start-column="51" selection-end-line="407" selection-end-column="51" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/ICContentProvider.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-301">
-          <caret line="137" column="83" selection-start-line="137" selection-start-column="83" selection-end-line="137" selection-end-column="83" />
+        <state relative-caret-position="-310">
+          <caret line="93" column="2" lean-forward="true" selection-start-line="93" selection-start-column="2" selection-end-line="93" selection-end-column="2" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/CrashHandler.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/telephony/TelephonyManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="56">
-          <caret line="98" selection-start-line="98" selection-end-line="108" selection-end-column="54" />
-          <folding>
-            <element signature="imports" expanded="true" />
-            <element signature="e#3004#3029#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="218">
+          <caret line="66" column="43" selection-start-line="66" selection-start-column="28" selection-end-line="66" selection-end-column="43" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/ContextWrapper.class">
+    <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="320">
+          <caret line="220" column="43" lean-forward="true" selection-start-line="220" selection-start-column="43" selection-end-line="220" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/CheckSIM.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="216">
-          <caret line="165" lean-forward="true" selection-start-line="165" selection-end-line="165" />
+        <state relative-caret-position="282">
+          <caret line="90" column="70" lean-forward="true" selection-start-line="90" selection-start-column="70" selection-end-line="90" selection-end-column="70" />
           <folding>
-            <element signature="e#4410#4411#0" expanded="true" />
-            <element signature="e#4461#4462#0" expanded="true" />
+            <element signature="e#612#1023#0" expanded="true" />
+            <element signature="e#1022#1023#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/d4a0c3bc36ac0ece84cdf7aa08b18c344b467238/rxjava-1.1.0-sources.jar!/rx/subjects/BehaviorSubject.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Util.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="143">
-          <caret line="154" column="16" selection-start-line="154" selection-start-column="16" selection-end-line="154" selection-end-column="16" />
+        <state relative-caret-position="196">
+          <caret line="375" column="24" selection-start-line="375" selection-start-column="24" selection-end-line="375" selection-end-column="24" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NetworkObservable.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/Constants.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1102">
-          <caret line="71" lean-forward="true" selection-start-line="71" selection-end-line="71" />
+        <state relative-caret-position="234">
+          <caret line="247" column="76" selection-start-line="247" selection-start-column="66" selection-end-line="247" selection-end-column="76" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Connection.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="133">
-          <caret line="7" column="7" selection-start-line="7" selection-start-column="7" selection-end-line="7" selection-end-column="7" />
+        <state relative-caret-position="350">
+          <caret line="25" column="62" selection-start-line="25" selection-start-column="62" selection-end-line="25" selection-end-column="62" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/base/BaseService.java">
+    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/d4a0c3bc36ac0ece84cdf7aa08b18c344b467238/rxjava-1.1.0-sources.jar!/rx/Observable.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="133">
-          <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
+        <state relative-caret-position="19">
+          <caret line="7927" selection-start-line="7927" selection-end-line="7927" />
+          <folding>
+            <element signature="e#412406#412407#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/base/AbstractConnectionService.java">
+    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/d4a0c3bc36ac0ece84cdf7aa08b18c344b467238/rxjava-1.1.0-sources.jar!/rx/observers/SafeSubscriber.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="155">
-          <caret line="18" column="4" selection-start-line="18" selection-start-column="4" selection-end-line="18" selection-end-column="4" />
+        <state relative-caret-position="161">
+          <caret line="138" selection-start-line="138" selection-end-line="138" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Runtime.java">
+    <entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/d4a0c3bc36ac0ece84cdf7aa08b18c344b467238/rxjava-1.1.0-sources.jar!/rx/internal/schedulers/ScheduledAction.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="161">
+          <caret line="59" selection-start-line="59" selection-end-line="59" />
+        </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="165">
-          <caret line="224" column="25" lean-forward="true" selection-start-line="224" selection-start-column="25" selection-end-line="224" selection-end-column="25" />
+        <state relative-caret-position="190">
+          <caret line="391" column="17" selection-start-line="391" selection-start-column="8" selection-end-line="391" selection-end-column="17" />
           <folding>
             <element signature="imports" expanded="true" />
+            <element signature="e#2519#2520#0" expanded="true" />
+            <element signature="e#2555#2556#0" expanded="true" />
+            <element signature="e#7855#7856#0" expanded="true" />
+            <element signature="e#7889#7890#0" expanded="true" />
+            <element signature="e#10281#10282#0" expanded="true" />
+            <element signature="e#10316#10317#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CellInfoUtil.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/java/lang/Enum.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="76">
-          <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
+        <state relative-caret-position="161">
+          <caret line="14" column="24" selection-start-line="14" selection-start-column="24" selection-end-line="14" selection-end-column="24" />
+          <folding>
+            <element signature="e#373#374#0" expanded="true" />
+            <element signature="e#424#425#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/FileOutputUtil.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/StringMessage.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-22">
-          <caret line="91" column="69" lean-forward="true" selection-start-line="91" selection-start-column="69" selection-end-line="91" selection-end-column="69" />
+        <state relative-caret-position="190">
+          <caret line="34" column="16" selection-start-line="34" selection-start-column="16" selection-end-line="34" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/SimSignalUtil.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/Logger.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="922">
-          <caret line="93" lean-forward="true" selection-start-line="93" selection-end-line="93" />
+        <state relative-caret-position="180">
+          <caret line="42" column="32" lean-forward="true" selection-start-line="42" selection-start-column="32" selection-end-line="42" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/MainActivity.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/os/PowerManager.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="159">
-          <caret line="66" lean-forward="true" selection-start-line="66" selection-end-line="66" />
+        <state relative-caret-position="228">
+          <caret line="15" column="50" lean-forward="true" selection-start-line="15" selection-start-column="50" selection-end-line="15" selection-end-column="50" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CameraUtil.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="371">
+          <caret line="74" column="30" selection-start-line="74" selection-start-column="30" selection-end-line="74" selection-end-column="30" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ProcessReceiver.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="193">
-          <caret line="201" column="16" selection-start-line="201" selection-start-column="16" selection-end-line="201" selection-end-column="16" />
+        <state relative-caret-position="177">
+          <caret line="50" column="43" selection-start-line="50" selection-start-column="43" selection-end-line="50" selection-end-column="43" />
           <folding>
-            <element signature="e#3182#3183#0" expanded="true" />
-            <element signature="e#3271#3272#0" expanded="true" />
+            <element signature="e#17063#17104#0" expanded="true" />
+            <element signature="e#17243#17284#0" expanded="true" />
+            <element signature="e#17375#17416#0" expanded="true" />
+            <element signature="e#17510#17551#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/LocationClient.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomNotification.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="194">
-          <caret line="693" selection-start-line="693" selection-end-line="693" />
+        <state relative-caret-position="2033">
+          <caret line="107" column="42" lean-forward="true" selection-start-line="86" selection-start-column="8" selection-end-line="107" selection-end-column="42" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/telephony/TelephonyManager.class">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/CustomDialog.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="336">
-          <caret line="95" column="24" selection-start-line="95" selection-start-column="24" selection-end-line="95" selection-end-column="24" />
+        <state relative-caret-position="228">
+          <caret line="119" column="21" selection-start-line="119" selection-start-column="21" selection-end-line="119" selection-end-column="21" />
           <folding>
-            <element signature="e#4052#4053#0" expanded="true" />
-            <element signature="e#4103#4104#0" expanded="true" />
+            <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java">
+    <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="135">
-          <caret line="245" column="65" selection-start-line="245" selection-start-column="65" selection-end-line="245" selection-end-column="65" />
+        <state relative-caret-position="258">
+          <caret line="140" column="88" selection-start-line="140" selection-start-column="88" selection-end-line="140" selection-end-column="88" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/StringMessage.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/os/Handler.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-209">
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
+        <state relative-caret-position="161">
+          <caret line="70" column="25" selection-start-line="70" selection-start-column="25" selection-end-line="70" selection-end-column="25" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java">
+    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/java/lang/String.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="143">
-          <caret line="43" column="24" selection-start-line="43" selection-start-column="24" selection-end-line="43" selection-end-column="24" />
+        <state relative-caret-position="161">
+          <caret line="170" column="15" selection-start-line="170" selection-start-column="15" selection-end-line="170" selection-end-column="15" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#4574#4575#0" expanded="true" />
+            <element signature="e#4625#4626#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="-1627">
-          <caret line="120" column="41" selection-start-line="120" selection-start-column="41" selection-end-line="120" selection-end-column="41" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/ServiceUtil.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="513">
-          <caret line="32" column="2" selection-start-line="32" selection-start-column="2" selection-end-line="32" selection-end-column="2" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/KeepAlive.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Deliver.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="229">
-          <caret line="255" column="7" lean-forward="true" selection-start-line="255" selection-start-column="7" selection-end-line="255" selection-end-column="7" />
+        <state relative-caret-position="24">
+          <caret line="579" column="25" selection-start-line="579" selection-start-column="25" selection-end-line="579" selection-end-column="25" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/AlarmWakeUp.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/Initialize.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="133">
-          <caret line="12" column="36" selection-start-line="12" selection-start-column="36" selection-end-line="12" selection-end-column="36" />
+        <state relative-caret-position="471">
+          <caret line="72" column="75" lean-forward="true" selection-start-line="72" selection-start-column="75" selection-end-line="72" selection-end-column="75" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/bean/Alarm.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/base/AbstractConnectionService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="38">
-          <caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
+        <state relative-caret-position="57">
+          <caret line="23" column="42" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="42" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/app/Service.class">
+    <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="190">
-          <caret line="20" column="44" selection-start-line="20" selection-start-column="28" selection-end-line="20" selection-end-column="44" />
+        <state relative-caret-position="228">
+          <caret line="581" column="50" selection-start-line="581" selection-start-column="50" selection-end-line="581" selection-end-column="50" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-25/android.jar!/android/content/Context.class">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/SynchronousTime.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-114">
-          <caret line="50" column="28" selection-start-line="50" selection-start-column="28" selection-end-line="50" selection-end-column="28" />
+        <state relative-caret-position="130">
+          <caret line="44" column="3" selection-start-line="44" selection-start-column="3" selection-end-line="46" selection-end-column="48" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/service/protocolMainServer.java">
+    <entry file="file://$PROJECT_DIR$/app/src/main/java/com/ic/protocol/utils/NettyConnection.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3459">
-          <caret line="480" column="55" selection-start-line="480" selection-start-column="55" selection-end-line="480" selection-end-column="55" />
+        <state relative-caret-position="205">
+          <caret line="187" column="33" lean-forward="true" selection-start-line="187" selection-start-column="33" selection-end-line="187" selection-end-column="33" />
           <folding>
-            <element signature="e#7211#8727#0" expanded="true" />
-            <element signature="e#8726#8727#0" expanded="true" />
-            <element signature="e#28402#28403#0" expanded="true" />
-            <element signature="e#28499#28500#0" expanded="true" />
-            <element signature="e#29332#29333#0" expanded="true" />
-            <element signature="e#29370#29371#0" expanded="true" />
-            <element signature="e#32566#32567#0" expanded="true" />
-            <element signature="e#32593#32594#0" expanded="true" />
-            <element signature="e#35757#35758#0" expanded="true" />
+            <element signature="e#4682#4683#0" expanded="true" />
+            <element signature="e#4771#4772#0" expanded="true" />
           </folding>
         </state>
       </provider>
index 3ec0e15..c7b343c 100644 (file)
@@ -339,18 +339,18 @@ public class LocationClient {
   }\r
   \r
   private void sendBatteryNotification() {\r
-//    if (runtime.getHaveBatteryChange() && !runtime.getBatterychanging() && !this.batteryNotification) {\r
+    if (runtime.getHaveBatteryChange() && !runtime.getBatterychanging() && !this.batteryNotification) {\r
 //      connection.send(API.H05(runtime, "2"));\r
-//      this.batteryNotification = true;\r
-//    }\r
-//    if (runtime.getBatteryLow() && !runtime.getBatterychanging() && !this.batteryLowNotification) {\r
+      this.batteryNotification = true;\r
+    }\r
+    if (runtime.getBatteryLow() && !runtime.getBatterychanging() && !this.batteryLowNotification) {\r
 //      connection.send(API.H05(runtime, "1"));\r
-//      this.batteryLowNotification = true;\r
-//    }\r
-//    if (runtime.getBatterychanging()) {\r
-//      this.batteryNotification = false;\r
-//      this.batteryLowNotification = false;\r
-//    }\r
+      this.batteryLowNotification = true;\r
+    }\r
+    if (runtime.getBatterychanging()) {\r
+      this.batteryNotification = false;\r
+      this.batteryLowNotification = false;\r
+    }\r
   }\r
   \r
   private static StringMessage setNewKey(StringMessage paramStringMessage, String paramString) {\r
@@ -518,6 +518,7 @@ public class LocationClient {
     this.mLbsHelper.setOnWiFiInfoListener(new LBSHelper.OnWiFiInfoListener() {\r
           public void getWifiInfoCallBack(String param1String) {\r
 //            LocationClient.access$002(true);\r
+//            LocationClient.this.\r
             runtime.currentWifiInfo = param1String;\r
           }\r
         });\r
@@ -525,10 +526,10 @@ public class LocationClient {
   \r
   @TargetApi(Build.VERSION_CODES.FROYO)\r
   public void EqcAlgorithmInterfaceMethod3() {\r
-//    if (Deliver.is_active_location) {\r
-//      Deliver.is_active_location = false;\r
-//      getLocationWakeLock();\r
-//    }\r
+    if (Deliver.is_active_location) {\r
+      Deliver.is_active_location = false;\r
+      getLocationWakeLock();\r
+    }\r
     Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false);\r
     Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
           public void call(Object param1Object) { LocationClient.this.nmeaListener.stopListen(); }\r
@@ -608,61 +609,61 @@ public class LocationClient {
   }\r
   \r
   public void resolveResult(int paramInt1, int paramInt2, int paramInt3, double paramDouble1, double paramDouble2, double paramDouble3, float paramFloat1, float paramFloat2, int paramInt4, float paramFloat3, long paramLong1, long paramLong2, double paramDouble4, double paramDouble5, int paramInt5, long paramLong3, int paramInt6) {\r
-//    int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, LACATION_CYCLE, 3);\r
-//    String str1 = runtime.getLatitude();\r
-//    String str2 = runtime.getLongitude();\r
-//    paramLong2 = runtime.getTimestamp();\r
-//    isLocationCallBack = false;\r
-//    if ((paramInt2 & true) == 1) {\r
-//      Logger.i("开机定位");\r
-//      performExecute(paramInt1, i, 0, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x2) >> 1 == 1) {\r
-//      Logger.i("周期定位");\r
-//      performExecute(paramInt1, i, 1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x4) >> 2 == 1) {\r
-//      Logger.i("主动定位");\r
-//      performExecute(paramInt1, i, 2, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x8) >> 3 == 1) {\r
-//      Logger.i("SOS定位");\r
-//      performExecute(paramInt1, i, 3, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x10) >> 4 == 1) {\r
-//      Logger.i("获取位置信息");\r
-//      performExecute(paramInt1, i, 4, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x20) >> 5 == 1) {\r
-//      Logger.i("定时定位");\r
-//      performExecute(paramInt1, i, 5, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x40) >> 6 == 1) {\r
-//      Logger.i("实时定位");\r
-//      performExecute(paramInt1, i, 6, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x80) >> 7 == 1) {\r
-//      Logger.i("摇一摇");\r
-//      Runtime runtime1 = runtime;\r
-//      LocationClient locationClient = this;\r
-////      ServiceUtil.offerQueue(API.H15(runtime1, locationClient.mWifiInfo, locationClient.mCellInfo, 7));\r
-//    }\r
-//    if ((paramInt2 & 0x100) >> 8 == 1) {\r
-//      Logger.i("脱落报警");\r
-//      performExecute(paramInt1, i, 8, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x200) >> 9 == 1) {\r
-//      Logger.i("照相定位");\r
-//      performExecute(paramInt1, i, 9, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x400) >> 10 == 1) {\r
-//      Logger.i("获取经纬度");\r
-//      performExecute(paramInt1, i, 10, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
-//    if ((paramInt2 & 0x800) >> 11 == 1) {\r
-//      Logger.i("获取天气");\r
-//      performExecute(paramInt1, i, 11, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
-//    }\r
+    int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, LACATION_CYCLE, 3);\r
+    String str1 = runtime.getLatitude();\r
+    String str2 = runtime.getLongitude();\r
+    paramLong2 = runtime.getTimestamp();\r
+    isLocationCallBack = false;\r
+    if ((paramInt2 & 0x1) == 1) {\r
+      Logger.i("开机定位");\r
+      performExecute(paramInt1, i, 0, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x2) >> 1 == 1) {\r
+      Logger.i("周期定位");\r
+      performExecute(paramInt1, i, 1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x4) >> 2 == 1) {\r
+      Logger.i("主动定位");\r
+      performExecute(paramInt1, i, 2, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x8) >> 3 == 1) {\r
+      Logger.i("SOS定位");\r
+      performExecute(paramInt1, i, 3, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x10) >> 4 == 1) {\r
+      Logger.i("获取位置信息");\r
+      performExecute(paramInt1, i, 4, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x20) >> 5 == 1) {\r
+      Logger.i("定时定位");\r
+      performExecute(paramInt1, i, 5, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x40) >> 6 == 1) {\r
+      Logger.i("实时定位");\r
+      performExecute(paramInt1, i, 6, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x80) >> 7 == 1) {\r
+      Logger.i("摇一摇");\r
+      Runtime runtime1 = runtime;\r
+      LocationClient locationClient = this;\r
+//      ServiceUtil.offerQueue(API.H15(runtime1, locationClient.mWifiInfo, locationClient.mCellInfo, 7));\r
+    }\r
+    if ((paramInt2 & 0x100) >> 8 == 1) {\r
+      Logger.i("脱落报警");\r
+      performExecute(paramInt1, i, 8, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x200) >> 9 == 1) {\r
+      Logger.i("照相定位");\r
+      performExecute(paramInt1, i, 9, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x400) >> 10 == 1) {\r
+      Logger.i("获取经纬度");\r
+      performExecute(paramInt1, i, 10, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
+    if ((paramInt2 & 0x800) >> 11 == 1) {\r
+      Logger.i("获取天气");\r
+      performExecute(paramInt1, i, 11, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, str1, str2, paramInt5, paramLong3, paramInt6);\r
+    }\r
   }\r
   \r
   public void start() {\r
@@ -738,6 +739,7 @@ public class LocationClient {
 \r
               this.lock.lock();\r
 //              LocationClient.access$1102(false);\r
+              LocationClient.mHasWifiResult=false;\r
               try {\r
                 if (KeepAlive.isConnected) {\r
                   this.condition.await(30000L, TimeUnit.MILLISECONDS);\r
index b03653d..55149fa 100644 (file)
@@ -8,203 +8,209 @@ import java.util.HashMap;
 public class protocolAPIHelper {\r
     private static final String TAG = "ICSrv." + protocolAPIHelper.class.getSimpleName();\r
 \r
-    private static final String CMDHEADER="IW";\r
-    private static final String CMDEND="#";\r
-    private static final String CMDSPLIT=",";\r
-    public enum CMD_TYPE{\r
-        AP00,\r
+    private static final String CMDHEADER = "IW";\r
+    private static final String CMDEND = "#";\r
+    private static final String CMDSPLIT = ",";\r
+    private CmdHandler cmdHandler=null;\r
+    public enum CMD_TYPE {\r
+        /*终端发起*/\r
+        AP00,//登录包\r
         BP00,\r
-        AP01,\r
+        AP01,//混合定位\r
         BP01,\r
-        AP02,\r
+        AP02,//多基站定位\r
         BP02,\r
-        AP92,\r
+        AP92,//CDMA 混合定位\r
         BP92,\r
-        AP03,\r
+        AP03,//心跳包\r
         BP03,\r
-        AP05,\r
+        AP05,//语音查询接收\r
         BP05,\r
-        AP07,\r
+        AP07,//语音上行\r
         BP07,\r
-        AP10,\r
+        AP10,//报警与地址回复\r
         BP10,\r
-        AP49,\r
+        AP49,//心率上传\r
         BP49,\r
-        APTM,\r
+        APTM,//基站校时及获取定位\r
         BPTM,\r
+        /* 服务器发起*/\r
         AP12,\r
-        BP12,\r
+        BP12,//SOS 号码设置\r
         AP14,\r
-        BP14,\r
+        BP14,//设置联系人白名单\r
         AP15,\r
-        BP15,\r
+        BP15,//设置定位周期\r
         AP16,\r
-        BP16,\r
+        BP16,//立即定位\r
         AP17,\r
-        BP17,\r
+        BP17,//恢复出厂设置\r
         AP18,\r
-        BP18,\r
+        BP18,//重启设备\r
         AP21,\r
-        BP21,\r
+        BP21,//设置计步开关\r
         AP28,\r
-        BP28,\r
+        BP28, //语音下行\r
         AP31,\r
-        BP31,\r
+        BP31,//关机\r
         AP33,\r
-        BP33,\r
+        BP33,//工作模式\r
         APXL,\r
-        BPXL,\r
+        BPXL,//测量血压\r
         AP84,\r
-        BP84,\r
+        BP84,//白名单开关\r
         AP85,\r
-        BP85,\r
+        BP85,//设置闹钟\r
         AP86,\r
-        BP86,\r
+        BP86,//心率血压测试周期\r
         AP89,\r
-        BP89,\r
+        BP89,//心率血压阀值设置\r
         UNKNOWN_CMD,\r
     }\r
 \r
-    private static HashMap<CMD_TYPE,String> cmdMap=null;\r
+    private static HashMap<CMD_TYPE, String> cmdMap = null;\r
 \r
     static {\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
+        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
-    public protocolAPIHelper(){\r
-\r
 \r
+    public protocolAPIHelper(CmdHandler handler) {\r
 \r
+        cmdHandler=handler;\r
     }\r
 \r
-    private StringBuffer cmdbuf=new StringBuffer();\r
+    private StringBuffer cmdbuf = new StringBuffer();\r
+\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
+    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
                 return true;\r
             }\r
         }\r
         return false;\r
     }\r
+\r
     private void log(String msg) {\r
-        Logger.log(TAG,msg);\r
+        Logger.log(TAG, msg);\r
     }\r
 \r
-    private void log(String function,String msg) {\r
-        Logger.log(TAG,function,msg);\r
+    private void log(String function, String msg) {\r
+        Logger.log(TAG, function, msg);\r
     }\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
+    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
+        if (cmdbuf.toString().endsWith(CMDEND)) {\r
+            iscmdComplete = true;\r
         }\r
-        String [] cmdlist = cmd_msgbuf.split(CMDEND);\r
-        int listlen=cmdlist.length;\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
+        if (cmdlist.length > 0 && iscmdComplete == false) {\r
+            listlen -= 1;\r
             last_inCompletecmd = cmdlist[listlen];\r
-            log("cmd not complete , "+last_inCompletecmd);\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
+        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
+                            if (cmdHandler!=null) cmdHandler.handleCmd(key, cmdlist[i] + "#" + cmdlist[i + 1]);\r
+                            i++;\r
+                        }\r
 \r
-                }else{\r
-                    handleCmd(key,cmdlist[i]);\r
+                    } else {\r
+                        if (cmdHandler!=null) cmdHandler.handleCmd(key, cmdlist[i]);\r
+                    }\r
                 }\r
-               }\r
             }\r
         }\r
 \r
-        cmdbuf=new StringBuffer().append(last_inCompletecmd);\r
+        cmdbuf = new StringBuffer().append(last_inCompletecmd);\r
         return ret;\r
     }\r
 \r
     /*登录*/\r
-    public static String AP00(Runtime ds){\r
+    public static String AP00(Runtime ds) {\r
         //示例数据:IWAP00867155030001063#\r
         return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
     }\r
-    public static String AP03(Runtime ds){\r
+\r
+    public static String AP03(Runtime ds) {\r
         //示例数据:IWAP03,06000908000102,5555,30#\r
         return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(ds.getSignalStrength())\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
@@ -212,7 +218,7 @@ public class protocolAPIHelper {
                 .append(ds.getTotalStepCount()).append(CMDSPLIT).append(0/*rolltime*/).append(CMDEND).toString();\r
     }\r
 \r
-    public static String AP01(Runtime ds){\r
+    public static String AP01(Runtime ds) {\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
@@ -223,7 +229,8 @@ public class protocolAPIHelper {
                 .append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT)\r
                 .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
     }\r
-    public static String AP28(String name,String msg,int packagecount,int currentpackageindex,int received_success){\r
+\r
+    public static 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
@@ -234,28 +241,11 @@ public class protocolAPIHelper {
                 .append(CMDEND).toString();\r
     }\r
 \r
-    private boolean handleCmd(CMD_TYPE type,String cmd)\r
+    public interface CmdHandler\r
     {\r
-        boolean ret=true;\r
-\r
-        switch (type){\r
-            case BP00:\r
-                handleBP00(cmd);\r
-                break;\r
-            case BP01:\r
-                handleBP01(cmd);\r
-                break;\r
-            case BP03:\r
-                handleBP03(cmd);\r
-                break;\r
-            case BP28:\r
-                handleBP28(cmd);\r
-                break;\r
-\r
-        }\r
 \r
+         boolean handleCmd(CMD_TYPE type, String cmd);\r
 \r
-        return ret;\r
     }\r
 \r
     //处理 登录 BP00\r
index 354b1f7..94123ce 100644 (file)
@@ -55,7 +55,9 @@ public class Runtime {
   private String haveTry;\r
   \r
   private String host = "watch.jiai.pro";\r
-  \r
+\r
+  private String srvIP = "39.98.94.164";\r
+\r
   private String imei = "867155030001063";\r
   \r
   private String imei_cid = "";\r
@@ -84,7 +86,7 @@ public class Runtime {
   \r
   private String mccAndMnc;\r
   \r
-  private int port = 8090;\r
+  private int port = 20048;//8888;//8090;\r
   \r
   public String preCdmaInfo;\r
   \r
@@ -96,7 +98,7 @@ public class Runtime {
   \r
   private boolean shutdown;\r
   \r
-  private boolean testServerProp;\r
+  private boolean testServerProp=true;\r
   \r
   private long timestamp;\r
   \r
@@ -150,7 +152,7 @@ public class Runtime {
   \r
   public String getHaveTry() { return this.haveTry; }\r
   \r
-  public String getHost() { return this.testServerProp ? "121.42.192.174" : this.host; }\r
+  public String getHost() { return this.testServerProp ? srvIP : this.host; }\r
   \r
   public String getKey() { return this.key; }\r
   \r
index 12c7ec0..a295076 100644 (file)
@@ -13,7 +13,7 @@ public class heartRateStatus {
         HEARTRATE_TEST_FAILED,\r
     } ;\r
 \r
-    public boolean isHeartr8ateExists(){\r
+    public boolean isHeartrRateExists(){\r
         return true;\r
     }\r
 \r
index 2d78532..3742c75 100644 (file)
@@ -11,6 +11,10 @@ import com.ic.protocol.bean.StringMessage;
 import com.ic.protocol.service.base.AbstractConnectionService;\r
 import com.ic.protocol.utils.Connection;\r
 \r
+import static android.telephony.TelephonyManager.SIM_STATE_ABSENT;\r
+import static android.telephony.TelephonyManager.SIM_STATE_READY;\r
+import static android.telephony.TelephonyManager.SIM_STATE_UNKNOWN;\r
+\r
 public class CheckSIM extends AbstractConnectionService {\r
   private static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";\r
   \r
@@ -30,17 +34,18 @@ public class CheckSIM extends AbstractConnectionService {
   int[] simState = { 0, 0, 0, 0 };\r
   \r
   private boolean hasSimCard() {\r
-    int i = ((TelephonyManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.TELEPHONY_SERVICE)).getSimState();\r
-    boolean bool = false;\r
-    switch (i) {\r
-      default:\r
-        bool = true;\r
-        break;\r
-      case 0:\r
-      case 1:\r
-        break;\r
-    } \r
-    return bool;\r
+//    int i = ((TelephonyManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.TELEPHONY_SERVICE)).getSimState();\r
+//    boolean bool = false;\r
+//    switch (i) {\r
+//      default:\r
+//        bool = true;\r
+//        break;\r
+//      case SIM_STATE_ABSENT:\r
+//      case SIM_STATE_UNKNOWN:\r
+//        break;\r
+//    }\r
+//    return bool;\r
+    return (((TelephonyManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.TELEPHONY_SERVICE)).getSimState() == SIM_STATE_READY);\r
   }\r
   @Override\r
   public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
index 8b8fad0..04aab36 100644 (file)
@@ -132,9 +132,9 @@ public class Deliver extends AbstractConnectionService {
     String[] arrayOfString1;\r
     this.mConnection = paramConnection;\r
     this.mRuntime = paramRuntime;\r
-    String str5 = paramStringMessage.cmd();\r
-    if (str5.startsWith("SmsSet")) {\r
-      arrayOfString4 = str5.split(":");\r
+    String cmd = paramStringMessage.cmd();\r
+    if (cmd.startsWith("SmsSet")) {\r
+      arrayOfString4 = cmd.split(":");\r
       if (arrayOfString4.length > 1) {\r
 //        paramConnection.send(API.H13(paramRuntime, arrayOfString4[1]));\r
         if ("1".equals(arrayOfString4[1])) {\r
@@ -183,7 +183,7 @@ public class Deliver extends AbstractConnectionService {
       } \r
       return true;\r
     } \r
-    if (str5.equals("PUSH")) {\r
+    if (cmd.equals("PUSH")) {\r
       stringBuilder2 = new StringBuilder();\r
       stringBuilder2.append("response=");\r
 //      stringBuilder2.append(arrayOfString4.toString());\r
@@ -196,77 +196,77 @@ public class Deliver extends AbstractConnectionService {
 //          });\r
       return true;\r
     } \r
-    switch (str5.hashCode()) {\r
+    switch (cmd.hashCode()) {\r
       default:\r
         i = -1;\r
         break;\r
       case 2010452830:\r
-        if (str5.equals("NewPicture")) {\r
+        if (cmd.equals("NewPicture")) {\r
           i = 5;\r
           break;\r
         } \r
       case 1965687765:\r
-        if (str5.equals("Location")) {\r
+        if (cmd.equals("Location")) {\r
           i = 9;\r
           break;\r
         } \r
       case 1474607358:\r
-        if (str5.equals("Check_bill")) {\r
+        if (cmd.equals("Check_bill")) {\r
           i = 3;\r
           break;\r
         } \r
       case 1433513874:\r
-        if (str5.equals("NewVoice")) {\r
+        if (cmd.equals("NewVoice")) {\r
           i = 4;\r
           break;\r
         } \r
       case 750870555:\r
-        if (str5.equals("RemoteWifiRate")) {\r
+        if (cmd.equals("RemoteWifiRate")) {\r
           i = 11;\r
           break;\r
         } \r
       case 613936256:\r
-        if (str5.equals("RemoteHeartRate")) {\r
+        if (cmd.equals("RemoteHeartRate")) {\r
           i = 10;\r
           break;\r
         } \r
       case 411981707:\r
-        if (str5.equals("Videojufenglogin")) {\r
+        if (cmd.equals("Videojufenglogin")) {\r
           i = 8;\r
           break;\r
         } \r
       case -355520725:\r
-        if (str5.equals("RemoteCamera")) {\r
+        if (cmd.equals("RemoteCamera")) {\r
           i = 2;\r
           break;\r
         } \r
       case -811859232:\r
-        if (str5.equals("GetVideoId")) {\r
+        if (cmd.equals("GetVideoId")) {\r
           i = 7;\r
           break;\r
         } \r
       case -1391156271:\r
-        if (str5.equals("RemoteSetWifiRate")) {\r
+        if (cmd.equals("RemoteSetWifiRate")) {\r
           i = 12;\r
           break;\r
         } \r
       case -1393994438:\r
-        if (str5.equals("Monitor")) {\r
+        if (cmd.equals("Monitor")) {\r
           i = 1;\r
           break;\r
         } \r
       case -1754979095:\r
-        if (str5.equals("Update")) {\r
+        if (cmd.equals("Update")) {\r
           i = 0;\r
           break;\r
         } \r
       case -1882613593:\r
-        if (str5.equals("OssFileDowload")) {\r
+        if (cmd.equals("OssFileDowload")) {\r
           i = 13;\r
           break;\r
         } \r
       case -1893234925:\r
-        if (str5.equals("UrlDownloadPic")) {\r
+        if (cmd.equals("UrlDownloadPic")) {\r
           i = 6;\r
           break;\r
         } \r
diff --git a/app/src/main/java/com/ic/protocol/service/Initialize.java b/app/src/main/java/com/ic/protocol/service/Initialize.java
new file mode 100644 (file)
index 0000000..38f7a1c
--- /dev/null
@@ -0,0 +1,108 @@
+package com.ic.protocol.service;\r
+\r
+import android.database.Cursor;\r
+\r
+import com.ic.protocol.Config;\r
+import com.ic.protocol.ICContentProvider;\r
+import com.ic.protocol.adapter.protocolAPIHelper;\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.base.AbstractConnectionService;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.utils.DeviceInfoUtil;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.SharPreferenceUtil;\r
+import com.ic.protocol.utils.SimSignalUtil;\r
+\r
+import org.json.JSONObject;\r
+import org.json.JSONTokener;\r
+\r
+public class Initialize extends AbstractConnectionService {\r
+  private boolean hasChange = false;\r
+  \r
+  private SimSignalUtil mInstance;\r
+  \r
+  private int netWorkFlag;\r
+  private boolean initOK=false;\r
+  private int weatherOutTime = 30;\r
+  \r
+  public static boolean hasContacts(Runtime paramRuntime) {\r
+    Cursor cursor = (paramRuntime.getContextProxy()).context.getContentResolver().query(ICContentProvider.CONTACT_URI, null, null, null, null);\r
+    if (cursor != null) {\r
+      if (cursor.moveToNext()) {\r
+        cursor.close();\r
+        return true;\r
+      } \r
+      cursor.close();\r
+    } \r
+    return false;\r
+  }\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.netWorkFlag > 5 && !this.hasChange) {\r
+      this.hasChange = true;\r
+      this.netWorkFlag = 0;\r
+    } else {\r
+      this.netWorkFlag++;\r
+    } \r
+//    if (paramRuntime.getVideoID() == null)\r
+//      paramConnection.send(API.H139(paramRuntime));\r
+  }\r
+  \r
+  public void onAttach(Connection paramConnection, Runtime paramRuntime) { this.mInstance = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context); }\r
+  \r
+  public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return this.initOK ^ true; }\r
+  \r
+  public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.initOK)\r
+      return false; \r
+    if (paramRuntime.IMSI() != null && !paramRuntime.IMSI().startsWith("46001"))\r
+      paramRuntime.IMSI().startsWith("46006"); \r
+    int i = SharPreferenceUtil.getPrefInt((paramRuntime.getContextProxy()).context, "lacation_mode", 2);\r
+    int j = SharPreferenceUtil.getPrefInt((paramRuntime.getContextProxy()).context, "lacation_cycle", 3);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(i);\r
+    stringBuilder.append("@");\r
+    stringBuilder.append(j);\r
+    Config.work_mode = stringBuilder.toString();\r
+    stringBuilder = new StringBuilder();\r
+    stringBuilder.append(" antioff =");\r
+    stringBuilder.append(Config.antioff);\r
+    Logger.i(stringBuilder.toString());\r
+    Config.sw_release_no = DeviceInfoUtil.getCustomId();\r
+    StringMessage stringMessage=new StringMessage(new String[]{protocolAPIHelper.AP00(paramRuntime)});\r
+    paramConnection.send(stringMessage);\r
+    return true;\r
+  }\r
+  \r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) { this.initOK = false; }\r
+  \r
+  public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.initOK)\r
+      return false; \r
+    if (paramStringMessage.cmd().equals("Init")) {\r
+      this.initOK = true;\r
+//      try {\r
+//        paramRuntime.setKey(((JSONObject)(new JSONTokener(paramStringMessage.all()[1])).nextValue()).getString("KEY"));\r
+//      } catch (Exception e) {\r
+//        e.printStackTrace();\r
+//      }\r
+      if (!hasContacts(paramRuntime)) {\r
+//        paramConnection.send(API.H06(paramRuntime));\r
+        Logger.i("没有联系人");\r
+      } else {\r
+        Logger.i("有联系人");\r
+      } \r
+//      EqcAlgorithmNative.native_EqcAlgorithmMethod3(1);\r
+      StringBuilder stringBuilder = new StringBuilder();\r
+      stringBuilder.append("imei_cid_key =");\r
+      stringBuilder.append(paramRuntime.IMEI_CID_KEY());\r
+      Logger.i(stringBuilder.toString());\r
+//      paramConnection.send(API.H139(paramRuntime));\r
+      this.nextService.processConnectionOpen(paramConnection, paramRuntime);\r
+    } \r
+    return true;\r
+  }\r
+}\r
+\r
+\r
index 789261f..6efb605 100644 (file)
@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;\r
 import android.content.IntentFilter;\r
 import android.os.SystemClock;\r
+import android.util.Log;\r
 \r
 import com.eiot.watch_lib.LauncherCtrl;\r
 import com.ic.protocol.adapter.protocolAPIHelper;\r
@@ -22,7 +23,7 @@ import rx.functions.Action1;
 \r
 public class KeepAlive extends AbstractConnectionService {\r
   private static final long HEARTBEAT_TIMEOUT = 660000L;\r
-  \r
+  private static String TAG = KeepAlive.class.getSimpleName();\r
   public static boolean connectionError = false;\r
   \r
   public static boolean isConnected = false;\r
@@ -281,6 +282,7 @@ public class KeepAlive extends AbstractConnectionService {
 \r
   public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
     this.idleTimeMillis = SystemClock.elapsedRealtime();\r
+    Log.i(TAG,paramStringMessage.cmd());\r
     if ("heart".equals(paramStringMessage.cmd()) || "Link:OK".equals(paramStringMessage.cmd()) || "Shutdown:OK".equals(paramStringMessage.cmd()) || "Sport:OK".equals(paramStringMessage.cmd())) {\r
       if ("Shutdown:OK".equals(paramStringMessage.cmd()))\r
         paramRuntime.getContextProxy().shutdown(); \r
@@ -297,7 +299,7 @@ public class KeepAlive extends AbstractConnectionService {
     public void onReceive(Context param1Context, Intent param1Intent) {\r
       boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
       if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()){\r
-        //        KeepAlive.this.connection.send(API.H11(KeepAlive.this.mRuntime, "3"));\r
+//                KeepAlive.this.connection.send(new StringMessage(protocolAPIHelper.AP00(KeepAlive.this.mRuntime)));\r
       }\r
 \r
     }\r
diff --git a/app/src/main/java/com/ic/protocol/service/SynchronousTime.java b/app/src/main/java/com/ic/protocol/service/SynchronousTime.java
new file mode 100644 (file)
index 0000000..014fc1f
--- /dev/null
@@ -0,0 +1,87 @@
+package com.ic.protocol.service;\r
+\r
+import android.os.SystemClock;\r
+\r
+import com.ic.protocol.adapter.protocolAPIHelper;\r
+import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.base.AbstractConnectionService;\r
+import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.utils.Logger;\r
+import com.ic.protocol.utils.NettyConnection;\r
+import com.ic.protocol.utils.TimeUtil;\r
+import  com.ic.protocol.bean.Runtime;\r
+\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.TimeZone;\r
+\r
+public class SynchronousTime extends AbstractConnectionService {\r
+  private boolean synchronousTimeOK = false;\r
+  \r
+  private void getCoder() {\r
+//    if (CoderFactory.getCoderFactoryInstance().getCoder() != null)\r
+//      Logger.i("成功获取");\r
+  }\r
+  \r
+  private void setDateAndTime(long paramLong) {\r
+    SystemClock.setCurrentTimeMillis(paramLong);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("设置时间");\r
+    stringBuilder.append(TimeUtil.getSystemTime());\r
+    Logger.i(stringBuilder.toString());\r
+  }\r
+  \r
+  public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public void onAttach(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return this.synchronousTimeOK ^ true; }\r
+\r
+  @Override\r
+  public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
+    if (this.synchronousTimeOK)\r
+      return false; \r
+    StringMessage stringMessage = new StringMessage( protocolAPIHelper.AP00(paramRuntime));\r
+//    byte[] arrayOfByte = (new StringMessageSocketEngine(paramRuntime.getHost(), paramRuntime.getPort() - 2)).request(stringMessage);\r
+    paramConnection.sendBlocking(stringMessage);\r
+//    if (arrayOfByte != null) {\r
+//      this.synchronousTimeOK = true;\r
+//      str = new String(arrayOfByte);\r
+//      StringBuilder stringBuilder = new StringBuilder();\r
+//      stringBuilder.append("成功返回");\r
+//      stringBuilder.append(str);\r
+//      Logger.i(stringBuilder.toString());\r
+//      str = str.substring(5);\r
+//      str = str.substring(0, str.length() - 1);\r
+//      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd,HH:mm:ss");\r
+//      simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));\r
+//      try {\r
+//        long l1 = simpleDateFormat.parse(str).getTime();\r
+//        long l2 = System.currentTimeMillis();\r
+//        StringBuilder stringBuilder1 = new StringBuilder();\r
+//        stringBuilder1.append("serviceTime=");\r
+//        stringBuilder1.append(l1);\r
+//        stringBuilder1.append("---localTime=");\r
+//        stringBuilder1.append(l2);\r
+//        Logger.i(stringBuilder1.toString());\r
+//        if (Math.abs(l1 - l2) > 60000L) {\r
+//          setDateAndTime(l1);\r
+//          return false;\r
+//        }\r
+//      } catch (ParseException str) {\r
+//        str.printStackTrace();\r
+//      }\r
+//      return false;\r
+//    }\r
+    return true;\r
+  }\r
+  \r
+  public void onDetach(Connection paramConnection, Runtime paramRuntime) {}\r
+  \r
+  public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) { return !this.synchronousTimeOK; }\r
+\r
+\r
+\r
+}\r
+\r
index ec1f228..57d731a 100644 (file)
@@ -15,8 +15,10 @@ import android.os.Message;
 import android.os.Messenger;\r
 import android.os.PowerManager;\r
 import android.os.SystemClock;\r
+import android.util.Log;\r
 import android.widget.Toast;\r
 \r
+import com.ic.protocol.Constants;\r
 import com.ic.protocol.LocationClient;\r
 import com.ic.protocol.adapter.LBSHelper;\r
 import com.ic.protocol.adapter.protocolAPIHelper;\r
@@ -53,6 +55,10 @@ import java.util.TimerTask;
 \r
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
 import static com.ic.protocol.Constants.ACTION_EQC_ALARM;\r
+import static com.ic.protocol.Constants.HEART_ALARM;\r
+import static com.ic.protocol.Constants.SLEEP_ALARM;\r
+import static com.ic.protocol.Constants.WAKE_ALARM;\r
+import static com.ic.protocol.Constants.WEATHER_ALARM;\r
 \r
 public class protocolMainServer extends Service {\r
 \r
@@ -164,7 +170,7 @@ public class protocolMainServer extends Service {
 \r
     LocationClient locationClient;\r
 \r
-//    private Deliver mDeliver;\r
+    private Deliver mDeliver;\r
 \r
     private boolean mHaveSetWeatherAlarm;\r
 \r
@@ -190,6 +196,7 @@ public class protocolMainServer extends Service {
                 if (is_in_sleep_mode) {\r
 //                    CoreService.access$402(false);\r
 //                    CoreService.access$502(0);\r
+                    /*屏幕亮起时,如果在sleep模式,则唤醒各个进程*/\r
                     protocolMainServer.is_in_sleep_mode=false;\r
                     protocolMainServer.is_allowed_in_sleep_mode=0;\r
                     if (protocolMainServer.this.mKeepAlive != null)\r
@@ -198,9 +205,9 @@ public class protocolMainServer extends Service {
                 }\r
                 if (is_wifi_network_ok) {\r
 //                    CoreService.access$302(false);\r
+                    /*屏幕亮起时,如果wifi开启,则开启wifi*/\r
                     protocolMainServer.is_in_sleep_mode=false;\r
                     Util.turnOnWifiForConnect((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime);\r
-                    return;\r
                 }\r
             } else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime)) {\r
 //                CoreService.access$302(true);\r
@@ -220,18 +227,19 @@ public class protocolMainServer extends Service {
 \r
     private AbstractConnectionService getConnectionServiceChain() {\r
 //        DNS dNS = new DNS();\r
-//        SynchronousTime synchronousTime = new SynchronousTime();\r
+        SynchronousTime synchronousTime = new SynchronousTime();\r
 //        new ProcessEncryptionService();\r
-//        Initialize initialize = new Initialize();\r
-//        CheckSIM checkSIM = new CheckSIM();\r
+        Initialize initialize = new Initialize();\r
+        CheckSIM checkSIM = new CheckSIM();\r
         this.mKeepAlive = new KeepAlive();\r
-//        this.mDeliver = new Deliver();\r
+        this.mDeliver = new Deliver();\r
 //        dNS.setNext(synchronousTime);\r
-//        synchronousTime.setNext(initialize);\r
-//        initialize.setNext(checkSIM);\r
-//        checkSIM.setNext(this.mKeepAlive);\r
-//        this.mKeepAlive.setNext(this.mDeliver);\r
-        return mKeepAlive;\r
+        synchronousTime.setNext(initialize);\r
+        initialize.setNext(checkSIM);\r
+        checkSIM.setNext(this.mKeepAlive);\r
+        this.mKeepAlive.setNext(this.mDeliver);\r
+\r
+        return synchronousTime;\r
     }\r
 \r
     private void getDBFile() {\r
@@ -267,13 +275,20 @@ public class protocolMainServer extends Service {
         AlarmHelper.setCleanStepCountAlarm(this, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM");\r
     }\r
 \r
-    private void setSleepAlarm() {}\r
+    private void setSleepAlarm() {\r
+        /*每5分左右 休眠*/\r
+        AlarmHelper.setTimeAlarm(this, 0, 5, SLEEP_ALARM);\r
+    }\r
 \r
-    private void setWakeAlarm() {}\r
+    private void setWakeAlarm() {\r
+\r
+        /*每1 左右 唤醒自己*/\r
+        AlarmHelper.setTimeAlarm(this, 0, 1, WAKE_ALARM);\r
+    }\r
 \r
     private void setWeatherAlarm() {\r
         /*每6小时20分左右 更新一次 weather*/\r
-        AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, "com.enqualcomm.support.ACTION_WEATHER_ALARM");\r
+        AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, WEATHER_ALARM);\r
     }\r
 \r
     private void wakeUpFromSleep() {\r
@@ -389,7 +404,7 @@ public class protocolMainServer extends Service {
             stringBuilder.append(" paramInt2=");\r
             stringBuilder.append(paramInt2);\r
             Logger.i(stringBuilder.toString());\r
-            if ("com.enqualcomm.support.ACTION_ALARM".equals(paramIntent.getAction())) {\r
+            if (ACTION_ALARM.equals(paramIntent.getAction())) {\r
                 if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
                     Logger.i("2 into powersave return");\r
                     return Service.START_NOT_STICKY;\r
@@ -400,15 +415,17 @@ public class protocolMainServer extends Service {
                     alarmCycle = SharPreferenceUtil.getPrefInt((this.runtime.getContextProxy()).context, "lacation_cycle", 3);\r
                 }\r
                 AlarmWakeUp.setAlarmWakeUpTime();\r
-                boolean bool = ((PowerManager)getSystemService(POWER_SERVICE)).isScreenOn();\r
-                if (!bool)\r
+                boolean screenon = ((PowerManager)getSystemService(POWER_SERVICE)).isScreenOn();\r
+                if (!screenon)\r
                     send_at_to_update_lbs();\r
-                if (Util.isConnectWifi((this.runtime.getContextProxy()).context) && !bool) {\r
+                if (Util.isConnectWifi((this.runtime.getContextProxy()).context) && !screenon) {\r
                     is_wifi_network_ok = true;\r
                     Util.turnOffWifiForSleep((this.runtime.getContextProxy()).context, this.runtime);\r
                 }\r
                 setAlarm(alarmCycle);\r
-                this.runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_EQC_ALARM", this.runtime);\r
+\r
+                //发送心跳间隔广播给其他应用\r
+                this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime);\r
                 this.locationClient.onAlarm(getWakeLock(alarmCycle));\r
                 this.connectionServiceChain.processAlarmClock(this.connection, this.runtime);\r
                 this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime);\r
@@ -419,7 +436,7 @@ public class protocolMainServer extends Service {
                 }\r
             } else {\r
                 StringBuilder stringBuilder1;\r
-                if ("com.enqualcomm.support.SLEEP_ALARM".equals(paramIntent.getAction())) {\r
+                if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) {\r
                     Logger.i("SLEEP_ALARM");\r
                     is_allowed_in_sleep_mode = 1;\r
                     FileOutputUtil.fileOutput(this, "alarmCycle", "SLEEP_ALARM  alarmCycle");\r
@@ -437,7 +454,7 @@ public class protocolMainServer extends Service {
                         return Service.START_STICKY;\r
                     }\r
                 } else {\r
-                    if ("com.enqualcomm.support.WAKE_ALARM".equals(paramIntent.getAction())) {\r
+                    if (Constants.WAKE_ALARM.equals(paramIntent.getAction())) {\r
                         if (is_in_sleep_mode) {\r
                             is_in_sleep_mode = false;\r
                             FileOutputUtil.fileOutput(this, "alarmCycle", "WAKE_ALARM  alarmCycle");\r
@@ -449,18 +466,18 @@ public class protocolMainServer extends Service {
                         setWakeAlarm();\r
                         return Service.START_STICKY;\r
                     }\r
-                    if ("com.enqualcomm.support.HEART_ALARM".equals(paramIntent.getAction())) {\r
+                    if (HEART_ALARM.equals(paramIntent.getAction())) {\r
                         if (this.mKeepAlive != null) {\r
                             this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);\r
                             return Service.START_STICKY;\r
                         }\r
                     } else {\r
-                        if ("com.enqualcomm.support.ACTION_WEATHER_ALARM".equals(paramIntent.getAction())) {\r
+                        if (WEATHER_ALARM.equals(paramIntent.getAction())) {\r
 //                            this.mSendPairMessage.resetDownLoadConfig();\r
 //                            this.mSendPairMessage.startDownLoad(this.runtime, false);\r
                             return Service.START_STICKY;\r
                         }\r
-                        if ("com.enqualcomm.support.ADD_DATAPOINTS".equals(paramIntent.getAction())) {\r
+                        if (Constants.ACTION_ALARM_ADD_DATAPOINTS.equals(paramIntent.getAction())) {\r
                             setUpLocationDataAlarm(28800000L);\r
                             if (this.upLoadDataPoints != null) {\r
                                 this.upLoadDataPoints.uploadCurrentLocation();\r
@@ -469,7 +486,7 @@ public class protocolMainServer extends Service {
                             Logger.i("upLoadDataPoints=null");\r
                             return Service.START_STICKY;\r
                         }\r
-                        if ("com.enqualcomm.support.ACTION_STWORKMODE_ALARM".equals(paramIntent.getAction())) {\r
+                        if (Constants.STWORKMODE_ALARM.equals(paramIntent.getAction())) {\r
                             if (this.startAlarmCount >= 5) {\r
                                 alarmCycle = paramIntent.getIntExtra("lacation_cycle", 3);\r
                                 setAlarm(alarmCycle);\r
@@ -480,12 +497,8 @@ public class protocolMainServer extends Service {
                             FileOutputUtil.fileOutput(this, "alarmCycle", stringBuilder1.toString());\r
                             return Service.START_STICKY;\r
                         }\r
-                        if ("com.enqualcomm.support.UPDATE_SECRET_KEY".equals(paramIntent.getAction())) {\r
-//                            setUpdateSecretKeyAlarm();\r
-//                            this.invokeHandlerServiceChain.processUserRequest(paramIntent, this.connection, this.runtime);\r
-                            return Service.START_STICKY;\r
-                        }\r
-                        if ("com.enqualcomm.support.PASS_DATA".equals(paramIntent.getAction())) {\r
+\r
+                        if (Constants.ACTION_PASS_DATA_TO_CM_SERVICES.equals(paramIntent.getAction())) {\r
                             deliverDataToCmApp(paramIntent.getIntExtra("cmdId", 0), paramIntent.getStringExtra("cmdJsonData"));\r
                             return Service.START_STICKY;\r
                         }\r
@@ -536,7 +549,7 @@ public class protocolMainServer extends Service {
             i = 3;\r
         AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
         Intent intent = new Intent(this, protocolMainServer.class);\r
-        intent.setAction("com.enqualcomm.support.ACTION_ALARM");\r
+        intent.setAction(ACTION_ALARM);\r
         PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
         alarmManager.cancel(pendingIntent);\r
         long l = SystemClock.elapsedRealtime();\r
@@ -558,12 +571,25 @@ public class protocolMainServer extends Service {
         }\r
     }\r
 \r
-    public void setHeartAlarm() {}\r
+    public void setHeartAlarm() {\r
+        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
+        Intent intent = new Intent(this, protocolMainServer.class);\r
+        intent.setAction(ACTION_ALARM);\r
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
+        alarmManager.cancel(pendingIntent);\r
+        long l = SystemClock.elapsedRealtime();\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("setHeartAlarm 20秒");\r
+        Logger.i(stringBuilder.toString());\r
+        int sleeptime=20;\r
+        Log.i(TAG,"setHeartAlarm");\r
+        alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + ( sleeptime * 1000), pendingIntent);\r
+    }\r
 \r
     public void setUpLocationDataAlarm(long paramLong) {\r
         AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
         Intent intent = new Intent(this, protocolMainServer.class);\r
-        intent.setAction("com.enqualcomm.support.ADD_DATAPOINTS");\r
+        intent.setAction(Constants.ACTION_ALARM_ADD_DATAPOINTS);\r
         PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
         alarmManager.cancel(pendingIntent);\r
         alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + paramLong, pendingIntent);\r
@@ -612,7 +638,7 @@ public class protocolMainServer extends Service {
     private WifiManager mWifiManager=null;\r
     private Config mConfig=null;\r
     private static Runtime mDevStat=null;\r
-    private protocolAPIHelper mProtocolAPI=null;\r
+//    private protocolAPIHelper mProtocolAPI=null;\r
 \r
 \r
     private void log(String msg) {\r
@@ -663,7 +689,7 @@ public class protocolMainServer extends Service {
             mDevStat =new Runtime();\r
             log("new mDevStat");\r
         }\r
-        if (mProtocolAPI == null) mProtocolAPI = new protocolAPIHelper();\r
+//        if (mProtocolAPI == null) mProtocolAPI = new protocolAPIHelper();\r
         if (mWifiManager == null) mWifiManager = (WifiManager)this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);\r
         if (lbshelper==null) lbshelper = new LBSHelper(this,mWifiManager,mDevStat);\r
 \r
@@ -743,8 +769,8 @@ public class protocolMainServer extends Service {
     }\r
 \r
     public void testGpsData(){\r
-       mProtocolAPI.AP01(mDevStat);\r
-        log( mProtocolAPI.AP01(mDevStat));\r
+//       mProtocolAPI.AP01(mDevStat);\r
+//        log( mProtocolAPI.AP01(mDevStat));\r
     }\r
     private void stopTimer(){\r
         if (mTimer_keepalive !=null){\r
index 5f4b8a5..1885ff0 100644 (file)
@@ -4,6 +4,7 @@ import android.content.ComponentName;
 import android.content.Context;\r
 import android.content.Intent;\r
 import android.os.SystemClock;\r
+import android.util.Log;\r
 \r
 import com.ic.protocol.bean.Runtime;\r
 \r
@@ -23,6 +24,7 @@ public class AlarmWakeUp {
       stringBuilder.append(l);\r
       stringBuilder.append("---lastAlarmTime=");\r
       stringBuilder.append(lastAlarmTime);\r
+      Log.i("AlarmWakeUp",stringBuilder.toString());\r
       FileOutputUtil.fileOutput(context, "alarmWakeUp", stringBuilder.toString());\r
     } \r
   }\r
diff --git a/app/src/main/java/com/ic/protocol/utils/CameraUtil.java b/app/src/main/java/com/ic/protocol/utils/CameraUtil.java
new file mode 100644 (file)
index 0000000..276f867
--- /dev/null
@@ -0,0 +1,209 @@
+package com.ic.protocol.utils;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.graphics.Bitmap;\r
+import android.graphics.BitmapFactory;\r
+import android.graphics.Matrix;\r
+import android.graphics.SurfaceTexture;\r
+import android.hardware.Camera;\r
+import android.media.ToneGenerator;\r
+import android.os.Environment;\r
+import android.os.StatFs;\r
+import android.view.SurfaceView;\r
+import android.view.WindowManager;\r
+\r
+import java.io.BufferedOutputStream;\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+\r
+public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {\r
+  Context context;\r
+  \r
+  private Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {\r
+      public void onPictureTaken(byte[] param1ArrayOfByte, Camera param1Camera) {\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("format=");\r
+        stringBuilder.append(CameraUtil.this.mPs.getPictureFormat());\r
+        Logger.i(stringBuilder.toString());\r
+        if (CameraUtil.this.mPs.getPictureFormat() == 256) {\r
+          String str = CameraUtil.this.savePicture(param1ArrayOfByte);\r
+          if (str != null) {\r
+            Intent intent = new Intent(CameraUtil.this.context, com.ic.protocol.service.protocolMainServer.class);\r
+            intent.setAction("com.enqualcomm.support.ACTION_REMOTE_CAMERA");\r
+            intent.putExtra("filepath", str);\r
+            intent.putExtra("number", CameraUtil.this.mNumber);\r
+            CameraUtil.this.context.startService(intent);\r
+          } else {\r
+            Logger.i("空间不足,保存失败");\r
+          } \r
+        } \r
+        CameraUtil.this.releaseCamera();\r
+      }\r
+    };\r
+  \r
+  private Camera mCamera;\r
+  \r
+  String mNumber;\r
+  \r
+  private int mOrientation;\r
+  \r
+  private Camera.Parameters mPs;\r
+  \r
+  private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {\r
+      public void onShutter() { Logger.i("shutterCallback"); }\r
+    };\r
+  \r
+  private SurfaceTexture surfaceTexture;\r
+  \r
+  private ToneGenerator tone;\r
+  \r
+  public CameraUtil(Context paramContext) { this.context = paramContext; }\r
+  \r
+  private Camera openFacingBackCamera() {\r
+    Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
+    int i = Camera.getNumberOfCameras();\r
+    Camera camera = null;\r
+    byte b = 0;\r
+    while (b < i) {\r
+      Camera.getCameraInfo(b, cameraInfo);\r
+\r
+      if (cameraInfo.facing == 0) {\r
+        try {\r
+          camera = Camera.open(b);\r
+        } catch (RuntimeException e) {\r
+          e.printStackTrace();\r
+        }\r
+      }\r
+      b++;\r
+    } \r
+    return camera;\r
+  }\r
+  \r
+  private void releaseCamera() {\r
+    if (this.mCamera != null)\r
+      try {\r
+        if (this.surfaceTexture != null)\r
+          this.surfaceTexture.setOnFrameAvailableListener(null); \r
+        this.mCamera.setPreviewTexture(null);\r
+        this.mCamera.stopPreview();\r
+      } catch (Exception exception) {\r
+        exception.printStackTrace();\r
+      }  \r
+    this.mCamera.release();\r
+  }\r
+  \r
+  private String savePicture(byte[] paramArrayOfByte) {\r
+    String str = null;\r
+    try {\r
+      if (Environment.getExternalStorageState().equals("mounted")) {\r
+        if ((new StatFs(Environment.getExternalStorageDirectory().toString())).getAvailableBytes() < paramArrayOfByte.length)\r
+          return null; \r
+        str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append(str);\r
+        stringBuilder.append("/RemoteCamera.jpg");\r
+        str = stringBuilder.toString();\r
+        Bitmap bitmap2 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
+        Bitmap bitmap1 = bitmap2;\r
+        if ((this.context.getResources().getConfiguration()).orientation == 1) {\r
+          Matrix matrix = new Matrix();\r
+          matrix.reset();\r
+          matrix.postRotate(this.mOrientation);\r
+          bitmap1 = Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix, true);\r
+        } \r
+        File file = new File(str);\r
+        if (!file.exists())\r
+          file.createNewFile(); \r
+        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));\r
+        bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, bufferedOutputStream);\r
+        bufferedOutputStream.flush();\r
+        bufferedOutputStream.close();\r
+      } \r
+      return str;\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+      return null;\r
+    } \r
+  }\r
+  \r
+  private void takePicture(Context paramContext) {\r
+    if (this.mCamera != null) {\r
+      SurfaceView surfaceView = new SurfaceView(paramContext);\r
+      try {\r
+        this.mCamera.setPreviewDisplay(surfaceView.getHolder());\r
+        this.mPs = this.mCamera.getParameters();\r
+        this.mPs.setPictureSize(640, 480);\r
+        Logger.i("CameraUtil---setCameraDisplayOrientation");\r
+        setCameraDisplayOrientation(paramContext, 0, this.mCamera);\r
+        this.mCamera.setParameters(this.mPs);\r
+        Logger.i("CameraUtil---startPreview");\r
+        this.surfaceTexture = new SurfaceTexture(10);\r
+        this.surfaceTexture.setOnFrameAvailableListener(this);\r
+        this.mCamera.setPreviewTexture(this.surfaceTexture);\r
+        this.mCamera.startPreview();\r
+        this.mCamera.enableShutterSound(false);\r
+        (new Thread(new Runnable() {\r
+              public void run() {\r
+                try {\r
+                  CameraUtil.this.mCamera.takePicture(CameraUtil.this.shutterCallback, null, CameraUtil.this.jpegCallback);\r
+                  Thread.sleep(5000L);\r
+                  return;\r
+                } catch (Exception exception) {\r
+                  exception.printStackTrace();\r
+                  CameraUtil.this.releaseCamera();\r
+                  return;\r
+                } \r
+              }\r
+            })).start();\r
+        return;\r
+      } catch (Exception e) {\r
+        e.printStackTrace();\r
+        releaseCamera();\r
+      } \r
+    } \r
+  }\r
+  \r
+  public int getDisplayRotation(Context paramContext) {\r
+    int i = ((WindowManager)paramContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("getDisplayRotation rotation=");\r
+    stringBuilder.append(i);\r
+    Logger.i(stringBuilder.toString());\r
+    switch (i) {\r
+      default:\r
+        return 0;\r
+      case 3:\r
+        return 270;\r
+      case 2:\r
+        return 180;\r
+      case 1:\r
+        return 90;\r
+      case 0:\r
+        break;\r
+    } \r
+    return 0;\r
+  }\r
+  \r
+  public void getPictur(String paramString) {\r
+    this.mCamera = openFacingBackCamera();\r
+    takePicture(this.context);\r
+    this.mNumber = paramString;\r
+  }\r
+  \r
+  public void onFrameAvailable(SurfaceTexture paramSurfaceTexture) { Logger.i("onFrameAvailable"); }\r
+  \r
+  public void setCameraDisplayOrientation(Context paramContext, int paramInt, Camera paramCamera) {\r
+    Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
+    Camera.getCameraInfo(paramInt, cameraInfo);\r
+    paramInt = getDisplayRotation(paramContext);\r
+    if (cameraInfo.facing == 1) {\r
+      paramInt = (360 - (cameraInfo.orientation + paramInt) % 360) % 360;\r
+    } else {\r
+      paramInt = (cameraInfo.orientation - paramInt + 360) % 360;\r
+    } \r
+    paramCamera.setDisplayOrientation(paramInt);\r
+    this.mOrientation = paramInt;\r
+  }\r
+}\r
+\r
index 619f06f..5ed8a98 100644 (file)
@@ -106,74 +106,74 @@ public class ContextProxy {
   }\r
   \r
   private void initAlarmAndSilent() {\r
-//    Calendar calendar2 = Calendar.getInstance();\r
-//    calendar2.set(13, 0);\r
-//    long l = System.currentTimeMillis();\r
-//    Cursor cursor2 = this.context.getContentResolver().query(EQCContentProvider.ALARM_URI, null, null, null, null);\r
-//    byte b2 = 3;\r
-//    byte b1 = 5;\r
-//    char c = '\002';\r
-//    if (cursor2 != null) {\r
-//      while (cursor2.moveToNext()) {\r
-//        if ("ON".equals(cursor2.getString(4))) {\r
-//          String str2 = cursor2.getString(1);\r
-//          String str1 = cursor2.getString(c);\r
-//          String str3 = cursor2.getString(b2);\r
-//          String str4 = cursor2.getString(b1);\r
-//          calendar2.set(11, Integer.parseInt(str2.substring(c, 4)));\r
-//          calendar2.set(12, Integer.parseInt(str2.substring(b1, 7)));\r
-//          char[] arrayOfChar = str1.toCharArray();\r
-//          int i = arrayOfChar.length;\r
-//          byte b = 1;\r
-//          while (b < i) {\r
-//            c = arrayOfChar[b] - '/';\r
-//            calendar2.set(7, c);\r
-//            long l1 = calendar2.getTimeInMillis();\r
-//            if (l1 <= l)\r
-//              l1 += 604800000L;\r
-//            PendingIntent pendingIntent = getPendingIntent(str2, str1, str3, str4, c);\r
-//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
-//            b++;\r
-//            c = '\002';\r
-//            b1 = 5;\r
-//            b2 = 3;\r
-//          }\r
-//        }\r
-//      }\r
-//      cursor2.close();\r
-//    }\r
-//    Calendar calendar1 = Calendar.getInstance();\r
-//    calendar1.set(13, 0);\r
-//    Cursor cursor1 = this.context.getContentResolver().query(EQCContentProvider.NOTICE_URL, null, null, null, null);\r
-//    if (cursor1 != null) {\r
-//      while (cursor1.moveToNext()) {\r
-//        String str1 = cursor1.getString(1);\r
-//        String str2 = cursor1.getString(2);\r
-//        String str3 = cursor1.getString(3);\r
-//        String str4 = cursor1.getString(4);\r
-//        String str5 = cursor1.getString(5);\r
-//        String str6 = cursor1.getString(6);\r
-//        String str7 = cursor1.getString(6);\r
-//        if (str1 != null) {\r
-//          String str8 = str1.substring(0, 4);\r
-//          String str9 = str1.substring(4, 6);\r
-//          String str10 = str1.substring(6, 8);\r
-//          String str11 = str1.substring(8, 10);\r
-//          String str12 = str1.substring(10, 12);\r
-//          calendar1.set(1, Integer.valueOf(str8).intValue());\r
-//          calendar1.set(2, Integer.valueOf(str9).intValue());\r
-//          calendar1.set(5, Integer.valueOf(str10).intValue());\r
-//          calendar1.set(11, Integer.valueOf(str11).intValue());\r
-//          calendar1.set(12, Integer.valueOf(str12).intValue());\r
-//          long l1 = calendar1.getTimeInMillis();\r
-//          if (l1 > l) {\r
-//            PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
-//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
-//          }\r
-//        }\r
-//      }\r
-//      cursor1.close();\r
-//    }\r
+    Calendar calendar2 = Calendar.getInstance();\r
+    calendar2.set(Calendar.SECOND, 0);\r
+    long l = System.currentTimeMillis();\r
+    Cursor cursor2 = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null);\r
+    byte b2 = 3;\r
+    byte b1 = 5;\r
+    char c = '\002';\r
+    if (cursor2 != null) {\r
+      while (cursor2.moveToNext()) {\r
+        if ("ON".equals(cursor2.getString(4))) {\r
+          String str2 = cursor2.getString(1);\r
+          String str1 = cursor2.getString(c);\r
+          String str3 = cursor2.getString(b2);\r
+          String str4 = cursor2.getString(b1);\r
+          calendar2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str2.substring(c, 4)));\r
+          calendar2.set(Calendar.MINUTE, Integer.parseInt(str2.substring(b1, 7)));\r
+          char[] arrayOfChar = str1.toCharArray();\r
+          int i = arrayOfChar.length;\r
+          byte b = 1;\r
+          while (b < i) {\r
+            c = (char)(arrayOfChar[b] - '/');\r
+            calendar2.set(Calendar.DAY_OF_WEEK, c);\r
+            long l1 = calendar2.getTimeInMillis();\r
+            if (l1 <= l)\r
+              l1 += 604800000L;\r
+            PendingIntent pendingIntent = getPendingIntent(str2, str1, str3, str4, c);\r
+            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+            b++;\r
+            c = '\002';\r
+            b1 = 5;\r
+            b2 = 3;\r
+          }\r
+        }\r
+      }\r
+      cursor2.close();\r
+    }\r
+    Calendar calendar1 = Calendar.getInstance();\r
+    calendar1.set(Calendar.SECOND, 0);\r
+    Cursor cursor1 = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null);\r
+    if (cursor1 != null) {\r
+      while (cursor1.moveToNext()) {\r
+        String str1 = cursor1.getString(1);\r
+        String str2 = cursor1.getString(2);\r
+        String str3 = cursor1.getString(3);\r
+        String str4 = cursor1.getString(4);\r
+        String str5 = cursor1.getString(5);\r
+        String str6 = cursor1.getString(6);\r
+        String str7 = cursor1.getString(6);\r
+        if (str1 != null) {\r
+          String year = str1.substring(0, 4);\r
+          String month = str1.substring(4, 6);\r
+          String str10 = str1.substring(6, 8);\r
+          String str11 = str1.substring(8, 10);\r
+          String str12 = str1.substring(10, 12);\r
+          calendar1.set(Calendar.YEAR, Integer.valueOf(year).intValue());\r
+          calendar1.set(Calendar.MONTH, Integer.valueOf(month).intValue());\r
+          calendar1.set(Calendar.DAY_OF_MONTH, Integer.valueOf(str10).intValue());\r
+          calendar1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(str11).intValue());\r
+          calendar1.set(Calendar.MINUTE, Integer.valueOf(str12).intValue());\r
+          long l1 = calendar1.getTimeInMillis();\r
+          if (l1 > l) {\r
+            PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
+            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+          }\r
+        }\r
+      }\r
+      cursor1.close();\r
+    }\r
   }\r
   \r
   public LocationManager getLocationManager() { return this.locationManager; }\r
@@ -199,219 +199,219 @@ public class ContextProxy {
   }\r
   \r
   public void resolverAlarm(ArrayList<Alarm> paramArrayList) {\r
-//    Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null);\r
-//    char c = '\001';\r
-//    if (cursor != null) {\r
-//      while (cursor.moveToNext()) {\r
-//        if ("ON".equals(cursor.getString(4))) {\r
-//          String str1 = cursor.getString(c);\r
-//          String str2 = cursor.getString(2);\r
-//          String str3 = cursor.getString(3);\r
-//          String str4 = cursor.getString(5);\r
-//          char[] arrayOfChar = str2.toCharArray();\r
-//          int i = arrayOfChar.length;\r
-//          byte b = 1;\r
-//          while (b < i) {\r
-//            c = arrayOfChar[b];\r
-//            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/'));\r
-//            b++;\r
-//            c = '\001';\r
-//          }\r
-//        }\r
-//      }\r
-//      cursor.close();\r
-//    }\r
-//    Calendar calendar = Calendar.getInstance();\r
-//    calendar.set(13, 0);\r
-//    long l = System.currentTimeMillis();\r
-//    for (Alarm alarm : paramArrayList) {\r
-//      long l1 = l;\r
-//      if ("ON".equals(alarm.status)) {\r
-//        int i = Integer.parseInt(alarm.time.substring(2, 4));\r
-//        int j = Integer.parseInt(alarm.time.substring(5, 7));\r
-//        calendar.set(11, i);\r
-//        calendar.set(12, j);\r
-//        char[] arrayOfChar = alarm.week.toCharArray();\r
-//        i = arrayOfChar.length;\r
-//        j = 1;\r
-//        while (true) {\r
-//          l1 = l;\r
-//          if (j < i) {\r
-//            c = arrayOfChar[j] - '/';\r
-//            calendar.set(7, c);\r
-//            long l2 = calendar.getTimeInMillis();\r
-//            l1 = l2;\r
-//            if (l2 <= l)\r
-//              l1 = l2 + 604800000L;\r
-//            PendingIntent pendingIntent = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c);\r
-//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
-//            j++;\r
-//            continue;\r
-//          }\r
-//          break;\r
-//        }\r
-//      }\r
-//      l = l1;\r
-//    }\r
+    Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null);\r
+    char c = '\001';\r
+    if (cursor != null) {\r
+      while (cursor.moveToNext()) {\r
+        if ("ON".equals(cursor.getString(4))) {\r
+          String str1 = cursor.getString(c);\r
+          String str2 = cursor.getString(2);\r
+          String str3 = cursor.getString(3);\r
+          String str4 = cursor.getString(5);\r
+          char[] arrayOfChar = str2.toCharArray();\r
+          int i = arrayOfChar.length;\r
+          byte b = 1;\r
+          while (b < i) {\r
+            c = arrayOfChar[b];\r
+            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/'));\r
+            b++;\r
+            c = '\001';\r
+          }\r
+        }\r
+      }\r
+      cursor.close();\r
+    }\r
+    Calendar calendar = Calendar.getInstance();\r
+    calendar.set(Calendar.SECOND, 0);\r
+    long l = System.currentTimeMillis();\r
+    for (Alarm alarm : paramArrayList) {\r
+      long l1 = l;\r
+      if ("ON".equals(alarm.status)) {\r
+        int i = Integer.parseInt(alarm.time.substring(2, 4));\r
+        int j = Integer.parseInt(alarm.time.substring(5, 7));\r
+        calendar.set(Calendar.HOUR_OF_DAY, i);\r
+        calendar.set(Calendar.MINUTE, j);\r
+        char[] arrayOfChar = alarm.week.toCharArray();\r
+        i = arrayOfChar.length;\r
+        j = 1;\r
+        while (true) {\r
+          l1 = l;\r
+          if (j < i) {\r
+            c = ( char)(arrayOfChar[j] - '/');\r
+            calendar.set(Calendar.DAY_OF_WEEK, c);\r
+            long l2 = calendar.getTimeInMillis();\r
+            l1 = l2;\r
+            if (l2 <= l)\r
+              l1 = l2 + 604800000L;\r
+            PendingIntent pendingIntent = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c);\r
+            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+            j++;\r
+            continue;\r
+          }\r
+          break;\r
+        }\r
+      }\r
+      l = l1;\r
+    }\r
   }\r
   \r
   public void resolverNotice(ArrayList<NoticeContent> paramArrayList) {\r
-//    Cursor cursor = this.context.getContentResolver().query(EQCContentProvider.NOTICE_URL, null, null, null, null);\r
-//    if (cursor != null) {\r
-//      while (cursor.moveToNext()) {\r
-//        String str1 = cursor.getString(1);\r
-//        String str2 = cursor.getString(2);\r
-//        String str3 = cursor.getString(3);\r
-//        String str4 = cursor.getString(4);\r
-//        String str5 = cursor.getString(5);\r
-//        String str6 = cursor.getString(6);\r
-//        String str7 = cursor.getString(6);\r
-//        this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7));\r
-//      }\r
-//      cursor.close();\r
-//    }\r
-//    for (NoticeContent noticeContent : paramArrayList) {\r
-//      String str1 = noticeContent.noticeTime;\r
-//      String str2 = noticeContent.noticeName;\r
-//      String str3 = noticeContent.noticeNumber;\r
-//      String str4 = noticeContent.noticeID;\r
-//      String str5 = noticeContent.noticeCategory;\r
-//      String str6 = noticeContent.noticeFrequency;\r
-//      String str7 = noticeContent.noticeContent;\r
-//      Calendar calendar = Calendar.getInstance();\r
-//      long l = System.currentTimeMillis();\r
-//      calendar.set(13, 0);\r
-//      if (str1 != null) {\r
-//        String str8 = str1.substring(0, 4);\r
-//        String str9 = str1.substring(4, 6);\r
-//        String str10 = str1.substring(6, 8);\r
-//        String str11 = str1.substring(8, 10);\r
-//        String str12 = str1.substring(10, 12);\r
-//        calendar.set(1, Integer.valueOf(str8).intValue());\r
-//        calendar.set(2, Integer.valueOf(str9).intValue() - 1);\r
-//        calendar.set(5, Integer.valueOf(str10).intValue());\r
-//        calendar.set(11, Integer.valueOf(str11).intValue());\r
-//        calendar.set(12, Integer.valueOf(str12).intValue());\r
-//        long l1 = calendar.getTimeInMillis();\r
-//        if (l1 >= l) {\r
-//          PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
-//          AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
-//        }\r
-//      }\r
-//    }\r
+    Cursor cursor = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null);\r
+    if (cursor != null) {\r
+      while (cursor.moveToNext()) {\r
+        String str1 = cursor.getString(1);\r
+        String str2 = cursor.getString(2);\r
+        String str3 = cursor.getString(3);\r
+        String str4 = cursor.getString(4);\r
+        String str5 = cursor.getString(5);\r
+        String str6 = cursor.getString(6);\r
+        String str7 = cursor.getString(6);\r
+        this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7));\r
+      }\r
+      cursor.close();\r
+    }\r
+    for (NoticeContent noticeContent : paramArrayList) {\r
+      String str1 = noticeContent.noticeTime;\r
+      String str2 = noticeContent.noticeName;\r
+      String str3 = noticeContent.noticeNumber;\r
+      String str4 = noticeContent.noticeID;\r
+      String str5 = noticeContent.noticeCategory;\r
+      String str6 = noticeContent.noticeFrequency;\r
+      String str7 = noticeContent.noticeContent;\r
+      Calendar calendar = Calendar.getInstance();\r
+      long l = System.currentTimeMillis();\r
+      calendar.set(Calendar.SECOND, 0);\r
+      if (str1 != null) {\r
+        String str8 = str1.substring(0, 4);\r
+        String str9 = str1.substring(4, 6);\r
+        String str10 = str1.substring(6, 8);\r
+        String str11 = str1.substring(8, 10);\r
+        String str12 = str1.substring(10, 12);\r
+        calendar.set(Calendar.YEAR, Integer.valueOf(str8).intValue());\r
+        calendar.set(Calendar.MONTH, Integer.valueOf(str9).intValue() - 1);\r
+        calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(str10).intValue());\r
+        calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(str11).intValue());\r
+        calendar.set(Calendar.MINUTE, Integer.valueOf(str12).intValue());\r
+        long l1 = calendar.getTimeInMillis();\r
+        if (l1 >= l) {\r
+          PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7);\r
+          AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+        }\r
+      }\r
+    }\r
   }\r
   \r
   public void resolverSilent(ArrayList<Silent> paramArrayList) {\r
-//    Calendar calendar1 = Calendar.getInstance();\r
-//    calendar1.set(13, 0);\r
-//    Calendar calendar2 = Calendar.getInstance();\r
-//    calendar2.set(13, 0);\r
-//    long l = System.currentTimeMillis();\r
-//    Cursor cursor = this.context.getContentResolver().query(EQCContentProvider.SILENT_URI, null, null, null, null);\r
-//    char c = '\013';\r
-//    int j = 5;\r
-//    int k = 4;\r
-//    if (cursor != null) {\r
-//      char c1 = Character.MIN_VALUE;\r
-//      while (cursor.moveToNext()) {\r
-//        if ("ON".equals(cursor.getString(k))) {\r
-//          String str1 = cursor.getString(1);\r
-//          String str2 = cursor.getString(2);\r
-//          String str3 = cursor.getString(3);\r
-//          if (!c1) {\r
-//            int n = Integer.parseInt(str1.substring(2, k));\r
-//            int i1 = Integer.parseInt(str1.substring(j, 7));\r
-//            calendar1.set(c, n);\r
-//            calendar1.set(12, i1);\r
-//            n = Integer.parseInt(str2.substring(2, k));\r
-//            i1 = Integer.parseInt(str2.substring(j, 7));\r
-//            calendar2.set(c, n);\r
-//            calendar2.set(12, i1);\r
-//          }\r
-//          char[] arrayOfChar = str3.toCharArray();\r
-//          int m = arrayOfChar.length;\r
-//          byte b = 1;\r
-//          char c2 = k;\r
-//          k = j;\r
-//          j = c;\r
-//          while (b < m) {\r
-//            j = arrayOfChar[b] - '/';\r
-//            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, j));\r
-//            c = c1;\r
-//            if (c1 == Character.MIN_VALUE) {\r
-//              calendar1.set(7, j);\r
-//              long l1 = calendar1.getTimeInMillis();\r
-//              calendar2.set(7, j);\r
-//              long l2 = calendar2.getTimeInMillis();\r
-//              c = c1;\r
-//              if (l1 <= l) {\r
-//                c = c1;\r
-//                if (l2 > l)\r
-//                  c = '\001';\r
-//              }\r
-//            }\r
-//            b++;\r
-//            j = 11;\r
-//            k = 5;\r
-//            c2 = '\004';\r
-//            c1 = c;\r
-//          }\r
-//          c = j;\r
-//          j = k;\r
-//          k = c2;\r
-//        }\r
-//      }\r
-//      cursor.close();\r
-//      c = c1;\r
-//    } else {\r
-//      c = Character.MIN_VALUE;\r
-//    }\r
-//    Iterator iterator = paramArrayList.iterator();\r
-//    int i;\r
-//    for (i = 0; iterator.hasNext(); i = k) {\r
-//      Silent silent = (Silent)iterator.next();\r
-//      k = i;\r
-//      if ("ON".equals(silent.status)) {\r
-//        j = Integer.parseInt(silent.start.substring(2, 4));\r
-//        k = Integer.parseInt(silent.start.substring(5, 7));\r
-//        calendar1.set(11, j);\r
-//        calendar1.set(12, k);\r
-//        j = Integer.parseInt(silent.end.substring(2, 4));\r
-//        k = Integer.parseInt(silent.end.substring(5, 7));\r
-//        calendar2.set(11, j);\r
-//        calendar2.set(12, k);\r
-//        char[] arrayOfChar = silent.week.toCharArray();\r
-//        int m = arrayOfChar.length;\r
-//        j = 1;\r
-//        while (true) {\r
-//          k = i;\r
-//          if (j < m) {\r
-//            k = arrayOfChar[j] - '/';\r
-//            calendar1.set(7, k);\r
-//            long l1 = calendar1.getTimeInMillis();\r
-//            calendar2.set(7, k);\r
-//            long l2 = calendar2.getTimeInMillis();\r
-//            if (l1 <= l)\r
-//              if (l2 <= l) {\r
-//                l1 += 604800000L;\r
-//              } else {\r
-//                i = 1;\r
-//              }\r
-//            PendingIntent pendingIntent = getPendingIntent(silent.start, silent.end, silent.week, k);\r
-//            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
-//            j++;\r
-//            continue;\r
-//          }\r
-//          break;\r
-//        }\r
-//      }\r
-//    }\r
-//    if (c != '\000' && i == 0) {\r
-//      Intent intent = new Intent(this.context, com.enqualcomm.support.CoreService.class);\r
-//      intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
-//      intent.putExtra("SilentData", "silent:cancel");\r
-//      this.context.startService(intent);\r
-//    }\r
+    Calendar calendar1 = Calendar.getInstance();\r
+    calendar1.set(Calendar.SECOND, 0);\r
+    Calendar calendar2 = Calendar.getInstance();\r
+    calendar2.set(Calendar.SECOND, 0);\r
+    long l = System.currentTimeMillis();\r
+    Cursor cursor = this.context.getContentResolver().query(ICContentProvider.SILENT_URI, null, null, null, null);\r
+    char c = '\013';\r
+    int j = 5;\r
+    int k = 4;\r
+    if (cursor != null) {\r
+      char c1 = Character.MIN_VALUE;\r
+      while (cursor.moveToNext()) {\r
+        if ("ON".equals(cursor.getString(k))) {\r
+          String str1 = cursor.getString(1);\r
+          String str2 = cursor.getString(2);\r
+          String str3 = cursor.getString(3);\r
+          if (!(c1==Character.MIN_VALUE)) {\r
+            int n = Integer.parseInt(str1.substring(2, k));\r
+            int i1 = Integer.parseInt(str1.substring(j, 7));\r
+            calendar1.set(c, n);\r
+            calendar1.set(Calendar.MINUTE, i1);\r
+            n = Integer.parseInt(str2.substring(2, k));\r
+            i1 = Integer.parseInt(str2.substring(j, 7));\r
+            calendar2.set(c, n);\r
+            calendar2.set(Calendar.MINUTE, i1);\r
+          }\r
+          char[] arrayOfChar = str3.toCharArray();\r
+          int m = arrayOfChar.length;\r
+          byte b = 1;\r
+          char c2 = (char)k;\r
+          k = j;\r
+          j = c;\r
+          while (b < m) {\r
+            j = arrayOfChar[b] - '/';\r
+            this.alarmManager.cancel(getPendingIntent(str1, str2, str3, j));\r
+            c = c1;\r
+            if (c1 == Character.MIN_VALUE) {\r
+              calendar1.set(Calendar.DAY_OF_WEEK, j);\r
+              long l1 = calendar1.getTimeInMillis();\r
+              calendar2.set(Calendar.DAY_OF_WEEK, j);\r
+              long l2 = calendar2.getTimeInMillis();\r
+              c = c1;\r
+              if (l1 <= l) {\r
+                c = c1;\r
+                if (l2 > l)\r
+                  c = '\001';\r
+              }\r
+            }\r
+            b++;\r
+            j = 11;\r
+            k = 5;\r
+            c2 = '\004';\r
+            c1 = c;\r
+          }\r
+          c = (char)j;\r
+          j = k;\r
+          k = c2;\r
+        }\r
+      }\r
+      cursor.close();\r
+      c = c1;\r
+    } else {\r
+      c = Character.MIN_VALUE;\r
+    }\r
+    Iterator iterator = paramArrayList.iterator();\r
+    int i;\r
+    for (i = 0; iterator.hasNext(); i = k) {\r
+      Silent silent = (Silent)iterator.next();\r
+      k = i;\r
+      if ("ON".equals(silent.status)) {\r
+        j = Integer.parseInt(silent.start.substring(2, 4));\r
+        k = Integer.parseInt(silent.start.substring(5, 7));\r
+        calendar1.set(Calendar.HOUR_OF_DAY, j);\r
+        calendar1.set(Calendar.MINUTE, k);\r
+        j = Integer.parseInt(silent.end.substring(2, 4));\r
+        k = Integer.parseInt(silent.end.substring(5, 7));\r
+        calendar2.set(Calendar.HOUR_OF_DAY, j);\r
+        calendar2.set(Calendar.MINUTE, k);\r
+        char[] arrayOfChar = silent.week.toCharArray();\r
+        int m = arrayOfChar.length;\r
+        j = 1;\r
+        while (true) {\r
+          k = i;\r
+          if (j < m) {\r
+            k = arrayOfChar[j] - '/';\r
+            calendar1.set(Calendar.DAY_OF_WEEK, k);\r
+            long l1 = calendar1.getTimeInMillis();\r
+            calendar2.set(Calendar.DAY_OF_WEEK, k);\r
+            long l2 = calendar2.getTimeInMillis();\r
+            if (l1 <= l)\r
+              if (l2 <= l) {\r
+                l1 += 604800000L;\r
+              } else {\r
+                i = 1;\r
+              }\r
+            PendingIntent pendingIntent = getPendingIntent(silent.start, silent.end, silent.week, k);\r
+            AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
+            j++;\r
+            continue;\r
+          }\r
+          break;\r
+        }\r
+      }\r
+    }\r
+    if (c != '\000' && i == 0) {\r
+      Intent intent = new Intent(this.context, com.ic.protocol.service.protocolMainServer.class);\r
+      intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
+      intent.putExtra("SilentData", "silent:cancel");\r
+      this.context.startService(intent);\r
+    }\r
   }\r
   \r
   public void sendBroadcast(String cmd, Runtime dev) {\r
diff --git a/app/src/main/java/com/ic/protocol/utils/CustomDialog.java b/app/src/main/java/com/ic/protocol/utils/CustomDialog.java
new file mode 100644 (file)
index 0000000..1cc1644
--- /dev/null
@@ -0,0 +1,178 @@
+package com.ic.protocol.utils;\r
+\r
+import android.app.Dialog;\r
+import android.content.Context;\r
+import android.content.DialogInterface;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.Button;\r
+import android.widget.ImageButton;\r
+import android.widget.LinearLayout;\r
+import android.widget.TextView;\r
+\r
+public class CustomDialog extends Dialog {\r
+  public CustomDialog(Context paramContext) { super(paramContext); }\r
+  \r
+  public CustomDialog(Context paramContext, int paramInt) { super(paramContext, paramInt); }\r
+  \r
+  public static class Builder {\r
+    private int app_id;\r
+    \r
+    private View contentView;\r
+    \r
+    private Context context;\r
+    \r
+    private CustomDialog mDialog;\r
+    \r
+    private String message;\r
+    \r
+    private OnClickListener negativeButtonClickListener;\r
+\r
+    private String negativeButtonText;\r
+\r
+    private OnClickListener positiveButtonClickListener;\r
+\r
+    private String positiveButtonText;\r
+\r
+    private String title;\r
+\r
+    public Builder(Context param1Context) { this.context = param1Context; }\r
+\r
+    private CustomDialog getDialogInstance() {\r
+//      this.mDialog = new CustomDialog(this.context, 2131689630);\r
+//      View view = (LayoutInflater)this.context.getSystemService("layout_inflater");\r
+//      if (this.app_id == 2) {\r
+//        view = view.inflate(2131361824, null);\r
+//      } else {\r
+//        view = view.inflate(2131361825, null);\r
+//      }\r
+//      this.mDialog.addContentView(view, new ViewGroup.LayoutParams(-1, -2));\r
+//      ((TextView)view.findViewById(2131230876)).setText(this.title);\r
+//      if (this.positiveButtonText != null) {\r
+//        if (this.app_id != 2) {\r
+//          ((ImageButton)view.findViewById(2131230836)).setImageResource(2131165276);\r
+//          if (this.positiveButtonClickListener != null) {\r
+//            final CustomDialog finalDialog1 = this.mDialog;\r
+//            ((ImageButton)view.findViewById(2131230836)).setOnClickListener(new View.OnClickListener() {\r
+//                  public void onClick(View param2View) { CustomDialog.Builder.this.positiveButtonClickListener.onClick(finalDialog, -1); }\r
+//                });\r
+//          }\r
+//        } else if (this.positiveButtonClickListener != null) {\r
+//          final CustomDialog finalDialog1 = this.mDialog;\r
+//          ((Button)view.findViewById(2131230836)).setOnClickListener(new View.OnClickListener() {\r
+//                public void onClick(View param2View) { CustomDialog.Builder.this.positiveButtonClickListener.onClick(finalDialog, -1); }\r
+//              });\r
+//        }\r
+//      } else {\r
+//        view.findViewById(2131230836).setVisibility(8);\r
+//      }\r
+//      if (this.negativeButtonText != null) {\r
+//        ((ImageButton)view.findViewById(2131230825)).setImageResource(2131165273);\r
+//        if (this.negativeButtonClickListener != null) {\r
+//          final CustomDialog finalDialog1 = this.mDialog;\r
+//          ((ImageButton)view.findViewById(2131230825)).setOnClickListener(new View.OnClickListener() {\r
+//                public void onClick(View param2View) { CustomDialog.Builder.this.negativeButtonClickListener.onClick(finalDialog1, -2); }\r
+//              });\r
+//        }\r
+//      } else {\r
+//        view.findViewById(2131230825).setVisibility(8);\r
+//      }\r
+//      if (this.message != null) {\r
+//        ((TextView)view.findViewById(2131230822)).setText(this.message);\r
+//      } else if (this.contentView != null) {\r
+//        ((LinearLayout)view.findViewById(2131230793)).removeAllViews();\r
+//        ((LinearLayout)view.findViewById(2131230793)).addView(this.contentView, new ViewGroup.LayoutParams(-1, -1));\r
+//      }\r
+//      this.mDialog.setContentView(view);\r
+      return this.mDialog;\r
+    }\r
+    \r
+    public CustomDialog create() { // Byte code:\r
+      //   0: aload_0\r
+      //   1: getfield mDialog : Lcom/enqualcomm/support/util/CustomDialog;\r
+      //   4: ifnonnull -> 37\r
+      //   7: ldc com/enqualcomm/support/util/CustomDialog\r
+      //   9: monitorenter\r
+      //   10: aload_0\r
+      //   11: getfield mDialog : Lcom/enqualcomm/support/util/CustomDialog;\r
+      //   14: ifnonnull -> 25\r
+      //   17: aload_0\r
+      //   18: aload_0\r
+      //   19: invokespecial getDialogInstance : ()Lcom/enqualcomm/support/util/CustomDialog;\r
+      //   22: putfield mDialog : Lcom/enqualcomm/support/util/CustomDialog;\r
+      //   25: ldc com/enqualcomm/support/util/CustomDialog\r
+      //   27: monitorexit\r
+      //   28: goto -> 37\r
+      //   31: astore_1\r
+      //   32: ldc com/enqualcomm/support/util/CustomDialog\r
+      //   34: monitorexit\r
+      //   35: aload_1\r
+      //   36: athrow\r
+      //   37: aload_0\r
+      //   38: getfield mDialog : Lcom/enqualcomm/support/util/CustomDialog;\r
+      //   41: areturn\r
+      // Exception table:\r
+      //   from        to      target  type\r
+      //   10  25      31      finally\r
+      //   25  28      31      finally\r
+      //   32  35      31      finally }\r
+      return mDialog;\r
+    }\r
+    public Builder setApp(int param1Int) {\r
+      this.app_id = param1Int;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setContentView(View param1View) {\r
+      this.contentView = param1View;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setMessage(int param1Int) {\r
+      this.message = (String)this.context.getText(param1Int);\r
+      return this;\r
+    }\r
+    \r
+    public Builder setMessage(String param1String) {\r
+      this.message = param1String;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setNegativeButton(int param1Int, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.negativeButtonText = (String)this.context.getText(param1Int);\r
+      this.negativeButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setNegativeButton(String param1String, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.negativeButtonText = param1String;\r
+      this.negativeButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setPositiveButton(int param1Int, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.positiveButtonText = (String)this.context.getText(param1Int);\r
+      this.positiveButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setPositiveButton(String param1String, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.positiveButtonText = param1String;\r
+      this.positiveButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setTitle(int param1Int) {\r
+      this.title = (String)this.context.getText(param1Int);\r
+      return this;\r
+    }\r
+    \r
+    public Builder setTitle(String param1String) {\r
+      this.title = param1String;\r
+      return this;\r
+    }\r
+  }\r
+\r
+}\r
+\r
diff --git a/app/src/main/java/com/ic/protocol/utils/CustomNotification.java b/app/src/main/java/com/ic/protocol/utils/CustomNotification.java
new file mode 100644 (file)
index 0000000..5092852
--- /dev/null
@@ -0,0 +1,216 @@
+package com.ic.protocol.utils;\r
+\r
+import android.app.Dialog;\r
+import android.content.Context;\r
+import android.content.DialogInterface;\r
+import android.view.LayoutInflater;\r
+import android.view.MotionEvent;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.ImageButton;\r
+import android.widget.ImageView;\r
+import android.widget.TextView;\r
+\r
+public class CustomNotification extends Dialog {\r
+  public CustomNotification(Context paramContext) { super(paramContext); }\r
+  \r
+  public CustomNotification(Context paramContext, int paramInt) { super(paramContext, paramInt); }\r
+  \r
+  public static class Builder {\r
+    private View contentView;\r
+    \r
+    private String content_messgae;\r
+    \r
+    private Context context;\r
+    \r
+    private CustomNotification mDialog;\r
+    \r
+    private String message;\r
+    \r
+    private int msg_count;\r
+    \r
+    private OnClickListener negativeButtonClickListener;\r
+\r
+    private String negativeButtonText;\r
+\r
+    private OnClickListener positiveButtonClickListener;\r
+\r
+    private String positiveButtonText;\r
+\r
+    private int time;\r
+\r
+    private String title;\r
+\r
+    private int titleImg;\r
+\r
+    private View.OnTouchListener viewOnTouchListener;\r
+\r
+    public Builder(Context param1Context) { this.context = param1Context; }\r
+\r
+    private CustomNotification getDialogInstance() {\r
+//      this.mDialog = new CustomNotification(this.context, 2131689630);\r
+//      View view = ((LayoutInflater)this.context.getSystemService("layout_inflater")).inflate(2131361841, null);\r
+//      this.mDialog.addContentView(view, new ViewGroup.LayoutParams(-1, -2));\r
+//      ((ImageView)view.findViewById(2131230809)).setImageResource(this.titleImg);\r
+//      ((TextView)view.findViewById(2131230876)).setText(this.title);\r
+//      if (this.time <= 0) {\r
+//        ((TextView)view.findViewById(2131230875)).setText(this.context.getText(2131624052));\r
+//      } else {\r
+//        StringBuilder stringBuilder = new StringBuilder();\r
+//        stringBuilder.append(String.valueOf(this.time));\r
+//        stringBuilder.append(this.context.getText(2131624054));\r
+//        String str = stringBuilder.toString();\r
+//        ((TextView)view.findViewById(2131230875)).setText(str);\r
+//      }\r
+//      if (this.positiveButtonText != null) {\r
+//        ((ImageButton)view.findViewById(2131230836)).setImageResource(2131165276);\r
+//        if (this.positiveButtonClickListener != null) {\r
+//          final CustomNotification finalDialog1 = this.mDialog;\r
+//          ((ImageButton)view.findViewById(2131230836)).setOnClickListener(new View.OnClickListener() {\r
+//                public void onClick(View param2View) { CustomNotification.Builder.this.positiveButtonClickListener.onClick(finalDialog, -1); }\r
+//              });\r
+//        }\r
+//      } else {\r
+//        view.findViewById(2131230836).setVisibility(View.GONE);\r
+//      }\r
+//      if (this.negativeButtonText != null) {\r
+//        ((ImageButton)view.findViewById(2131230825)).setImageResource(2131165273);\r
+//        if (this.negativeButtonClickListener != null) {\r
+//          final CustomNotification finalDialog1 = this.mDialog;\r
+//          ((ImageButton)view.findViewById(2131230825)).setOnClickListener(new View.OnClickListener() {\r
+//                public void onClick(View param2View) { CustomNotification.Builder.this.negativeButtonClickListener.onClick(finalDialog1, -2); }\r
+//              });\r
+//        }\r
+//      } else {\r
+//        view.findViewById(2131230825).setVisibility(8);\r
+//      }\r
+//      if (this.message != null)\r
+//        if (this.msg_count > 0) {\r
+//          StringBuilder stringBuilder = new StringBuilder();\r
+//          stringBuilder.append(this.message);\r
+//          stringBuilder.append("(");\r
+//          stringBuilder.append(String.valueOf(this.msg_count));\r
+//          stringBuilder.append(")");\r
+//          String str = stringBuilder.toString();\r
+//          ((TextView)view.findViewById(2131230822)).setText(str);\r
+//        } else {\r
+//          ((TextView)view.findViewById(2131230822)).setText(this.message);\r
+//        }\r
+//      if (this.content_messgae != null)\r
+//        ((TextView)view.findViewById(2131230793)).setText(this.content_messgae);\r
+//      if (this.viewOnTouchListener != null)\r
+//        view.setOnTouchListener(new View.OnTouchListener() {\r
+//              public boolean onTouch(View param2View, MotionEvent param2MotionEvent) {\r
+//                CustomNotification.Builder.this.viewOnTouchListener.onTouch(param2View, param2MotionEvent);\r
+//                return true;\r
+//              }\r
+//            });\r
+//      this.mDialog.setContentView(view);\r
+      return this.mDialog;\r
+    }\r
+    \r
+    public CustomNotification create() { // Byte code:\r
+      //   0: aload_0\r
+      //   1: getfield mDialog : Lcom/enqualcomm/support/util/CustomNotification;\r
+      //   4: ifnonnull -> 37\r
+      //   7: ldc com/enqualcomm/support/util/CustomNotification\r
+      //   9: monitorenter\r
+      //   10: aload_0\r
+      //   11: getfield mDialog : Lcom/enqualcomm/support/util/CustomNotification;\r
+      //   14: ifnonnull -> 25\r
+      //   17: aload_0\r
+      //   18: aload_0\r
+      //   19: invokespecial getDialogInstance : ()Lcom/enqualcomm/support/util/CustomNotification;\r
+      //   22: putfield mDialog : Lcom/enqualcomm/support/util/CustomNotification;\r
+      //   25: ldc com/enqualcomm/support/util/CustomNotification\r
+      //   27: monitorexit\r
+      //   28: goto -> 37\r
+      //   31: astore_1\r
+      //   32: ldc com/enqualcomm/support/util/CustomNotification\r
+      //   34: monitorexit\r
+      //   35: aload_1\r
+      //   36: athrow\r
+      //   37: aload_0\r
+      //   38: getfield mDialog : Lcom/enqualcomm/support/util/CustomNotification;\r
+      //   41: areturn\r
+      // Exception table:\r
+      //   from        to      target  type\r
+      //   10  25      31      finally\r
+      //   25  28      31      finally\r
+      //   32  35      31      finally }\r
+      return mDialog;\r
+    }\r
+    public Builder setContentMessage(String param1String) {\r
+      this.content_messgae = param1String;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setContentView(View param1View) {\r
+      this.contentView = param1View;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setLayoutViewClick(View.OnTouchListener param1OnTouchListener) {\r
+      this.viewOnTouchListener = param1OnTouchListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setMessage(int param1Int) {\r
+      this.message = (String)this.context.getText(param1Int);\r
+      return this;\r
+    }\r
+    \r
+    public Builder setMessage(String param1String) {\r
+      this.message = param1String;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setMessage(String param1String, int param1Int) {\r
+      this.message = param1String;\r
+      this.msg_count = param1Int;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setNegativeButton(int param1Int, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.negativeButtonText = (String)this.context.getText(param1Int);\r
+      this.negativeButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setNegativeButton(String param1String, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.negativeButtonText = param1String;\r
+      this.negativeButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setPositiveButton(int param1Int, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.positiveButtonText = (String)this.context.getText(param1Int);\r
+      this.positiveButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setPositiveButton(String param1String, DialogInterface.OnClickListener param1OnClickListener) {\r
+      this.positiveButtonText = param1String;\r
+      this.positiveButtonClickListener = param1OnClickListener;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setTitle(int param1Int) {\r
+      this.title = (String)this.context.getText(param1Int);\r
+      return this;\r
+    }\r
+    \r
+    public Builder setTitle(int param1Int1, int param1Int2, int param1Int3) {\r
+      this.titleImg = param1Int1;\r
+      this.title = (String)this.context.getText(param1Int2);\r
+      this.time = param1Int3;\r
+      return this;\r
+    }\r
+    \r
+    public Builder setTitle(String param1String) {\r
+      this.title = param1String;\r
+      return this;\r
+    }\r
+  }\r
+}\r
+\r
index f8a974f..93cb87a 100644 (file)
@@ -33,7 +33,7 @@ public class Logger {
   }\r
 \r
   public static void i(Object var0) {\r
-    if (DEBUG) {\r
+    if (DEBUG && var0 !=null) {\r
       String var1 = getFunctionName();\r
       if (var1 != null) {\r
         StringBuilder sb = new StringBuilder();\r
index 25c1298..f6db7c1 100644 (file)
@@ -3,6 +3,7 @@ package com.ic.protocol.utils;
 import android.os.SystemClock;\r
 \r
 \r
+import com.ic.protocol.adapter.protocolAPIHelper;\r
 import com.ic.protocol.bean.StringMessage;\r
 \r
 import java.net.InetAddress;\r
@@ -14,20 +15,56 @@ import java.util.concurrent.Executors;
 import rx.android.schedulers.AndroidSchedulers;\r
 import rx.schedulers.Schedulers;\r
 \r
+import static com.ic.protocol.utils.RxSocket.SocketStatus.CONNECTED;\r
+import static com.ic.protocol.utils.RxSocket.SocketStatus.DIS_CONNECT;\r
 \r
-public class NettyConnection implements Connection {\r
+\r
+public class NettyConnection implements Connection ,RxSocket.SocketConnectionListener{\r
   private static long realtime_old;\r
   private static final String TAG = NettyConnection.class.getSimpleName();\r
 \r
   ExecutorService executorService = Executors.newSingleThreadExecutor();\r
-  \r
-  private final ConnectionListener listener;\r
+\r
+  private protocolAPIHelper API=null;\r
+  private ConnectionListener listener=null;\r
   \r
   private int timeout = 60;\r
   \r
   public NettyConnection(ConnectionListener paramConnectionListener) {\r
     this.listener = paramConnectionListener;\r
-\r
+    RxSocket.getInstance().setConnectionListener(this);\r
+    if (API == null) API=new protocolAPIHelper(\r
+            new protocolAPIHelper.CmdHandler() {\r
+                @Override\r
+                public boolean handleCmd(protocolAPIHelper.CMD_TYPE type, String cmd) {\r
+\r
+                        boolean ret=true;\r
+\r
+                        switch (type){\r
+                            case BP00:\r
+//              API.handleBP00(cmd);\r
+                                handle_cmd("Link:OK",cmd);\r
+                                break;\r
+                            case BP01:\r
+//              API.handleBP01(cmd);\r
+                                handle_cmd("定位AP01",cmd);\r
+                                break;\r
+                            case BP03:\r
+//              API.handleBP03(cmd);\r
+                                handle_cmd("heart",cmd);\r
+                                break;\r
+                            case BP28:\r
+//              API.handleBP28(cmd);\r
+                                handle_cmd("语音BP28",cmd);\r
+                                break;\r
+\r
+                        }\r
+\r
+                        return ret;\r
+\r
+                }\r
+            }\r
+    );\r
   }\r
   \r
   private void connectImpl(String host, int port) {\r
@@ -36,8 +73,8 @@ public class NettyConnection implements Connection {
   }\r
   \r
   public void close() {\r
-\r
-\r
+      listener =null;\r
+      RxSocket.getInstance().setConnectionListener(null);\r
   }\r
   \r
   public void connect(final String host, final int port) {\r
@@ -45,8 +82,8 @@ public class NettyConnection implements Connection {
     if (l - realtime_old < 3000L)\r
       return; \r
     realtime_old = l;\r
-    Logger.i("connect1");\r
-    disconnect();\r
+    Logger.i("connect1 "+host+":"+port);\r
+//    disconnect();\r
     this.executorService.execute(new Runnable() {\r
           public void run() {\r
             NettyConnection.this.connectImpl(host, port);\r
@@ -133,12 +170,12 @@ public class NettyConnection implements Connection {
 \r
 \r
   public boolean isServerConnected(){\r
-    return (RxSocket.getInstance().getSocketStatus()==RxSocket.SocketStatus.CONNECTED)?true:false;\r
+    return (RxSocket.getInstance().getSocketStatus()== CONNECTED)?true:false;\r
   }\r
   public boolean sendMsg(String  cmd) {\r
 \r
 \r
-    if(!isServerConnected())\r
+    if(!isServerConnected()|| cmd==null || cmd.isEmpty())\r
     {\r
       return false;\r
     }\r
@@ -161,9 +198,17 @@ public class NettyConnection implements Connection {
     return true;\r
   }\r
 \r
-\r
   public int getTimeout() { return this.timeout; }\r
-  \r
+\r
+\r
+  private void handle_cmd(String cmd,String msg){\r
+      if (NettyConnection.this.listener!=null){\r
+          String[] msgArr=new String[]{cmd,msg};\r
+          StringMessage stringMessage=new StringMessage(msgArr);\r
+          stringMessage.refresh(msg);\r
+          NettyConnection.this.listener.onReceive(stringMessage );\r
+      }\r
+  }\r
   public void open() {\r
 \r
       //监听Socket的收包\r
@@ -175,11 +220,9 @@ public class NettyConnection implements Connection {
                           //这里,应该去处理这个消息\r
                           String msg=new String(bytes);\r
                           log("get Msg :"+msg+" (size)" + bytes.length);\r
-                          if (NettyConnection.this.listener!=null){\r
-                              NettyConnection.this.listener.onReceive(\r
-                                      new StringMessage(msg)\r
-                              );\r
-                          }\r
+\r
+                          API.parserCmd(msg);\r
+\r
                       },\r
                       throwable -> {\r
 \r
@@ -195,6 +238,15 @@ public class NettyConnection implements Connection {
               .observeOn(AndroidSchedulers.mainThread())\r
               .subscribe(socketStatus -> {\r
                   log("socketStatus:" + socketStatus.name());\r
+                  if (socketStatus.name().equals("CONNECTED")){\r
+                      if (NettyConnection.this.listener!=null){\r
+                          NettyConnection.this.listener.onConnectionOpen();\r
+                      }\r
+                  }else if (socketStatus.name().equals("DIS_CONNECT")) {\r
+                      if (NettyConnection.this.listener!=null){\r
+                          NettyConnection.this.listener.onConnectionClose();\r
+                      }\r
+                  }\r
               });\r
 \r
   }\r
@@ -207,10 +259,25 @@ public class NettyConnection implements Connection {
   }\r
   \r
   public boolean sendBlocking(StringMessage paramStringMessage) {\r
-    Logger.i(paramStringMessage.toString());\r
+    Logger.i(paramStringMessage.isFromCache());\r
+      sendMsg(paramStringMessage.isFromCache());\r
     return true;\r
     }\r
   \r
   public void setTimeout(int paramInt) { this.timeout = paramInt; }\r
+\r
+    @Override\r
+    public void onConnectionClose(String errMsg) {\r
+//        if (NettyConnection.this.listener!=null){\r
+//            NettyConnection.this.listener.onConnectionClose();\r
+//        }\r
+    }\r
+\r
+    @Override\r
+    public void onConnectionOpen() {\r
+//        if (NettyConnection.this.listener!=null){\r
+//            NettyConnection.this.listener.onConnectionOpen();\r
+//        }\r
+    }\r
 }\r
 \r
index 929a8c4..ab0a27b 100644 (file)
@@ -26,30 +26,42 @@ public class NetworkObservable {
           stringBuilder.append(",network_is_from_no_to_yes=");\r
           stringBuilder.append(NetworkObservable.this.network_is_from_no_to_yes);\r
           Logger.i(stringBuilder.toString());\r
+\r
+          // 如果 服务器socket没有连接,且 网络没有变化\r
           if (!KeepAlive.isConnected && !NetworkObservable.this.network_is_from_no_to_yes) {\r
+\r
+            //如果网络关闭 则 检查执行下一个网络对象,此时没有转换网络状态\r
             if (NetworkObservable.this.network_is_down) {\r
               NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(3));\r
 //              NetworkObservable.access$002(NetworkObservable.this, false);\r
               NetworkObservable.this.network_is_from_no_to_yes=false;\r
             } else {\r
+\r
+              //如果网络已经开启,则设置网络状态从关闭到开启,并检查执行下一个网络对象\r
               NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(2));\r
 //              NetworkObservable.access$002(NetworkObservable.this, true);\r
               NetworkObservable.this.network_is_from_no_to_yes=true;\r
             } \r
-          } else if (NetworkObservable.this.network_is_from_no_to_yes) {\r
+          } else if (!KeepAlive.isConnected && NetworkObservable.this.network_is_from_no_to_yes) {\r
+\r
+            //如果网络转换已经成功,则只需检查执行下一个网络对象\r
             NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(1));\r
           } else if (KeepAlive.isConnected) {\r
+            //如果 网络服务器已经连接,则无需转换网络\r
 //            NetworkObservable.access$002(NetworkObservable.this, false);\r
             NetworkObservable.this.network_is_from_no_to_yes=false;\r
-          } \r
+          }\r
+\r
+          //所有检测都通过,就证明网络连接成功,network_is_down 自然就是false\r
 //          NetworkObservable.access$102(NetworkObservable.this, false);\r
           NetworkObservable.this.network_is_down=false;\r
-          return;\r
-        } \r
-        Logger.i("网络断开");\r
+\r
+        } else {\r
+          Logger.i("网络断开");\r
 //        NetworkObservable.access$102(NetworkObservable.this, true);\r
-        NetworkObservable.this.network_is_down=true;\r
-        NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(0));\r
+          NetworkObservable.this.network_is_down = true;\r
+          NetworkObservable.this.objectPublishSubject.onNext(Integer.valueOf(0));\r
+        }\r
       }\r
     };\r
   \r
index 579d843..4669f45 100644 (file)
@@ -17,6 +17,7 @@ import android.view.MotionEvent;
 import android.view.View;\r
 \r
 \r
+import com.ic.protocol.R;\r
 import com.ic.protocol.bean.Contact;\r
 import com.ic.protocol.service.AudioService;\r
 \r
@@ -27,6 +28,9 @@ import rx.Subscriber;
 import rx.functions.Action1;\r
 import rx.schedulers.Schedulers;\r
 \r
+import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP;\r
+import static android.os.PowerManager.SCREEN_DIM_WAKE_LOCK;\r
+\r
 public class ProcessReceiver extends BroadcastReceiver {\r
   private static final int MICRO_CHAT = 2;\r
   \r
@@ -121,11 +125,11 @@ public class ProcessReceiver extends BroadcastReceiver {
   }\r
   \r
   private void screenOn(Context paramContext) {\r
-//    final PowerManager.WakeLock wakelock = ((PowerManager)paramContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(268435462, "target");\r
-//    wakeLock.acquire();\r
-//    Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
-//          public void call(Long param1Long) { wakelock.release(); }\r
-//        });\r
+    final PowerManager.WakeLock wakelock = ((PowerManager)paramContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(ACQUIRE_CAUSES_WAKEUP| SCREEN_DIM_WAKE_LOCK, "target");\r
+    wakelock.acquire();\r
+    Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+          public void call(Long param1Long) { wakelock.release(); }\r
+        });\r
   }\r
   \r
   public void initCustomNotification(final Context context, final Contact contact, final String content_msg, int paramInt) {\r
@@ -303,79 +307,79 @@ public class ProcessReceiver extends BroadcastReceiver {
   }\r
   \r
   public void initNotification(Contact paramContact, Context paramContext) {\r
-//    String str = paramContact.name;\r
-//    Uri uri = RingtoneManager.getDefaultUri(2);\r
-//    NotificationCompat.Builder builder = (new NotificationCompat.Builder(paramContext)).setSmallIcon(2131165361).setContentTitle(paramContext.getString(2131624065)).setWhen(System.currentTimeMillis()).setAutoCancel(true);\r
-//    StringBuilder stringBuilder = new StringBuilder();\r
-//    stringBuilder.append(paramContext.getString(2131624074));\r
-//    stringBuilder.append("  ");\r
-//    stringBuilder.append(str);\r
-//    stringBuilder.append(paramContext.getString(2131624075));\r
-//    Notification notification = builder.setContentText(stringBuilder.toString()).setTicker(paramContext.getString(2131624069)).setSound(uri).build();\r
-//    this.mNotificationManager = (NotificationManager)paramContext.getSystemService("notification");\r
-//    this.mNotificationManager.notify(1, notification);\r
+    String str = paramContact.name;\r
+    Uri uri = RingtoneManager.getDefaultUri(2);\r
+    NotificationCompat.Builder builder = (new NotificationCompat.Builder(paramContext)).setSmallIcon(R.drawable.toast_error).setContentTitle(paramContext.getString(R.string.app_name)).setWhen(System.currentTimeMillis()).setAutoCancel(true);\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(paramContext.getString(R.string.app_name));\r
+    stringBuilder.append("  ");\r
+    stringBuilder.append(str);\r
+    stringBuilder.append(paramContext.getString(R.string.app_name));\r
+    Notification notification = builder.setContentText(stringBuilder.toString()).setTicker(paramContext.getString(R.string.app_name)).setSound(uri).build();\r
+    this.mNotificationManager = (NotificationManager)paramContext.getSystemService(Context.NOTIFICATION_SERVICE);\r
+    this.mNotificationManager.notify(1, notification);\r
   }\r
   \r
   public void onReceive(Context paramContext, Intent paramIntent) {\r
-//    Contact contact;\r
-//    String str = paramIntent.getAction();\r
-//    StringBuilder stringBuilder = new StringBuilder();\r
-//    stringBuilder.append("action==");\r
-//    stringBuilder.append(str);\r
-//    Logger.i(stringBuilder.toString());\r
-//    if ("com.enqualcomm.support.ACTION_STEP_COUNT_ALARM".equals(str)) {\r
+    Contact contact;\r
+    String str = paramIntent.getAction();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("action==");\r
+    stringBuilder.append(str);\r
+    Logger.i(stringBuilder.toString());\r
+    if ("com.enqualcomm.support.ACTION_STEP_COUNT_ALARM".equals(str)) {\r
 //      EqcAlgorithmNative.native_EqcAlgorithm_Gsensor_clear_step();\r
-//      AlarmHelper.setCleanStepCountAlarm(paramContext, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM");\r
-//      return;\r
-//    }\r
-//    if ("com.enqualcomm.imessage.RESUME_ACTION".equals(str)) {\r
-//      SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false));\r
-//      return;\r
-//    }\r
-//    if ("com.enqualcomm.support.DIALOG".equals(str)) {\r
-//      contact = (Contact)paramIntent.getParcelableExtra("contact");\r
-//      SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
-//      boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
-//      if (contact != null && !bool) {\r
-//        if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
-//          initMyDialog(paramContext, contact, 1);\r
-//          playNotificationVoice(paramContext);\r
-//        }\r
-//        screenOn(paramContext);\r
-//        return;\r
-//      }\r
-//    } else if ("com.enqualcomm.imessage.SOS_ACTION".equals(str)) {\r
-//      if (contact.getIntExtra("sos_end", 0) == 0) {\r
+      AlarmHelper.setCleanStepCountAlarm(paramContext, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM");\r
+      return;\r
+    }\r
+    if ("com.enqualcomm.imessage.RESUME_ACTION".equals(str)) {\r
+      SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false));\r
+      return;\r
+    }\r
+    if ("com.enqualcomm.support.DIALOG".equals(str)) {\r
+      contact = (Contact)paramIntent.getParcelableExtra("contact");\r
+      SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
+      boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+      if (contact != null && !bool) {\r
+        if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
+          initMyDialog(paramContext, contact, 1);\r
+          playNotificationVoice(paramContext);\r
+        }\r
+        screenOn(paramContext);\r
+        return;\r
+      }\r
+    } else if ("com.enqualcomm.imessage.SOS_ACTION".equals(str)) {\r
+      if (paramIntent.getIntExtra("sos_end", 0) == 0) {\r
 //        EqcAlgorithmNative.native_EqcAlgorithmMethod3(8);\r
-//        sendStheartRateBroadcast(paramContext, "com.eqc.heartrate.action.SILENT_START", 3);\r
-//        return;\r
-//      }\r
-//    } else {\r
-//      String str1;\r
-//      if ("com.enqualcomm.support.ACTION_REMOTE_CAMERA".equals(contact.getAction())) {\r
-//        str1 = contact.getStringExtra("key_remote_number");\r
-//        (new CameraUtil(paramContext)).getPictur(str1);\r
-//        return;\r
-//      }\r
-//      if ("com.enqualcomm.support.CloseUnreadMsg".equals(str1.getAction()) || "android.intent.action.BATTERY_LOW".equals(str1.getAction())) {\r
+        sendStheartRateBroadcast(paramContext, "com.eqc.heartrate.action.SILENT_START", 3);\r
+        return;\r
+      }\r
+    } else {\r
+      String str1;\r
+      if ("com.enqualcomm.support.ACTION_REMOTE_CAMERA".equals(paramIntent.getAction())) {\r
+        str1 = paramIntent.getStringExtra("key_remote_number");\r
+        (new CameraUtil(paramContext)).getPictur(str1);\r
+        return;\r
+      }\r
+      if ("com.enqualcomm.support.CloseUnreadMsg".equals(paramIntent.getAction()) || "android.intent.action.BATTERY_LOW".equals(paramIntent.getAction())) {\r
 //        if (mCustomDialog != null && mCustomDialog.isShowing())\r
 //          mCustomDialog.dismiss();\r
 //        if (this.mCustomNotification != null && this.mCustomNotification.isShowing())\r
 //          this.mCustomNotification.dismiss();\r
-//        return;\r
-//      }\r
-//      if ("com.enqualcomm.support.ACTION_MISSED_CALL_GET".equals(str)) {\r
-//        Contact contact1 = (Contact)str1.getParcelableExtra("contact");\r
-//        contact1.extra = str1.getStringExtra("date");\r
-//        boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
-//        if (contact1 != null && !bool) {\r
-//          initMyDialog(paramContext, contact1, 2);\r
-//          playNotificationVoice(paramContext);\r
-//          screenOn(paramContext);\r
-//          return;\r
-//        }\r
-//      }\r
-//    }\r
+        return;\r
+      }\r
+      if ("com.enqualcomm.support.ACTION_MISSED_CALL_GET".equals(str)) {\r
+        Contact contact1 = (Contact)paramIntent.getParcelableExtra("contact");\r
+        contact1.extra = paramIntent.getStringExtra("date");\r
+        boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+        if (contact1 != null && !bool) {\r
+          initMyDialog(paramContext, contact1, 2);\r
+          playNotificationVoice(paramContext);\r
+          screenOn(paramContext);\r
+          return;\r
+        }\r
+      }\r
+    }\r
   }\r
   \r
   public void sendStheartRateBroadcast(Context paramContext, String paramString, int paramInt) {\r
index 82c797c..9fd0e85 100644 (file)
@@ -72,6 +72,7 @@ public class RxSocket {
     private ReadThread readThread = null;
     private boolean isReadThreadAlive = true;
     private SocketReconnectCallback socketReconnectCallback = null;
+    private SocketConnectionListener conectionListener = null;
 
     /*  方法
     * */
@@ -83,6 +84,9 @@ public class RxSocket {
         return connectStatus;
     }
 
+    public void setConnectionListener(SocketConnectionListener callback){
+        conectionListener=callback;
+    }
     /**
      * 建立Socket连接,只是尝试建立一次
      * @param ip    IP or 域名
@@ -131,10 +135,11 @@ public class RxSocket {
                         isReadThreadAlive = true;
                         readThread = new ReadThread(ip,port);
                         readThread.start();
+
                         socketReconnectCallback = new SocketReconnectCallback() {
                             @Override
                             public void onSuccess() {
-                                LogUtils.i(OpenLog,TAG,"connectRx:"+"CONNECTED");
+                                LogUtils.i(OpenLog, TAG, "connectRx:" + "CONNECTED");
                                 socketStatus = SocketStatus.CONNECTED;
                                 subscriber.onNext(true);
                                 subscriber.onCompleted();
@@ -142,11 +147,12 @@ public class RxSocket {
 
                             @Override
                             public void onFail(String msg) {
-                                LogUtils.i(OpenLog,TAG,"connectRx:"+msg);
+                                LogUtils.i(OpenLog, TAG, "connectRx:" + msg);
                                 subscriber.onNext(false);
                                 subscriber.onCompleted();
                             }
                         };
+
                     }
                 })
                 .subscribeOn(Schedulers.newThread())
@@ -298,6 +304,10 @@ public class RxSocket {
                         LogUtils.e(OpenLog, TAG, "ReadThread:init:" + e.getMessage());
                         if (socketReconnectCallback!=null)
                             socketReconnectCallback.onFail("SocketConnectFail1");
+
+//                        if( conectionListener !=null) {
+//                            conectionListener.onConnectionClose("SocketConnectFail");
+//                        }
                     }
                 }
                 //读取
@@ -317,6 +327,10 @@ public class RxSocket {
                                         socketChannel.register(selector, SelectionKey.OP_READ);
                                         if (socketReconnectCallback!=null)
                                             socketReconnectCallback.onSuccess();
+
+                                        if( conectionListener !=null) {
+                                            conectionListener.onConnectionOpen();
+                                        }
                                     } catch (Exception e) {
                                         isReadThreadAlive = false;
                                         socketStatus = SocketStatus.DIS_CONNECT;
@@ -324,6 +338,10 @@ public class RxSocket {
                                         LogUtils.e(OpenLog, TAG, "ReadThread:finish:" + e.getMessage());
                                         if (socketReconnectCallback!=null)
                                             socketReconnectCallback.onFail("SocketConnectFail2");
+
+//                                        if( conectionListener !=null) {
+//                                            conectionListener.onConnectionClose("SocketConnectFail2");
+//                                        }
                                     }
                                 }
                             } else if (key.isReadable()) {
@@ -336,6 +354,10 @@ public class RxSocket {
                                     connectStatus.onNext(SocketStatus.DIS_CONNECT);
                                     if (socketReconnectCallback!=null)
                                         socketReconnectCallback.onFail("SocketConnectFail3");
+
+//                                    if( conectionListener !=null) {
+//                                        conectionListener.onConnectionClose("SocketConnectFail3");
+//                                    }
                                 } else {
                                     LogUtils.i(OpenLog, TAG, "readSubject:msg!"+ "length:" + length);
                                     byte[] bytes = new byte[length];
@@ -354,6 +376,10 @@ public class RxSocket {
                         LogUtils.e(OpenLog, TAG, "ReadThread:read:" + e.getMessage());
                         if (socketReconnectCallback!=null)
                             socketReconnectCallback.onFail("SocketConnectFail4");
+
+//                        if( conectionListener !=null) {
+//                            conectionListener.onConnectionClose("SocketConnectFail4");
+//                        }
                     }
                 }
             }
@@ -370,4 +396,10 @@ public class RxSocket {
         void onSuccess();
         void onFail(String msg);
     }
+
+    public interface SocketConnectionListener {
+        void onConnectionClose(String errMsg);
+
+        void onConnectionOpen();
+    }
 }
index bb3252b..e25ddfe 100644 (file)
@@ -14,6 +14,9 @@ android {
         release {\r
             minifyEnabled false\r
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'\r
+            debuggable = false\r
+        }\r
+        compileOptions {\r
         }\r
     }\r
 }\r