<!-- <action android:name="com.eqc.heartrate.action.SILENT_START" /> -->
</intent-filter>
</receiver>
+
+ <provider
+ android:name=".provider.FZDMembersProvider"
+ android:authorities="com.ic.fzd.video-call"
+ android:exported="true" />
</application>
</manifest>
\ No newline at end of file
if ("com.ic.action.VIDEO_CALL".equals(action)) {
try {
mFZDService.getBRId();
+ mFZDService.getContracts();
} catch (Exception e) {
e.printStackTrace();
}
--- /dev/null
+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) {
+ //升级数据库
+ }
+}
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,
@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;
}
@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;
}
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;
}
@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;
}
}
--- /dev/null
+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 )");
+ }
+ }
+}
+
this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8);
}
-
}
public void deleteMessage(Uri var1) {
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;
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;
}
}
}
-
runtime.getDbHelper().saveSilent(slist);
-
}
public static StringMessage LGZONE(Runtime runtime) {
ICLogger.i("find SOS1 number " + list[0]);
}
} else if (list.length == 2) {
-
ArrayList<Contact> contactArray = new ArrayList<Contact>();
if (regexUtil.isMobileNumber(list[0]) || regexUtil.isPhoneNumber(list[0])) {
contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", list[0]));
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);
}
//判断一下大小,有可能是没有数据的
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<BaiRuiMember> 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<IFZDCallback> 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();
}
- //结果有了,保存到内容提供者里头去.
}
}
}