From: TrillGates Date: Wed, 24 Feb 2021 07:44:16 +0000 (+0800) Subject: parse fzd memmbers. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=13729627569e58c8b8a9eae27f3a2f2bc589df13;p=protocol_srv.git parse fzd memmbers. --- diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae26119f..273ab7ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -160,6 +160,11 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 88d1fbae..3550d155 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -1641,6 +1641,7 @@ public class CoreService extends Service { if ("com.ic.action.VIDEO_CALL".equals(action)) { try { mFZDService.getBRId(); + mFZDService.getContracts(); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/enqualcomm/support/provider/FZDDatabaseHelper.java b/app/src/main/java/com/enqualcomm/support/provider/FZDDatabaseHelper.java new file mode 100644 index 00000000..5b1a9043 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/provider/FZDDatabaseHelper.java @@ -0,0 +1,55 @@ +package com.enqualcomm.support.provider; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.support.annotation.Nullable; + +import com.enqualcomm.support.utils.ICLogger; + + +public class FZDDatabaseHelper extends SQLiteOpenHelper { + + public static final String DB_NAME = "fzd_db"; + private static final int DEFAULT_VERSION = 1; + + + public FZDDatabaseHelper(@Nullable Context context) { + super(context, DB_NAME, null, DEFAULT_VERSION); + } + //数据库字段需要有:id,user_name,phone_num,create_time,update_time + + public static final String tMembers = "members"; + public static final String fID = "_id"; + public static final String fUserName = "user_name"; + public static final String fPhoneNum = "phone_num"; + public static final String fCreateTime = "create_time"; + public static final String fUpdateTime = "update_time"; + + + @Override + public void onCreate(SQLiteDatabase db) { + //创建数据库 + String createMembers = "create table " + + tMembers + + " (" + + fID + + " integer primary key, " + + fUserName + + " text, " + + fPhoneNum + + " text, " + + fCreateTime + + " date, " + + fUpdateTime + + " date" + + ")"; + ICLogger.d(createMembers); + db.execSQL(createMembers); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + //升级数据库 + } +} diff --git a/app/src/main/java/com/enqualcomm/support/provider/FZDMembersProvider.java b/app/src/main/java/com/enqualcomm/support/provider/FZDMembersProvider.java index d1cad051..1cfb639a 100644 --- a/app/src/main/java/com/enqualcomm/support/provider/FZDMembersProvider.java +++ b/app/src/main/java/com/enqualcomm/support/provider/FZDMembersProvider.java @@ -2,18 +2,46 @@ package com.enqualcomm.support.provider; import android.content.ContentProvider; import android.content.ContentValues; +import android.content.UriMatcher; import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; public class FZDMembersProvider extends ContentProvider { + private static UriMatcher sUriMatcher; + private static final int MATH_CODE = 1; + + public static final String PATH = "members"; + public static final String AUTHORITY = "com.ic.fzd.video-call"; + public static final String MEMBERS = "content://" + AUTHORITY + "/" + PATH; + + + static { + sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); + sUriMatcher.addURI(AUTHORITY, PATH, MATH_CODE); + } + + private FZDDatabaseHelper mDatabase; + @Override public boolean onCreate() { + mDatabase = new FZDDatabaseHelper(getContext()); return false; } + /** + * 查询数据 + * + * @param uri + * @param projection + * @param selection + * @param selectionArgs + * @param sortOrder + * @return + */ @Nullable @Override public Cursor query(@NonNull Uri uri, @@ -21,6 +49,16 @@ public class FZDMembersProvider extends ContentProvider { @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { + //匹配规则 + int match = sUriMatcher.match(uri); + if (match == MATH_CODE) { + SQLiteDatabase readableDatabase = mDatabase.getReadableDatabase(); + return readableDatabase.query(FZDDatabaseHelper.tMembers, + projection, + selection, + selectionArgs, + null, null, sortOrder); + } return null; } @@ -34,6 +72,14 @@ public class FZDMembersProvider extends ContentProvider { @Override public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) { + int match = sUriMatcher.match(uri); + if (match == MATH_CODE) { + SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase(); + long insert = writableDatabase.insert(FZDDatabaseHelper.tMembers, null, values); + writableDatabase.close(); + getContext().getContentResolver().notifyChange(uri, null); + return Uri.parse(AUTHORITY + "/" + PATH + "/" + insert); + } return null; } @@ -41,6 +87,13 @@ public class FZDMembersProvider extends ContentProvider { public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { + int match = sUriMatcher.match(uri); + if (match == MATH_CODE) { + SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase(); + int delete = writableDatabase.delete(FZDDatabaseHelper.tMembers, selection, selectionArgs); + writableDatabase.close(); + return delete; + } return 0; } @@ -49,6 +102,13 @@ public class FZDMembersProvider extends ContentProvider { @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) { + int match = sUriMatcher.match(uri); + if (match == MATH_CODE) { + SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase(); + int update = writableDatabase.update(FZDDatabaseHelper.tMembers, values, selection, selectionArgs); + writableDatabase.close(); + return update; + } return 0; } } diff --git a/app/src/main/java/com/enqualcomm/support/provider/MySqlitOpenHelper.java b/app/src/main/java/com/enqualcomm/support/provider/MySqlitOpenHelper.java new file mode 100644 index 00000000..714d5b16 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/provider/MySqlitOpenHelper.java @@ -0,0 +1,95 @@ +package com.enqualcomm.support.provider; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import com.enqualcomm.support.utils.ICLogger; + + +public class MySqlitOpenHelper extends SQLiteOpenHelper { + private static int dbVersion=10; + public MySqlitOpenHelper(Context paramContext) { super(paramContext, "data", null, dbVersion); } + + public void onCreate(SQLiteDatabase sqlite) { + sqlite.execSQL("CREATE TABLE CONTACT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,NAME TEXT ,NUMBER TEXT ,ICON TEXT ,EXTRA TEXT)"); + sqlite.execSQL("CREATE TABLE ALARM(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,WEEK TEXT ,RING TEXT ,STATUS TEXT ,NAME TEXT)"); + sqlite.execSQL("CREATE TABLE SILENT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + sqlite.execSQL("CREATE TABLE IKNOWLEDGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SCORE TEXT ,AWARD TEXT)"); + sqlite.execSQL("CREATE TABLE URLDOWNLOADPIC(_id INTEGER PRIMARY KEY AUTOINCREMENT ,URL TEXT)"); +//提示信息表 + sqlite.execSQL("CREATE TABLE NOTICE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT,NAME TEXT,NUMBER TEXT,ID TEXT,CATEGORY TEXT,FREQUENCY TEXT,CONTENT TEXT)"); + sqlite.execSQL("CREATE TABLE WEATHER(_id INTEGER PRIMARY KEY AUTOINCREMENT ,WEATHER_TYPE TEXT,MIN_TEMPERATURE TEXT,MAX_TEMPERATURE TEXT,CUR_TEMPERATURE TEXT,WEATHER_INDEX TEXT,WEATHER_INFO TEXT)"); + sqlite.execSQL("CREATE TABLE DEVICESTATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IS_SILENCE TEXT,START_MONITOR TEXT,END_MONITOR TEXT,IS_ALARM INTEGER)"); + sqlite.execSQL("CREATE TABLE DOWNLOADINFO(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IMSI TEXT,TIME TEXT,NUMBER TEXT,TOTAL_NUMBER TEXT)"); + sqlite.execSQL("CREATE TABLE STHEART_RATE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,INTERVAL TEXT)"); + sqlite.execSQL("CREATE TABLE UNREADMSG(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,ID TEXT ,COUNT INTEGER,RECVTIME INTEGER)"); + create_tables(sqlite); +} + + + private void create_tables(SQLiteDatabase sqlite){ + + /* +系统对话消息表,包含微聊,系统推送文本,上传图片,上传语音等一系列消息。 +Pushtxt、message +数据库 Message,记录所有message,包括类型(下发txt,chat msg, chat image),文件url或者文本内容。 +*/ + sqlite.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT)"); + //sqlite.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT,FILETYPE INTEGER,DATATYPE INTEGER)"); + + + +//日志表格,存储开机关机,低电报警等消息。。。 + sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )"); + +/* +脱腕检测时段AntiOff +本身需要时间段的,在时间段内才进行 脱腕检测。没有设置时间段的话,或者从0:00~23:59表示持续判断脱腕检测。 +2个数据库,时间段和当前状态记录(包括历史记录)。 +*/ + sqlite.execSQL("CREATE TABLE ANTIOFF(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + // sqlite.execSQL("CREATE TABLE ANTIOFF_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + +/* +睡眠 +根据时间段进行检测,时间段内,根据翻滚次数确认其睡眠类型。如深度睡眠或者浅睡。 +2个数据库翻滚次数记录,当每日睡眠情况统计计算,检测时间段记在settings里,就不放在数据库了。 +*/ + /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */ + sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SLEEP_DATE TEXT,DATE TEXT, STEPCOUNT INTEGER ,ROLLTIMES INTEGER ,STATUS TEXT )"); + /*计算后的分值,每天会在睡眠结束后计算Records获得*/ + sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT , DATE TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )"); + +/*久坐 +根据时间段进行检测,时间段内,根据计步变化确认其是否在坐着。 +1个数据库 久坐检测时间段,报警时长度要求,报警记录*/ + sqlite.execSQL("CREATE TABLE SIT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,INTERVAL INTEGER)"); + + + /*所有报警的记录表,包括开关机事件*/ + sqlite.execSQL("CREATE TABLE ALARM_MSG_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT, TIME TEXT ,ALARM TEXT )"); + + /*缓存协议记录*/ + sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )"); + + } + + public void onUpgrade(SQLiteDatabase sqlite, int oldDBversion, int newDBversion) { + if (oldDBversion < 9) { + ICLogger.i("数据库升级 to "+dbVersion); + sqlite.execSQL("DROP TABLE IF EXISTS MESSAGE"); + sqlite.execSQL("DROP TABLE IF EXISTS EVENT_MESSAGE"); + sqlite.execSQL("DROP TABLE IF EXISTS ANTIOFF"); + sqlite.execSQL("DROP TABLE IF EXISTS SLEEP_RECORDS"); + sqlite.execSQL("DROP TABLE IF EXISTS SLEEP_STATUS"); + sqlite.execSQL("DROP TABLE IF EXISTS SIT"); + sqlite.execSQL("DROP TABLE IF EXISTS ALARM_MSG_RECORDS"); + create_tables(sqlite); + }else if (oldDBversion == 9 ){ + /*缓存协议记录*/ + sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )"); + } + } +} + diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 124cec62..de045fd7 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -228,7 +228,6 @@ public class DBHelper { this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8); } - } public void deleteMessage(Uri var1) { diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 2b9ad14d..145c6d6d 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -2,21 +2,24 @@ package com.ic.protocols; import android.content.ComponentName; +import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.os.RemoteCallbackList; import android.text.TextUtils; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.IFZDCallback; -import com.enqualcomm.support.bean.BaiRuiMember; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.HealthInfo; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.Silent; import com.enqualcomm.support.bean.StringMessage; +import com.enqualcomm.support.provider.FZDMembersProvider; import com.enqualcomm.support.service.HeartRateManager; import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.ICLogger; @@ -28,7 +31,6 @@ import com.enqualcomm.support.utils.regexUtil; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.List; import static com.enqualcomm.support.Constants.FROM_SERVER; import static com.enqualcomm.support.LocationClient.LOCATION_MODE; @@ -439,9 +441,7 @@ public class protocol_fzd { } } } - runtime.getDbHelper().saveSilent(slist); - } public static StringMessage LGZONE(Runtime runtime) { @@ -675,7 +675,6 @@ public class protocol_fzd { ICLogger.i("find SOS1 number " + list[0]); } } else if (list.length == 2) { - ArrayList contactArray = new ArrayList(); if (regexUtil.isMobileNumber(list[0]) || regexUtil.isPhoneNumber(list[0])) { contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", list[0])); @@ -685,7 +684,6 @@ public class protocol_fzd { contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", list[1])); ICLogger.i("find SOS2 number " + list[1]); } - runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); } @@ -1107,23 +1105,42 @@ public class protocol_fzd { //判断一下大小,有可能是没有数据的 if (!TextUtils.isEmpty(data)) { ICLogger.d("members data == > " + data); - String s = Util.decodeUnicode2Utf8(data); - ICLogger.d("members result == > " + s); + String str = Util.decodeUnicode2Utf8(data); + ICLogger.d("members result == > " + str); //对数据进行切割 - String[] split = data.split(CMDSPLIT); + String[] split = str.split(CMDSPLIT); //每3个为一组 + ICLogger.d("split.length = > " + split.length); if (split.length % 3 != 0) { - ICLogger.d("数据出错 == > " + s); + ICLogger.d("数据出错 == > " + str); } else { - List baiRuiMembers = new ArrayList<>(); + ContentResolver resolver = mRuntime.getContextProxy().getResolver(); + //添加之前先清空 + resolver.delete(Uri.parse(FZDMembersProvider.MEMBERS), null, null); for (int i = 0; i < split.length; i += 3) { - BaiRuiMember temp = new BaiRuiMember(); - temp.setBairuiId(Integer.parseInt(split[i])); - temp.setName(split[i + 1]); - temp.setPhoneNum(split[i + 2]); - baiRuiMembers.add(temp); + ContentValues contentValues = new ContentValues(); + contentValues.put("_id", Integer.parseInt(split[i])); + contentValues.put("user_name", split[i + 1]); + contentValues.put("phone_num", split[i + 2]); + //结果有了,保存到内容提供者里头去. + resolver.insert(Uri.parse(FZDMembersProvider.MEMBERS), contentValues); + } + //解析完成了,通知UI。 + RemoteCallbackList fzdCallback = mRuntime.getFZDCallback(); + try { + ICLogger.d("onContractsLoaded..."); + int i = fzdCallback.beginBroadcast(); + while (i > 0) { + i--; + IFZDCallback broadcastItem = fzdCallback.getBroadcastItem(i); + //通知UI层数据已经准备好了,可以去获取了。 + broadcastItem.onContractsLoaded(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + fzdCallback.finishBroadcast(); } - //结果有了,保存到内容提供者里头去. } } }