VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
@@ -17,6 +17,8 @@ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_SUPERUSER" /> <application android:name="cn.com.basic.face.base.BaseApplication" android:allowBackup="true" VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java
@@ -40,14 +40,18 @@ @Override public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { switch (((SurveillanceQueryItem)getList().get(position)).getRegisterOrCheckIn()){ case Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE: RegisterCellViewFillData(viewHolder,position); break; case Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE: checkInCellViewFillData(viewHolder,position); break; Object obj = getList().get(position); if (obj instanceof SurveillanceQueryItem) { switch (((SurveillanceQueryItem)getList().get(position)).getRegisterOrCheckIn()){ case Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE: RegisterCellViewFillData(viewHolder,position); break; case Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE: checkInCellViewFillData(viewHolder,position); break; } } } @Override @@ -86,8 +90,10 @@ fragment_home_bottom_register_cell_photo.setImageURI(Uri.parse(AppApi.IMAGE_URL_BASE +item.getImagePath())); } else { if (item.getBitmap() != null) { fragment_home_bottom_register_cell_photo.setImageBitmap(BitmapUtil.getRoundedCornerBitmap(item.getBitmap(), (int)MainActivity.getInstance().getResources().getDimension(R.dimen.w10dp))); //fragment_home_bottom_register_cell_photo.setImageResource(R.drawable.u45); fragment_home_bottom_register_cell_photo.setImageBitmap(item.getBitmap()); // fragment_home_bottom_register_cell_photo.setImageBitmap(BitmapUtil.getRoundedCornerBitmap(item.getBitmap(), // (int)MainActivity.getInstance().getResources().getDimension(R.dimen.w10dp))); } else { fragment_home_bottom_register_cell_photo.setImageResource(R.drawable.u45); } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
@@ -13,6 +13,7 @@ import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -72,7 +73,8 @@ mTabLayout.setTabMode(TabLayout.MODE_FIXED); for (int i = 0; i < mTabLayout.getTabCount(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); tab.setCustomView(myFragmentPagerAdapter.getTabView(i)); LinearLayout view = (LinearLayout)myFragmentPagerAdapter.getTabView(i); tab.setCustomView(view); if (i == 0) { tab.getCustomView().setSelected(true); } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/SurveillanceQueryItem.java
@@ -201,11 +201,12 @@ } public String getBase64Image() { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] imageBytes = byteArrayOutputStream.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); return encodedImage; // ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); // byte[] imageBytes = byteArrayOutputStream.toByteArray(); // String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); // return encodedImage; return ""; } public void setBase64Image(String base64Image) { VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
@@ -6,6 +6,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.provider.MediaStore; import android.util.Base64; @@ -18,6 +19,8 @@ import android.widget.TextView; import android.widget.Toast; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.bsk.zhangbo.demoforbsk.R; import cn.com.basic.face.adapter.SurveillanceFragment; @@ -26,6 +29,7 @@ import cn.com.basic.face.base.PictureTaker; import cn.com.basic.face.dialog.SurveillancePhotoDialog; import cn.com.basic.face.discern.common.CommonVariables; import cn.com.basic.face.discern.common.ResultBean; import cn.com.basic.face.discern.entity.Register; import cn.com.basic.face.discern.query.item.CheckInQueryItem; import cn.com.basic.face.discern.query.item.SurveillanceQueryItem; @@ -40,6 +44,8 @@ import cn.com.basic.face.util.AppApi; import cn.com.basic.face.dialog.DateSelectDialog; import cn.com.basic.face.dialog.CountryDialog; import cn.com.basic.face.util.PostData; import cn.com.basic.face.util.Uploader; import cn.com.basic.face.widget.register.RegisterRightFieldLabelView; import cn.com.basic.face.widget.register.RegisterRightFieldTextView; import cn.com.basic.face.dialog.SelectDialog; @@ -134,16 +140,12 @@ @OnClick(R.id.fragment_register_save) public void fragment_register_save_click(View v) { if (!BaseApplication.deviceAvailable) { return; } RequestParams params = new RequestParams(); DisplayMetrics metrics = getActivity().getResources().getDisplayMetrics(); int h1 = fragment_register_surveillance_photo.getHeight(); int h2 = fragment_register_upload_custom_photo.getHeight(); int h3 = fragment_register_id_card_photo.getHeight(); DisplayMetrics displayMetrics = BaseApplication.getInstance().getResources().getDisplayMetrics(); float dpHeight = displayMetrics.heightPixels / displayMetrics.density; float dpWidth = displayMetrics.widthPixels / displayMetrics.density; String name = fragment_register_name.getValue(); if (name.trim().length() <= 0) { @@ -205,15 +207,18 @@ fragment_register_visitor_class.callOnClick(); return; } params.addBodyParameter(Register.FieldNames.username, name); params.addBodyParameter(Register.FieldNames.mobilePhone, phone); params.addBodyParameter(Register.FieldNames.genderId, DictionaryMng.getInstance().getId(gender)); params.addBodyParameter(Register.FieldNames.identityTypeId, DictionaryMng.getInstance().getId(id_class)); params.addBodyParameter(Register.FieldNames.countryId, DictionaryMng.getInstance().getId(country)); params.addBodyParameter(Register.FieldNames.visitorTypeId, DictionaryMng.getInstance().getId(visitor_class)); params.addBodyParameter(Register.FieldNames.identifyNum, id_num); params.addBodyParameter(Register.FieldNames.companyId, company); params.addBodyParameter(Register.FieldNames.birthday, birthday); final PostData pd = new PostData(); pd.addValue(Register.FieldNames.username, name); pd.addValue(Register.FieldNames.mobilePhone, phone); pd.addValue(Register.FieldNames.genderId, DictionaryMng.getInstance().getId(gender)); pd.addValue(Register.FieldNames.identityTypeId, DictionaryMng.getInstance().getId(id_class)); pd.addValue(Register.FieldNames.countryId, DictionaryMng.getInstance().getId(country)); pd.addValue(Register.FieldNames.visitorTypeId, DictionaryMng.getInstance().getId(visitor_class)); pd.addValue(Register.FieldNames.identifyNum, id_num); pd.addValue(Register.FieldNames.companyId, company); pd.addValue(Register.FieldNames.birthday, birthday); if (surveillanceQueryItem_selectPhoto != null) { params.addBodyParameter("width", surveillanceQueryItem_selectPhoto.getWidth()); @@ -221,47 +226,63 @@ fragment_register_surveillance_photo_img = surveillanceQueryItem_selectPhoto.getBitmap(); NativeImg nativeImg = surveillanceQueryItem_selectPhoto.getNativeImg(); String str = Base64.encodeToString(nativeImg.image, 0, nativeImg.size, Base64.DEFAULT); params.addBodyParameter("base64Image", str); } if (surveillanceQueryItem_uploadPhoto != null) { // params.addBodyParameter("width", surveillanceQueryItem_uploadPhoto.getWidth()); // params.addBodyParameter("height", surveillanceQueryItem_uploadPhoto.getHeight()); // fragment_register_surveillance_photo_img = surveillanceQueryItem_uploadPhoto.getBitmap(); // // NativeImg nativeImg = surveillanceQueryItem_uploadPhoto.getNativeImg(); // String str = Base64.encodeToString(nativeImg.image, 0, nativeImg.size, Base64.DEFAULT); // // params.addBodyParameter("base64Image", str); byte[] imageBytes = new byte[nativeImg.size]; for (int i = 0; i < nativeImg.size; i++) { imageBytes[i] = nativeImg.image[i]; } pd.addData("rawSurveillancePhoto", "application/octet-stream", imageBytes); } if (fragment_register_surveillance_photo_img != null) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); fragment_register_surveillance_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] imageBytes = byteArrayOutputStream.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); params.addBodyParameter(Register.FieldNames.surveillancePhoto, encodedImage); pd.addData(Register.FieldNames.surveillancePhoto, "application/octet-stream", imageBytes); } if (fragment_register_upload_custom_photo_img != null) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); fragment_register_upload_custom_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] imageBytes = byteArrayOutputStream.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); params.addBodyParameter(Register.FieldNames.uploadCustomPhoto, encodedImage); pd.addData(Register.FieldNames.uploadCustomPhoto, "application/octet-stream", imageBytes); } if (fragment_register_id_card_photo_img != null) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); fragment_register_id_card_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] imageBytes = byteArrayOutputStream.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); params.addBodyParameter(Register.FieldNames.idCardPhoto, encodedImage); pd.addData(Register.FieldNames.idCardPhoto, "application/octet-stream", imageBytes); } RegisterMng.getInstance().add(params); class ConnectionTask extends AsyncTask<String, Void, String> { private String json = ""; @Override protected String doInBackground(String... urls) { try { Uploader uploader = new Uploader("", AppApi.BASE_URL + AppApi.REGISTER_ADD); json = uploader.upload("", pd); return json; } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { try { Toast.makeText(BaseApplication.getInstance(),"添加成功", Toast.LENGTH_SHORT).show(); RegisterFragment.getInstance().resetForm(); } catch(Exception e) { e.printStackTrace(); } } } ConnectionTask task = new ConnectionTask(); String[] params1 = new String[2]; task.execute(params1); } public void set_fragment_register_surveillance_photo(SurveillanceQueryItem item) { @@ -305,23 +326,16 @@ try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri); fragment_register_upload_custom_photo.setImageBitmap(bitmap); //fragment_register_upload_custom_photo_img = bitmap; fragment_register_upload_custom_photo_placeholder_image.setVisibility(View.INVISIBLE); fragment_register_upload_custom_photo_placeholder_text_view.setVisibility(View.INVISIBLE); List<SurveillanceQueryItem> bitmapList = new ArrayList<>(); SurveillanceQueryItem item = new SurveillanceQueryItem(); // item.setBitmap(bitmap); item.setWidth(bitmap.getWidth()+""); item.setHeight(bitmap.getHeight()+""); item.setLocalUri(uri); // ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); // byte[] imageBytes = byteArrayOutputStream.toByteArray(); // String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); // item.setBase64Image(encodedImage); setSurveillanceQueryItem_selectPhoto(item); bitmapList.add(item); bitmapList.add(item); @@ -505,11 +519,6 @@ @OnClick(R.id.fragment_register_id_card_photo) public void fragment_register_id_card_photo_click(View view) { // Intent takePicture = new Intent(MainActivity.getInstance(), PictureTaker.class); // startActivityForResult(takePicture, fragment_register_id_card_photo_); // Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // startActivityForResult(takePicture, fragment_register_id_card_photo_); Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); idCardImageCaptureFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg"); VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
@@ -4,8 +4,10 @@ import android.net.wifi.WifiManager; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.SystemClock; import android.text.format.Formatter; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; @@ -32,12 +34,13 @@ import com.lidroid.xutils.view.annotation.event.OnClick; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.*; public class SurveillanceFragment extends BaseFragment { @@ -90,13 +93,41 @@ System.loadLibrary("protoc"); System.loadLibrary("rtspface"); RtspFaceNative.init(); // RtspFaceNative.setLocalIP("192.168.1.10"); // RtspFaceNative.setLocalIP("192.168.1.106");//自己手机ip // RtspFaceNative.setLocalIP("192.168.1.203"); // RtspFaceNative.setLocalIP("192.168.1.205"); WifiManager wm = (WifiManager) MainActivity.getInstance().getSystemService(Context.WIFI_SERVICE); String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); RtspFaceNative.setLocalIP(ip); String ipAddress = null; try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { ipAddress = inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) {} try{ Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); //outputStream.writeBytes("busybox ifconfig wlan0 down\n"); //outputStream.flush(); //Thread.sleep(5000); outputStream.writeBytes("busybox ifconfig wlan0 hw ether f4:8b:32:62:4f:89\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); }catch(Exception e){ e.printStackTrace(); } // outputStream.writeBytes("busybox ifconfig wlan0 hw ether 00:e0:2c:31:1a:ba\n"); RtspFaceNative.setLocalIP("192.168.1.53"); } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
@@ -62,6 +62,7 @@ // return; // } RequestParams params = new RequestParams(AppApi.BASE_URL + AppApi.Query.DEVICE_QUERY); params.addBodyParameter(Device.FieldNames.sn, authorationId); params.addBodyParameter(Device.FieldNames.type, CommonVariables.DeviceType.ANDROID_DEVICE); x.http().post(params, new BaseCommonCallBack() { @@ -188,7 +189,9 @@ // port = camera1.getString("fragment_device_right_camera1_port", ""); // } return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream"; // return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream"; return "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/sub/av_stream"; } public String getCamera2Address() { @@ -211,7 +214,8 @@ // port = camera1.getString("fragment_device_right_camera1_port", ""); // } return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream"; //return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream"; return "rtsp://Admin:1234@192.168.1.22/h264_2"; } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java
@@ -23,23 +23,6 @@ } public void add(RequestParams params) { if (!BaseApplication.deviceAvailable) { return; } try { params.setUri(AppApi.BASE_URL +AppApi.REGISTER_ADD); x.http().post(params, new BaseCommonCallBack() { @Override public void success() { Toast.makeText(BaseApplication.getInstance(),"添加成功", Toast.LENGTH_SHORT).show(); RegisterFragment.getInstance().resetForm(); } }); }catch(Exception e) { e.printStackTrace(); } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
@@ -1,10 +1,15 @@ 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; @@ -15,10 +20,13 @@ 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.query.item.SurveillanceQueryItem; import cn.com.basic.face.fragment.SurveillanceFragment; 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; public class SurveillanceMng { @@ -58,8 +66,8 @@ if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { Date now = new Date(); Date createTime = item.getCreateTime(); long secs = (now.getTime() - createTime.getTime()) / 1000 ; if (secs*1.0 / 60*5 >= 1) { double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60; if (minutes >= 5) { continue; } newPrevList.add(item); @@ -68,75 +76,105 @@ return newPrevList; } public void addBitmap(final List<SurveillanceQueryItem> bitmapList, byte[] byteArray, int len, String cameraInOrOut) { public void addBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] byteArray, int len, final String cameraInOrOut) { if (!BaseApplication.deviceAvailable) { return; } RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.SURVEILLANCE_UPLOAD); params.addBodyParameter("base64Photo", Base64.encodeToString(byteArray, 0, len, Base64.DEFAULT)); params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId()); params.addBodyParameter("deviceId", BaseApplication.getInstance().getAndroidDevice().getDeviceId()); params.addBodyParameter("InOrOutCamera", cameraInOrOut+""); x.http().post(params, new BaseCommonCallBack() { public void success() { List<SurveillanceQueryItem> items = getList(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.setRegisterOrCheckIn(CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE); if (prevVisitorList.size() > 3 ) { } 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()); } } 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(); } 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); } return null; } }); @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; } 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(); } } } ConnectionTask task = new ConnectionTask(); String[] params = new String[2]; task.execute(params); } public List getSurveillancePhotoList(long selectedId) { VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java
@@ -3,8 +3,12 @@ public class AppApi { // public final static String IMAGE_URL_BASE = "http://192.168.1.141/AI/img/"; // public final static String BASE_URL = "http://192.168.1.141/AI/"; public final static String IMAGE_URL_BASE = "http://192.168.1.137/face/img/"; public final static String BASE_URL = "http://192.168.1.137/face/"; //public final static String IMAGE_URL_BASE = "http://192.168.1.137:8333/face/img/"; //public final static String BASE_URL = "http://192.168.1.137:8333/face/"; public final static String IMAGE_URL_BASE = "http://192.168.1.137:8888/"; public final static String BASE_URL = "http://192.168.1.51/face/"; // public final static String BASE_URL = "http://192.168.1.137:8333/face/"; public static final String REGISTER_ADD = "Register/o_add.do"; VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CaffeMobile.java
New file @@ -0,0 +1,11 @@ package cn.com.basic.face.util; /** * Created by xiuxi on 2017/6/15. */ public class CaffeMobile { public static native double hello(String model_file, String trained_file); } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/PostData.java
New file @@ -0,0 +1,104 @@ package cn.com.basic.face.util; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class PostData { class ByteData { byte[] data; String header; String name; ByteData(String name, String contentType, byte[] data) { this.name = name; this.data = data; try { header = "--" + BOUNDARY + CRLF + "Content-Disposition: form-data; name=\"surveillancePhoto\"; filename=\"" + URLEncoder.encode(name, encoding) + "\";" + CRLF + "Content-Type: " + contentType + CRLF + CRLF; } catch(UnsupportedEncodingException e) { e.printStackTrace(); } } public int getSize() { return header.length() + data.length + CRLF.length(); } public void write(OutputStream out) throws IOException { out.write(header.getBytes()); out.write(data); out.write(CRLF.getBytes()); } } private static final String TAG = PostData.class.getSimpleName(); static final String BOUNDARY = "3C3F786D6C2076657273696F6E2E302220656E636F64696E673D662D38223F3E0A3C6D616E6966"; static final String CRLF = "\r\n"; private final String encoding; private StringBuilder sb; private String trailer; private List<ByteData> dataList = new ArrayList<ByteData>(); public PostData() { this("UTF-8"); } public PostData(String encoding) { this.encoding = encoding; sb = new StringBuilder(); trailer = "--" + BOUNDARY + "--" + CRLF; } public String getContentType() { return "multipart/form-data; boundary=" + BOUNDARY; } public void addValue(String name, int value) { addValue(name, Integer.toString(value)); } public void addValue(String name, String value) { sb.append("--" + BOUNDARY + CRLF); sb.append("Content-Disposition: form-data; name=\""); try { sb.append(URLEncoder.encode(name, encoding)); sb.append('"'); sb.append(CRLF + CRLF); sb.append(value); sb.append(CRLF); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } } public void addData(String name, String contentType, byte[] data) { dataList.add(new ByteData(name, contentType, data)); } public long getLength() { long length = sb.toString().getBytes().length; length += trailer.length(); for(ByteData byteData : dataList) length += byteData.getSize(); return length; } public String toString() { return sb.toString(); } public void write(OutputStream out) throws IOException { out.write(sb.toString().getBytes()); for(ByteData byteData : dataList) byteData.write(out); out.write(trailer.getBytes()); } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java
@@ -56,6 +56,7 @@ public static void faceCallBack(int cameraIdx, int count) { System.out.println("cameraIdex="+cameraIdx+", count="+count); Log.i("@@@", "RtspFaceNative.faceCallBack, cameraIdx=" + cameraIdx + ", count=" + count); // something else @@ -117,8 +118,9 @@ SurveillanceQueryItem surveillanceQueryItem = new SurveillanceQueryItem(); int offset = 0; int size = item.size; Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.ARGB_8888); Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.RGB_565); ByteBuffer byteBuffer = ByteBuffer.wrap(item.image, offset, size); //byteBuffer.rewind(); bitmap.copyPixelsFromBuffer(byteBuffer); // String str = Base64.encodeToString(item.image, offset, size, Base64.DEFAULT); // System.out.println(str.length()); VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UploadTest.java
New file @@ -0,0 +1,24 @@ package cn.com.basic.face.util; import java.io.FileOutputStream; import java.io.IOException; public class UploadTest { private static byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5 , 4, 3, 2, 1}; static public void main(String args[]) { PostData pd = new PostData(); pd.addValue("base64Photo", "joe"); pd.addValue("name", "Joe Smith"); pd.addData("surveillancePhoto", "application/octet-stream", data); Uploader uploader = new Uploader("http", "localhost"); try { uploader.upload("face/Surveillance/o_upload.do", pd); } catch(IOException e) { e.printStackTrace(); } } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Uploader.java
New file @@ -0,0 +1,68 @@ package cn.com.basic.face.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Uploader { private static final int CONNECTION_TIMEOUT = 10 * 1000; private static final int READ_TIMEOUT = 10 * 1000; final private String protocol; final private String server; public Uploader(String protocol, String server) { this.protocol = protocol; this.server = server; } protected HttpURLConnection getBaseConnection(String endpoint) throws IOException { HttpURLConnection connection; URL url; try { url = new URL(server); connection = (HttpURLConnection)url.openConnection(); } catch(MalformedURLException e) { throw new IOException("Malformed URL"); } connection.setDoInput(true); connection.setConnectTimeout(CONNECTION_TIMEOUT); connection.setReadTimeout(READ_TIMEOUT); return connection; } public String upload(String endpoint, PostData postData) throws IOException { HttpURLConnection connection = null; connection = getBaseConnection(endpoint); connection.setDoOutput(true); connection.setInstanceFollowRedirects(false); connection.setRequestMethod("POST"); connection.setRequestProperty("Charset", "utf-8"); connection.setRequestProperty("Content-Type", postData.getContentType()); connection.setRequestProperty("Accept", "text/json"); OutputStream out = new BufferedOutputStream(connection.getOutputStream(), 8192); postData.write(out); out.flush(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = br.readLine(); String json = ""; while (line != null) { json += line; line = br.readLine(); } System.out.println(json); int response = connection.getResponseCode(); connection.disconnect(); // return response; return json; } } VisitFace/DemoForBsk/app/src/main/res/layout/activity_main.xml
@@ -8,7 +8,6 @@ android:background="@color/colorBackground" tools:context="com.bsk.zhangbo.demoforbsk.cn.com.basic.face.android.ui.MainActivity"> <!--app:tabMaxWidth="@dimen/view_size_58" 设置tab的大小--> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" @@ -19,7 +18,11 @@ app:tabIndicatorHeight="@dimen/view_size_0" app:tabSelectedTextColor="#cccccc" app:tabTextColor="@android:color/white" app:tabTextAppearance="@style/MyTabLayoutTextAppearance" > app:tabTextAppearance="@style/MyTabLayoutTextAppearance" app:tabMaxWidth="0dp" app:tabGravity="fill" app:tabMode="fixed" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml
@@ -21,8 +21,8 @@ android:layout_height="wrap_content" android:background="@drawable/rounded_textview" android:gravity="center" android:textSize="@dimen/w16dp" android:text="注册" android:textSize="@dimen/w12dp" android:text="未注册" android:layout_marginBottom="@dimen/h20dp" android:layout_marginRight="@dimen/w10dp" android:layout_alignParentBottom="true"