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