From: snickersun Date: Mon, 10 Aug 2020 13:01:53 +0000 (+0800) Subject: release V490 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=eea04d95bb71891753491b9800f67d763e004d4f;p=protocol_srv.git release V490 1、修复短信接收有丢失问题。 2、修复发送短消息类型错误问题 3、heartrate检测关闭代码优化。 --- diff --git a/app/release/ICSer_V489_2008101920_release.apk b/app/release/ICSer_V490_2008102058_release.apk similarity index 79% rename from app/release/ICSer_V489_2008101920_release.apk rename to app/release/ICSer_V490_2008102058_release.apk index 77075df2..fb3f4580 100644 Binary files a/app/release/ICSer_V489_2008101920_release.apk and b/app/release/ICSer_V490_2008102058_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index a6dff38d..d30c5b70 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":484,"versionName":"2008081221","enabled":true,"outputFile":"ICSer_V484_2008081221_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V484_2008081221_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":490,"versionName":"2008102058","enabled":true,"outputFile":"ICSer_V490_2008102058_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V490_2008102058_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 286aa3b5..57df41b6 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -6,11 +6,15 @@ import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; +import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.net.Uri; +import android.os.Bundle; import android.os.Environment; +import android.os.Handler; +import android.os.Message; import android.os.SystemClock; import android.telephony.SmsManager; import android.telephony.SmsMessage; @@ -20,6 +24,7 @@ import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.service.Deliver; +import com.enqualcomm.support.service.SmsDatabaseChaneObserver; import com.enqualcomm.support.utils.APNUtil; import com.enqualcomm.support.utils.CellInfoUtil; import com.enqualcomm.support.utils.ContextProxy; @@ -61,7 +66,7 @@ import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei0; import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei1; -public class ICSmsManager extends BroadcastReceiver{ +public class ICSmsManager extends BroadcastReceiver { private static String cell_number_to_reply=""; //this number is use for ACTION_SMSCMD_Reply @@ -69,6 +74,46 @@ public class ICSmsManager extends BroadcastReceiver{ private Context mContext = null; Runtime runtime; + Handler mHandler=new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + + if (message.what==100){ + + Bundle param = message.getData(); + if (param!=null){ + + String from = param.getString("SMSFrom"); + String smsmessage = param.getString("SMSData"); + + long currenttime = System.currentTimeMillis(); +// if (currenttime - ICSmsManager.preTimeMillis > 30000L) { + ICSmsManager.preTimeMillis = currenttime; + (new Thread(new Runnable() { + public void run() { + SystemClock.sleep(3000L); + ICLogger.i("收到" + from + "短信:" + smsmessage); +// Toast.makeText(context, "收到" + from + "短信:" + smsmessage, Toast.LENGTH_LONG).show(); + if (handleSMS_CMD(from, smsmessage) == false) { + //说明不是sms命令,提示短信接收。 + ContextProxy.sendMsgBroadcast(mContext, smsmessage, 1); + } + } + })).start(); +// } + + + } + + + } + + + + return false; + } + }); + ReplayLocation replayLocation=new ReplayLocation(); @Override @@ -92,7 +137,7 @@ public class ICSmsManager extends BroadcastReceiver{ cell_number_to_reply=""; }else if (ACTION_SMS_RECEIVED.equals(action)) { long currenttime = System.currentTimeMillis(); - if (currenttime - ICSmsManager.preTimeMillis > 30000L) { +// if (currenttime - ICSmsManager.preTimeMillis > 30000L) { ICSmsManager.preTimeMillis = currenttime; (new Thread(new Runnable() { public void run() { @@ -119,7 +164,7 @@ public class ICSmsManager extends BroadcastReceiver{ } } })).start(); - } +// } } } @@ -149,6 +194,7 @@ public class ICSmsManager extends BroadcastReceiver{ IntentFilter intentfilter=new IntentFilter(); intentfilter.addAction(ACTION_SMSCMD_Reply); this.mContext.registerReceiver(this,intentfilter); +// registerSmsDatabaseChangeObserver(mContext); } public void sendSMS(String phonenumber, String msg) { @@ -1007,5 +1053,22 @@ public class ICSmsManager extends BroadcastReceiver{ return false; } } + public final Uri SMS_MESSAGE_URI = Uri.parse("content://sms"); + private SmsDatabaseChaneObserver mSmsDBChangeObserver; + private void registerSmsDatabaseChangeObserver(Context contextWrapper) { + //因为,某些机型修改rom导致没有getContentResolver + try { + mSmsDBChangeObserver = new SmsDatabaseChaneObserver(contextWrapper.getContentResolver(), mHandler); + contextWrapper.getContentResolver().registerContentObserver(SMS_MESSAGE_URI, true, mSmsDBChangeObserver); + } catch (Throwable b) { + } + } + private void unregisterSmsDatabaseChangeObserver(Context contextWrapper) { + try { + contextWrapper.getContentResolver().unregisterContentObserver(mSmsDBChangeObserver); + } catch (Exception e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java index b1977ee6..21afdc8b 100644 --- a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java @@ -285,10 +285,11 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se }else { timerPPG.shutdownNow(); timerPPG.purge(); + ICJniUtils.disablePPG(); } isTimerStarted=false; } - ICJniUtils.disablePPG(); + releaseWakeLock(); } diff --git a/app/src/main/java/com/enqualcomm/support/service/SmsDatabaseChaneObserver.java b/app/src/main/java/com/enqualcomm/support/service/SmsDatabaseChaneObserver.java new file mode 100644 index 00000000..1ddf59d8 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/service/SmsDatabaseChaneObserver.java @@ -0,0 +1,102 @@ +package com.enqualcomm.support.service; + +import android.content.ContentResolver; +import android.database.ContentObserver; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.text.TextUtils; + +import com.enqualcomm.support.utils.ICLogger; + +/** + * 数据库观察者 + */ +public class SmsDatabaseChaneObserver extends ContentObserver { + // 只检查收件箱 + public static final Uri MMSSMS_ALL_MESSAGE_URI = Uri.parse("content://sms/inbox"); + public static final String SORT_FIELD_STRING = "_id asc"; // 排序 + public static final String DB_FIELD_ID = "_id"; + public static final String DB_FIELD_ADDRESS = "address"; + public static final String DB_FIELD_PERSON = "person"; + public static final String DB_FIELD_BODY = "body"; + public static final String DB_FIELD_DATE = "date"; + public static final String DB_FIELD_TYPE = "type"; + public static final String DB_FIELD_THREAD_ID = "thread_id"; + public static final String[] ALL_DB_FIELD_NAME = { + DB_FIELD_ID, DB_FIELD_ADDRESS, DB_FIELD_PERSON, DB_FIELD_BODY, + DB_FIELD_DATE, DB_FIELD_TYPE, DB_FIELD_THREAD_ID }; + public static int mMessageCount = -1; + + private static final long DELTA_TIME = 60 * 1000; + private ContentResolver mResolver; + + private Handler mHandler=null; + public SmsDatabaseChaneObserver(ContentResolver resolver, Handler handler) { + super(handler); + mHandler=handler; + mResolver = resolver; + } + + @Override + public void onChange(boolean selfChange) { + onReceiveSms(); + } + + private void onReceiveSms() { + Cursor cursor = null; + // 添加异常捕捉 + try { + cursor = mResolver.query(MMSSMS_ALL_MESSAGE_URI, ALL_DB_FIELD_NAME, + null, null, SORT_FIELD_STRING); + final int count = cursor.getCount(); + if (count <= mMessageCount) { + mMessageCount = count; + return; + } + // 发现收件箱的短信总数目比之前大就认为是刚接收到新短信---如果出现意外,请神保佑 + // 同时认为id最大的那条记录为刚刚新加入的短信的id---这个大多数是这样的,发现不一样的情况的时候可能也要求神保佑了 + mMessageCount = count; + if (cursor != null) { + cursor.moveToLast(); + final long smsdate = Long.parseLong(cursor.getString(cursor.getColumnIndex(DB_FIELD_DATE))); + final long nowdate = System.currentTimeMillis(); + // 如果当前时间和短信时间间隔超过60秒,认为这条短信无效 + if (nowdate - smsdate > DELTA_TIME) { + return; + } + final String strAddress = cursor.getString(cursor.getColumnIndex(DB_FIELD_ADDRESS)); // 短信号码 + final String strbody = cursor.getString(cursor.getColumnIndex(DB_FIELD_BODY)); // 在这里获取短信信息 + final int smsid = cursor.getInt(cursor.getColumnIndex(DB_FIELD_ID)); + if (TextUtils.isEmpty(strAddress) || TextUtils.isEmpty(strbody)) { + return; + } + // 得到短信号码和内容之后进行相关处理 + if(mHandler!=null) { + Message msg=new Message(); + Bundle msgdata=new Bundle(); + msgdata.putString("SMSFrom",strAddress); + msgdata.putString("SMSData",strbody); + msg.what=100; + msg.setData(msgdata); + mHandler.sendMessage(msg); + + } + ICLogger.i("Database 收到" + strAddress + "短信:" + strbody); + + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (cursor != null) { + try { // 有可能cursor都没有创建成功 + cursor.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java index 50f0be1c..f573be18 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java @@ -381,7 +381,7 @@ public class ContextProxy { } Intent intent = new Intent("action.ic.srvPushTxt"); - intent.putExtra("msgType", 0); //0 代表 server下发消息,1代表 SMS消息 + intent.putExtra("msgType", 1); //0 代表 server下发消息,1代表 SMS消息 intent.putExtra("txtMsg", msg); intent.addFlags(FLAG_ACTIVITY_NEW_TASK); _context.sendBroadcast(intent); diff --git a/app/version_code.properties b/app/version_code.properties index ec3daaea..5b46e500 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Mon Aug 10 19:20:04 CST 2020 -VERSION_CODE=489 +#Mon Aug 10 20:58:05 CST 2020 +VERSION_CODE=490