From 0a397f834382491316d9efe993ebb89757c000b9 Mon Sep 17 00:00:00 2001 From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 28 四月 2017 16:16:09 +0800 Subject: [PATCH] --- VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java | 4 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java | 1 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/NativeImg.java | 15 +++++ VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml | 5 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/BitmapUtil.java | 29 +++++++++ VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml | 2 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java | 5 + VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_visitor_cell.xml | 7 + VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.so | 0 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java | 57 ++++++++++++------- 10 files changed, 95 insertions(+), 30 deletions(-) diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java index c39767f..d333a80 100644 --- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java @@ -18,6 +18,7 @@ import cn.com.basic.face.discern.query.item.SurveillanceQueryItem; import cn.com.basic.face.fragment.*; import cn.com.basic.face.util.AppApi; +import cn.com.basic.face.util.BitmapUtil; import cn.com.basic.face.util.Constant; import cn.com.basic.face.util.WindowsUtil; @@ -67,7 +68,7 @@ RelativeLayout mLayout = holder.findViewById(R.id.fragment_home_bottom_register_cell_relative_layout); ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); layoutParams.height = WindowsUtil.dip2px(context, 127); - layoutParams.width = WindowsUtil.dip2px(context, 104); + layoutParams.width = WindowsUtil.dip2px(context, 122); mLayout.setLayoutParams(layoutParams); final Object data = this.getItem(position); @@ -110,7 +111,7 @@ RelativeLayout mLayout = holder.findViewById(R.id.fragment_supervisory_bottom_visitor_cell_relative_layout); ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); layoutParams.height = WindowsUtil.dip2px(context, 127); - layoutParams.width = WindowsUtil.dip2px(context, 104); + layoutParams.width = WindowsUtil.dip2px(context, 122); mLayout.setLayoutParams(layoutParams); ImageView fragment_home_bottom_visitor_cell_photo = (ImageView) mLayout.findViewById(R.id.fragment_home_bottom_visitor_cell_photo); diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java index 049e175..034e2f6 100644 --- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java @@ -189,6 +189,7 @@ params.addBodyParameter("width", surveillanceQueryItem.getWidth()); params.addBodyParameter("height", surveillanceQueryItem.getHeight()); params.addBodyParameter("base64Image", surveillanceQueryItem.getBase64Image()); + fragment_register_surveillance_photo_img = surveillanceQueryItem.getBitmap(); } if (fragment_register_surveillance_photo_img != null) { 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 0b849c3..97d3332 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 @@ -80,8 +80,8 @@ List<SurveillanceQueryItem> checkInList = new ArrayList<SurveillanceQueryItem>(); removeDuplicateCheckIn(list); int i1 = 0, j = 0; - int maxRegister = 20; - int maxCheckIn = 20; + int maxRegister = 50; + int maxCheckIn = 50; for (SurveillanceQueryItem item : list) { if (item.getRegisterOrCheckIn() == Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE) { if (i1 < maxRegister) { diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/BitmapUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/BitmapUtil.java index 519521d..9f32ab5 100644 --- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/BitmapUtil.java +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/BitmapUtil.java @@ -6,6 +6,9 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; +import android.graphics.RectF; + +import cn.com.basic.face.base.MainActivity; public class BitmapUtil { @@ -30,4 +33,30 @@ return output; } + public static Bitmap getCornerBitmap(Bitmap bitmap) { + int min = bitmap.getWidth() > bitmap.getHeight() ? bitmap.getHeight() : bitmap.getWidth(); + + int width = bitmap.getWidth(); + int height = bitmap.getHeight(); + + Bitmap output = Bitmap.createBitmap(width, + height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(output); + + final int color = 0xff424242; + final Paint paint = new Paint(); + final RectF rectF = new RectF(0, 0, width, height); + final Rect rect = new Rect(0, 0, width, height); + + paint.setAntiAlias(true); + canvas.drawARGB(0, 0, 0, 0); + paint.setColor(color); + //canvas.drawCircle(min / 2, min / 2, min / 2, paint); + canvas.drawRoundRect(rectF, 333, 333, paint); + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + canvas.drawBitmap(bitmap, rect, rect, paint); + + return output; + } + } diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/NativeImg.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/NativeImg.java new file mode 100644 index 0000000..1bf70be --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/NativeImg.java @@ -0,0 +1,15 @@ +package cn.com.basic.face.util; + +/** + * Created by houxiao on 2017/4/24. + */ + +public class NativeImg { + + public int size; + public int type; + public int width; + public int height; + public byte[] image; + +} 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 2d6c4af..799349e 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 @@ -11,6 +11,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.discern.query.item.SurveillanceQueryItem; import cn.com.basic.face.fragment.RegisterFragment; @@ -34,15 +35,6 @@ public byte[][] arr2; } -class NativeImg -{ - public int size; - public int type; - public int width; - public int height; - public byte[] image; -} - public class RtspFaceNative { @@ -57,23 +49,36 @@ public static native boolean setFaceCallback(int cameraIdx, String className, String funcName); public static native void lockFace(int cameraIdx); public static native void releaseFace(int cameraIdx); - public static native int getFaceList(int cameraIdx, RefByteArray faceListPb); + public static native int getFaceList(int cameraIdx, int dbId, RefByteArray faceListPb); //public static native ArrayList<NativeImgIdx> getFaceImages(int cameraIdx, RefByteArray faceImages); public static native ArrayList<NativeImg> getFaceImages(int cameraIdx); - public static void faceCallBack(int cameraInOrOut, int count) + public static native void dbgFaceAdd(NativeImg faceImage); + public static native String dbgGetLog(); + + + public static int COMPANY_ID = 1001; + + public static void faceCallBack(int cameraIdx, int count) { - Log.i("@@@", "RtspFaceNative.faceCallBack, cameraIdx=" + cameraInOrOut + ", count=" + count); + Log.i("@@@", "RtspFaceNative.faceCallBack, cameraIdx=" + cameraIdx + ", count=" + count); // something else if (count <= 0) return; - lockFace(cameraInOrOut); + lockFace(cameraIdx); RefByteArray faceListPb = new RefByteArray(); - int s = getFaceList(cameraInOrOut, faceListPb); - Log.i("@@@", "RtspFaceNative.faceCallBack, getFaceList, cameraIdx=" + cameraInOrOut + ", size=" + s); + + try { + COMPANY_ID = Integer.parseInt(BaseApplication.getInstance().getDevice().getDeviceCompanyId()); + } catch (Exception e) { + COMPANY_ID = 0; + } + + int s = getFaceList(cameraIdx, COMPANY_ID, faceListPb); + Log.i("@@@", "RtspFaceNative.faceCallBack, getFaceList, cameraIdx=" + cameraIdx + ", size=" + s); //RefByteArray faceImages = new RefByteArray(); //ArrayList<NativeImgIdx> faceImagesIdx = getFaceImages(cameraIdx, faceImages); @@ -82,21 +87,31 @@ // c = faceImagesIdx.size(); //Log.i("@@@", "RtspFaceNative.faceCallBack, getFaceImages, cameraIdx=" + cameraIdx + ", count=" + c); - ArrayList<NativeImg> faceImages = getFaceImages(cameraInOrOut); + ArrayList<NativeImg> faceImages = getFaceImages(cameraIdx); int c = 0; if (faceImages != null) c = faceImages.size(); - Log.i("@@@", "RtspFaceNative.faceCallBack, getFaceImages, cameraIdx=" + cameraInOrOut + ", count=" + c); + Log.i("@@@", "RtspFaceNative.faceCallBack, getFaceImages, cameraIdx=" + cameraIdx + ", count=" + c); for (int i = 0; i < c; i++) { - Log.i("@@@", "cameraIdx=" + cameraInOrOut + + Log.i("@@@", "cameraIdx=" + cameraIdx + ", i=" + i + ", size=" + faceImages.get(i).size+ ", w=" + faceImages.get(i).width + ", h=" + faceImages.get(i).height + ", image[0]=" + faceImages.get(i).image[0] + ", image[1]=" + faceImages.get(i).image[1]); + + if (i == 0) + { + //Bitmap bitmap = Bitmap.createBitmap(faceImages.get(i).width, faceImages.get(i).height, Bitmap.Config.RGB_565); + //ByteBuffer byteBuffer = ByteBuffer.wrap(faceImages.get(i).image, 0, faceImages.get(i).size); + //bitmap.copyPixelsFromBuffer(byteBuffer); + //NativeCodec.setFaceDrawable(bitmap); + + //NativeCodec.setFaceDrawable(faceImages.get(i)); + } } try{ @@ -106,7 +121,7 @@ SurveillanceQueryItem surveillanceQueryItem = new SurveillanceQueryItem(); int offset = 0; int size = item.size; - Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.RGB_565); + Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.ARGB_8888); ByteBuffer byteBuffer = ByteBuffer.wrap(item.image, offset, size); bitmap.copyPixelsFromBuffer(byteBuffer); surveillanceQueryItem.setBase64Image(Base64.encodeToString(item.image, offset, size, Base64.DEFAULT)); @@ -115,13 +130,13 @@ surveillanceQueryItem.setHeight(item.height+""); bitmapList.add(surveillanceQueryItem); } - SurveillanceMng.getInstance().addBitmap(bitmapList, faceListPb.arr, s, cameraInOrOut+""); + SurveillanceMng.getInstance().addBitmap(bitmapList, faceListPb.arr, s, cameraIdx+""); }catch(Exception e){ e.printStackTrace(); } - releaseFace(cameraInOrOut); + releaseFace(cameraIdx); } } diff --git a/VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.so b/VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.so index e748501..c709114 100644 --- a/VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.so +++ b/VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.so Binary files differ diff --git a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml index d0bc6d7..bcce184 100644 --- a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml +++ b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml @@ -38,8 +38,8 @@ android:layout_weight="1" > <SurfaceView - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="640px" + android:layout_height="480px" android:id="@+id/fragment_supervisory_enter_camera" /> <RelativeLayout android:layout_width="match_parent" @@ -68,6 +68,7 @@ android:layout_marginRight="12dp"/> </RelativeLayout> </RelativeLayout> + <RelativeLayout android:layout_width="@dimen/view_size_0" android:layout_height="match_parent" diff --git a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml index 633c4d3..9356184 100644 --- a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml +++ b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml @@ -6,7 +6,7 @@ <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/fragment_home_bottom_register_cell_photo" - android:layout_width="104dp" + android:layout_width="122dp" android:layout_height="127dp" android:layout_alignParentBottom="true" android:scaleType="centerCrop" diff --git a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_visitor_cell.xml b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_visitor_cell.xml index a9eb579..d0d285b 100644 --- a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_visitor_cell.xml +++ b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_visitor_cell.xml @@ -2,12 +2,15 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_supervisory_bottom_visitor_cell_relative_layout" android:layout_width="wrap_content" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + xmlns:fresco="http://schemas.android.com/apk/res-auto" + > <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/fragment_home_bottom_visitor_cell_photo" - android:layout_width="104dp" + android:layout_width="122dp" android:layout_height="127dp" + fresco:roundedCornerRadius="5dp" android:layout_alignParentBottom="true" android:scaleType="centerCrop" /> -- Gitblit v1.8.0