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); 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) { 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) { 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; } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/NativeImg.java
New file @@ -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; } 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); } } VisitFace/DemoForBsk/app/src/main/jniLibs/armeabi-v7a/librtspface.soBinary files differ
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" 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" 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" />