From: snickersun Date: Thu, 20 Feb 2020 16:03:45 +0000 (+0800) Subject: 添加短消息提醒,非命令短消息弹出窗口及声音提醒。 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=5e8326605872fd0f9a0cd8bb56cd1beb7ed826b2;p=protocol_srv.git 添加短消息提醒,非命令短消息弹出窗口及声音提醒。 --- diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 10fbfd3b..a2ec87a0 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -23,8 +23,13 @@ import com.enqualcomm.support.utils.ServiceUtil; import java.util.ArrayList; import java.util.Iterator; +import java.util.concurrent.TimeUnit; import chestnut.utils.PhoneUtils; +import rx.Observable; +import rx.functions.Action1; + +import static com.enqualcomm.support.Constants.DIALOG_ACTION; public class ICSmsManager { @@ -103,87 +108,87 @@ public class ICSmsManager { //回复 //IMEI: 353503535035350 //SW: L02_20200208_V1 - public void handleSMS_CMD(String phonenumber, String sms){ + public boolean handleSMS_CMD(String phonenumber, String sms){ if (isAdminNumber(phonenumber)) { - if (sms==null || sms.isEmpty()) return ; - - if (sms.startsWith("#apn#=")&& sms.endsWith("#")){ - String[] tmp=sms.split("#"); - if(tmp.length==3) { - String[] apnvalues= tmp[2].replace("=","").split(","); - if (apnvalues.length==4){ - String mcc=apnvalues[0]; - String mnc=apnvalues[1]; - String apnName=apnvalues[2]; - String apn=apnvalues[3]; - String user=""; - String password=""; - if(APNUtil.addVPN(mcc,mnc,apnName,apn,user,password,mContext)==true){ - sendSMS(phonenumber,"apn add success!"); - }else{ - sendSMS(phonenumber,"apn add failed!"); + if (sms == null || sms.isEmpty()) return false; + + if (sms.startsWith("#apn#=") && sms.endsWith("#")) { + String[] tmp = sms.split("#"); + if (tmp.length == 3) { + String[] apnvalues = tmp[2].replace("=", "").split(","); + if (apnvalues.length == 4) { + String mcc = apnvalues[0]; + String mnc = apnvalues[1]; + String apnName = apnvalues[2]; + String apn = apnvalues[3]; + String user = ""; + String password = ""; + if (APNUtil.addVPN(mcc, mnc, apnName, apn, user, password, mContext) == true) { + sendSMS(phonenumber, "apn add success!"); + } else { + sendSMS(phonenumber, "apn add failed!"); } - }else if (apnvalues.length==6) { - String mcc=apnvalues[0]; - String mnc=apnvalues[1]; - String apnName=apnvalues[2]; - String apn=apnvalues[3]; - String user=apnvalues[4]; - String password=apnvalues[5]; - if(APNUtil.addVPN(mcc,mnc,apnName,apn,user,password,mContext)==true){ - sendSMS(phonenumber,"apn add success!"); - }else{ - sendSMS(phonenumber,"apn add failed!"); + } else if (apnvalues.length == 6) { + String mcc = apnvalues[0]; + String mnc = apnvalues[1]; + String apnName = apnvalues[2]; + String apn = apnvalues[3]; + String user = apnvalues[4]; + String password = apnvalues[5]; + if (APNUtil.addVPN(mcc, mnc, apnName, apn, user, password, mContext) == true) { + sendSMS(phonenumber, "apn add success!"); + } else { + sendSMS(phonenumber, "apn add failed!"); } - }else if (apnvalues.length==1){ + } else if (apnvalues.length == 1) { if (apnvalues[0].equals("current")) { String apnstr = APNUtil.getCurrentAPN(mContext); sendSMS(phonenumber, apnstr); - }else{ - sendSMS(phonenumber,"apn cmd format error!"); + } else { + sendSMS(phonenumber, "apn cmd format error!"); } - } else{ - sendSMS(phonenumber,"apn cmd format error!"); + } else { + sendSMS(phonenumber, "apn cmd format error!"); } - }else { + } else { - sendSMS(phonenumber,"apn cmd format error!"); + sendSMS(phonenumber, "apn cmd format error!"); } - }else if (sms.startsWith("#deviceinfo#")) { - Logger.i("SMS "+sms+" reply "+DeviceInfoUtil.getShortDeviceInfo(runtime)); - sendSMS(phonenumber,DeviceInfoUtil.getShortDeviceInfo(runtime)); - }else if (sms.startsWith("#status#")) { - String reply="IMEI="+runtime.IMEI()+"\nSW:"+DeviceInfoUtil.getVersionCode(mContext)+" "+DeviceInfoUtil.getSWVersionDisplayName(); - Logger.i("SMS "+sms+" reply \n"+reply); - sendSMS(phonenumber,reply); - }else if (sms.startsWith("#imei:")) { - String imei=sms.substring(6); - Logger.i("SMS "+sms+" imei="+imei); - if (imei.length()==15 ) { + } else if (sms.startsWith("#deviceinfo#")) { + Logger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime)); + sendSMS(phonenumber, DeviceInfoUtil.getShortDeviceInfo(runtime)); + } else if (sms.startsWith("#status#")) { + String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName(); + Logger.i("SMS " + sms + " reply \n" + reply); + sendSMS(phonenumber, reply); + } else if (sms.startsWith("#imei:")) { + String imei = sms.substring(6); + Logger.i("SMS " + sms + " imei=" + imei); + if (imei.length() == 15) { Config.setIMEI(mContext, imei); runtime.setImeiAndCid(imei, ""); sendSMS(phonenumber, "set IMEI " + imei + " sucess !"); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); - }else if (imei.equals("reset")) { + } else if (imei.equals("reset")) { Config.setIMEI(mContext, ""); runtime.setImeiAndCid(PhoneUtils.getIMEI(mContext), ""); sendSMS(phonenumber, "reset IMEI to " + PhoneUtils.getIMEI(mContext) + " sucess !"); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); - }else if (imei.equals("current")) { + } else if (imei.equals("current")) { sendSMS(phonenumber, "Current IMEI " + runtime.IMEI()); - }else{ + } else { sendSMS(phonenumber, "set IMEI " + imei + " failed ! len!=15"); } - }else if (sms.startsWith("#ip#=") && sms.endsWith("#")) { - String tmp[]=sms.split("="); - String reply=""; - Logger.i(sms+" len "+tmp.length); - if (tmp.length==2) { + } else if (sms.startsWith("#ip#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + String reply = ""; + Logger.i(sms + " len " + tmp.length); + if (tmp.length == 2) { if (tmp[1].equals("reset#")) { Config.setProtocolServerHost(mContext, Runtime.DefaultHost); Config.setProtocolServerAddr(mContext, "", Runtime.DefaultPort); @@ -222,79 +227,84 @@ public class ICSmsManager { } } } - }else{ + } else { reply = sms + " falied! "; } sendSMS(phonenumber, reply); - }else if (sms.startsWith("#setlocation#=")&& sms.endsWith("#")){ - String tmp[]=sms.split("="); - if (tmp.length==2){ - if (tmp[1].equals("reset#")){ + } else if (sms.startsWith("#setlocation#=") && sms.endsWith("#")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { + if (tmp[1].equals("reset#")) { Config.loadModCycleSettings(runtime);//恢复初始设置 - sendSMS(phonenumber, "reset to Location Mode="+runtime.getLocationInstance().getWorkingMod()+", Cycle="+runtime.getLocationInstance().getLocation_cycle()); - }else { - String[] t=tmp[1].replace("#","").split(","); - if (t.length==2){ - int mod=0; - int cycle=0; + sendSMS(phonenumber, "reset to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); + } else { + String[] t = tmp[1].replace("#", "").split(","); + if (t.length == 2) { + int mod = 0; + int cycle = 0; try { mod = Integer.valueOf(t[0]); cycle = Integer.valueOf(t[1]); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } - if(mod<6&& mod>0 && cycle>=30 ){ - switch(mod){ + if (mod < 6 && mod > 0 && cycle >= 30) { + switch (mod) { case ICLocation.NORMAL_MOD: - cycle=60*15; + cycle = 60 * 15; break; case ICLocation.LOWPOWER_MOD: - cycle=60*60; + cycle = 60 * 60; break; case ICLocation.REALTIME_MOD: case ICLocation.EMERGNECY_MOD: - cycle=60; + cycle = 60; break; } LocationClient.setForceLocation(1); //短信设置的至少强制执行第一次定位。否则NORMAL_MOD和LOWPOWER_MOD如果没有运动就无法正常定位 runtime.getLocationInstance().setLocation_cycle(cycle); runtime.getLocationInstance().setWorkingMod(mod); CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - if (mod == 4){ + if (mod == 4) { CoreService.getInstance().setEmegencyLocationSTOPAlarm(5); } - sendSMS(phonenumber, "set to Location Mode="+runtime.getLocationInstance().getWorkingMod()+", Cycle="+runtime.getLocationInstance().getLocation_cycle()); - }else{ + sendSMS(phonenumber, "set to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle()); + } else { sendSMS(phonenumber, "set to Location Failed ,value range should be 1<= Mode <=5 and cycle >=30!"); } - }else{ + } else { sendSMS(phonenumber, "setlocation format error!"); } } - }else{ + } else { sendSMS(phonenumber, "setlocation format error!"); } - }else if (sms.startsWith("#skipmovecheck#=")){ - String tmp[]=sms.split("="); - if (tmp.length==2) { + } else if (sms.startsWith("#skipmovecheck#=")) { + String tmp[] = sms.split("="); + if (tmp.length == 2) { if (tmp[1].equals("current")) { - sendSMS(phonenumber, "SkipMoveCheck "+LocationClient.getSkipMoveCheck()+"!"); - }else if (tmp[1].equals("true")) { + sendSMS(phonenumber, "SkipMoveCheck " + LocationClient.getSkipMoveCheck() + "!"); + } else if (tmp[1].equals("true")) { LocationClient.setSkipMoveCheck(true); - sendSMS(phonenumber, "set SkipMoveCheck "+LocationClient.getSkipMoveCheck()+" success!"); - }else if (tmp[1].equals("false")) { + sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); + } else if (tmp[1].equals("false")) { LocationClient.setSkipMoveCheck(false); - sendSMS(phonenumber, "set SkipMoveCheck "+LocationClient.getSkipMoveCheck()+" success!"); - }else{ + sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!"); + } else { sendSMS(phonenumber, "skipmovecheck format error!"); } - }else{ + } else { sendSMS(phonenumber, "skipmovecheck format error!"); } + } else { + return false; } + return true; + }else{ + return false; } } @@ -326,7 +336,18 @@ public class ICSmsManager { } Logger.i("收到" + from + "短信:" + message); // Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show(); - handleSMS_CMD(from,message); + if (handleSMS_CMD(from,message)==false){ + //说明不是sms命令,提示短信接收。 + + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("sms", "SMS"); + context.sendBroadcast(intent); + } + }); + } } })).start(); } diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index 2853dff7..97828855 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -56,6 +56,8 @@ import rx.schedulers.Schedulers; import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static com.enqualcomm.support.Constants.ACTION_WAKEUP_ALARM; +import static com.enqualcomm.support.Constants.DIALOG_ACTION; +import static com.enqualcomm.support.bean.Contact.CATEGORY_GROUP; /** * 负责发送除了login,心跳之外的所有指令 @@ -389,11 +391,11 @@ public static void sendLocationMSG( String Msg){ public void call(Long param1Long) { final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - Contact param2Contact = new Contact(0, (mRuntime.getContextProxy()).context.getResources().getString(R.string.family_group), "1@-3"); + Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { Intent intent = new Intent(); - intent.setAction("com.enqualcomm.support.DIALOG"); + intent.setAction(DIALOG_ACTION); intent.putExtra("contact", (Parcelable) param2Contact); context.sendBroadcast(intent); diff --git a/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java b/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java index be76c00b..ea8fed5c 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java +++ b/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java @@ -45,10 +45,10 @@ public class CustomDialog extends Dialog { this.mDialog = new CustomDialog(this.context, R.style.Dialog); LayoutInflater var1 = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view; - if (this.app_id == 2) { - view = var1.inflate(R.layout.dialog_misscall_layout, (ViewGroup)null); - } else { + if (this.app_id == 1) { view = var1.inflate(R.layout.dialog_normal_layout, (ViewGroup)null); + } else { + view = var1.inflate(R.layout.dialog_misscall_layout, (ViewGroup)null); } this.mDialog.addContentView(view, new LayoutParams(-1, -2)); diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index fbad60d7..a44e4e08 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -70,6 +70,7 @@ public class NettyConnection implements Connection { break; case BP07: + //收到发送的语音包 API.handleBP07(cmd,NettyConnection.this); break; case BPTM: @@ -157,10 +158,12 @@ public class NettyConnection implements Connection { break; case BP86: + //心率血压周期设置 API.handleBP86(cmd,NettyConnection.this,runtime); // Logger.i(""); break; case BP89: + //心率/血压阀值 API.handleBP89(cmd,NettyConnection.this); break; } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java index ac6004b8..a4b51fd1 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java @@ -43,6 +43,7 @@ import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA; import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START; import static com.enqualcomm.support.Constants.ACTION_SEND_SOS_MSG; +import static com.enqualcomm.support.Constants.DIALOG_ACTION; import static com.enqualcomm.support.Constants.RESUME_ACTION; import static com.enqualcomm.support.Constants.SOS_ACTION; import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION; @@ -77,14 +78,17 @@ public class ProcessReceiver extends BroadcastReceiver { private float y2 = 0.0F; private void initMyDialog(final Context context, final Contact contact, int app_id) { - String var4 = contact.name; + String var4 = contact==null?"SMS":contact.name; + if (this.mDialog == null) { this.mDialog = new CustomDialog.Builder(context); } StringBuilder var5 = new StringBuilder(); - var5.append("===mCustomDialog"); - var5.append(mCustomDialog); + var5.append("===mCustomDialog ") + .append(mCustomDialog) + .append(" , appid ").append(app_id); + Logger.i(var5.toString()); if (mCustomDialog != null && mCustomDialog.isShowing() && last_message_name != null && var4 != null && last_message_name.equals(var4) && last_app_id == app_id) { mCustomDialog.dismiss(); @@ -138,6 +142,31 @@ public class ProcessReceiver extends BroadcastReceiver { }).create(); mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); mCustomDialog.show(); + }else if (app_id ==3){ + tmpDialog = this.mDialog.setTitle(context.getString(R.string.sms_title)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(context.getString(R.string.sms_notify)); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton("确定", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + ComponentName var3 = new ComponentName("com.zmapp.sms", "com.zmapp.sms.MainActivity"); + Intent var5 = new Intent("android.intent.action.MAIN"); + var5.addCategory("android.intent.category.DEFAULT"); + var5.addFlags(FLAG_ACTIVITY_NEW_TASK); + var5.setComponent(var3); + try { + context.startActivity(var5); + } catch (Exception var4) { + var4.printStackTrace(); + } + } + }).setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); } } @@ -417,6 +446,8 @@ public class ProcessReceiver extends BroadcastReceiver { @Override public void onReceive(Context paramContext, Intent paramIntent) { + + boolean isSilence; Contact contact; String str = paramIntent.getAction(); StringBuilder stringBuilder = new StringBuilder(); @@ -436,30 +467,39 @@ public class ProcessReceiver extends BroadcastReceiver { (new CameraUtil(paramContext)).getPictur(str1); return; - } - + }else if (DIALOG_ACTION.equals(str)) { + if (paramIntent.hasExtra("contact")) { + contact = (Contact) paramIntent.getParcelableExtra("contact"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (contact != null && !isSilence) { + if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, contact, 1); + this.playNotificationVoice(paramContext); + } - - boolean var5; - if ("com.enqualcomm.support.DIALOG".equals(str)) { - Contact var6 = (Contact)paramIntent.getParcelableExtra("contact"); - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - var5 = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (var6 != null && !var5) { - if (!DeviceInfoUtil.isTopActivity(paramContext)) { - this.initMyDialog(paramContext, var6, 1); - this.playNotificationVoice(paramContext); + this.screenOn(paramContext); } + }else if (paramIntent.hasExtra("sms")) { + String sms = paramIntent.getStringExtra("sms"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (sms != null && !isSilence) { + if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, null, 3); + this.playNotificationVoice(paramContext); + } - this.screenOn(paramContext); + this.screenOn(paramContext); + } } } else if (!"com.enqualcomm.support.CloseUnreadMsg".equals(paramIntent.getAction()) && !"android.intent.action.BATTERY_LOW".equals(paramIntent.getAction())) { if ("com.enqualcomm.support.ACTION_MISSED_CALL_GET".equals(str)) { - Contact var8 = (Contact)paramIntent.getParcelableExtra("contact"); - var8.extra = paramIntent.getStringExtra("date"); - var5 = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (var8 != null && !var5) { - this.initMyDialog(paramContext, var8, 2); + contact = (Contact)paramIntent.getParcelableExtra("contact"); + contact.extra = paramIntent.getStringExtra("date"); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (contact != null && !isSilence) { + this.initMyDialog(paramContext, contact, 2); this.playNotificationVoice(paramContext); this.screenOn(paramContext); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d311ad8..4b0a46ec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,7 +10,10 @@ Push Service 家庭群组 + 所有人 + 短信提醒 + 您有新短消息! 的未接来电 您有 diff --git a/app/version_code.properties b/app/version_code.properties index 6e9cb49f..c82dec4e 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Sun Feb 16 18:44:00 CST 2020 -VERSION_CODE=354 +#Thu Feb 20 00:29:24 CST 2020 +VERSION_CODE=355