VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java
@@ -24,9 +24,9 @@ public class SurveillanceFragment { public static class SurveillanceBottomListViewAdapter extends EasyRecyclerViewAdapter { public static class SurveillanceBottomVisitorListViewAdapter extends EasyRecyclerViewAdapter { private Context context; public SurveillanceBottomListViewAdapter(Context context) { public SurveillanceBottomVisitorListViewAdapter(Context context) { this.context = context; } @@ -201,4 +201,56 @@ } } public static class SurveillanceBottomAttendanceListViewAdapter extends EasyRecyclerViewAdapter { private Context context; public SurveillanceBottomAttendanceListViewAdapter(Context context) { this.context = context; } @Override public int[] getItemLayouts() { return new int[]{R.layout.fragment_surveillance_bottom_attendance_cell, R.layout.fragment_surveillance_bottom_attendance_blank_cell}; } @Override public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { RelativeLayout mLayout = viewHolder.findViewById(R.id.fragment_supervisory_bottom_attendance_cell_relative_layout); ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); layoutParams.height = WindowsUtil.dip2px(context, 127); layoutParams.width = WindowsUtil.dip2px(context, 122); mLayout.setLayoutParams(layoutParams); ImageView fragment_home_bottom_attendance_cell_photo = (ImageView) mLayout.findViewById(R.id.fragment_home_bottom_attendance_cell_photo); TextView fragment_home_bottom_attendance_cell_name = (TextView) mLayout.findViewById(R.id.fragment_home_bottom_attendance_cell_name); TextView fragment_home_bottom_attendance_cell_status = (TextView) mLayout.findViewById(R.id.fragment_home_bottom_attendance_cell_status); Object data = this.getItem(position); fragment_home_bottom_attendance_cell_name.setText(""); if (data instanceof SurveillanceQueryItem) { final SurveillanceQueryItem item = (SurveillanceQueryItem)data; fragment_home_bottom_attendance_cell_name.setText(item.getUsername()); if (item.getImagePath() != null && !item.getImagePath().equals("")) { fragment_home_bottom_attendance_cell_photo.setImageURI(Uri.parse(AppApi.IMAGE_URL_BASE +item.getImagePath())); } else { if (item.getBitmap() != null) { fragment_home_bottom_attendance_cell_photo.setImageBitmap(item.getBitmap()); } else { fragment_home_bottom_attendance_cell_photo.setImageResource(R.drawable.u45); } } fragment_home_bottom_attendance_cell_status.setText(item.getStatus()); } } @Override public int getRecycleViewItemType(int position) { return 0; } private CheckInQueryItem getVo(SurveillanceQueryItem item) { return JSON.parseObject(JSON.toJSONString(item), CheckInQueryItem.class); } } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
@@ -65,6 +65,7 @@ public static final int VISIT_REGISTER_ITEM_TYPE = 1; public static final int VISIT_CHECK_IN_ITEM_TYPE = 2; public static final int VISIT_BLANK_ITEM_TYPE = 3; public static final int VISIT_ATTENDANCE_ITEM_TYPE = 4; public static final int REGISTER_CELL_VIEW_INDEX = 0; public static final int CHECK_IN_CELL_VIEW_INDEX = 1; VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/SurveillanceQueryItem.java
@@ -20,6 +20,8 @@ private int registerOrCheckIn; // 进摄像头或出摄像头 private String inOrOutCamera; // 状态 private String status; private Bitmap bitmap; @@ -178,4 +180,11 @@ this.base64Image = base64Image; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
@@ -1,14 +1,11 @@ package cn.com.basic.face.fragment; import android.graphics.Bitmap; import android.os.Bundle; import android.view.Surface; import android.view.SurfaceView; import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.VideoView; import com.bsk.zhangbo.demoforbsk.R; @@ -18,9 +15,11 @@ import cn.com.basic.face.util.RtspFaceNative; import cn.com.basic.face.service.SurveillanceMng; import cn.com.basic.face.widget.surveilance.SurveillanceBottomListView; import cn.com.basic.face.widget.surveilance.SurveillanceBottomAttendanceListView; import cn.com.basic.face.widget.surveilance.SurveillanceBottomVisitorListView; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import java.text.SimpleDateFormat; import java.util.Date; @@ -36,9 +35,9 @@ @ViewInject(R.id.fragment_supervisory_bottom_attendance_background) private View fragment_supervisory_bottom_attendance_background; @ViewInject(R.id.fragment_supervisory_bottom_visit_list_view) private SurveillanceBottomListView fragment_supervisory_bottom_visit_list_view; private SurveillanceBottomVisitorListView fragment_supervisory_bottom_visit_list_view; @ViewInject(R.id.fragment_supervisory_bottom_attendance_list_view) private SurveillanceBottomListView fragment_supervisory_bottom_attendance_list_view; private SurveillanceBottomAttendanceListView fragment_supervisory_bottom_attendance_list_view; @ViewInject(R.id.fragment_supervisory_enter_camera) SurfaceView fragment_supervisory_enter_camera; @ViewInject(R.id.fragment_supervisory_exit_camera) @@ -69,12 +68,12 @@ return instance; } public SurveillanceBottomListView get_fragment_supervisory_bottom_visit_list_view() { public SurveillanceBottomVisitorListView get_fragment_supervisory_bottom_visitor_list_view() { return fragment_supervisory_bottom_visit_list_view; } public SurveillanceBottomListView get_fragment_supervisory_bottom_attendance_list_view() { return fragment_supervisory_bottom_visit_list_view; public SurveillanceBottomAttendanceListView get_fragment_supervisory_bottom_attendance_list_view() { return fragment_supervisory_bottom_attendance_list_view; } @Override @@ -92,10 +91,11 @@ MainActivity.getInstance().runOnUiThread(new Runnable() { public void run() { RtspFaceNative.setSurface(1, fragment_supervisory_enter_camera.getHolder().getSurface()); //RtspFaceNative.setSurface(2, fragment_supervisory_exit_camera.getHolder().getSurface()); RtspFaceNative.setSurface(2, fragment_supervisory_exit_camera.getHolder().getSurface()); RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream"); //RtspFaceNative.createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream"); RtspFaceNative.createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream"); RtspFaceNative.setFaceCallback(1, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack"); RtspFaceNative.setFaceCallback(2, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack"); } }); @@ -123,16 +123,34 @@ reloadBottomList(); } @OnClick(R.id.fragment_supervisory_bottom_visitor_radio_button) public void fragment_supervisory_bottom_visitor_radio_button_click(View view) { fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); reloadBottomList(); } @OnClick(R.id.fragment_supervisory_bottom_attendance_radio_button) public void fragment_supervisory_bottom_attendance_radio_button_click(View view) { fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); reloadBottomList(); } @Override protected void initListeners() { fragment_supervisory_bottom_left_radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); reloadBottomList(); // fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); // fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); // fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); // fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE); // reloadBottomList(); } }); } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
@@ -30,6 +30,14 @@ if (!BaseApplication.deviceAvailable) { return; } List attendanceList = new ArrayList(); for (int i = 0; i < 10; i++) { SurveillanceQueryItem item = new SurveillanceQueryItem(); item.setInOrOutCamera(CommonVariables.Camera.IN); item.setUsername("zhangsan"); attendanceList.add(item); } SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(attendanceList); } public void addBitmap(final List<SurveillanceQueryItem> bitmapList, byte[] byteArray, int len, String cameraInOrOut) { @@ -44,9 +52,12 @@ x.http().post(params, new BaseCommonCallBack() { public void success() { List<SurveillanceQueryItem> items = getList(SurveillanceQueryItem.class); List prevVisitorList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visit_list_view().getPrevList(); 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); @@ -63,12 +74,23 @@ item.setHeight(surveillanceQueryItem.getHeight()); } } if (type == CommonVariables.Surveillance.VISIT_ATTENDANCE_ITEM_TYPE) { newAttendanceList.add(item); } } if (newVisitorList.size() > 0) { prevVisitorList.addAll(0, newVisitorList); registerTopAndCheckInBottom(prevVisitorList); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visit_list_view().show(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); } } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomAttendanceListView.javacopy from VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomListView.java copy to VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomAttendanceListView.java
File was copied from VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomListView.java @@ -14,17 +14,17 @@ import java.util.ArrayList; import java.util.List; import cn.com.basic.face.adapter.SurveillanceFragment.SurveillanceBottomListViewAdapter; import cn.com.basic.face.adapter.SurveillanceFragment; import cn.com.basic.face.base.MainActivity; import cn.com.basic.face.util.WindowsUtil; public class SurveillanceBottomListView extends EasyRecyclerView { public class SurveillanceBottomAttendanceListView extends EasyRecyclerView { private Parcelable recyclerViewState; private class SpaceItemDecoration extends RecyclerView.ItemDecoration { private class SpaceItemDecoration extends ItemDecoration { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) { super.getItemOffsets(outRect, view, parent, state); outRect.right = WindowsUtil.dip2px(MainActivity.getInstance(), 15); @@ -44,27 +44,27 @@ setLayoutManager(gridLayoutManager); } private SurveillanceBottomListViewAdapter mAdapter; private SurveillanceFragment.SurveillanceBottomAttendanceListViewAdapter mAdapter; private List list = new ArrayList(); public void setAdapter(Context context) { mAdapter = new SurveillanceBottomListViewAdapter(context); mAdapter = new SurveillanceFragment.SurveillanceBottomAttendanceListViewAdapter(context); mAdapter.setList(list); setAdapter(mAdapter); initLayout(); } public SurveillanceBottomListView(Context context) { public SurveillanceBottomAttendanceListView(Context context) { super(context); setAdapter(context); } public SurveillanceBottomListView(Context context, AttributeSet attrs) { public SurveillanceBottomAttendanceListView(Context context, AttributeSet attrs) { super(context, attrs); setAdapter(context); } public SurveillanceBottomListView(Context context, AttributeSet attrs, int defStyle) { public SurveillanceBottomAttendanceListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setAdapter(context); } VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomVisitorListView.java
File was renamed from VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/surveilance/SurveillanceBottomListView.java @@ -14,11 +14,11 @@ import java.util.ArrayList; import java.util.List; import cn.com.basic.face.adapter.SurveillanceFragment.SurveillanceBottomListViewAdapter; import cn.com.basic.face.adapter.SurveillanceFragment; import cn.com.basic.face.base.MainActivity; import cn.com.basic.face.util.WindowsUtil; public class SurveillanceBottomListView extends EasyRecyclerView { public class SurveillanceBottomVisitorListView extends EasyRecyclerView { private Parcelable recyclerViewState; @@ -44,27 +44,27 @@ setLayoutManager(gridLayoutManager); } private SurveillanceBottomListViewAdapter mAdapter; private SurveillanceFragment.SurveillanceBottomVisitorListViewAdapter mAdapter; private List list = new ArrayList(); public void setAdapter(Context context) { mAdapter = new SurveillanceBottomListViewAdapter(context); mAdapter = new SurveillanceFragment.SurveillanceBottomVisitorListViewAdapter(context); mAdapter.setList(list); setAdapter(mAdapter); initLayout(); } public SurveillanceBottomListView(Context context) { public SurveillanceBottomVisitorListView(Context context) { super(context); setAdapter(context); } public SurveillanceBottomListView(Context context, AttributeSet attrs) { public SurveillanceBottomVisitorListView(Context context, AttributeSet attrs) { super(context, attrs); setAdapter(context); } public SurveillanceBottomListView(Context context, AttributeSet attrs, int defStyle) { public SurveillanceBottomVisitorListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setAdapter(context); } VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance.xml
@@ -176,13 +176,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white"> <cn.com.basic.face.widget.surveilance.SurveillanceBottomListView <cn.com.basic.face.widget.surveilance.SurveillanceBottomVisitorListView android:id="@+id/fragment_supervisory_bottom_visit_list_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"/> <cn.com.basic.face.widget.surveilance.SurveillanceBottomListView <cn.com.basic.face.widget.surveilance.SurveillanceBottomAttendanceListView android:id="@+id/fragment_supervisory_bottom_attendance_list_view" android:layout_width="wrap_content" android:layout_height="match_parent" VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_attendance_blank_cell.xml
New file @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_home_bottom_register_cell_relative_layout" android:layout_width="wrap_content" android:layout_height="wrap_content"> </RelativeLayout> VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_attendance_cell.xml
New file @@ -0,0 +1,49 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_supervisory_bottom_attendance_cell_relative_layout" android:layout_width="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_attendance_cell_photo" android:layout_width="122dp" android:layout_height="127dp" fresco:roundedCornerRadius="5dp" android:layout_alignParentBottom="true" android:scaleType="centerCrop" /> <LinearLayout android:layout_width="match_parent" android:layout_height="20dp" android:background="#40000000" android:layout_alignParentBottom="true"> <TextView android:id="@+id/fragment_home_bottom_attendance_cell_name" android:layout_width="@dimen/view_size_0" android:layout_height="match_parent" android:layout_weight="1" android:text="" android:textSize="@dimen/text_size_small" android:gravity="center" android:textColor="@android:color/white"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@android:color/white"/> <TextView android:id="@+id/fragment_home_bottom_attendance_cell_status" android:layout_width="@dimen/view_size_0" android:layout_height="match_parent" android:layout_weight="1" android:text="来访登记" android:textSize="@dimen/text_size_small" android:gravity="center" android:textColor="@android:color/white" android:background="#00000000" /> </LinearLayout> </RelativeLayout>