From f58a3284e0f970ec944fd7a617a76b17f13ca0d3 Mon Sep 17 00:00:00 2001 From: snicker Date: Sat, 4 Jan 2020 11:53:24 +0800 Subject: [PATCH] f --- .../taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .gradle/2.14.1/taskArtifacts/fileHashes.bin | Bin 309400 -> 310128 bytes .../2.14.1/taskArtifacts/fileSnapshots.bin | Bin 2540295 -> 2704217 bytes .../fileSnapshotsToTreeSnapshotsIndex.bin | Bin 24752 -> 24752 bytes .../2.14.1/taskArtifacts/taskArtifacts.bin | Bin 93966 -> 93966 bytes .idea/workspace.xml | 561 +++++++++----- app/src/main/java/com/ic/protocol/Config.java | 193 +++++ .../main/java/com/ic/protocol/Constants.java | 260 +++++++ .../java/com/ic/protocol/LocationClient.java | 174 +++-- .../java/com/ic/protocol/bean/Update.java | 300 ++++++++ .../com/ic/protocol/bean/VoiceContent.java | 38 + .../com/ic/protocol/service/AudioService.java | 106 +++ .../com/ic/protocol/service/CheckSIM.java | 101 +++ .../java/com/ic/protocol/service/Deliver.java | 693 ++++++++++++++++++ .../protocol/service/protocolMainServer.java | 86 +-- .../com/ic/protocol/utils/DeviceInfoUtil.java | 108 +-- .../main/java/com/ic/protocol/utils/Util.java | 14 +- misc.txt | Bin 0 -> 1048576 bytes 18 files changed, 2261 insertions(+), 373 deletions(-) create mode 100644 app/src/main/java/com/ic/protocol/Config.java create mode 100644 app/src/main/java/com/ic/protocol/Constants.java create mode 100644 app/src/main/java/com/ic/protocol/bean/Update.java create mode 100644 app/src/main/java/com/ic/protocol/bean/VoiceContent.java create mode 100644 app/src/main/java/com/ic/protocol/service/AudioService.java create mode 100644 app/src/main/java/com/ic/protocol/service/CheckSIM.java create mode 100644 app/src/main/java/com/ic/protocol/service/Deliver.java create mode 100644 misc.txt diff --git a/.gradle/2.14.1/taskArtifacts/cache.properties.lock b/.gradle/2.14.1/taskArtifacts/cache.properties.lock index 3deaf73b9fbf1274e5ace200b85731ecff67fcea..2223ff6efc8114f1b8862834aaa7ac7efd553b0e 100644 GIT binary patch literal 17 VcmZQx5}sju_(tX(fMPKwS#AU$DND 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 delta 6854 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 E0p2me)c^nh diff --git a/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin b/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin index 80ca81bd288b648f9a0ffc591fae9b44368846a8..5da12f2e803b6a430fc0a9e284b0bb3c68ae8e31 100644 GIT binary patch delta 14053 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 delta 14062 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 Z)o6Gq&$XXk`lpgAngNIC|NkRh;2+UH*AxH% delta 1501 zcmaLVdpy&79LI4#wh^69%O#hU-{i86E()8ubX+Rsy@_|K!zKL`fyHl(JyDFzv9!S-+^vOanA@ON{8y zSd#3Xuv`Slsul+8+!}hqOjap5w*P$kyc6DJ^4qG>T)lm$S*eFMyJ>$m0CMI+-4hPM zd?k#{LlZCbY8e~entSHf%cX;uQ-pgfE-b4Ay}<{g{<5h>g^jZ?5-4^)X@h;!H1z1} zz|A=;*Da_PWwex)hn20ax}>o15baq4vd`@ZUcqV#MQ1lbp`PV?3mPHoLkH8vG>2_~ zHRPG03*A0Mr0viLP)cUzSZFfCk`{vk{2*Fp4tmO&FEx`!$1TQOe95Im|CF=X%gt3c zhl6arihaaij#+*l6NV5>UD~6w7Gnfza;AJT!e#Oja>!dFe5YrAJod{mi@#%RS|(`? zs2!rh_%KZu3~G6PJX2c56O;22;mB z2=^-{TD+nP&$PUd%2d;MZZ8R{Pd~{m=4HEhB<`i~mbv4aC*yIE z@R`gdx$4YiLy)k+E4csqOn^wodsCm0&$K?e3`ZKjTTB`-xgqYCiP*hdQ$=uYC2y^c zYp9m8QN?}HZ;jRBSRUoQe@NS%_F*+UO7DkdmCjJ`_MkU<8AQ)11*|NZ<(tQZc3zt| zjxrtY1C6J+ONxD(PXs_?wf5Z7;@M}YLc53!tP;c#s3@VT_LS}$jBmAadhOMP16`r` zAZs@Hjy(WsAV$$P-RM7R)nkq29d$?PK%_TCSbF}jn*Mqt(5B~eePLYBrkkq}a3w0+`81tTSt=-@A5bemlKdpCKib36aAd9O=E+2hg z4h9Bl^E5H^PzxLX7xVUACJrn18)&M_u-j99=|1ja33e^39IX!f zyyvA(WYyq|x`~;vJa1LzT8}G6oh*Fo&Zh%`3res9Y-odzP))-b;lGodStL9?#V_me z!Fy3<=&;IN)-{Et&`+JVoJ3s!13+kzChgREK%K_d1L%uio3;-H{0x?0nFXGXiSBFo zJT-r-=IpMPBu9hzZk_(YnB zGQGHV*8@)?kol3-;Gf7fTh;LBicJ-GarEvg8QX|S{I8ik>@R=8s5k%s diff --git a/.idea/workspace.xml b/.idea/workspace.xml index c5f0265c..75a9b584 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -11,8 +11,17 @@ @@ -248,6 +276,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -261,19 +310,26 @@ - + - + + + + + + + + + + + + + + + + + - + + - + @@ -382,21 +448,21 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -413,10 +479,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -543,29 +550,7 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -676,20 +661,17 @@ - + - - - - - + + - + - - + + @@ -700,29 +682,236 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/ic/protocol/Config.java b/app/src/main/java/com/ic/protocol/Config.java new file mode 100644 index 00000000..d9263743 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/Config.java @@ -0,0 +1,193 @@ +package com.ic.protocol; + +import android.text.TextUtils; +import org.json.JSONException; +import org.json.JSONStringer; + +public class Config { + public static final String AUDIO_FORMAT = "1"; + + private static final String BT = "1@4.0"; + + public static final String COMPANY = "2"; + + public static final String HOST = "watch.enqualcomm.com"; + + public static final String HOST_TEST_SERVER = "121.42.192.174"; + + public static final String IMAGE_FORMAT = "1"; + + private static final int LBS = 1; + + private static final String LCD = "OLED@240X206"; + + private static final int NFC = 0; + + public static final String OSS_HOST = "121.42.245.59"; + + public static final int OSS_PORT = 11645; + + public static final int PORT = 11445; + + private static final int Schedule_powonoff = 0; + + public static final String TEST_SERVER_PROP = "1"; + + private static final int TP = 1; + + private static final int T_Card = 0; + + private static final int air_pressure = 0; + + private static final int alarm = 1; + + public static int antioff = 0; + + private static final int behavior_mode = 0; + + private static final int call_vol = 2; + + private static final String camera = "1@200"; + + private static final int check_bill = 1; + + private static final int communication_standard = 1; + + private static final int connect = 1; + + private static final int dampness = 0; + + private static final int end_call = 0; + + private static final int fight_mode = 0; + + private static final int geomagnetic = 0; + + private static final int gps = 1; + + private static final int gsensor = 1; + + private static final int gyroscope = 0; + + public static int heart_rate = 0; + + private static String json; + + private static final int key_num = 1; + + private static final int kindness_num = 0; + + private static final String language = "0@0"; + + private static final int make_call = 1; + + private static final String market = "domestic"; + + private static final String mcc_mnc = "46000"; + + private static final int monitor = 1; + + private static final int monitor_num = 0; + + private static final int multi_point = 0; + + private static final int nickname = 0; + + public static final int oss_file = 0; + + private static final int other_contact_num = 30; + + private static final int pedometer = 1; + + private static final int phonebook = 1; + + private static final String platform = "SC9820E"; + + private static final int product = 2; + + private static final String protocol_version = "2.0"; + + private static final int q_a = 1; + + private static final int reboot = 1; + + private static final int relation = 0; + + private static final int relatives = 1; + + private static final int ring_vol = 2; + + private static final int search_terminal = 1; + + private static final int sedentary_reminder = 0; + + private static final int shake = 1; + + private static final int shutdown_hand = 1; + + private static final int silent = 1; + + private static final int sim = 1; + + private static final int sleep_monitor = 0; + + private static final int sms_forward = 0; + + private static final int sndrec = 0; + + private static final int sos_num = 0; + + public static int sw_release_no = -1; + + private static final String sw_version = "eiot_V1.0.0"; + + private static final int temperature = 0; + + private static final int time_set = 0; + + private static final int url_download = 1; + + public static int value_setting = 0; + + private static final int video_jf = 1; + + private static final int voice_control = 0; + + private static final int voice_notice = 1; + + private static final int volume = 0; + + private static final int weather = 1; + + private static final int wechat = 1; + + private static final int wifi = 2; + + private static final int wifi_setting = 1; + + private static final int wireless_charge = 0; + + public static String work_mode = "2@1"; + + private static final int yunosuuid = 0; + + static { + + } + + private static String make() { + try { + return (new JSONStringer()).object().key("cmd").value("Init").key("sw_version").value("eiot_V1.0.0").key("protocol_version").value("2.0").key("product").value(2L).key("sim").value(1L).key("connect").value(1L).key("work_mode").value(work_mode).key("phonebook").value(1L).key("wifi").value(2L).key("pedometer").value(1L).key("wechat").value(1L).key("shake").value(1L).key("antioff").value(antioff).key("key_num").value(1L).key("kindness_num").value(0L).key("sos_num").value(0L).key("monitor_num").value(0L).key("other_contact_num").value(30L).key("volume").value(0L).key("ring_vol").value(2L).key("call_vol").value(2L).key("Schedule_powonoff").value(0L).key("temperature").value(0L).key("air_pressure").value(0L).key("dampness").value(0L).key("BT").value("1@4.0").key("TP").value(1L).key("camera").value("1@200").key("T_Card").value(0L).key("NFC").value(0L).key("wireless_charge").value(0L).key("geomagnetic").value(0L).key("gyroscope").value(0L).key("behavior_mode").value(0L).key("LBS").value(1L).key("monitor").value(1L).key("check_bill").value(1L).key("sndrec").value(0L).key("voice_control").value(0L).key("market").value("domestic").key("platform").value("SC9820E").key("LCD").value("OLED@240X206").key("communication_standard").value(1L).key("time_set").value(0L).key("language").value("0@0").key("mcc_mnc").value("46000").key("end_call").value(0L).key("multi_point").value(0L).key("make_call").value(1L).key("search_terminal").value(1L).key("alarm").value(1L).key("silent").value(1L).key("weather").value(1L).key("url_download").value(1L).key("shutdown_hand").value(1L).key("relation").value(0L).key("voice_notice").value(1L).key("q_a").value(1L).key("gps").value(1L).key("gsensor").value(1L).key("reboot").value(1L).key("relatives").value(1L).key("heart_rate").value(heart_rate).key("sedentary_reminder").value(0L).key("fight_mode").value(0L).key("sleep_monitor").value(0L).key("sms_forward").value(0L).key("video_jf").value(1L).key("nickname").value(0L).key("wifi_setting").value(1L).key("yunosuuid").value(0L).key("oss_file").value(0L).key("swReleaseNo").value(sw_release_no).endObject().toString(); + } catch (JSONException jSONException) { + jSONException.printStackTrace(); + return ""; + } + } + + public static String toJson() { + if (TextUtils.isEmpty(json)) + json = make(); + return json; + } +} + diff --git a/app/src/main/java/com/ic/protocol/Constants.java b/app/src/main/java/com/ic/protocol/Constants.java new file mode 100644 index 00000000..69c786de --- /dev/null +++ b/app/src/main/java/com/ic/protocol/Constants.java @@ -0,0 +1,260 @@ +package com.ic.protocol; + +import android.net.Uri; + +public interface Constants { + public static final String ACTION_ADDTEST_CONTACTS = "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS"; + + public static final String ACTION_ALARM_ADD_DATAPOINTS = "com.enqualcomm.support.ADD_DATAPOINTS"; + + public static final String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE"; + + public static final String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"; + + public static final String ACTION_AT_CALLBACK = "com.eqc.intent.action.callback.at"; + + public static final String ACTION_BATTERY_LOW_MSG = "com.enqualcomm.support.lowbatteryMsg"; + + public static final String ACTION_CALL_CMCM_SERVICE_INTERFACE = "com.cmcm.interface"; + + public static final String ACTION_CALL_RING = "com.enqualcomm.support.phone.ring"; + + public static final String ACTION_CARE_ALARM = "com.enqualcomm.support.ACTION_CARE_ALARM"; + + public static final String ACTION_CLOSE_UNREAD_MSG = "com.enqualcomm.support.CloseUnreadMsg"; + + public static final String ACTION_CM_POWERSAVE_MODE = "cmcm.call.eiot.into.powersave"; + + public static final String ACTION_EQC_ALARM = "com.enqualcomm.support.ACTION_EQC_ALARM"; + + public static final String ACTION_EXIT_MONITOR_MODE = "com.enqualcomm.support.MONITOR_EXIT"; + + public static final String ACTION_HEART_RATE_RESULT = "com.eqc.heartrate.action.RESULT"; + + public static final String ACTION_HEATR_RATE_START = "com.eqc.heartrate.action.SILENT_START"; + + public static final String ACTION_IMESSAGE = "action.message"; + + public static final String ACTION_ISCONNECTED = "com.enqualcomm.support.ACTION_ISCONNECTED"; + + public static final String ACTION_ISSILENCE = "com.enqualcomm.icare.ACTION_ISSILENCE"; + + public static final String ACTION_ISSILENCE2IMESSAGE = "com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE"; + + public static final String ACTION_MISSED_CALL_GET = "com.enqualcomm.support.ACTION_MISSED_CALL_GET"; + + public static final String ACTION_NOTICE_ALARM = "com.enqualcomm.support.ACTION_NOTICE_ALARM"; + + public static final String ACTION_NOTICE_ALARM_CHANGE = "com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"; + + public static final String ACTION_PASS_DATA_TO_CM_SERVICES = "com.enqualcomm.support.PASS_DATA"; + + public static final String ACTION_REMOTE_CAMERA = "com.enqualcomm.support.ACTION_REMOTE_CAMERA"; + + public static final String ACTION_REMOTE_CAMERA_OSS = "com.enqualcomm.support.ACTION_REMOTE_CAMERA_OSS"; + + public static final String ACTION_RESTORE_SYSTEM = "android.intent.action.MASTER_CLEAR"; + + public static final String ACTION_SCANPAIRMESSAGE = "com.enqualcomm.imessage.scanPairMessage"; + + public static final String ACTION_SEDN_VIDOE_CALL_REQ = "com.enqualcomm.imessage.sendVideoCall"; + + public static final String ACTION_SEND_SOS_VIDEO_FILE = "com.enqualcomm.support.action_send_sos_video_file"; + + public static final String ACTION_SEND_VIDEO_FILES = "com.enqualcomm.support.ACTION_SEND_VIDEO_FILES"; + + public static final String ACTION_SHUTDOWN_MOREINFO = "android.intent.action.ACTION_SHUTDOWN_MOREINFO"; + + public static final String ACTION_SOS_VIDEO_CHAT = "com.enqualcomm.imessage.ACTION_SOS_VIDEO_CHAT"; + + public static final String ACTION_START_DOWNLOAD = "com.enqualcomm.imessage.START_DOWNLOAD_ACTION"; + + public static final String ACTION_STHEART_RATE_ALARM_CHANGE = "com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"; + + public static final String ACTION_SYNC = "SYNC"; + + public static final String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL"; + + public static final String ACTION_UPDATE_ICON = "com.enqualcomm.support.ACTION_UPDATE_ICON"; + + public static final String ACTION_UPDATE_SECRET_KEY = "com.enqualcomm.support.UPDATE_SECRET_KEY"; + + public static final String ACTION_VIDEO_END_CALL = "com.enqualcomm.support.ACTION_VIDEO_END_CALL"; + + public static final String ACTION_VIDEO_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_LOGIN"; + + public static final String ACTION_VIDEO_LOGOUT = "com.enqualcomm.imessage.ACTION_VIDEO_LOGOUT"; + + public static final String ACTION_VIDEO_RECEIVE_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_RECEIVE_LOGIN"; + + public static final String ACTION_WAKEUP_ALARM = "com.eqc.deliverWakeupAlarm.action"; + + public static final String ACTION_YUN_ALARM_CHANGE = "com.eqc.deskclock.YUN_ALARM_CHANGE"; + + public static final int ALARM_UPDATE_NOTICE = 206; + + public static final int CALL_RECORD_CHANGED = 103; + + public static final String CMD_ID_CM = "cmdId"; + + public static final Uri CONTACT_URI = Uri.parse("content://com.enqualcomm.support/contact"); + + public static final Uri CM_SERVICE_SETTING = Uri.parse("content://com.cmcm.service/cmsetting"); + + public static final String DIALOG_ACTION = "com.enqualcomm.support.DIALOG"; + + public static final int ENTER_SILENT_MODE = 212; + + public static final int EXIT_SILENT_MODE = 213; + + public static final String FLAG = "flag"; + + public static final String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM"; + + public static final int IDLE_MODE_CHANGED = 102; + + public static final int INIT_SERVER_OK = 216; + + public static final int IN_SILENCE = 600; + + public static final boolean IS_OVERSEAS = false; + + public static final int JUFENG_SDK_INIT = 215; + + public static final String KEY_CATEGORY = "category"; + + public static final String KEY_COMPANY = "KEY_COMPANY"; + + public static final String KEY_CONTACT_ID = "contact_id"; + + public static final String KEY_DELETE_FILE_TIME = "KEY_DELETE_FILE_TIME"; + + public static final String KEY_DEVICE_ID = "key_device_id"; + + public static final String KEY_DEVICE_KEY = "key_device_key"; + + public static final String KEY_FILEPATH = "filepath"; + + public static final String KEY_FILETYPE = "filetype"; + + public static final String KEY_ID = "id"; + + public static final String KEY_ISCONNECTED = "isConnected"; + + public static final String KEY_ISSILENCE = "KEY_ISSILENCE"; + + public static final String KEY_IS_RESUME = "key_is_resume"; + + public static final String KEY_JUST_TALK = "KEY_JUST_TALK"; + + public static final String KEY_NAME = "name"; + + public static final String KEY_NET_WORK_TYPE = "NET_WORK_TYPE"; + + public static final String KEY_NUMBER = "number"; + + public static final String KEY_PAIR_CID = "PAIR_CID"; + + public static final String KEY_REMOTE_NUMBER = "key_remote_number"; + + public static final String KEY_SAVE_STEP_COUNT = "key_save_step_count"; + + public static final String KEY_SOS_FILE_BODY = "key_sos_file_body"; + + public static final String KEY_SOS_FILE_FILE_TYPE = "key_sos_file_file_type"; + + public static final String KEY_STATUS = "key_status"; + + public static final String KEY_STEP_COUNT = "KEY_STEP_COUNT"; + + public static final String KEY_UNBOUND_FLAG = "KEY_UNBOUND_FLAG"; + + public static final String KEY_VIDEO_PATH = "KEY_VIDEO_PATH"; + + public static final int LOCATION_DATA = 217; + + public static final int MONITOR_GOIN = 202; + + public static final int MONITOR_GOOUT = 203; + + public static final int MSG_WHAT_RELOAD_VOICE = 1000; + + public static final int MSG_WHAT_SEND_OSSFILE = 1006; + + public static final int MSG_WHAT_SEND_PAIR = 1003; + + public static final int MSG_WHAT_SEND_PICTURE = 1002; + + public static final int MSG_WHAT_SEND_VOICE = 1001; + + public static final int MSG_WHAT_SILENCE_STATUS = 1005; + + public static final int MSG_WHAT_VIDEO_CHAT = 1004; + + public static final int NEW_MEDIA_PUSH = 100; + + public static final String OTHER_ALARM_END = "com.enqualcomm.support.OTHER_ALARM_END"; + + public static final String OTHER_ALARM_START = "com.enqualcomm.support.OTHER_ALARM_START"; + + public static final String OTHER_HEARTRATE_ALARM_END = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END"; + + public static final String OTHER_HEARTRATE_ALARM_START = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START"; + + public static final int OUT_SILENCE = 700; + + public static final int PASS_DATA_DIRECTLY = 500; + + public static final int PLAY_RECORD_UPDATE = 207; + + public static final int REBOOT_SYSTEM = 208; + + public static final int RESET_SYSTEM = 210; + + public static final String RESTORE_EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE"; + + public static final String RESTORE_REASON = "android.intent.extra.REASON"; + + public static final int RESULT_ERROR = 500; + + public static final int RESULT_OK = 200; + + public static final String RESUME_ACTION = "com.enqualcomm.imessage.RESUME_ACTION"; + + public static final String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService"; + + public static final String SERVICE_PKG_NAME = "com.enqualcomm.support"; + + public static final int SHUTDOWN_SYSTM = 209; + + public static final String SLEEP_ALARM = "com.enqualcomm.support.SLEEP_ALARM"; + + public static final String SOS_ACTION = "com.enqualcomm.imessage.SOS_ACTION"; + + public static final int SOS_GOIN = 204; + + public static final int SOS_GOOUT = 205; + + public static final String STEP_COUNT_ALARM_ACTION = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"; + + public static final String STRING_CMD_JSON_DATA = "cmdJsonData"; + + public static final String STWORKMODE_ALARM = "com.enqualcomm.support.ACTION_STWORKMODE_ALARM"; + + public static final String VALUE_SETTIING_VERSION = "value_setting_ver"; + + public static final int VIDEO_MESSAGE = 300; + + public static final String WAKE_ALARM = "com.enqualcomm.support.WAKE_ALARM"; + + public static final String WEATHER_ALARM = "com.enqualcomm.support.ACTION_WEATHER_ALARM"; + + public static final int WIFI_SET_RESULT = 217; + + public static final int WORKMODE_CHANGED = 211; + + public static final String contact = "contact"; + + public static final String wechat_contact = "content"; +} + diff --git a/app/src/main/java/com/ic/protocol/LocationClient.java b/app/src/main/java/com/ic/protocol/LocationClient.java index 0c6307dc..7b57378f 100644 --- a/app/src/main/java/com/ic/protocol/LocationClient.java +++ b/app/src/main/java/com/ic/protocol/LocationClient.java @@ -12,12 +12,13 @@ import android.os.SystemClock; import android.provider.Settings; import com.ic.protocol.adapter.LBSHelper; -import com.ic.protocol.bean.Config; import com.ic.protocol.bean.StringMessage; +import com.ic.protocol.service.KeepAlive; import com.ic.protocol.service.protocolMainServer; import com.ic.protocol.utils.CellInfoUtil; import com.ic.protocol.utils.DeviceInfoUtil; import com.ic.protocol.utils.FileCache; +import com.ic.protocol.utils.FileOutputUtil; import com.ic.protocol.utils.Logger; import com.ic.protocol.utils.NettyConnection; import com.ic.protocol.utils.ServiceUtil; @@ -94,12 +95,14 @@ public class LocationClient { private long haveChanegTo4GTime; private String mCellInfo; - + + ReentrantLock mLock = new ReentrantLock(); + Condition mCondition = this.mLock.newCondition(); private LBSHelper mLbsHelper; - ReentrantLock mLock = new ReentrantLock(); + private int mPedometer2; @@ -199,24 +202,21 @@ public class LocationClient { } private static void loadMessage2Queue() { -// byte b = 0; -// while (b < 5) { -// str = fileCache.load(); -// if (str != null) { -// byte b1 = b + true; -// try { -// StringMessage stringMessage = new StringMessage(str); -// b = b1; -// if (!queue.offerLast(stringMessage)) { -// fileCache.put(str); -// b = b1; -// } -// } catch (Exception str) { -// str.printStackTrace(); -// b = b1; -// } -// } -// } + byte b = 0; + while (b < 5) { + String str = fileCache.load(); + if (str != null) { + byte b1 = ++b; + try { + StringMessage stringMessage = new StringMessage(str); + if (!queue.offerLast(stringMessage)) { + fileCache.put(str); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } } private void notifiSetAirModeMethod() { (new Thread(new Runnable() { @@ -511,7 +511,7 @@ public class LocationClient { this.mLbsHelper.setOnWiFiInfoListener(new LBSHelper.OnWiFiInfoListener() { public void getWifiInfoCallBack(String param1String) { // LocationClient.access$002(true); -// runtime.currentWifiInfo = param1String; + runtime.currentWifiInfo = param1String; } }); } @@ -601,7 +601,7 @@ public class LocationClient { } 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) { -// int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3); +// int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, LACATION_CYCLE, 3); // String str1 = runtime.getLatitude(); // String str2 = runtime.getLongitude(); // paramLong2 = runtime.getTimestamp(); @@ -660,23 +660,25 @@ public class LocationClient { public void start() { this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context); + // 开启计步 // EqcAlgorithmNative.EqcAlgorithmNativeSetInterface(this); // EqcAlgorithmNative.native_EqcAlgorithm_Gsensor_eint_work_start(); // EqcAlgorithmNative.native_EqcAlgorithmMethod2(); + //获取定位服务 this.mLbsHelper = runtime.getLbsHelper(); int i = SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "value_setting_ver", 0); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("11 value_setting="); stringBuilder.append(i); Logger.i(stringBuilder.toString()); -// if (i == Config.value_setting) { -// EqcAlgorithmNative.native_EqcAlgorithmMethod1(SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_mode", 2), SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3)); -// } else { + if (i == Config.value_setting) { +// EqcAlgorithmNative.native_EqcAlgorithmMethod1(SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, LACATION_MODE, 2), SharPreferenceUtil.getPrefInt((runtime.getContextProxy()).context, LACATION_CYCLE, 3)); + } else { // EqcAlgorithmNative.native_EqcAlgorithmMethod1(2, 3); -// SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "value_setting_ver", Config.value_setting); - SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "lacation_mode", 2); - SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "lacation_cycle", 3); -// } + SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, "value_setting_ver", Config.value_setting); + SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, LACATION_MODE, 2); + SharPreferenceUtil.setPrefInt((runtime.getContextProxy()).context, LACATION_CYCLE, 3); + } IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.intent.action.SCREEN_ON"); (runtime.getContextProxy()).context.registerReceiver(this.screenOnReceiver, intentFilter); @@ -707,68 +709,60 @@ public class LocationClient { } public void run() { -// while (true) { -// StringMessage stringMessage = null; -// try { -// StringMessage stringMessage1 = (StringMessage)LocationClient.queue.take(); -// try { -// if (runtime.getSignalStrength() + 110 < LocationClient.getMinSignalStrength(SimSignalUtil.getInstance((runtime.getContextProxy()).context).getNetworkType())) { -// LocationClient.saveQueue(); -// stringMessage = stringMessage1; -// } else { -// exception = LocationClient.setNewKey(stringMessage1, runtime.IMEI_CID_KEY()); -// stringMessage = exception; + while (true) { + StringMessage stringMessage = null; + try { + StringMessage stringMessage1 = (StringMessage)LocationClient.queue.take(); + try { + if (runtime.getSignalStrength() + 110 < LocationClient.getMinSignalStrength(SimSignalUtil.getInstance((runtime.getContextProxy()).context).getNetworkType())) { + LocationClient.saveQueue(); + stringMessage = stringMessage1; + } else { + StringMessage imei = LocationClient.setNewKey(stringMessage1, runtime.IMEI_CID_KEY()); + stringMessage = imei; // null = StringMessageEncoder.toString(exception); -// stringMessage = exception; -// Context context = (runtime.getContextProxy()).context; -// stringMessage = exception; -// StringBuilder stringBuilder = new StringBuilder(); -// stringMessage = exception; -// stringBuilder.append("send="); -// stringMessage = exception; -// stringBuilder.append(null); -// stringMessage = exception; -// FileOutputUtil.fileOutput(context, "LocationInfo", stringBuilder.toString()); -// stringMessage = exception; -// connection.send(exception); -// stringMessage = exception; -// this.lock.lock(); -// stringMessage = exception; + Context context = (runtime.getContextProxy()).context; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("send="); + stringBuilder.append(stringMessage.toString()); + FileOutputUtil.fileOutput(context, "LocationInfo", stringBuilder.toString()); + + connection.send(stringMessage); + + this.lock.lock(); // LocationClient.access$1102(false); -// try { -// if (KeepAlive.isConnected) { -// this.condition.await(30000L, TimeUnit.MILLISECONDS); -// } else if (exception.all() != null && exception.all()[0].equals("#@H10@#")) { -// this.condition.await(30000L, TimeUnit.MILLISECONDS); -// } else { -// this.condition.await(5000L, TimeUnit.MILLISECONDS); -// } -// if (linkOK) { -// if (exception.all() != null && exception.all()[0].equals("#@H43@#")) { -// this.isResent = false; -// Deliver.releaseWakeLockForGetWifiList(); -// } else if (exception.all() != null && exception.all()[0].equals("#@H42@#")) { -// Deliver.releaseWakeLockForGetWifiList(); -// } -// if (LocationClient.queue.peek() == null) -// LocationClient.loadMessage2Queue(); -// stringMessage = exception; -// this.lock.unlock(); -// continue; -// } -// } finally { -// stringMessage = exception; -// this.lock.unlock(); -// stringMessage = exception; -// } -// } -// } catch (Exception e) { -// stringMessage = stringMessage1; -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } + try { + if (KeepAlive.isConnected) { + this.condition.await(30000L, TimeUnit.MILLISECONDS); + } else if (stringMessage.all() != null && stringMessage.all()[0].equals("#@H10@#")) { + this.condition.await(30000L, TimeUnit.MILLISECONDS); + } else { + this.condition.await(5000L, TimeUnit.MILLISECONDS); + } + if (linkOK) { + if (stringMessage.all() != null && stringMessage.all()[0].equals("#@H43@#")) { + this.isResent = false; + Deliver.releaseWakeLockForGetWifiList(); + } else if (stringMessage.all() != null && stringMessage.all()[0].equals("#@H42@#")) { + Deliver.releaseWakeLockForGetWifiList(); + } + if (LocationClient.queue.peek() == null) + LocationClient.loadMessage2Queue(); + this.lock.unlock(); + + continue; + } + } finally { + this.lock.unlock(); + } + } + } catch (Exception e) { + stringMessage = stringMessage1; + } + } catch (Exception e) { + e.printStackTrace(); + } + } } } } diff --git a/app/src/main/java/com/ic/protocol/bean/Update.java b/app/src/main/java/com/ic/protocol/bean/Update.java new file mode 100644 index 00000000..56c2f5d0 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/bean/Update.java @@ -0,0 +1,300 @@ +package com.ic.protocol.bean; + +import com.ic.protocol.utils.Logger; + +import java.util.ArrayList; + +public class Update { + public ArrayList alarmList; + + public ArrayList antioffList; + + public boolean clearAdmin; + + public boolean clearCall; + + public boolean clearCare; + + public boolean clearPartner; + + public boolean clearVideo; + + public ArrayList contactList; + + public ArrayList silentList; + + public ArrayList stheartRateList; + + public Weather weather; + + private Update(ArrayList paramArrayList1, + boolean paramBoolean1, + boolean paramBoolean2, + boolean paramBoolean3, + boolean paramBoolean4, + boolean paramBoolean5, + ArrayList paramArrayList2, + ArrayList paramArrayList3, + Weather paramWeather, + ArrayList paramArrayList4, + ArrayList paramArrayList5) { + this.contactList = paramArrayList1; + this.clearAdmin = paramBoolean1; + this.clearCare = paramBoolean2; + this.clearCall = paramBoolean3; + this.clearPartner = paramBoolean4; + this.clearVideo = paramBoolean5; + this.silentList = paramArrayList2; + this.alarmList = paramArrayList3; + this.weather = paramWeather; + this.stheartRateList = paramArrayList4; + this.antioffList = paramArrayList5; + } + + public static class Builder { + String StheartRateInterval; + + Contact admin; + + String admin_icon_index; + + ArrayList alarmList; + + String[] alarmNames; + + ArrayList antioffList; + + + ArrayList callList; + + String[] call_icon_indexes; + + ArrayList careList; + + String[] care_icon_indexes; + + boolean clearAdmin; + + public String cur_Temperature; + + public String max_Temperature; + + public String min_Temperature; + + ArrayList partnerList; + + String[] partner_icon_indexes; + + + ArrayList silentList; + + ArrayList stheartRateList; + + String stwork_mode; + + ArrayList videoList; + + String[] video_icon_indexes; + + public String weatherIndex; + + public String weatherInfo; + + public String weatherType; + + public void addAlarm(String param1String1, String param1String2, String param1String3, String param1String4) { this.alarmList.add(new Alarm(param1String1, param1String2, param1String3, param1String4)); } + + public void addAntioff(String param1String1, String param1String2, String param1String3, String param1String4) { this.antioffList.add(new Antioff(param1String1, param1String2, param1String3, param1String4)); } + + public void addCall(String param1String1, String param1String2) { this.callList.add(new Contact(3, param1String1, param1String2)); } + + public void addCare(String param1String1, String param1String2) { this.careList.add(new Contact(2, param1String1, param1String2)); } + + public void addPartner(String param1String1, String param1String2, String param1String3) { this.partnerList.add(new Contact(4, param1String1, param1String2, param1String3)); } + + public void addSilent(String param1String1, String param1String2, String param1String3, String param1String4) { this.silentList.add(new Silent(param1String1, param1String2, param1String3, param1String4)); } + + public void addStheartRate(String param1String1, String param1String2, String param1String3, String param1String4) { this.stheartRateList.add(new StheartRate(param1String1, param1String2, param1String3, param1String4)); } + + public void addVideo(String param1String1, String param1String2, String param1String3) { this.videoList.add(new Contact(5, param1String1, param1String2, param1String3)); } + + public Update build() { + boolean bool4; + boolean bool3; + boolean bool2; + boolean bool1; + ArrayList arrayList1 = new ArrayList(); + + Weather weather = new Weather(); + + + if (this.weatherType != null) + weather.weatherType = this.weatherType; + if (this.min_Temperature != null) + weather.min_Temperature = this.min_Temperature; + if (this.max_Temperature != null) + weather.max_Temperature = this.max_Temperature; + if (this.cur_Temperature != null) + weather.cur_Temperature = this.cur_Temperature; + if (this.weatherIndex != null) + weather.weatherIndex = this.weatherIndex; + if (this.weatherInfo != null) + weather.weatherInfo = this.weatherInfo; + if (this.admin != null) { + this.admin.icon_index = this.admin_icon_index; + arrayList1.add(this.admin); + } + ArrayList arrayList2 = this.careList; + boolean bool = false; + int i = 1; + if (arrayList2 != null) { + bool1 = true; + } else { + bool1 = false; + } + if (bool1) { + boolean bool5; + if (this.care_icon_indexes != null && this.care_icon_indexes.length == this.careList.size()) { + bool5 = true; + } else { + bool5 = false; + } + int j = this.careList.size(); + for (byte b = 0; b < j; b++) { + Contact contact = (Contact)this.careList.get(b); + if (bool5) + contact.icon_index = this.care_icon_indexes[b]; + arrayList1.add(contact); + } + } + if (this.callList != null) { + bool2 = true; + } else { + bool2 = false; + } + if (bool2) { + boolean bool5; + if (this.call_icon_indexes != null && this.call_icon_indexes.length == this.callList.size()) { + bool5 = true; + } else { + bool5 = false; + } + int j = this.callList.size(); + for (byte b = 0; b < j; b++) { + Contact contact = (Contact)this.callList.get(b); + if (bool5) + contact.icon_index = this.call_icon_indexes[b]; + arrayList1.add(contact); + } + } + if (this.partnerList != null) { + bool3 = true; + } else { + bool3 = false; + } + if (bool3) { + boolean bool5; + if (this.partner_icon_indexes != null && this.partner_icon_indexes.length == this.partnerList.size()) { + bool5 = true; + } else { + bool5 = false; + } + int j = this.partnerList.size(); + for (byte b = 0; b < j; b++) { + Contact contact = (Contact)this.partnerList.get(b); + if (bool5) + contact.icon_index = this.partner_icon_indexes[b]; + arrayList1.add(contact); + } + } + if (this.videoList != null) { + bool4 = true; + } else { + bool4 = false; + } + if (bool4) { + boolean bool5; + if (this.video_icon_indexes != null && this.video_icon_indexes.length == this.videoList.size()) { + bool5 = true; + } else { + bool5 = false; + } + i = this.videoList.size(); + for (byte b = 0; b < i; b++) { + Contact contact = (Contact)this.videoList.get(b); + if (bool5) + contact.icon_index = this.video_icon_indexes[b]; + arrayList1.add(contact); + } + } + if (this.alarmList != null && this.alarmNames != null) { + int j = this.alarmList.size(); + for (byte b = 0; b < j; b++) + ((Alarm)this.alarmList.get(b)).name = this.alarmNames[b]; + } + if (this.stheartRateList != null && this.StheartRateInterval != null) + for (byte b = 0; b < this.stheartRateList.size(); b++) + ((StheartRate)this.stheartRateList.get(b)).interval = this.StheartRateInterval; + return new Update(arrayList1, + this.clearAdmin, + bool1, + bool2, + bool3, + bool4, + this.silentList, + this.alarmList, + weather, + this.stheartRateList, + this.antioffList); + } + + public void clearAdmin() { + this.clearAdmin = true; + this.admin = null; + } + + public void clearAlarm() { this.alarmList = new ArrayList(); } + + public void clearAntioff() { this.antioffList = new ArrayList(); } + + public void clearCall() { this.callList = new ArrayList(); } + + public void clearCare() { this.careList = new ArrayList(); } + + public void clearPartner() { this.partnerList = new ArrayList(); } + + public void clearSilent() { this.silentList = new ArrayList(); } + + public void clearStheartRate() { this.stheartRateList = new ArrayList(); } + + public void clearVideo() { this.videoList = new ArrayList(); } + + public String getStwork_mode() { return this.stwork_mode; } + + public void setAdmin(String param1String1, String param1String2) { + this.admin = new Contact(1, param1String1, param1String2); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("name= "); + stringBuilder.append(param1String1); + stringBuilder.append("number="); + stringBuilder.append(param1String2); + Logger.i(stringBuilder.toString()); + } + + public void setAdminIcon(String param1String) { this.admin_icon_index = param1String; } + + public void setAlarmNames(String[] param1ArrayOfString) { this.alarmNames = param1ArrayOfString; } + + public void setCallIcons(String[] param1ArrayOfString) { this.call_icon_indexes = param1ArrayOfString; } + + public void setCareIcons(String[] param1ArrayOfString) { this.care_icon_indexes = param1ArrayOfString; } + + public void setPartnerIcons(String[] param1ArrayOfString) { this.partner_icon_indexes = param1ArrayOfString; } + + public void setStheartRateInterval(String param1String) { this.StheartRateInterval = param1String; } + + public void setStwork_mode(String param1String) { this.stwork_mode = param1String; } + + public void setVideoIcons(String[] param1ArrayOfString) { this.video_icon_indexes = param1ArrayOfString; } + } +} diff --git a/app/src/main/java/com/ic/protocol/bean/VoiceContent.java b/app/src/main/java/com/ic/protocol/bean/VoiceContent.java new file mode 100644 index 00000000..3d63f9b4 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/bean/VoiceContent.java @@ -0,0 +1,38 @@ +package com.ic.protocol.bean; + +import com.ic.protocol.utils.Util; + +import java.io.File; +import java.util.ArrayList; + +public class VoiceContent extends Content { + private VoiceContent(String paramString1, String paramString2, int paramInt1, int paramInt2, int paramInt3, String paramString3, String paramString4, long paramLong) { super(1, paramString1, paramString2, paramInt1, paramInt2, paramInt3, paramString3, paramString4, paramLong); } + + public static VoiceContent from(VoiceContent paramVoiceContent, byte[] paramArrayOfByte, File paramFile) { + byte b = paramArrayOfByte[0]; + byte[] arrayOfByte = new byte[b]; + System.arraycopy(paramArrayOfByte, 1, arrayOfByte, 0, b); + ArrayList arrayList = Util.split(arrayOfByte, (byte)59, 0); + StringBuilder stringBuilder1 = new StringBuilder(); + stringBuilder1.append(new String((byte[])arrayList.get(1))); + stringBuilder1.append(new String((byte[])arrayList.get(2))); + String str2 = stringBuilder1.toString(); + String str3 = new String((byte[])arrayList.get(4)); + int i = paramArrayOfByte.length - 1 - b; + int j = paramArrayOfByte.length; + StringBuilder stringBuilder2 = new StringBuilder(); + stringBuilder2.append(str3); + stringBuilder2.append(".amr"); + String str1 = Util.saveFile(paramArrayOfByte, j - i, i, paramFile, stringBuilder2.toString()); + i = Util.getDuration(str1); + paramVoiceContent.preview = (paramVoiceContent.content = str1).valueOf(i); + paramVoiceContent.status = 2; + paramVoiceContent.serverTime = str2; + return paramVoiceContent; + } + + public static VoiceContent placeHolderIn(int paramInt, String paramString1, String paramString2) { return new VoiceContent(paramString2, null, 1, 1, paramInt, paramString1, null, System.currentTimeMillis()); } + + public static VoiceContent placeHolderOut(int paramInt, String paramString1, String paramString2) { return new VoiceContent(paramString2, null, 1, 2, paramInt, paramString1, null, System.currentTimeMillis()); } +} + diff --git a/app/src/main/java/com/ic/protocol/service/AudioService.java b/app/src/main/java/com/ic/protocol/service/AudioService.java new file mode 100644 index 00000000..336e8f26 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/service/AudioService.java @@ -0,0 +1,106 @@ +package com.ic.protocol.service; + +import android.content.res.AssetFileDescriptor; +import android.content.res.AssetManager; +import android.media.MediaPlayer; +import com.enqualcomm.support.util.Logger; + +public class AudioService implements MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener { + private MediaPlayer mMediaPlayer; + + public AudioService() { initMediaPlayer(); } + + private void initMediaPlayer() { + release(); + this.mMediaPlayer = new MediaPlayer(); + this.mMediaPlayer.setOnCompletionListener(this); + this.mMediaPlayer.setOnErrorListener(this); + } + + public void onCompletion(MediaPlayer paramMediaPlayer) { release(); } + + public boolean onError(MediaPlayer paramMediaPlayer, int paramInt1, int paramInt2) { + release(); + return false; + } + + public void pause() { + if (this.mMediaPlayer != null) + this.mMediaPlayer.pause(); + } + + public void play(AssetManager paramAssetManager, String paramString) { + Logger.i("mMediaPlayer play"); + if (this.mMediaPlayer == null) + initMediaPlayer(); + this.mMediaPlayer.reset(); + try { + AssetFileDescriptor assetFileDescriptor = paramAssetManager.openFd(paramString); + this.mMediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength()); + assetFileDescriptor.close(); + this.mMediaPlayer.prepare(); + this.mMediaPlayer.start(); + return; + } catch (Exception paramAssetManager) { + paramAssetManager.printStackTrace(); + return; + } + } + + public void play(String paramString) { + if (this.mMediaPlayer == null) + initMediaPlayer(); + this.mMediaPlayer.reset(); + try { + this.mMediaPlayer.setDataSource(paramString); + this.mMediaPlayer.prepare(); + this.mMediaPlayer.start(); + return; + } catch (Exception paramString) { + paramString.printStackTrace(); + return; + } + } + + public void play(String paramString, boolean paramBoolean) { + if (this.mMediaPlayer == null) + initMediaPlayer(); + this.mMediaPlayer.reset(); + try { + this.mMediaPlayer.setDataSource(paramString); + this.mMediaPlayer.prepareAsync(); + this.mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + public void onPrepared(MediaPlayer param1MediaPlayer) { AudioService.this.mMediaPlayer.start(); } + }); + return; + } catch (Exception paramString) { + paramString.printStackTrace(); + return; + } + } + + public void rePlay() { + if (this.mMediaPlayer != null) + this.mMediaPlayer.start(); + } + + public void release() { + if (this.mMediaPlayer != null) { + this.mMediaPlayer.setOnCompletionListener(null); + this.mMediaPlayer.setOnErrorListener(null); + this.mMediaPlayer.release(); + this.mMediaPlayer = null; + } + } + + public void stop() { + if (this.mMediaPlayer != null && this.mMediaPlayer.isPlaying()) + this.mMediaPlayer.stop(); + } +} + + +/* Location: D:\android\ApkIDE3.3\ApkIDE\Worksrc\com.enqualcomm.support\!\com\enqualcomm\support\service\AudioService.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 1.0.7 + */ \ No newline at end of file diff --git a/app/src/main/java/com/ic/protocol/service/CheckSIM.java b/app/src/main/java/com/ic/protocol/service/CheckSIM.java new file mode 100644 index 00000000..681b5c4a --- /dev/null +++ b/app/src/main/java/com/ic/protocol/service/CheckSIM.java @@ -0,0 +1,101 @@ +package com.ic.protocol.service; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.telephony.TelephonyManager; +import com.enqualcomm.support.bean.Runtime; +import com.enqualcomm.support.bean.StringMessage; +import com.enqualcomm.support.netty.Connection; +import com.enqualcomm.support.service.base.AbstractConnectionService; + +public class CheckSIM extends AbstractConnectionService { + private static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED"; + + private BroadcastReceiver SimStateReceive = new BroadcastReceiver() { + public void onReceive(Context param1Context, Intent param1Intent) { + if (param1Intent.getAction().equals("android.intent.action.SIM_STATE_CHANGED") && CheckSIM.this.hasSimCard()) { + CheckSIM.this.simState[0] = 1; + CheckSIM.this.simState[1] = -1; + CheckSIM.this.simState[2] = -1; + CheckSIM.this.simState[3] = -1; + } + } + }; + + Runtime mRuntime; + + int[] simState = { 0, 0, 0, 0 }; + + private boolean hasSimCard() { + int i = ((TelephonyManager)(this.mRuntime.getContextProxy()).context.getSystemService("phone")).getSimState(); + boolean bool = false; + switch (i) { + default: + bool = true; + break; + case 0: + case 1: + break; + } + return bool; + } + + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { + if (hasSimCard()) { + this.simState[0] = 1; + this.simState[1] = -1; + this.simState[2] = -1; + this.simState[3] = -1; + return; + } + if (this.simState[0] == 1) { + byte b1 = 0; + byte b2; + for (b2 = 0; b1 < this.simState.length; b2 = b) { + byte b = b2; + if (this.simState[b1] == 0) + b = b2 + true; + b1++; + } + switch (b2) { + default: + return; + case 3: + this.mRuntime.getContextProxy().reboot(); + return; + case 2: + this.simState[3] = 0; + return; + case 1: + this.simState[2] = 0; + return; + case 0: + break; + } + this.simState[1] = 0; + } + } + + public void onAttach(Connection paramConnection, Runtime paramRuntime) { + this.mRuntime = paramRuntime; + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction("android.intent.action.SIM_STATE_CHANGED"); + (paramRuntime.getContextProxy()).context.registerReceiver(this.SimStateReceive, intentFilter); + } + + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return false; } + + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } + + public void onDetach(Connection paramConnection, Runtime paramRuntime) {} + + public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) { return false; } +} + + +/* Location: D:\android\ApkIDE3.3\ApkIDE\Worksrc\com.enqualcomm.support\!\com\enqualcomm\support\service\CheckSIM.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 1.0.7 + */ \ No newline at end of file diff --git a/app/src/main/java/com/ic/protocol/service/Deliver.java b/app/src/main/java/com/ic/protocol/service/Deliver.java new file mode 100644 index 00000000..c34a297c --- /dev/null +++ b/app/src/main/java/com/ic/protocol/service/Deliver.java @@ -0,0 +1,693 @@ +package com.ic.protocol.service; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.Uri; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Build; +import android.os.Handler; +import android.os.PowerManager; +import android.os.SystemClock; +import android.text.TextUtils;1 +import com.ic.protocol.bean.StringMessage; +import com.ic.protocol.bean.VoiceContent; +import com.ic.protocol.service.base.AbstractConnectionService; +import com.ic.protocol.utils.AlarmHelper; +import com.ic.protocol.utils.Connection; +import com.ic.protocol.bean.Runtime; +import com.ic.protocol.utils.DBHelper; +import com.ic.protocol.utils.Logger; +import com.ic.protocol.utils.ServiceUtil; +import com.ic.protocol.utils.SharPreferenceUtil; + +import java.util.ArrayList; +import java.util.concurrent.TimeUnit; +import rx.Observable; +import rx.Subscriber; +import rx.functions.Action1; +import rx.schedulers.Schedulers; + +import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; + +public class Deliver extends AbstractConnectionService { + private static final String RECEIVE_WAKE_LOCKTAG = "ReceiveWakelockTag"; + + private static PowerManager.WakeLock WifiListWakeLock; + + public static boolean haveSendH42 = false; + + private static int isAppSetWifi = 0; + + public static boolean is_active_location = false; + + private PowerManager.WakeLock ReceiveWakeLock; + + private Handler delayHandler; + + private Runnable delayTh; + + private Connection mConnection; + + private ConWifiReceiver mMyWifiReceiver; + + private Runtime mRuntime; + + private final String spilForWifi = "@EQCWIFI@"; + + private boolean wakeLockWifiList = false; + + private boolean wakeLockWifiSet = false; + + private String wifiDataForCm; + + private boolean wifiEnabled; + + static { + + } + + public static PowerManager.WakeLock WakeLockForGetWifiList(Runtime paramRuntime) { + PowerManager.WakeLock wakeLock = ((PowerManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(1, "waitForWifiListReply"); + wakeLock.acquire(120000L); + return wakeLock; + } + + private boolean isSilence(Runtime paramRuntime) { return SharPreferenceUtil.getPrefBoolean((paramRuntime.getContextProxy()).context, "KEY_ISSILENCE", false); } + + public static void releaseWakeLockForGetWifiList() { + if (WifiListWakeLock == null) { + Logger.i("WifiListWakeLock 没有加锁"); + return; + } + if (WifiListWakeLock.isHeld()) { + WifiListWakeLock.release(); + WifiListWakeLock = null; + } + } + + public PowerManager.WakeLock getWakeLock() { + PowerManager.WakeLock wakeLock = ((PowerManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(1, "ReceiveWakelockTag"); + wakeLock.acquire(40000L); + return wakeLock; + } + + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} + + public void onAttach(Connection paramConnection, Runtime paramRuntime) {} + + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return false; } + + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } + + public void onDetach(Connection paramConnection, Runtime paramRuntime) {} + + public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, final Runtime paramRuntime) { + StringBuilder stringBuilder4; + final String number; + StringBuilder stringBuilder3; + String[] arrayOfString6; + final WifiManager wifiManager; + long l; + int i; + StringBuilder stringBuilder2; + Intent intent; + String str4; + String[] arrayOfString5; + String str3; + StringBuilder stringBuilder1; + String[] arrayOfString4; + String str2; + String[] arrayOfString2; + Context context; + String str1; + DBHelper dBHelper; + final String[] passWord; + String[] arrayOfString1; + this.mConnection = paramConnection; + this.mRuntime = paramRuntime; + String str5 = paramStringMessage.cmd(); + if (str5.startsWith("SmsSet")) { + arrayOfString4 = str5.split(":"); + if (arrayOfString4.length > 1) { + paramConnection.send(API.H13(paramRuntime, arrayOfString4[1])); + if ("1".equals(arrayOfString4[1])) { + int j = paramRuntime.getContextProxy().getTelephonyManager().getCallState(); + if (1 != j && 2 != j && !isSilence(paramRuntime)) { + paramRuntime.getContextProxy().startSearchActivity(); + return true; + } + } else { + if ("2".equals(arrayOfString4[1])) { + Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { paramRuntime.getContextProxy().reboot(); } + }); + return true; + } + if ("3".equals(arrayOfString4[1])) { + Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Intent intent = new Intent("android.intent.action.MASTER_CLEAR"); + intent.addFlags(268435456); + intent.putExtra("android.intent.extra.REASON", "MasterClearConfirm"); + intent.putExtra("android.intent.extra.WIPE_EXTERNAL_STORAGE", true); + (paramRuntime.getContextProxy()).context.sendBroadcast(intent); + } + }); + return true; + } + if (arrayOfString4[1].startsWith("0")) { + paramConnection.send(API.H11(paramRuntime, "1")); + paramRuntime.setShutdown(true); + Observable.timer(60000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { paramRuntime.getContextProxy().shutdown(); } + }); + return true; + } + if ("8".equals(arrayOfString4[1])) { + is_active_location = true; +// EqcAlgorithmNative.native_EqcAlgorithmMethod3(64); + return true; + } + if ("9".equals(arrayOfString4[1])) { + Logger.i("解绑成功"); + SharPreferenceUtil.setPrefInt((paramRuntime.getContextProxy()).context, "KEY_UNBOUND_FLAG", 0); + } + } + } + return true; + } + if (str5.equals("PUSH")) { + stringBuilder2 = new StringBuilder(); + stringBuilder2.append("response="); + stringBuilder2.append(arrayOfString4.toString()); + Logger.i(stringBuilder2.toString()); +// Observable.create(new PassData(arrayOfString4, paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Action1() { +// public void call(String param1String) { +// if (param1String != null) +// ServiceUtil.offerQueue(API.H76(paramRuntime, param1String), false); +// } +// }); + return true; + } + switch (str5.hashCode()) { + default: + i = -1; + break; + case 2010452830: + if (str5.equals("NewPicture")) { + i = 5; + break; + } + case 1965687765: + if (str5.equals("Location")) { + i = 9; + break; + } + case 1474607358: + if (str5.equals("Check_bill")) { + i = 3; + break; + } + case 1433513874: + if (str5.equals("NewVoice")) { + i = 4; + break; + } + case 750870555: + if (str5.equals("RemoteWifiRate")) { + i = 11; + break; + } + case 613936256: + if (str5.equals("RemoteHeartRate")) { + i = 10; + break; + } + case 411981707: + if (str5.equals("Videojufenglogin")) { + i = 8; + break; + } + case -355520725: + if (str5.equals("RemoteCamera")) { + i = 2; + break; + } + case -811859232: + if (str5.equals("GetVideoId")) { + i = 7; + break; + } + case -1391156271: + if (str5.equals("RemoteSetWifiRate")) { + i = 12; + break; + } + case -1393994438: + if (str5.equals("Monitor")) { + i = 1; + break; + } + case -1754979095: + if (str5.equals("Update")) { + i = 0; + break; + } + case -1882613593: + if (str5.equals("OssFileDowload")) { + i = 13; + break; + } + case -1893234925: + if (str5.equals("UrlDownloadPic")) { + i = 6; + break; + } + } + switch (i) { + default: + return false; + case 13: +// str2 = arrayOfString4.all()[1]; +// Observable.create(new GetOssFile(paramRuntime)).observeOn(Schedulers.io()).subscribe(new Subscriber>() { +// public void onCompleted() {} +// +// public void onError(Throwable param1Throwable) {} +// +// public void onNext(ArrayList param1ArrayList) { +// if (param1ArrayList.size() > 0) +// for (OssFileMessageContent ossFileMessageContent : param1ArrayList) +// runtime.getDbHelper().insertOrUpdate(ossFileMessageContent); +// } +// }); + return true; + case 12: +// stringBuilder2.send(API.H13(paramRuntime, "42")); +// this.wakeLockWifiSet = true; +// if (this.ReceiveWakeLock == null) +// this.ReceiveWakeLock = getWakeLock(); +// str4 = Util.getRealName((byte[])str2.source().get(1)); +// arrayOfString3 = str4.split("@EQCWIFI@"); +// stringBuilder3 = new StringBuilder(); +// stringBuilder3.append("split1="); +// stringBuilder3.append(str4); +// Logger.i(stringBuilder3.toString()); +// str4 = arrayOfString3[0]; +// if (arrayOfString3.length > 1) { +// String str = arrayOfString3[1]; +// } else { +// arrayOfString3 = null; +// } + wifiManager = paramRuntime.getContextProxy().getWifiManager(); + this.wifiEnabled = wifiManager.isWifiEnabled(); + if (this.mMyWifiReceiver == null) + this.mMyWifiReceiver = new ConWifiReceiver(); + this.wifiDataForCm = str4; +// Observable.create(new GetWifiRate(paramRuntime, true, str4)).observeOn(Schedulers.io()).subscribe(new Subscriber() { +// public void onCompleted() {} +// +// public void onError(Throwable param1Throwable) {} +// +// public void onNext(String param1String) { +// Logger.i("回调回来了"); +// if (TextUtils.isEmpty(param1String)) { +// ServiceUtil.offerQueue(API.H42(runtime, "2")); +// Deliver.access$202(Deliver.this, false); +// Deliver.this.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(runtime)); +// return; +// } +// String[] arrayOfString = param1String.split("@EQCWIFI@"); +// String str1 = arrayOfString[0]; +// String str2 = arrayOfString[1]; +// StringBuilder stringBuilder1 = new StringBuilder(); +// stringBuilder1.append("ssid="); +// stringBuilder1.append(str1); +// stringBuilder1.append(" securityType="); +// stringBuilder1.append(str2); +// Logger.i(stringBuilder1.toString()); +// Deliver deliver = Deliver.this; +// StringBuilder stringBuilder2 = new StringBuilder(); +// stringBuilder2.append(arrayOfString[0]); +// stringBuilder2.append("@EQCWIFI@"); +// stringBuilder2.append(arrayOfString[2]); +// Deliver.access$302(deliver, stringBuilder2.toString()); +// if (Util.isConnectWifi((this.val$runtime.getContextProxy()).context)) { +// int j = wifiManager.getConnectionInfo().getNetworkId(); +// wifiManager.disconnect(); +// wifiManager.removeNetwork(j); +// wifiManager.saveConfiguration(); +// } +// Deliver.access$402(1); +// WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo((this.val$runtime.getContextProxy()).context, str1, passWord, str2); +// int i = wifiConfiguration.networkId; +// wifiManager.removeNetwork(i); +// wifiManager.saveConfiguration(); +// i = wifiManager.addNetwork(wifiConfiguration); +// if (Util.connectWifiByReflectMethod((this.val$runtime.getContextProxy()).context, i) == null && !wifiManager.enableNetwork(i, true)) { +// Logger.i("连接失败 3"); +// SystemClock.sleep(3000L); +// ServiceUtil.offerQueue(API.H42(runtime, "1")); +// wifiManager.setWifiEnabled(false); +// Deliver.access$202(Deliver.this, false); +// Deliver.this.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(runtime)); +// return; +// } +// IntentFilter intentFilter = new IntentFilter(); +// intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); +// (this.val$runtime.getContextProxy()).context.registerReceiver(Deliver.this.mMyWifiReceiver, intentFilter); +// } +// }); + return true; + case 11: +// str4.send(API.H13(paramRuntime, "43")); + this.wakeLockWifiList = true; + if (this.ReceiveWakeLock == null) + this.ReceiveWakeLock = getWakeLock(); +// Observable.create(new GetWifiRate(paramRuntime, false, "")).observeOn(Schedulers.io()).subscribe(new Subscriber() { +// public void onCompleted() {} +// +// public void onError(Throwable param1Throwable) {} +// +// public void onNext(String param1String) { +// StringMessage stringMessage; +// if (param1String == null) { +// stringMessage = API.H43(runtime, "2", ""); +// } else { +// stringMessage = API.H43(runtime, "2", stringMessage); +// } +// ServiceUtil.offerQueue(stringMessage, false); +// Deliver.access$002(Deliver.this, false); +// Deliver.this.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(runtime)); +// } +// }); + return true; + case 10: + str4.send(API.H13(paramRuntime, "15")); + context = arrayOfString3.all()[1]; + stringBuilder1 = new StringBuilder(); + stringBuilder1.append("remoteHeartRate=="); + stringBuilder1.append(context); + Logger.i(stringBuilder1.toString()); + if (context != null) + paramRuntime.getContextProxy().sendStheartRateBroadcast("com.eqc.heartrate.action.SILENT_START", 2); + return true; + case 9: + context = context.all()[1]; + if (context != null) { + String[] arrayOfString = context.split(","); + paramRuntime.setLatitude(arrayOfString[0]); + paramRuntime.setLongitude(arrayOfString[1]); + } + return true; + case 8: + i = paramRuntime.getContextProxy().getTelephonyManager().getCallState(); + if (!isSilence(paramRuntime) && 1 != i && 2 != i) { + context = (paramRuntime.getContextProxy()).context; + Intent intent1 = new Intent(context, com.enqualcomm.support.CoreService.class); + intent1.setAction("com.enqualcomm.imessage.ACTION_VIDEO_RECEIVE_LOGIN"); + context.startService(intent1); + } + return true; + case 7: + arrayOfString2 = context.all()[1]; + if (arrayOfString2 != null) { + arrayOfString2 = arrayOfString2.split("@"); + paramRuntime.setVideoID(arrayOfString2[0]); + paramRuntime.setHaveBuy(arrayOfString2[1]); + paramRuntime.setHaveTry(arrayOfString2[2]); + } + return true; + case 6: + str1 = arrayOfString2.all()[1]; + if (str1 != null) + paramRuntime.getDbHelper().saveUrlDownloadPic(str1); + return true; + case 5: + arrayOfString5 = str1.all()[1].split("@"); +// Observable.create(new GetPicture(arrayOfString5[0], arrayOfString5[1], str1.all()[2], paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber() { +// Uri uri; +// +// public void onCompleted() {} +// +// public void onError(Throwable param1Throwable) {} +// +// public void onNext(PictureContent param1PictureContent) { +// if (this.uri == null) { +// this.uri = runtime.getDbHelper().insertOrUpdate(param1PictureContent); +// return; +// } +// runtime.getDbHelper().updateMessage(param1PictureContent, this.uri); +// } +// }); + return true; + case 4: + arrayOfString6 = str1.all()[1].split("@"); + str6 = arrayOfString6[1]; + str3 = "0"; + if (str1.size() > 3) + str3 = str1.all()[3]; + stringBuilder4 = new StringBuilder(); + stringBuilder4.append("is_family ="); + stringBuilder4.append(str3); + Logger.i(stringBuilder4.toString()); + Observable.create(new GetVoice(arrayOfString6[0], arrayOfString6[1], str1.all()[2], str3, paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber() { + Uri uri; + + public void onCompleted() {} + + public void onError(Throwable param1Throwable) {} + + public void onNext(VoiceContent param1VoiceContent) { + if (this.uri == null) { + this.uri = runtime.getDbHelper().insertOrUpdate(param1VoiceContent); + return; + } + runtime.getDbHelper().updateMessage(param1VoiceContent, this.uri); + final Context context = (this.val$runtime.getContextProxy()).context; + final int contactCategory = param1VoiceContent.contactCategory; +// Observable.create(new GetContact(number, context)).subscribeOn(Schedulers.io()).subscribe(new Action1() { +// public void call(Contact param2Contact) { +// int i = runtime.getContextProxy().getTelephonyManager().getCallState(); +// if (!runtime.getBatteryLow() && 1 != i && 2 != i) { +// Intent intent = new Intent(); +// intent.setAction("com.enqualcomm.support.DIALOG"); +// if (contactCategory == 3) { +// param2Contact.number = "1@-1"; +// param2Contact.category = 0; +// param2Contact.name = (this.this$1.val$runtime.getContextProxy()).context.getResources().getString(2131624025); +// } +// intent.putExtra("contact", param2Contact); +// context.sendBroadcast(intent); +// } +// } +// }); + } + }); + return true; + case 3: +// str3.send(API.H13(paramRuntime, "97")); +// Observable.create(new GetCheckInfo(str1.source(), paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber>() { +// public void onCompleted() {} +// +// public void onError(Throwable param1Throwable) {} +// +// public void onNext(ArrayList param1ArrayList) { +// for (CheckBillInfo checkBillInfo : param1ArrayList) { +// if (checkBillInfo.getReceiverContent() != null) +// (new Thread(new Runnable(this, checkBillInfo) { +// public void run() { +// SystemClock.sleep(1000L); +// ServiceUtil.offerQueue(API.H18(runtime, checkBillInfo)); +// } +// })).start(); +// } +// } +// }); + return true; + case 2: +// str3.send(API.H13(paramRuntime, "10")); + arrayOfString1 = str1.all(); + intent = new Intent(); + intent.setAction("com.enqualcomm.support.ACTION_REMOTE_CAMERA"); + intent.putExtra("key_remote_number", arrayOfString1[1]); + (paramRuntime.getContextProxy()).context.sendBroadcast(intent); + return true; + case 1: +// intent.send(API.H13(paramRuntime, "98")); + dBHelper = paramRuntime.getDbHelper(); + l = System.currentTimeMillis(); + dBHelper.upDateMonitor(String.valueOf(l), String.valueOf(l + 60000L)); + AlarmHelper.setRealTimeAlarm((paramRuntime.getContextProxy()).context, 1, "com.enqualcomm.support.MONITOR_EXIT"); + return true; + case 0: + break; + } +// intent.send(API.H04(paramRuntime)); +// Observable.create(new ParseUpdate(dBHelper, paramRuntime)).subscribeOn(Schedulers.io()).subscribe(new Action1() { +// public void call(Update param1Update) { +// DBHelper dBHelper = runtime.getDbHelper(); +// runtime.getContextProxy(); +// dBHelper.saveContacts(param1Update.contactList, param1Update.clearAdmin, param1Update.clearCare, param1Update.clearCall, param1Update.clearPartner, param1Update.clearVideo); +// if (param1Update.alarmList != null) +// dBHelper.saveAlarm(param1Update.alarmList); +// if (param1Update.silentList != null) +// dBHelper.saveSilent(param1Update.silentList); +// if (param1Update.mIKnowledge != null && (param1Update.mIKnowledge.award != null || param1Update.mIKnowledge.score != null)) +// dBHelper.saveIKnowledge(param1Update.mIKnowledge); +// if (param1Update.weather != null && !TextUtils.isEmpty(param1Update.weather.weatherType)) +// dBHelper.saveWeather(param1Update.weather); +// if (param1Update.stheartRateList != null) +// dBHelper.saveStheartRateList(param1Update.stheartRateList); +// } +// }); + return true; + } + + public void releaseOneWakeLock() { + if (this.ReceiveWakeLock == null) { + Logger.i("ReceiveWakeLock 没有加锁"); + return; + } + if (!this.wakeLockWifiList && !this.wakeLockWifiSet && this.ReceiveWakeLock.isHeld()) { + this.ReceiveWakeLock.release(); + this.ReceiveWakeLock = null; + } + } + + public void releaseReceiveWakeLock() { + if (this.ReceiveWakeLock == null) { + Logger.i("ReceiveWakeLock 没有加锁"); + return; + } + if (this.ReceiveWakeLock.isHeld()) { + this.ReceiveWakeLock.release(); + this.wakeLockWifiList = false; + this.wakeLockWifiSet = false; + this.ReceiveWakeLock = null; + } + } + + public void setWakeupAlarm(Runtime paramRuntime) { + AlarmManager alarmManager = (AlarmManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE); + Intent intent = new Intent((paramRuntime.getContextProxy()).context, protocolMainServer.class); + intent.setAction("com.eqc.deliverWakeupAlarm.action"); + PendingIntent pendingIntent = PendingIntent.getService((paramRuntime.getContextProxy()).context, 0, intent, FLAG_UPDATE_CURRENT); + alarmManager.cancel(pendingIntent); + long l = SystemClock.elapsedRealtime(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("SDK_INT="); + stringBuilder.append(Build.VERSION.SDK_INT); + stringBuilder.append(",m=,"); + stringBuilder.append(23); + stringBuilder.append(",kitkat="); + stringBuilder.append(19); + Logger.i(stringBuilder.toString()); + if (Build.VERSION.SDK_INT >= 19) { + alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); + return; + } + alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); + } + + class ConWifiReceiver extends BroadcastReceiver { + public void onReceive(final Context context, Intent param1Intent) { + String str = param1Intent.getAction(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(" receive action="); + stringBuilder.append(str); + stringBuilder.append(" isAppSetWifi="); + stringBuilder.append(isAppSetWifi); + Logger.i(stringBuilder.toString()); + if (str.equals("android.net.conn.CONNECTIVITY_CHANGE")) { + if (isAppSetWifi == 0) + return; + if (isAppSetWifi == 1) { +// Deliver.access$402(0); + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); +// Deliver.access$602(Deliver.this, null); + } + } + WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); + if (((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(1).isConnected()) { + Logger.i("连接成功"); +// Deliver.access$402(0); + Deliver.haveSendH42 = true; + Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); +// Deliver.access$602(Deliver.this, null); + } + context.unregisterReceiver(Deliver.this.mMyWifiReceiver); +// Deliver.access$502(Deliver.this, null); +// Deliver.access$202(Deliver.this, false); + Deliver.this.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime)); + return; + } + stringBuilder = new StringBuilder(); + stringBuilder.append("连接失败 222 delayHandler="); + stringBuilder.append(Deliver.this.delayHandler); + Logger.i(stringBuilder.toString()); +// Deliver.access$402(2); + wifiManager.reconnect(); + if (Deliver.this.delayHandler == null) { +// Deliver.access$602(Deliver.this, new Handler()); +// Deliver.access$702(Deliver.this, new Runnable() { +// public void run() { +// StringBuilder stringBuilder = new StringBuilder(); +// stringBuilder.append("连接失败 超时 wifiEnabled="); +// stringBuilder.append(ConWifiReceiver.this.wifiEnabled); +// Logger.i(stringBuilder.toString()); +// if (isAppSetWifi == 1) +// return; +// Deliver.access$402(0); +// context.unregisterReceiver(ConWifiReceiver.this.this$0.mMyWifiReceiver); +// Deliver.access$502(ConWifiReceiver.this.this$0, null); +// WifiManager wifiManager = (WifiManager)context.getSystemService("wifi"); +// if (((ConnectivityManager)context.getSystemService("connectivity")).getNetworkInfo(1).isConnected()) { +// Logger.i("连接成功 1"); +// Deliver.haveSendH42 = true; +// ConWifiReceiver.this.this$0.mConnection.connect(ConWifiReceiver.this.this$0.mRuntime.getHost(), ConWifiReceiver.this.this$0.mRuntime.getPort()); +// Deliver.access$202(ConWifiReceiver.this.this$0, false); +// ConWifiReceiver.this.this$0.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(ConWifiReceiver.this.this$0.mRuntime)); +// } else { +// int i = wifiManager.getConnectionInfo().getNetworkId(); +// if (i != -1) { +// wifiManager.disableNetwork(i); +// ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3")); +// Deliver.access$202(ConWifiReceiver.this.this$0, false); +// ConWifiReceiver.this.this$0.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(ConWifiReceiver.this.this$0.mRuntime)); +// } else { +// Logger.i("连接失败 2-2"); +// ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3")); +// Deliver.access$202(ConWifiReceiver.this.this$0, false); +// ConWifiReceiver.this.this$0.releaseOneWakeLock(); +// Deliver.access$102(Deliver.WakeLockForGetWifiList(ConWifiReceiver.this.this$0.mRuntime)); +// } +// if (!ConWifiReceiver.this.this$0.wifiEnabled) +// wifiManager.setWifiEnabled(false); +// } +// Deliver.access$602(ConWifiReceiver.this.this$0, null); +// } +// }); + Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L); + } + } + } + } + + +} + diff --git a/app/src/main/java/com/ic/protocol/service/protocolMainServer.java b/app/src/main/java/com/ic/protocol/service/protocolMainServer.java index bacb1e06..e4d7b6e3 100644 --- a/app/src/main/java/com/ic/protocol/service/protocolMainServer.java +++ b/app/src/main/java/com/ic/protocol/service/protocolMainServer.java @@ -67,11 +67,9 @@ public class protocolMainServer extends Service { private static protocolMainServer mProtocolServer=null; private static LBSHelper lbshelper=null; - - public static final String ACTION_ALARM = "com.enqualcomm.support.ACTION_ALARM"; - private static final int GRAY_SERVICE_ID = 2239; + private static final int GRAY_SERVICE_ID =android.os.Process.myPid(); private static final String MY_WAKE_LOCKTAG = "MyWakelockTag"; @@ -197,18 +195,18 @@ public class protocolMainServer extends Service { if (is_in_sleep_mode) { // CoreService.access$402(false); // CoreService.access$502(0); -// if (CoreService.this.mKeepAlive != null) -// CoreService.this.mKeepAlive.setSleepMode(false); -// CoreService.this.wakeUpFromSleep(); + if (protocolMainServer.this.mKeepAlive != null) + protocolMainServer.this.mKeepAlive.setSleepMode(false); + protocolMainServer.this.wakeUpFromSleep(); } if (is_wifi_network_ok) { // CoreService.access$302(false); -// Util.turnOnWifiForConnect((this.this$0.runtime.getContextProxy()).context, CoreService.this.runtime); + Util.turnOnWifiForConnect((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime); return; } } else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime)) { // CoreService.access$302(true); -// Util.turnOffWifiForSleep((this.this$0.runtime.getContextProxy()).context, CoreService.this.runtime); + Util.turnOffWifiForSleep((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime); } } }; @@ -266,15 +264,19 @@ public class protocolMainServer extends Service { this.runtime.setTotalStepCount(i); } - private void setCleanStepCountAlarm() { AlarmHelper.setCleanStepCountAlarm(this, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"); } + private void setCleanStepCountAlarm() { + /*一天清零一次 计步*/ + AlarmHelper.setCleanStepCountAlarm(this, 23, 59, "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"); + } private void setSleepAlarm() {} - private void setUpdateSecretKeyAlarm() { AlarmHelper.setTimeAlarm(this, 2, 30, "com.enqualcomm.support.UPDATE_SECRET_KEY"); } - private void setWakeAlarm() {} - private void setWeatherAlarm() { AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, "com.enqualcomm.support.ACTION_WEATHER_ALARM"); } + private void setWeatherAlarm() { + /*每6小时20分左右 更新一次 weather*/ + AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, "com.enqualcomm.support.ACTION_WEATHER_ALARM"); + } private void wakeUpFromSleep() { this.startAlarmCount = 0; @@ -295,33 +297,33 @@ public class protocolMainServer extends Service { public int cmcm_call_eiot_into_powersave_mode() { return 0; } public void deliverDataToCmApp(int paramInt, String paramString) { - if (paramInt != 500) - try { - Intent intent = new Intent(this.actionName); - intent.putExtra("comjson", paramString); - intent.putExtra("cmdId", paramInt); - (this.runtime.getContextProxy()).context.startService(intent); - return; - } catch (Exception e) { - e.printStackTrace(); - return; - } - try { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("deliver 1 cmd="); - stringBuilder.append(paramInt); - stringBuilder.append("---data="); - stringBuilder.append(paramString); - Logger.i(stringBuilder.toString()); - Intent intent = new Intent(this.actionName); - intent.putExtra("comjson", paramString); - intent.putExtra("cmdId", 999); - (this.runtime.getContextProxy()).context.startService(intent); - return; - } catch (Exception e) { - e.printStackTrace(); - return; - } +// if (paramInt != 500) +// try { +// Intent intent = new Intent(this.actionName); +// intent.putExtra("comjson", paramString); +// intent.putExtra("cmdId", paramInt); +// (this.runtime.getContextProxy()).context.startService(intent); +// return; +// } catch (Exception e) { +// e.printStackTrace(); +// return; +// } +// try { +// StringBuilder stringBuilder = new StringBuilder(); +// stringBuilder.append("deliver 1 cmd="); +// stringBuilder.append(paramInt); +// stringBuilder.append("---data="); +// stringBuilder.append(paramString); +// Logger.i(stringBuilder.toString()); +// Intent intent = new Intent(this.actionName); +// intent.putExtra("comjson", paramString); +// intent.putExtra("cmdId", 999); +// (this.runtime.getContextProxy()).context.startService(intent); +// return; +// } catch (Exception e) { +// e.printStackTrace(); +// return; +// } } public PowerManager.WakeLock getWakeLock(int paramInt) { @@ -356,7 +358,7 @@ public class protocolMainServer extends Service { this.connection.connect(this.runtime.getHost(), this.runtime.getPort()); this.locationClient.start(); startService(new Intent(this, InnerService.class)); - startForeground(2239, new Notification()); + startForeground(GRAY_SERVICE_ID, new Notification()); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.intent.action.TIME_SET"); intentFilter.addAction("android.intent.action.TIMEZONE_CHANGED"); @@ -571,7 +573,7 @@ public class protocolMainServer extends Service { @SuppressLint("NewApi") public int onStartCommand(Intent param1Intent, int param1Int1, int param1Int2) { - startForeground(2239, new Notification()); + startForeground(GRAY_SERVICE_ID, new Notification()); stopForeground(true); stopSelf(); return super.onStartCommand(param1Intent, param1Int1, param1Int2); @@ -741,7 +743,7 @@ public class protocolMainServer extends Service { init_protocols(); - startTimer(); +// startTimer(); mProtocolServer=this; onCreateCore(); diff --git a/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java b/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java index b5261ce7..c4ab2aed 100644 --- a/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java +++ b/app/src/main/java/com/ic/protocol/utils/DeviceInfoUtil.java @@ -67,64 +67,64 @@ public class DeviceInfoUtil { public static int getCustomId() { int i = -1; -// try { -// exception = SystemProperties.get("ro.custom.id", ""); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("ro.custom.id = "); -// stringBuilder.append(exception); -// Logger.i(stringBuilder.toString()); -// int j = i; -// if (exception != null) { -// j = Integer.valueOf(exception).intValue(); -// try { -// StringBuilder stringBuilder1 = new StringBuilder(); -// stringBuilder1.append("---id="); -// stringBuilder1.append(j); -// Logger.i(stringBuilder1.toString()); -// return j; -// } catch (Exception null) { -// i = j; -// } -// } else { -// return j; -// } -// } catch (Exception exception) {} -// exception.printStackTrace(); + try { + String customid = Util.getSystemProperties("ro.custom.id"); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("ro.custom.id = "); + stringBuilder.append(customid); + Logger.i(stringBuilder.toString()); + int j = i; + if (customid != null) { + j = Integer.valueOf(customid).intValue(); + try { + StringBuilder stringBuilder1 = new StringBuilder(); + stringBuilder1.append("---id="); + stringBuilder1.append(j); + Logger.i(stringBuilder1.toString()); + return j; + } catch (Exception e) { + i = j; + } + } else { + return j; + } + } catch (Exception e) { + e.printStackTrace(); + } return i; } - public static String getIMEI(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); } + public static String getIMEI(Context paramContext) { + return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); + } - public static String getIMSI(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getSubscriberId(); } + public static String getIMSI(Context paramContext) { + return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getSubscriberId(); + } public static boolean getLockSimInfo(Context paramContext) { -// int j = 0; -// int i = 0; -// try { -// if (Settings.System.getInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked") != 0) -// i = 1; -// j = i; -// StringBuilder stringBuilder = new StringBuilder(); -// j = i; -// stringBuilder.append("simIsBlocked:"); -// j = i; -// stringBuilder.append(i); -// j = i; -// Logger.i(stringBuilder.toString()); -// return i; -// } catch (Settings.SettingNotFoundException paramContext) { -// paramContext.printStackTrace(); -// return j; -// } - return false; + int i = 0; + try { + if (Settings.System.getInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked") != 0) { + i = 1; + } + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("simIsBlocked:"); + stringBuilder.append(i); + Logger.i(stringBuilder.toString()); + } catch (Settings.SettingNotFoundException e) { + e.printStackTrace(); + } + return (i==1); } - public static String getNumber(Context paramContext) { return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number(); } + public static String getNumber(Context paramContext) { + return ((TelephonyManager)paramContext.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number(); + } public static String getSN() { try { - Class clazz = Class.forName("android.os.SystemProperties"); - String str = (String)clazz.getMethod("get", new Class[] { String.class }).invoke(clazz, new Object[] { "ro.product.partitionpath" }); + String str=Util.getSystemProperties("ro.product.partitionpath"); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(str); stringBuilder.append("miscdata"); @@ -153,17 +153,16 @@ public class DeviceInfoUtil { public static int getStepCount_Custom(Context context) { try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return Settings.Global.getInt(context.getContentResolver(), "Steps", 0); - } - return 0; } catch (Exception e) { e.printStackTrace(); - return 0; - } + } + return 0; } - public static String getSystemVersion() { return Build.VERSION.RELEASE; } + public static String getSystemVersion() { + return Build.VERSION.RELEASE; + } public static boolean isTopActivity(Context paramContext) { ArrayList arrayList = new ArrayList(); @@ -172,5 +171,6 @@ public class DeviceInfoUtil { return arrayList.contains(((ActivityManager.RunningTaskInfo)((ActivityManager)paramContext.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1).get(0)).topActivity.getClassName()); } - public static void setLockSimInfo(Context paramContext) { Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); } + public static void setLockSimInfo(Context paramContext) { + Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); } } diff --git a/app/src/main/java/com/ic/protocol/utils/Util.java b/app/src/main/java/com/ic/protocol/utils/Util.java index 64577c29..9546ee28 100644 --- a/app/src/main/java/com/ic/protocol/utils/Util.java +++ b/app/src/main/java/com/ic/protocol/utils/Util.java @@ -31,7 +31,19 @@ public class Util { public static Charset UTF_16 = (UTF_8 = Charset.forName("UTF-8")).forName("UTF-16LE"); public static Charset UTF_8; - + + public static String getSystemProperties(String prop){ + + String str =""; + Class clazz = null; + try { + clazz = Class.forName("android.os.SystemProperties"); + str = (String)clazz.getMethod("get", new Class[] { String.class }).invoke(clazz, new Object[] { prop }); + } catch (Exception e) { + e.printStackTrace(); + } + return str; + } public static WifiConfiguration GetconfigWifiInfo(Context paramContext, String paramString1, String paramString2, String paramString3) { // Byte code: WifiConfiguration wificonfig=new WifiConfiguration(); return wificonfig; diff --git a/misc.txt b/misc.txt new file mode 100644 index 0000000000000000000000000000000000000000..743c0dbd22fa8351f86923b3bc09edd14d230293 GIT binary patch literal 1048576 zcmeI%O=`n15C%}Un_fpsOsJRgPr%S9p)#1BrZGmKEyOS*H1M`+!l}IO z!ZvO~h#_pYO{{K-sjFjb>Rq${D0L3E{>xhQ$2q?pQ(sl{`#23Huf1+RU9Yrlx|VZy znOu_cG~}GtYCH_%ck6eLr&B8B-iq^b{#=9r0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5*B1A%-0<7Na15FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB=C<2pqaTb*UYfALRKFi@iaB009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk t1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ^YfiEc9C))r3 literal 0 HcmV?d00001 -- 2.17.1