From aa8353fe661ee9d3bac0538070458a30af28dc41 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 19 七月 2017 15:26:28 +0800
Subject: [PATCH]
---
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java | 19 ++++
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UnknownSurveillanceQueryItemUtil.java | 53 +++++++++++++
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java | 10 ++
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java | 1
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/dialog/SurveillancePhotoDialog.java | 16 +++
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java | 3
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/UnknownQueryItem.java | 32 ++++++++
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java | 2
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java | 53 +++++++++---
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java | 22 +++--
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java | 12 ++
11 files changed, 193 insertions(+), 30 deletions(-)
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java
index 057e56b..46a461a 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java
@@ -98,5 +98,15 @@
return !connected;
}
+ public boolean networkAvailable() {
+ boolean connected = false;
+ ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
+ connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
+ connected = true;
+ }
+ return connected;
+ }
+
}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
index d3d13ba..40d4ed5 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
@@ -128,7 +128,6 @@
}
initDb();
initSqlMap();
- TestDao.getInstance().test();
}
public static MainActivity getInstance() {
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/dialog/SurveillancePhotoDialog.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/dialog/SurveillancePhotoDialog.java
index 7849684..90ad6ea 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/dialog/SurveillancePhotoDialog.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/dialog/SurveillancePhotoDialog.java
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.List;
+import cn.com.basic.face.base.BaseApplication;
import cn.com.basic.face.base.MainActivity;
import cn.com.basic.face.dialog.wheelview.adapter.BaseWheelAdapter;
import cn.com.basic.face.dialog.wheelview.widget.WheelView;
@@ -26,6 +27,7 @@
import cn.com.basic.face.util.Constant;
import cn.com.basic.face.util.OkClickedListener;
import cn.com.basic.face.util.SurveillanceQueryItemUtil;
+import cn.com.basic.face.util.UnknownSurveillanceQueryItemUtil;
import cn.com.basic.face.widget.surveilance.SurveillancePhotoSelectListView;
public class SurveillancePhotoDialog extends PopupWindow {
@@ -39,10 +41,18 @@
View view = LayoutInflater.from(MainActivity.getInstance()).inflate(R.layout.dialog_surveillance_photo_select,null);
ViewUtils.inject(this, view);
- if (CommonVariables.Register.VISITOR_REGISTER_SELECTED) {
- dialog_surveillance_photo_select_list_view.show(SurveillanceQueryItemUtil.getInstance().getAllUnregisterVisitorTwoRowsForSelect(selectedId));
+ if (BaseApplication.getInstance().networkAvailable()) {
+ if (CommonVariables.Register.VISITOR_REGISTER_SELECTED) {
+ dialog_surveillance_photo_select_list_view.show(SurveillanceQueryItemUtil.getInstance().getAllUnregisterVisitorTwoRowsForSelect(selectedId));
+ } else {
+ dialog_surveillance_photo_select_list_view.show(SurveillanceQueryItemUtil.getInstance().getAllUnregisterAttenderTwoRowsForSelect(selectedId));
+ }
} else {
- dialog_surveillance_photo_select_list_view.show(SurveillanceQueryItemUtil.getInstance().getAllUnregisterAttenderTwoRowsForSelect(selectedId));
+ if (CommonVariables.Register.VISITOR_REGISTER_SELECTED) {
+ dialog_surveillance_photo_select_list_view.show(UnknownSurveillanceQueryItemUtil.getInstance().getAllUnregisterVisitorTwoRowsForSelect(selectedId));
+ } else {
+ dialog_surveillance_photo_select_list_view.show(UnknownSurveillanceQueryItemUtil.getInstance().getAllUnregisterAttenderTwoRowsForSelect(selectedId));
+ }
}
setTitleAndList(type);
WheelView.WheelViewStyle style = new WheelView.WheelViewStyle();
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
index d426348..76b8c99 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
@@ -73,6 +73,7 @@
public static final int VISIT_ATTENDANCE_IN = 5;
public static final int VISIT_ATTENDANCE_OUT = 6;
public static final int VISIT_ATTENDANCE_BLANK = 7;
+ public static final int VISIT_UNKNOWN_ITEM_TYPE = 8;
public static final int REGISTER_CELL_VIEW_INDEX = 0;
public static final int CHECK_IN_CELL_VIEW_INDEX = 1;
@@ -112,7 +113,7 @@
public static boolean FACE_SERVER = false;
public static boolean ID_CARD = false;
- public static boolean EMULATOR = false;
+ public static boolean EMULATOR = true;
public static boolean androidOffline() {
return true;
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/UnknownQueryItem.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/UnknownQueryItem.java
new file mode 100644
index 0000000..ae385d2
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/UnknownQueryItem.java
@@ -0,0 +1,32 @@
+package cn.com.basic.face.discern.query.item;
+
+public class UnknownQueryItem {
+
+ private String rawDataPath;
+ private String cameraInOrOut;
+ private String createTime;
+
+ public String getRawDataPath() {
+ return rawDataPath;
+ }
+
+ public void setRawDataPath(String rawDataPath) {
+ this.rawDataPath = rawDataPath;
+ }
+
+ public String getCameraInOrOut() {
+ return cameraInOrOut;
+ }
+
+ public void setCameraInOrOut(String cameraInOrOut) {
+ this.cameraInOrOut = cameraInOrOut;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java
index 1b12207..12ade46 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java
@@ -7,6 +7,7 @@
import cn.com.basic.face.dialog.CountryDialog;
import cn.com.basic.face.dialog.SelectDialog;
import cn.com.basic.face.discern.query.condition.DictionaryQueryCondition;
+import cn.com.basic.face.service.sqlite.TestDao;
import cn.com.basic.face.util.AppApi;
import org.xutils.http.RequestParams;
@@ -37,6 +38,7 @@
if (!BaseApplication.deviceAvailable) {
return;
}
+ TestDao.getInstance().test();
loadCountries();
loadIdTypeList();
loadGenderList();
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
index b03ea79..48a117c 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
@@ -11,9 +11,12 @@
import cn.com.basic.face.base.MainActivity;
import cn.com.basic.face.discern.common.BaseCommonCallBack;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
+import cn.com.basic.face.discern.query.item.UnknownQueryItem;
+import cn.com.basic.face.service.sqlite.SurveillanceDao;
import cn.com.basic.face.util.AppApi;
import cn.com.basic.face.util.FileUtil;
import cn.com.basic.face.util.SurveillanceQueryItemUtil;
+import cn.com.basic.face.util.UnknownSurveillanceQueryItemUtil;
public class SurveillanceMng {
@@ -31,7 +34,11 @@
MainActivity.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
- SurveillanceQueryItemUtil.getInstance().removeTimeoutItemAndShow();
+ if (BaseApplication.getInstance().networkAvailable()) {
+ SurveillanceQueryItemUtil.getInstance().removeTimeoutItemAndShow();
+ } else {
+ UnknownSurveillanceQueryItemUtil.getInstance().removeTimeoutItemAndShow();
+ }
}
});
Thread.sleep(1000*60*5);
@@ -93,4 +100,14 @@
}
}
+ public void sendOfflineUnknownToInternet() {
+ UnknownQueryItem item = SurveillanceDao.getInstance().readOfflineUnknownFromLocal();
+ if (item == null) {
+ return;
+ }
+
+
+
+ }
+
}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java
index 1ba34a1..b9b1b38 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java
@@ -1,5 +1,7 @@
package cn.com.basic.face.service.sqlite;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import java.text.SimpleDateFormat;
@@ -7,9 +9,13 @@
import java.util.List;
import java.util.UUID;
+import cn.com.basic.face.base.Config;
import cn.com.basic.face.discern.query.item.SurveillancePhotoQueryItem;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
+import cn.com.basic.face.discern.query.item.UnknownQueryItem;
import cn.com.basic.face.util.FileUtil;
+import cn.com.basic.face.util.SurveillanceQueryItemUtil;
+import cn.com.basic.face.util.UnknownSurveillanceQueryItemUtil;
public class SurveillanceDao {
@@ -17,35 +23,52 @@
public static SurveillanceDao getInstance() {
return instance;
}
-
+ //companyId
//offline_ (headPicture, cameraInOrOut, createTime, visitId)
- public void addBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] byteArray, int len, final String cameraInOrOut, byte[] surveillancePhotoBytes) {
-
-
- for (SurveillanceQueryItem item : bitmapList) {
- Bitmap bitmap = item.getBitmap();
- String fileName = UUID.randomUUID().toString()+".bmp";
- FileUtil.writeToFile(fileName, new byte[]{});
-
+ public void saveOfflineUnknownToLocal(final List<SurveillanceQueryItem> bitmapList, final byte[] rawData, final String cameraInOrOut) {
+ if (bitmapList == null || bitmapList.size() == 0) {
+ return;
}
-
+ String rawDataFileName = UUID.randomUUID().toString()+"";
+ FileUtil.writeToFile(rawDataFileName, rawData);
String headPicture = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime = sdf.format(new Date());
- String sql = "insert offline_temp(head_picture, camera_in_or_out, create_time, visit_id) values('"+
- headPicture+"','"+
+ String sql = "insert offline_unknown(raw_data_path, camera_in_or_out, create_time) values('"+
+ rawDataFileName+"','"+
cameraInOrOut+"','"+
createTime+"','"+
- "null" +"')";
- //瀛樺叆鏁版嵁搴�
- //鎶婂浘鐗囧瓨鍏ユ湰鍦版枃浠�
+ "null" +"')";
+ SQLiteDatabase db = Config.sqlMap.getDb();
+ db.beginTransaction();
+ db.execSQL(sql);
+ db.endTransaction();
+
+ UnknownSurveillanceQueryItemUtil.getInstance().addItems(bitmapList);
+
//浜哄憳娉ㄥ唽鍙互閫夋嫨鏈湴鍥剧墖
//鍚屾涓存椂琛�
//鍚屾璁垮鐧昏琛�
//鍒犻櫎鏈湴鏂囦欢锛堝惊鐜垹闄わ級
+ }
+ public UnknownQueryItem readOfflineUnknownFromLocal() {
+ UnknownQueryItem item = null;
+ String sql = "select raw_data,camera_in_or_out,create_time from offline_unknown order by create_time create_time limit 1";
+ SQLiteDatabase db = Config.sqlMap.getDb();
+ db.beginTransaction();
+ Cursor c = db.rawQuery(sql, new String[]{});
+ if (c.moveToFirst()) {
+ item = new UnknownQueryItem();
+ item.setRawDataPath(c.getString(c.getColumnIndex("raw_data_path")));
+ item.setCameraInOrOut(c.getString(c.getColumnIndex("camera_in_or_out")));
+ item.setCreateTime(c.getString(c.getColumnIndex("create_time")));
+ }
+ c.close();
+ db.endTransaction();
+ return item;
}
}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java
index 9977e56..f5b0f29 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java
@@ -13,6 +13,16 @@
public static File writeToFile(String fileName, byte[] fileBytes) {
try {
+ writeToFile(fileName, fileBytes, 0, fileBytes.length);
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static File writeToFile(String fileName, byte[] fileBytes, int offset, int size) {
+ try {
if (fileBytes == null) {
fileBytes = new byte[]{};
}
@@ -24,7 +34,7 @@
}
file.createNewFile();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(dir, fileName)));
- bos.write(fileBytes);
+ bos.write(fileBytes, offset, size);
bos.flush();
bos.close();
return new File(dir, fileName);
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java
index fa3c18a..7ad08d9 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java
@@ -1,18 +1,17 @@
package cn.com.basic.face.util;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.widget.ImageButton;
import android.graphics.Bitmap;
-import android.widget.ImageView;
+
+import java.util.Date;
import java.util.List;
import cn.com.basic.face.base.BaseApplication;
+import cn.com.basic.face.discern.common.CommonVariables;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
import cn.com.basic.face.service.SurveillanceMng;
+import cn.com.basic.face.service.sqlite.SurveillanceDao;
import java.nio.ByteBuffer;
@@ -144,16 +143,23 @@
//byteBuffer.rewind();
bitmap.copyPixelsFromBuffer(byteBuffer);
// String str = Base64.encodeToString(item.image, offset, size, Base64.DEFAULT);
-// System.out.println(str.length());
-// System.out.println(str);
// surveillanceQueryItem.setBase64Image(str);
surveillanceQueryItem.setNativeImg(item);
surveillanceQueryItem.setBitmap(bitmap);
surveillanceQueryItem.setWidth(item.width+"");
surveillanceQueryItem.setHeight(item.height+"");
+ surveillanceQueryItem.setCreateTime(new Date());
+ surveillanceQueryItem.setInOrOutCamera(cameraIdx+"");
+ if (BaseApplication.getInstance().networkNotAvailable()) {
+ surveillanceQueryItem.setRegisterOrCheckIn(CommonVariables.Surveillance.VISIT_UNKNOWN_ITEM_TYPE);
+ }
bitmapList.add(surveillanceQueryItem);
}
- SurveillanceMng.getInstance().addBitmap(bitmapList, faceListPb.arr, s, cameraIdx+"", new byte[]{});
+ if (BaseApplication.getInstance().networkAvailable()) {
+ SurveillanceMng.getInstance().addBitmap(bitmapList, faceListPb.arr, s, cameraIdx+"", new byte[]{});
+ } else {
+ SurveillanceDao.getInstance().saveOfflineUnknownToLocal(bitmapList, faceListPb.arr, cameraIdx+"");
+ }
}catch(Exception e){
e.printStackTrace();
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UnknownSurveillanceQueryItemUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UnknownSurveillanceQueryItemUtil.java
new file mode 100644
index 0000000..5d83c8a
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UnknownSurveillanceQueryItemUtil.java
@@ -0,0 +1,53 @@
+package cn.com.basic.face.util;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import cn.com.basic.face.discern.common.CommonVariables;
+import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
+import cn.com.basic.face.fragment.SurveillanceFragment;
+
+public class UnknownSurveillanceQueryItemUtil {
+
+ private static UnknownSurveillanceQueryItemUtil instance = new UnknownSurveillanceQueryItemUtil();
+ public static UnknownSurveillanceQueryItemUtil getInstance() {
+ return instance;
+ }
+
+ List<SurveillanceQueryItem> allItems = new ArrayList<>();
+
+ public void addItems(List<SurveillanceQueryItem> unknownItems) {
+ allItems.addAll(unknownItems);
+ }
+
+ public void removeTimeoutItemAndShow() {
+ List itemsToRemove = new ArrayList();
+ for (SurveillanceQueryItem item : allItems) {
+ if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_UNKNOWN_ITEM_TYPE) {
+ Date now = new Date();
+ Date createTime = item.getCreateTime();
+ double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60;
+ if (minutes >= 5) {
+ itemsToRemove.add(item);
+ }
+ }
+ }
+ allItems.removeAll(itemsToRemove);
+ SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(UnknownSurveillanceQueryItemUtil.getInstance().getUnknownTwoRows());
+ SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(new ArrayList());
+ }
+
+ private List getUnknownTwoRows() {
+ return allItems;
+ }
+
+ public List getAllUnregisterVisitorTwoRowsForSelect(long selectedId) {
+ return allItems;
+ }
+
+ public List getAllUnregisterAttenderTwoRowsForSelect(long selectedId) {
+ return allItems;
+ }
+
+}
--
Gitblit v1.8.0