From 9e5babf9db52e64bdae60137be7696e56241fca6 Mon Sep 17 00:00:00 2001 From: xingzilong <xingzilong@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 18 八月 2017 18:12:17 +0800 Subject: [PATCH] H264 NALU解析 并在RTSPServer判断 --- VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java | 298 ++++++++++++----------------------------------------------- 1 files changed, 61 insertions(+), 237 deletions(-) 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 d4af223..0cebae6 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 @@ -1,32 +1,25 @@ package cn.com.basic.face.service; -import android.os.AsyncTask; -import android.util.Base64; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; - import org.xutils.http.RequestParams; import org.xutils.x; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; +import java.io.File; +import java.io.FileWriter; import java.util.List; -import java.util.Set; import cn.com.basic.face.base.BaseApplication; import cn.com.basic.face.base.MainActivity; import cn.com.basic.face.discern.common.BaseCommonCallBack; import cn.com.basic.face.discern.common.CommonVariables; -import cn.com.basic.face.discern.common.ResultBean; +import cn.com.basic.face.discern.common.SqliteSqlBean; import cn.com.basic.face.discern.query.item.SurveillanceQueryItem; -import cn.com.basic.face.fragment.SurveillanceFragment; +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.Constant; -import cn.com.basic.face.util.PostData; -import cn.com.basic.face.util.Uploader; +import cn.com.basic.face.util.FileUtil; +import cn.com.basic.face.util.SqliteSqlUtil; +import cn.com.basic.face.util.SurveillanceQueryItemUtil; +import cn.com.basic.face.util.UnknownSurveillanceQueryItemUtil; public class SurveillanceMng { @@ -34,6 +27,11 @@ public static SurveillanceMng getInstance() { return instance; + } + + public void addOfflineBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] rawData, final String cameraInOrOut) { + SurveillanceDao.getInstance().saveOfflineUnknownToLocal(bitmapList, rawData, cameraInOrOut); + UnknownSurveillanceQueryItemUtil.getInstance().addItems(bitmapList); } public static class SurveillanceListThread extends Thread { @@ -44,9 +42,11 @@ MainActivity.getInstance().runOnUiThread(new Runnable() { @Override public void run() { - List prevList = SurveillanceMng.getInstance().removeTimeoutItem(null); - SurveillanceMng.getInstance().registerTopAndCheckInBottom(prevList); - SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(prevList); + if (BaseApplication.getInstance().networkAvailable()) { + SurveillanceQueryItemUtil.getInstance().removeTimeoutItemAndShow(); + } else { + UnknownSurveillanceQueryItemUtil.getInstance().removeTimeoutItemAndShow(); + } } }); Thread.sleep(1000*60*5); @@ -57,236 +57,60 @@ } } - private List<SurveillanceQueryItem> removeTimeoutItem(List<SurveillanceQueryItem> prevList) { - if (prevList == null) { - prevList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().getPrevList(); - } - List<SurveillanceQueryItem> newPrevList = new ArrayList(); - for (SurveillanceQueryItem item : prevList) { - if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { - Date now = new Date(); - Date createTime = item.getCreateTime(); - double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60; - if (minutes >= 5) { - continue; - } - newPrevList.add(item); - } - } - return newPrevList; - } + int fileIndex = 1; - public void addBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] byteArray, int len, final String cameraInOrOut) { + public void addBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] byteArray, int len, final String cameraInOrOut, byte[] surveillancePhotoBytes) { if (!BaseApplication.deviceAvailable) { return; } - class ConnectionTask extends AsyncTask<String, Void, String> { - private String json = ""; - @Override - protected String doInBackground(String... urls) { - try { - PostData pd = new PostData(); - pd.addValue("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId()); - pd.addValue("InOrOutCamera", cameraInOrOut + ""); - pd.addValue("deviceId", BaseApplication.getInstance().getAndroidDevice().getDeviceId()); - pd.addData("surveillancePhoto", "application/octet-stream", byteArray); - Uploader uploader = new Uploader("", AppApi.BASE_URL + AppApi.SURVEILLANCE_UPLOAD); - json = uploader.upload("face/Surveillance/o_upload.do", pd); - return json; - } catch (Exception e) { - e.printStackTrace(); - } - return null; + try { + if (fileIndex > 30) { + fileIndex = 1; + } + fileIndex++; + RequestParams params = new RequestParams(); + File rawSurveillancePhotoFile = FileUtil.writeToFile("rawSurveillancePhotoFile_"+fileIndex, byteArray); + File surveillancePhotoFile = FileUtil.writeToFile("surveillancePhotoFile_"+fileIndex, surveillancePhotoBytes); + + params.addBodyParameter("InOrOutCamera", cameraInOrOut + ""); + params.addBodyParameter("deviceId", BaseApplication.getInstance().getAndroidDevice().getDeviceId()); + params.addBodyParameter("rawSurveillancePhoto", rawSurveillancePhotoFile); + params.addBodyParameter("surveillancePhoto", surveillancePhotoFile); + + File path = BaseApplication.getInstance().getFilesDir(); + if (!rawSurveillancePhotoFile.exists()) { + rawSurveillancePhotoFile.createNewFile(); + } + File f0 = new File(path, "f0"); + if (!f0.exists()) { + f0.createNewFile(); } - @Override - protected void onPostExecute(String result) { - try { - - System.out.println("json="+result); - ResultBean resultBean = JSON.parseObject(result, ResultBean.class); - if (resultBean == null) { - System.out.println("resultBean="+resultBean); - return; + FileWriter fw0 = new FileWriter(f0); + fw0.write("test1"); + fw0.close(); + params.setUri(AppApi.BASE_URL + AppApi.SURVEILLANCE_UPLOAD); + params.addBodyParameter("f0", f0); + params.addBodyParameter("rawSurveillancePhoto", rawSurveillancePhotoFile); + params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId()); + x.http().post(params, new BaseCommonCallBack() { + @Override + public void success() { + try { + SqliteSqlUtil.insert(getExtraList(SqliteSqlBean.class)); + SurveillanceQueryItemUtil.getInstance().addItems(resultBean.getList(SurveillanceQueryItem.class), bitmapList, cameraInOrOut); + } catch(Exception e) { + e.printStackTrace(); } - Object data = resultBean.getData(); - if (data instanceof JSONArray) { - JSONArray jsonArray = (JSONArray) data; - List<SurveillanceQueryItem> items = JSON.parseArray(jsonArray.toJSONString(), SurveillanceQueryItem.class); - - List prevVisitorList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().getPrevList(); - List prevAttendanceList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().getPrevList(); - - List newVisitorList = new ArrayList(); - - List newAttendanceList = new ArrayList(); - - for (int i = 0; items != null && i < items.size(); i++) { - SurveillanceQueryItem item = items.get(i); - int type = item.getRegisterOrCheckIn(); - if (type == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE - || type == CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE - ) { - item.setCreateTime(new Date()); - newVisitorList.add(0, item); - if (i < bitmapList.size()) { - SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i); - item.setBitmap(surveillanceQueryItem.getBitmap()); - item.setBase64Image(surveillanceQueryItem.getBase64Image()); - item.setNativeImg(surveillanceQueryItem.getNativeImg()); - item.setWidth(surveillanceQueryItem.getWidth()); - item.setHeight(surveillanceQueryItem.getHeight()); - } - } - if (type == CommonVariables.Surveillance.VISIT_ATTENDANCE_ITEM_TYPE) { - newAttendanceList.add(item); - if (i < bitmapList.size()) { - SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i); - item.setBitmap(surveillanceQueryItem.getBitmap()); - item.setBase64Image(surveillanceQueryItem.getBase64Image()); - item.setNativeImg(surveillanceQueryItem.getNativeImg()); - item.setWidth(surveillanceQueryItem.getWidth()); - item.setHeight(surveillanceQueryItem.getHeight()); - } - } - System.out.println("inOutCamera="+item.getInOrOutCamera()); - } - - if (newVisitorList.size() > 0) { - prevVisitorList.addAll(0, newVisitorList); - registerTopAndCheckInBottom(prevVisitorList); - SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(prevVisitorList); - } - - if (newAttendanceList.size() > 0) { - prevAttendanceList.addAll(0, newAttendanceList); - if (prevAttendanceList.size() > 20) { - prevAttendanceList = prevAttendanceList.subList(0, 20); - } - SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(prevAttendanceList); - } - } - } catch(Exception e) { - e.printStackTrace(); } - } - + }); + }catch(Exception e) { + e.printStackTrace(); } - ConnectionTask task = new ConnectionTask(); - String[] params = new String[2]; - task.execute(params); } - public List getSurveillancePhotoList(long selectedId) { - List<SurveillanceQueryItem> prevVisitorList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().getPrevList(); - List<SurveillanceQueryItem> registerList = new ArrayList(); - int countPerRow = 9; - for (SurveillanceQueryItem surveillanceQueryItem : prevVisitorList) { - if (surveillanceQueryItem.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { - if (registerList.size() > countPerRow*2) { - break; - } - if (surveillanceQueryItem.getIdForSelect() == selectedId) { - surveillanceQueryItem.setSurveillancePhotoSelected(true); - } else { - surveillanceQueryItem.setSurveillancePhotoSelected(false); - } - registerList.add(surveillanceQueryItem); - } - } - SurveillanceQueryItem item; - List items = new ArrayList(); - int m = 0, n = 0; - for (int i = 0; i < countPerRow*2; i++) { - if (i % 2 == 0) { - if (m < registerList.size()) { - item = registerList.get(m); - m++; - } else { - item = getBlankItem(); - } - } else { - if (n < registerList.size() - countPerRow) { - item = registerList.get(countPerRow+n); - n++; - } else { - item = getBlankItem(); - } - } - items.add(item); - } - return items; - } + public void removePhotoFileWhenStorageIsSlow() { - private void registerTopAndCheckInBottom(List<SurveillanceQueryItem> list) { - List<SurveillanceQueryItem> registerList = new ArrayList<SurveillanceQueryItem>(); - List<SurveillanceQueryItem> checkInList = new ArrayList<SurveillanceQueryItem>(); - removeDuplicateCheckIn(list); - int i1 = 0, j = 0; - int maxRegister = 50; - int maxCheckIn = 50; - for (SurveillanceQueryItem item : list) { - if (item.getRegisterOrCheckIn() == Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE) { - if (i1 < maxRegister) { - registerList.add(item); - i1++; - } - } - if (item.getRegisterOrCheckIn() == Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE) { - if (j < maxCheckIn) { - checkInList.add(item); - j++; - } - } - } - - int max = registerList.size() > checkInList.size() ? registerList.size() : checkInList.size(); - - List tempList = new ArrayList(); - - int m = 0, n = 0; - for (int i = 0; i < max * 2; i++) { - SurveillanceQueryItem item; - if (i % 2 == 0) { - if (m < registerList.size()) { - item = registerList.get(m); - } else { - item = getBlankItem(); - } - m++; - } else { - if (n < checkInList.size()) { - item = checkInList.get(n); - } else { - item = getBlankItem(); - } - n++; - } - tempList.add(item); - } - list.clear(); - list.addAll(tempList); - } - - private void removeDuplicateCheckIn(List<SurveillanceQueryItem> list) { - List itemsToRemove = new ArrayList(); - Set<String> registerIds = new HashSet<>(); - for (SurveillanceQueryItem item : list) { - if (item.getRegisterOrCheckIn() == Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE) { - if (registerIds.contains(item.getRegisterId()+"_"+item.getInOrOutCamera())) { - itemsToRemove.add(item); - } else { - registerIds.add(item.getRegisterId()+"_"+item.getInOrOutCamera()); - } - } - } - list.removeAll(itemsToRemove); - } - - private SurveillanceQueryItem getBlankItem() { - SurveillanceQueryItem blankItem = new SurveillanceQueryItem(); - blankItem.setRegisterOrCheckIn(Constant.Surveillance.VISIT_BLANK_ITEM_TYPE); - return blankItem; } } -- Gitblit v1.8.0