From 9dbc3d9356d57fecb0f77782838161b53a9852f2 Mon Sep 17 00:00:00 2001 From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 29 三月 2017 14:49:34 +0800 Subject: [PATCH] --- VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PlaceMng.java | 49 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/BaseMng.java | 36 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/IntervieweeQueryMng.java | 37 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/TabNameUtil.java | 26 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorCheckInMng.java | 101 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java | 33 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountrysModel.java | 46 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java | 116 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Constant.java | 9 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorManagerListAdapter.java | 76 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorTypeMng.java | 81 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/SingleSelectionPopup.java | 141 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/AttendanceRecyclerViewAdapter.java | 30 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/OneBottomRecylerViewAdapter.java | 193 ++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java | 74 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyWheelAdapter.java | 49 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/CheckInFragment.java | 334 ++++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/JsonPares.java | 27 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountryModel.java | 31 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/VisitFragment.java | 137 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/AttendanceFragment.java | 85 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java | 303 +++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/WindowsUtil.java | 26 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/MyGLSurfaceView.java | 356 ++++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java | 2 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorQueryMng.java | 22 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorRecyclerViewAdapter.java | 176 ++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UrlUtil.java | 9 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitPurposePopup.java | 144 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MultipartUtility.java | 157 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java | 61 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyFragmentPagerAdapter.java | 68 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/HomeFragment.java | 372 ++++ VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitorView.java | 58 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CountryPresenter.java | 90 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/PhoneCallFragment.java | 133 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/ResultMsg.java | 42 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/InfoTextView.java | 110 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseActivity.java | 67 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseFragment.java | 71 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/listeners/OkButtonClickedListener.java | 11 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/XmlParserHandler.java | 58 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java | 62 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/StreamUtils.java | 45 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Countrys.java | 50 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Person.java | 8 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/ToRegisterOnClickListener.java | 2 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/GetNetResultJson.java | 53 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java | 127 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java | 22 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainUIBaseFragment.java | 40 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/BirthdayPickerDialog.java | 123 + VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/CompanyMng.java | 45 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/CountrySelectionPopup.java | 155 + 54 files changed, 4,778 insertions(+), 1 deletions(-) diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/AttendanceRecyclerViewAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/AttendanceRecyclerViewAdapter.java new file mode 100644 index 0000000..7db5796 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/AttendanceRecyclerViewAdapter.java @@ -0,0 +1,30 @@ +package cn.com.basic.face.adapter; + +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import com.camnter.easyrecyclerview.adapter.EasyRecyclerViewAdapter; +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class AttendanceRecyclerViewAdapter extends EasyRecyclerViewAdapter { + private TextView mTvNumber,mTvTime,mTvAddress,mTvState; + @Override + public int[] getItemLayouts() { + return new int[]{R.layout.item_attendance}; + } + + @Override + public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { + mTvNumber = viewHolder.findViewById(R.id.item_attendance_num); + mTvNumber.setText(position+1+""); + } + + @Override + public int getRecycleViewItemType(int position) { + return 0; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyFragmentPagerAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyFragmentPagerAdapter.java new file mode 100644 index 0000000..ccba3f6 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyFragmentPagerAdapter.java @@ -0,0 +1,68 @@ +package cn.com.basic.face.adapter; + +import android.content.Context; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2016/10/17. + */ +public class MyFragmentPagerAdapter extends FragmentPagerAdapter { + + private final List<Fragment> mFragments = new ArrayList<>(); + private final List<String> mFragmentTitles = new ArrayList<>(); + private final List<Integer> mFragmentIcons = new ArrayList<>(); + private Context context; + public MyFragmentPagerAdapter(FragmentManager fm,Context context) { + super(fm); + this.context = context; + } + + public void addFragment(Fragment fragment, String title,int drawable) { + mFragments.add(fragment); + mFragmentTitles.add(title); + mFragmentIcons.add(drawable); + } + + @Override + public Fragment getItem(int position) { + return mFragments.get(position); + } + + @Override + public int getCount() { + return mFragments.size(); + } + + @Override + public CharSequence getPageTitle(int position) { +// return mFragmentTitles.get(position); + return null; + +// Drawable image = context.getResources().getDrawable(R. mipmap.ic_launcher); +//// image.setBounds(0, 0, image.getIntrinsicWidth()/2, image.getIntrinsicHeight()/2); +// image.setBounds(0, 0, image.getIntrinsicWidth()/2, image.getIntrinsicHeight()/2); +// ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); +// SpannableString ss = new SpannableString("鍢垮樋"); +// ss.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); +// return ss; + } + public View getTabView(int position){ + View view = LayoutInflater.from(context).inflate(R.layout.tab_main,null); + TextView mTvTitle = (TextView) view.findViewById(R.id.tab_item_title); + mTvTitle.setText(mFragmentTitles.get(position)); + ImageView mImgIcon = (ImageView) view.findViewById(R.id.tab_item_icon); + mImgIcon.setImageResource(mFragmentIcons.get(position)); + return view; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyWheelAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyWheelAdapter.java new file mode 100644 index 0000000..9eaf788 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/MyWheelAdapter.java @@ -0,0 +1,49 @@ +package cn.com.basic.face.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import com.wx.wheelview.adapter.BaseWheelAdapter; + +import cn.com.basic.face.discern.entity.Dictionary; + + +/** + * Created by Administrator on 2016/11/3. + */ +public class MyWheelAdapter extends BaseWheelAdapter<String> { + private Context mContext; + + public MyWheelAdapter(Context context) { + mContext = context; + } + + @Override + protected View bindView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + viewHolder = new ViewHolder(); + convertView = LayoutInflater.from(mContext).inflate(R.layout.item_wheel_list, null); + viewHolder.textView = (TextView) convertView.findViewById(R.id.item_wheel_name); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + Object o = mList.get(position); + if (o instanceof Dictionary) { + viewHolder.textView.setText(((Dictionary) o).getName()); + } else { + viewHolder.textView.setText(o+""); + } + + return convertView; + } + + static class ViewHolder { + TextView textView; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/OneBottomRecylerViewAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/OneBottomRecylerViewAdapter.java new file mode 100644 index 0000000..570e669 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/OneBottomRecylerViewAdapter.java @@ -0,0 +1,193 @@ +package cn.com.basic.face.adapter; + +import android.content.Context; +import android.net.Uri; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.base.MainActivity; +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.util.AppApi; +import cn.com.basic.face.util.WindowsUtil; +import com.camnter.easyrecyclerview.adapter.EasyRecyclerViewAdapter; +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; + +import java.util.List; + +import cn.com.basic.face.discern.query.item.FacePhotoItem; +import cn.com.basic.face.discern.query.item.VisitorQueryItem; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public class OneBottomRecylerViewAdapter extends EasyRecyclerViewAdapter { + private int TYPE_1 = 0,TYPE_2 = 1; + private int type; + private Context context; + private List list; + public OneBottomRecylerViewAdapter(Context context) { + this.context = context; + } + + @Override + public int[] getItemLayouts() { + return new int[]{R.layout.item_visitor_registe,R.layout.item_visitor_user}; + } + + @Override + public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { + int recycleViewItemType = getRecycleViewItemType(position); + switch (recycleViewItemType){ + case 0: + + RegisterViewHolder(viewHolder,position); + break; + case 1: + UserViewHolder(viewHolder,position); + break; + } + } + + @Override + public int getRecycleViewItemType(int position) { + type = position%2; + switch (type){ + case 0: + return TYPE_1; + case 1: + return TYPE_2; + default: + return TYPE_1; + } + } + +// @Override +// public void onAttachedToRecyclerView(RecyclerView recyclerView) { +// super.onAttachedToRecyclerView(recyclerView); +// RecyclerView.LayoutManager manager = recyclerView.getLayoutManager(); +// if (manager instanceof GridLayoutManager) { +// final GridLayoutManager gridManager = ((GridLayoutManager) manager); +// gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { +// @Override +// public int getSpanSize(int position) { +// return getRecycleViewItemType(position) == BANNER_TYPE ? gridManager.getSpanCount() : 1; +// } +// }); +// } +// } + /** + * 绗竴鍒楁敞鍐� + * @param holder + * @param posistion + */ + private void RegisterViewHolder(EasyRecyclerViewHolder holder,int posistion){ + + RelativeLayout mLayout = holder.findViewById(R.id.item_register_base); + ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); + layoutParams.height = WindowsUtil.dip2px(context, 127); + layoutParams.width = WindowsUtil.dip2px(context, 104); + mLayout.setLayoutParams(layoutParams); + + final Object data = this.getItem(posistion); + + ImageView photoIv = (ImageView) mLayout.findViewById(R.id.item_register_bcg); + TextView toRegisterTv = (TextView) mLayout.findViewById(R.id.item_register_to_register); + toRegisterTv.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + MainActivity.selectPage(1); + System.out.println(data.toString()); + } + }); + +// ImageView mSdv = holder.findViewById(R.id.item_register_bcg); +// ViewGroup.LayoutParams mSdvLayoutParams = mSdv.getLayoutParams(); +// mSdvLayoutParams.height = WindowsUtil.dip2px(context, 60); +// mSdvLayoutParams.width = WindowsUtil.dip2px(context, 60); +// mSdv.setLayoutParams(mSdvLayoutParams); + } + + + /** + * 绗簩鍒楃敤鎴锋儏鍐� + * @param holder + * @param posistion + */ + private void UserViewHolder(EasyRecyclerViewHolder holder,int posistion){ + + RelativeLayout mLayout = holder.findViewById(R.id.item_user_base); + ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); + layoutParams.height = WindowsUtil.dip2px(context, 127); + layoutParams.width = WindowsUtil.dip2px(context, 104); + mLayout.setLayoutParams(layoutParams); + + ImageView photoIv = (ImageView) mLayout.findViewById(R.id.item_user_bcg); + TextView warningTv = (TextView) mLayout.findViewById(R.id.item_user_warning); + TextView nameTv = (TextView) mLayout.findViewById(R.id.item_user_name); + TextView statusTv = (TextView) mLayout.findViewById(R.id.item_user_status); + //statusTv.setText(""); + + Object data = this.getItem(posistion); + if (data instanceof FacePhotoItem) { + final FacePhotoItem item = (FacePhotoItem) data; + + if (item.getWarning().length() > 0 && "鏉ヨ鐧昏".equals(item.getStatus())) { + //warningTv.setText("璀﹀憡"); + warningTv.setVisibility(View.VISIBLE); + } else { + warningTv.setVisibility(View.GONE); + } + + + nameTv.setText(item.getName()); + + statusTv.setText(item.getStatus()); + if ("鏉ヨ鐧昏".equals(item.getStatus())) { + statusTv.setBackground(context.getDrawable(R.drawable.rectangle_textview)); + + statusTv.setHeight((int)(context.getResources().getDisplayMetrics().density * 45)); + statusTv.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + MainActivity.selectPage(2); + CheckInFragment.getInstance().visitorCheckIn(item); + } + }); + } else { + statusTv.setBackground(null); + statusTv.setOnClickListener(null); + } + } + + nameTv.setText(""); + if (data instanceof VisitorQueryItem) { + final VisitorQueryItem item = (VisitorQueryItem)data; + nameTv.setText(item.getName()); + photoIv.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE+item.getImagePath())); + if (1==1) { + statusTv.setBackground(context.getDrawable(R.drawable.rectangle_textview)); + + statusTv.setHeight((int)(context.getResources().getDisplayMetrics().density * 45)); + statusTv.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + MainActivity.selectPage(2); + CheckInFragment.getInstance().visitorCheckIn(item); + } + }); + } + } + + +// ImageView mSdv = holder.findViewById(R.id.item_user_bcg); +// ViewGroup.LayoutParams mSdvLayoutParams = mSdv.getLayoutParams(); +// mSdvLayoutParams.height = WindowsUtil.dip2px(context, 60); +// mSdvLayoutParams.width = WindowsUtil.dip2px(context, 60); +// mSdv.setLayoutParams(mSdvLayoutParams); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/ToRegisterOnClickListener.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/ToRegisterOnClickListener.java new file mode 100644 index 0000000..ad0c503 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/ToRegisterOnClickListener.java @@ -0,0 +1,2 @@ +package cn.com.basic.face.adapter; + diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorManagerListAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorManagerListAdapter.java new file mode 100644 index 0000000..dbdcd26 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorManagerListAdapter.java @@ -0,0 +1,76 @@ +package cn.com.basic.face.adapter; + +import android.widget.CheckBox; + +import com.bsk.zhangbo.demoforbsk.R; +import com.camnter.easyrecyclerview.adapter.EasyRecyclerViewAdapter; +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class VisitorManagerListAdapter extends EasyRecyclerViewAdapter { + private CheckBox mCheckBox; + private int oldPosition,newPosition; + @Override + public int[] getItemLayouts() { + return new int[]{R.layout.item_visitor_manager_time,R.layout.item_visitor_manager_info}; + } + + @Override + public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { + int type = getRecycleViewItemType(position); + switch (type){ + case 0: + TimeViewHolder(viewHolder,position); + break; + case 1: + InfoViewHolder(viewHolder,position); + break; + } + } + + @Override + public int getRecycleViewItemType(int position) { + switch (position){ + case 0: + return 0; + case 3: + return 0; + case 8: + return 0; + default: + return 1; + } + } + + /** + * 鏃ユ湡item + * @param viewHolder + * @param position + */ + private void TimeViewHolder(EasyRecyclerViewHolder viewHolder,int position){ + + } + /** + * 淇℃伅鍐呭item + * @param viewHolder + * @param position + */ + private void InfoViewHolder(EasyRecyclerViewHolder viewHolder,int position){ + mCheckBox = viewHolder.findViewById(R.id.item_visitor_info_check); + if (position ==oldPosition){ + mCheckBox.setChecked(false); + } + if (position == newPosition){ + mCheckBox.setChecked(true); + } + } + + public void checkItemShow(int oldPosition,int newPosition){ + this.oldPosition = oldPosition; + this.newPosition = newPosition; + notifyDataSetChanged(); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorRecyclerViewAdapter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorRecyclerViewAdapter.java new file mode 100644 index 0000000..8dea4ed --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/VisitorRecyclerViewAdapter.java @@ -0,0 +1,176 @@ +package cn.com.basic.face.adapter; + +import android.content.Context; +import android.net.Uri; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.util.AppApi; +import cn.com.basic.face.util.Constant; +import com.camnter.easyrecyclerview.adapter.EasyRecyclerViewAdapter; +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; +import com.facebook.drawee.view.SimpleDraweeView; + +import java.util.List; + +import cn.com.basic.face.discern.query.item.VisitorQueryItem; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class VisitorRecyclerViewAdapter extends EasyRecyclerViewAdapter { + private Context mContext; + private int type, mTypeColor; + private List list; + private TextView mTvName, mTvDepartment; + public static final int TYPE_NAME = 10000; + public static final int TYPE_DEPARTMENT = 10001; + private TextView mToNameTv; + private TextView mToDepartmentTv; + + public VisitorRecyclerViewAdapter(Context mContext, int type) { + this.mContext = mContext; + this.type = type; + } + + @Override + public int[] getItemLayouts() { + return new int[]{R.layout.item_visitor_from, R.layout.item_visitor_to}; + } + + @Override + public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) { + switch (type) { + case Constant.VISITOR_FROM: + VisitorFromViewHolder(viewHolder, position); + break; + case Constant.VISITOR_TO: + VisitorToViewHolder(viewHolder, position); + break; + } + } + + @Override + public int getRecycleViewItemType(int position) { + switch (type) { + case Constant.VISITOR_FROM: + return 0; + case Constant.VISITOR_TO: + return 1; + default: + return 1; + } + } + + /** + * 鏉ヨ浜篐older + * + * @param holder + * @param posistion + */ + private void VisitorFromViewHolder(EasyRecyclerViewHolder holder, final int posistion) { + LinearLayout mLayout = holder.findViewById(R.id.item_visitor_from_base); + + TextView nameTv = (TextView)mLayout.findViewById(R.id.item_visitor_name); + SimpleDraweeView photoIv = (SimpleDraweeView) mLayout.findViewById(R.id.item_visitor_photo); + + + + RelativeLayout itemVisitorFromRl = (RelativeLayout)mLayout.findViewById(R.id.item_visitor_from_rl); + + itemVisitorFromRl.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + Object data = getList().get(posistion); + if (data instanceof VisitorQueryItem) { + VisitorQueryItem item = (VisitorQueryItem) data; + CheckInFragment.getInstance().setVisitorInfo(item); + } + } + }); + + nameTv.setText(""); + + Object data = getList().get(posistion); + if (data instanceof VisitorQueryItem) { + VisitorQueryItem item = (VisitorQueryItem) data; + nameTv.setText(item.getName()); + + photoIv.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE + item.getImagePath())); + + } + + ViewGroup.LayoutParams layoutParams = mLayout.getLayoutParams(); + mLayout.setLayoutParams(layoutParams); + } + + /** + * 琚闂瓾older + * + * @param holder + * @param posistion + */ + private void VisitorToViewHolder(EasyRecyclerViewHolder holder, final int posistion) { + LinearLayout mLayout = holder.findViewById(R.id.item_visitor_to_base); + mTvName = holder.findViewById(R.id.item_visitor_to_name); + + mToNameTv = (TextView) mTvName.findViewById(R.id.item_visitor_to_name); + mToDepartmentTv = (TextView) mTvName.findViewById(R.id.item_visitor_to_department); + mTvDepartment = holder.findViewById(R.id.item_visitor_to_department); + SimpleDraweeView photoIv = (SimpleDraweeView) mLayout.findViewById(R.id.item_visitor_to_avatar); + + Object data = getList().get(posistion); + if (data instanceof VisitorQueryItem) { + VisitorQueryItem item = (VisitorQueryItem) data; + mToNameTv.setText(item.getName()); + mTvDepartment.setText(item.getDeptName()); + photoIv.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE + item.getImagePath())); + } + + RelativeLayout itemVisitorToRl = (RelativeLayout) holder.findViewById(R.id.item_visitor_to_rl); + itemVisitorToRl.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + Object data = getList().get(posistion); + if (data instanceof VisitorQueryItem) { + VisitorQueryItem item = (VisitorQueryItem) data; + CheckInFragment.getInstance().setIntervieweeInfo(item); + } + } + }); + + + if (mTypeColor == TYPE_DEPARTMENT) { + mTvName.setTextColor(mContext.getResources().getColor(R.color.colorText_b)); + mTvDepartment.setTextColor(mContext.getResources().getColor(R.color.colorText_5)); + } else { + mTvName.setTextColor(mContext.getResources().getColor(R.color.colorText_5)); + mTvDepartment.setTextColor(mContext.getResources().getColor(R.color.colorText_b)); + } + + } + + public void setVisitorToColor(int type) { + this.mTypeColor = type; + } +// public void setVisitorToTextColor(int type){ +// switch (type){ +// case TYPE_DEPARTMENT: +// mTvName.setTextColor(mContext.getResources().getColor(R.color.colorText_b)); +// mTvDepartment.setTextColor(mContext.getResources().getColor(R.color.colorText_5)); +// notifyDataSetChanged(); +// break; +// case TYPE_NAME: +// mTvName.setTextColor(mContext.getResources().getColor(R.color.colorText_5)); +// mTvDepartment.setTextColor(mContext.getResources().getColor(R.color.colorText_b)); +// notifyDataSetChanged(); +// break; +// } +// } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseActivity.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseActivity.java new file mode 100644 index 0000000..f9a5889 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseActivity.java @@ -0,0 +1,67 @@ +package cn.com.basic.face.base; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; + +import org.xutils.x; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public abstract class BaseActivity extends AppCompatActivity{ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + x.view().inject(this); + //璁剧疆甯冨眬鍐呭 + setContentView(getLayoutId()); + //鍒濆鍖栨帶浠� + initViews(savedInstanceState); + //鍒濆鍖朤oolBar + initToolBar(); + //鍒濆鍖栫洃鍚櫒 + initListeners(); + //鍒濆鍖栨暟鎹� + initData(); + } + + public abstract int getLayoutId(); + + public void initViews(Bundle savedInstanceState){}; + + public void initToolBar(){}; + + public void initListeners(){}; + + public void initData(){}; + + /** + * 璺宠浆鍒版寚瀹氱殑Activity + * + * @param targetActivity 瑕佽烦杞殑鐩爣Activity + */ + protected final void startActivity(@NonNull Class<?> targetActivity) { + startActivity(new Intent(this, targetActivity)); + } + + @Override + protected void onResume() { + super.onResume(); + } + + /** + * 璺宠浆鍒版寚瀹氱殑Activity + * + * @param data Activity涔嬮棿浼犻�掓暟鎹紝Intent鐨凟xtra key涓篊onstant.EXTRA_NAME.DATA + * @param targetActivity 瑕佽烦杞殑鐩爣Activity + */ + protected final void startActivity(@NonNull String name, @NonNull Bundle data, @NonNull Class<?> targetActivity) { + final Intent intent = new Intent(); + intent.putExtra(name, data); + intent.setClass(this, targetActivity); + startActivity(intent); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java new file mode 100644 index 0000000..8916775 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java @@ -0,0 +1,62 @@ +package cn.com.basic.face.base; + +import android.app.Application; + +import cn.com.basic.face.service.DictionaryMng; +import cn.com.basic.face.service.PlaceMng; +import cn.com.basic.face.service.VisitorTypeMng; +import com.facebook.drawee.backends.pipeline.Fresco; +import com.lzy.okhttputils.OkHttpUtils; +import com.lzy.okhttputils.model.HttpHeaders; +import com.lzy.okhttputils.model.HttpParams; + +import org.xutils.x; + +import cn.com.basic.face.discern.entity.Place; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public class BaseApplication extends Application{ + + private static BaseApplication application; + + public static BaseApplication getInstance() { + return application; + } + + private Place place; + + public void setPlace(Place place) { + this.place = place; + } + + public Place getPlace() { + return place; + } + + @Override + public void onCreate() { + super.onCreate(); + x.Ext.init(this); + Fresco.initialize(this); + initOkHttpUtils(); + application = this; + PlaceMng.getInstance().findPlace(); + DictionaryMng.getInstance().loadAllDictionaryData(); + VisitorTypeMng.getInstance().loadAll(); + } + + private void initOkHttpUtils() { + HttpHeaders headers = new HttpHeaders(); + headers.put("commonHeaderKey1", "commonHeaderValue1"); //鎵�鏈夌殑 header 閮� 涓嶆敮鎸� 涓枃 + headers.put("commonHeaderKey2", "commonHeaderValue2"); + HttpParams params = new HttpParams(); + params.put("commonParamsKey1", "commonParamsValue1"); //鎵�鏈夌殑 params 閮� 鏀寔 涓枃 + params.put("commonParamsKey2", "杩欓噷鏀寔涓枃鍙傛暟"); + //蹇呴』璋冪敤鍒濆鍖� + OkHttpUtils.init(this); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseFragment.java new file mode 100644 index 0000000..ad747b4 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseFragment.java @@ -0,0 +1,71 @@ +package cn.com.basic.face.base; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public abstract class BaseFragment extends Fragment{ + private View view; + + public View getView() { + return view; + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + if (this.view == null) { + this.view = inflater.inflate(this.getLayoutId(), container, false); + } + if (this.view.getParent() != null) { + ViewGroup parent = (ViewGroup) this.view.getParent(); + parent.removeView(this.view); + } + this.initViews(this.view, savedInstanceState); + this.initToolbar(savedInstanceState); + this.initListeners(); + this.initData(); + return this.view; + } + + /** + * 璺宠浆鍒版寚瀹氱殑Activity + * + * @param targetActivity 瑕佽烦杞殑鐩爣Activity + */ + protected final void startActivity(@NonNull Class<?> targetActivity) { + startActivity(new Intent(getActivity(), targetActivity)); + } + + /** + * 璺宠浆鍒版寚瀹氱殑Activity + * + * @param data Activity涔嬮棿浼犻�掓暟鎹紝Intent鐨凟xtra key涓篊onstant.EXTRA_NAME.DATA + * @param targetActivity 瑕佽烦杞殑鐩爣Activity + */ + protected final void startActivity(@NonNull String name, @NonNull Bundle data, @NonNull Class<?> targetActivity) { + final Intent intent = new Intent(); + intent.putExtra(name, data); + intent.setClass(getActivity(), targetActivity); + startActivity(intent); + } + + protected abstract int getLayoutId(); + + protected abstract void initViews(View view, Bundle savedInstanceState); + + protected void initToolbar(Bundle savedInstanceState){}; + + protected void initListeners() {}; + + protected abstract void initData(); +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java new file mode 100644 index 0000000..cf867f7 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java @@ -0,0 +1,74 @@ +package cn.com.basic.face.base; + +import android.content.Context; +import android.support.design.widget.TabLayout; +import android.support.v4.view.ViewPager; +import android.os.Bundle; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.MyFragmentPagerAdapter; +import cn.com.basic.face.util.TabNameUtil; +import cn.com.basic.face.fragment.AttendanceFragment; +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.fragment.DeviceFragment; +import cn.com.basic.face.fragment.HomeFragment; +import cn.com.basic.face.fragment.PhoneCallFragment; +import cn.com.basic.face.fragment.RegisterFragment; +import cn.com.basic.face.fragment.VisitFragment; + +import java.util.Arrays; +import java.util.List; + +public class MainActivity extends BaseActivity { + + private static MainActivity instance; + + private static TabLayout mTabLayout; + private static ViewPager mViewPager; + + public static void selectPage(int pageNum) { + mTabLayout.getTabAt(pageNum).select(); + } + + @Override + public int getLayoutId() { + return R.layout.activity_main; + } + + @Override + public void initViews(Bundle savedInstanceState) { + mTabLayout = (TabLayout) findViewById(R.id.tab_layout); + mViewPager = (ViewPager) findViewById(R.id.viewpager); + mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); + instance = this; + } + + @Override + public void initData() { + List<String> tabNamesList = Arrays.asList(TabNameUtil.tabNames); + int[] tabIcons = TabNameUtil.tabIcons; + MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),MainActivity.this); + myFragmentPagerAdapter.addFragment(HomeFragment.getInstance(), tabNamesList.get(0),tabIcons[0]); + myFragmentPagerAdapter.addFragment(RegisterFragment.getInstance(), tabNamesList.get(1),tabIcons[1]); + myFragmentPagerAdapter.addFragment(CheckInFragment.getInstance(), tabNamesList.get(2),tabIcons[2]); + myFragmentPagerAdapter.addFragment(PhoneCallFragment.newInstance(), tabNamesList.get(3),tabIcons[3]); + myFragmentPagerAdapter.addFragment(VisitFragment.newInstance(), tabNamesList.get(4),tabIcons[4]); + myFragmentPagerAdapter.addFragment(AttendanceFragment.newInstance(), tabNamesList.get(5),tabIcons[5]); + myFragmentPagerAdapter.addFragment(DeviceFragment.newInstance(), tabNamesList.get(6),tabIcons[6]); + mViewPager.setAdapter(myFragmentPagerAdapter); + mViewPager.setOffscreenPageLimit(6);//viewpager缂撳瓨涓暟 + mTabLayout.setupWithViewPager(mViewPager); + mTabLayout.setTabMode(TabLayout.MODE_FIXED); + for (int i = 0; i < mTabLayout.getTabCount(); i++) { + TabLayout.Tab tab = mTabLayout.getTabAt(i); + tab.setCustomView(myFragmentPagerAdapter.getTabView(i)); + if (i == 0) { + tab.getCustomView().setSelected(true); + } + } + } + + public static Context getInstance() { + return instance; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainUIBaseFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainUIBaseFragment.java new file mode 100644 index 0000000..669c7c2 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainUIBaseFragment.java @@ -0,0 +1,40 @@ +package cn.com.basic.face.base; + +import android.os.Bundle; +import android.view.View; +import android.widget.FrameLayout; + +import com.bsk.zhangbo.demoforbsk.R; + +/** + * Created by Administrator on 2017/2/20 0020. + */ + +public abstract class MainUIBaseFragment extends BaseFragment{ + private View view; + @Override + protected void initViews(View view, Bundle savedInstanceState) { + this.view = view; + FrameLayout right = (FrameLayout) this.view.findViewById(R.id.main_ui_base_right); + FrameLayout left = (FrameLayout) this.view.findViewById(R.id.main_ui_base_left); + if (addLeftLayout() != null ){ + left.addView(addLeftLayout()); + } + if (addRightLayout() != null ){ + right.addView(addRightLayout()); + } + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_main_ui_base; + } + + @Override + protected void initToolbar(Bundle savedInstanceState) { + + } + + public abstract View addLeftLayout(); + public abstract View addRightLayout() ; +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java index c5dcf25..35fae14 100644 --- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.bsk.zhangbo.demoforbsk.base.BaseApplication; +import cn.com.basic.face.base.BaseApplication; import org.xutils.common.Callback; diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/AttendanceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/AttendanceFragment.java new file mode 100644 index 0000000..d1cc924 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/AttendanceFragment.java @@ -0,0 +1,85 @@ +package cn.com.basic.face.fragment; + +import android.support.v7.widget.LinearLayoutManager; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Toast; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.AttendanceRecyclerViewAdapter; +import cn.com.basic.face.adapter.VisitorManagerListAdapter; +import cn.com.basic.face.base.MainUIBaseFragment; +import cn.com.basic.face.base.MainActivity; + +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; +import com.camnter.easyrecyclerview.widget.EasyRecyclerView; +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class AttendanceFragment extends MainUIBaseFragment implements EasyRecyclerViewHolder.OnItemClickListener{ + private View mViewLeft,mViewRight; + private EasyRecyclerView mRightRecyclerView,mLeftRecyclerView; + private AttendanceRecyclerViewAdapter mRightAdapter; + private VisitorManagerListAdapter mLeftAdapter; + public static AttendanceFragment newInstance(){ + return new AttendanceFragment(); + } + @Override + public View addLeftLayout() { + mViewLeft = LayoutInflater.from(getActivity()).inflate(R.layout.attendance_manager_left, null); + mLeftRecyclerView = (EasyRecyclerView) mViewLeft.findViewById(R.id.visitor_manager_recycler); + LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); + mLeftRecyclerView.setLayoutManager(manager); + mLeftAdapter = new VisitorManagerListAdapter(); + ViewUtils.inject(this, mViewLeft); + return mViewLeft; + } + + @Override + public View addRightLayout() { + mViewRight = LayoutInflater.from(getActivity()).inflate(R.layout.attendance_manager_right, null); + mRightRecyclerView = (EasyRecyclerView) mViewRight.findViewById(R.id.attendance_recycler); + mRightAdapter = new AttendanceRecyclerViewAdapter(); + ViewUtils.inject(this, mViewRight); + return mViewRight; + } + + @Override + protected void initListeners() { + mLeftAdapter.setOnItemClickListener(this); + } + + @Override + protected void initData() { + List list = new ArrayList(); + for (int i = 0;i<20;i++){ + list.add(""); + } + mRightAdapter.setList(list); + mRightRecyclerView.setAdapter(mRightAdapter); + mLeftAdapter.setList(list); + mLeftRecyclerView.setAdapter(mLeftAdapter); + } + + @Override + public void onItemClick(View convertView, int position) { + if (position ==0 ||position ==3 ||position ==8){ + + }else { + Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show(); + } + } + + @OnClick(R.id.attendance_manager_back) + public void back(View view) { + MainActivity.selectPage(0); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/CheckInFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/CheckInFragment.java new file mode 100644 index 0000000..7793cbc --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/CheckInFragment.java @@ -0,0 +1,334 @@ +package cn.com.basic.face.fragment; + +import android.net.Uri; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.VisitorRecyclerViewAdapter; +import cn.com.basic.face.base.MainUIBaseFragment; +import cn.com.basic.face.listeners.OkButtonClickedListener; +import cn.com.basic.face.service.DictionaryMng; +import cn.com.basic.face.service.VisitorCheckInMng; +import cn.com.basic.face.base.MainActivity; +import cn.com.basic.face.util.AppApi; +import cn.com.basic.face.util.Constant; +import cn.com.basic.face.widget.VisitPurposePopup; +import cn.com.basic.face.widget.VisitorView; +import com.camnter.easyrecyclerview.widget.EasyRecyclerView; +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.ViewInject; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import org.xutils.http.RequestParams; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import cn.com.basic.face.discern.common.CommonVariables; +import cn.com.basic.face.discern.entity.Visit; +import cn.com.basic.face.discern.query.item.FacePhotoItem; +import cn.com.basic.face.discern.query.item.VisitorQueryItem; + +/** + * Created by Administrator on 2017/2/20 0020. + */ + +public class CheckInFragment extends MainUIBaseFragment { + private View mViewLeft,mViewRight; + private RadioGroup mRGTop,mRGClass; + private LinearLayout mLlRadioGroupClass; + private VisitorView right, left; + private VisitorRecyclerViewAdapter mAdapter; + private EasyRecyclerView mRecyclerView; + private List mList = new ArrayList();; + + private static CheckInFragment instance = new CheckInFragment(); + private TextView leftCompanyName; + private TextView leftIdentityNumber; + private ImageView leftPhoto; + private TextView leftMobilePhone; + private TextView rightDepartment; + private TextView rightPost; + private TextView rightMobilePhone; + private TextView rightTel; + //private TextView visitorReasonTv; + private List<String> visitPurposeList = new ArrayList<String>(); + private VisitorQueryItem selectedVisitor; + private VisitorQueryItem selectedInterviewee; + + @ViewInject(R.id.visitor_remark_et) + private EditText visitorRemarkEt; + @ViewInject(R.id.visitor_reason_tv) + private TextView visitorReasonTv; + @ViewInject(R.id.visitor_register_search_et) + private EditText visitorRegisterSearchEt; + @ViewInject(R.id.visitor_register_rb_left) + private RadioButton visitorRegisterRbLeft; + @ViewInject(R.id.visitor_register_check_department) + private RadioButton visitorRegisterCheckDepartment; + private ImageView rightPhoto; + + public static CheckInFragment getInstance() { + return instance; + } + + @Override + protected void initViews(View view, Bundle savedInstanceState) { + super.initViews(view, savedInstanceState); + } + + @Override + protected void initListeners() { + mRGTop.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (radioGroup.getCheckedRadioButtonId()){ + case R.id.visitor_register_rb_left: + //Toast.makeText(MainActivity.getInstance(), "鏉ヨ浜哄憳", Toast.LENGTH_SHORT).show(); + mLlRadioGroupClass.setVisibility(View.GONE); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(), Constant.VISITOR_FROM); + //mList.clear(); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + int pageNum = 1; + VisitorCheckInMng.getInstance().findVisitorList(pageNum+"", visitorRegisterSearchEt.getText().toString(), true); + break; + case R.id.visitor_register_rb_right: + //Toast.makeText(MainActivity.getInstance(), "琚浜哄憳", Toast.LENGTH_SHORT).show(); + mLlRadioGroupClass.setVisibility(View.VISIBLE); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(), Constant.VISITOR_TO); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_NAME); + //mList.clear(); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + int pageNum1 = 1; + VisitorCheckInMng.getInstance().findIntervieweeList(pageNum1+"", visitorRegisterSearchEt.getText().toString(), true); + break; + } + } + }); + mRGClass.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (radioGroup.getCheckedRadioButtonId()){ + case R.id.visitor_register_check_name: +// mAdapter.setVisitorToTextColor(VisitorRecyclerViewAdapter.TYPE_NAME); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_NAME); + sort(mList, false); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + break; + case R.id.visitor_register_check_department: +// mAdapter.setVisitorToTextColor(VisitorRecyclerViewAdapter.TYPE_DEPARTMENT); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_DEPARTMENT); + sort(mList, true); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + + break; + } + } + }); + visitorRegisterSearchEt.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {} + + @Override + public void afterTextChanged(Editable editable) { + loadList(); + } + }); + } + + public void loadList() { + if (visitorRegisterRbLeft.isChecked()) { + VisitorCheckInMng.getInstance().findVisitorList(1+"", visitorRegisterSearchEt.getText().toString(), true); + } else { + VisitorCheckInMng.getInstance().findIntervieweeList(1+"", visitorRegisterSearchEt.getText().toString(), true); + } + } + + private void sort(List<VisitorQueryItem> list, final boolean sortedByDept) { + Collections.sort(list, new Comparator<VisitorQueryItem>() { + @Override + public int compare(VisitorQueryItem t1, VisitorQueryItem t2) { + if (sortedByDept) { + String dept1Name = t1.getDeptName()==null?"":t1.getDeptName(); + String dept2Name = t2.getDeptName()==null?"":t2.getDeptName(); + if(!dept1Name.equals(dept2Name)) { + return dept1Name.compareTo(dept2Name); + } + } + String name1 = t1.getName()==null?"":t1.getName(); + String name2 = t2.getName()==null?"":t2.getName(); + return name1.compareTo(name2); + } + }); + } + + + @Override + protected void initData() { + loadList(); + } + + @Override + public View addLeftLayout() { + mViewLeft = LayoutInflater.from(getActivity()).inflate(R.layout.visitor_register_left,null); + mRGTop = (RadioGroup) mViewLeft.findViewById(R.id.visitor_register_radio); + mRGClass = (RadioGroup) mViewLeft.findViewById(R.id.visitor_register_check_class); + mLlRadioGroupClass = (LinearLayout) mViewLeft.findViewById(R.id.visitor_register_check_class_ll); + mRecyclerView = (EasyRecyclerView) mViewLeft.findViewById(R.id.visitor_register_recycler); + LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); + mRecyclerView.setLayoutManager(manager); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(),Constant.VISITOR_FROM); + + ViewUtils.inject(this, mViewLeft); + return mViewLeft; + } + + @Override + public View addRightLayout() { + mViewRight = LayoutInflater.from(getActivity()).inflate(R.layout.visitor_register_right,null); + left = (VisitorView) mViewRight.findViewById(R.id.visitor_view_left); + left.setType(Constant.VISITOR_FROM); + left.setTitle(""); + leftCompanyName = (TextView) left.findViewById(R.id.visitor_view_left_company_name); + leftIdentityNumber = (TextView) left.findViewById(R.id.visitor_view_left_identity_number); + leftMobilePhone = (TextView) left.findViewById(R.id.visitor_view_left_phone); + leftPhoto = (ImageView) left.findViewById(R.id.visitor_view_left_photo); + + right = (VisitorView) mViewRight.findViewById(R.id.visitor_view_right); + right.setType(Constant.VISITOR_TO); + right.setTitle(""); + rightDepartment = (TextView) right.findViewById(R.id.view_visitor_right_deptartment); + rightPost = (TextView) right.findViewById(R.id.view_visitor_right_post); + rightMobilePhone = (TextView) right.findViewById(R.id.visitor_right_phone); + rightTel = (TextView) right.findViewById(R.id.visitor_right_tel); + rightPhoto = (ImageView) right.findViewById(R.id.visitor_view_right_photo); + + ViewUtils.inject(this, mViewRight); + return mViewRight; + } + + @OnClick(R.id.visitor_register_back) + public void back(View view) { + MainActivity.selectPage(0); + } + + @OnClick(R.id.visitor_register_print) + public void print(View view) { + + } + + @OnClick(R.id.visitor_register_add) + public void add(View view) { + + } + + @OnClick(R.id.visitor_register_save) + public void save(View view) { + if (selectedVisitor == null || selectedInterviewee == null) { + return; + } + RequestParams params = new RequestParams(); + params.addBodyParameter(Visit.FieldNames.matterId, DictionaryMng.getInstance().getId(CommonVariables.DictionaryType.VISIT_PURPOSE+visitorReasonTv.getText().toString())); + params.addBodyParameter(Visit.FieldNames.remark, visitorRemarkEt.getText().toString()); + params.addBodyParameter(Visit.FieldNames.visitorPersonId, selectedVisitor.getId()); + params.addBodyParameter(Visit.FieldNames.visiteePersonId, selectedInterviewee.getId()); + params.addBodyParameter(Visit.FieldNames.visitorCompanyId, selectedVisitor.getCompanyId()); + params.addBodyParameter(Visit.FieldNames.visiteeCompanyId, selectedInterviewee.getCompanyId()); + + VisitorCheckInMng.getInstance().add(params); + } + + @OnClick(R.id.visitor_reason_tv) + public void visitorReason(View view) { + VisitPurposePopup popup1 = new VisitPurposePopup(getActivity(),visitPurposeList,"璇烽�夋嫨鎷滆浜嬬敱"); + popup1.showAtLocation(getView(), Gravity.CENTER,0,0); + popup1.addOkButtonClickedListener(new OkButtonClickedListener() { + @Override + public void onItemSelected(int position, Object o, String item) { + visitorReasonTv.setText(item); + } + }); + } + + public void visitorCheckIn(FacePhotoItem item) { + left.setTitle(item.getName()); + } + + public void visitorCheckIn(VisitorQueryItem item) { + left.setTitle(item.getName()); + leftMobilePhone.setText(item.getMobilePhone()); + leftCompanyName.setText(item.getCompanyName()); + leftIdentityNumber.setText(item.getIdentify()); + leftPhoto.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE + item.getImagePath())); + } + + public void listChanged(List list, boolean isClear) { + if (isClear) { + mList.clear(); + } + if (visitorRegisterCheckDepartment.isChecked()) { + sort(list, false); + } else { + sort(list, true); + } + mList.addAll(list); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + } + + public void setVisitorInfo(VisitorQueryItem item) { + left.setTitle(item.getName()); + leftCompanyName.setText(item.getCompanyName()); + leftIdentityNumber.setText(item.getIdentify()); + leftMobilePhone.setText(item.getPhone()); + leftPhoto.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE + item.getImagePath())); + selectedVisitor = item; + } + + public void setIntervieweeInfo(final VisitorQueryItem item) { + right.setTitle(item.getName()); + rightDepartment.setText(item.getDeptName()); + rightPost.setText(item.getPostName()); + rightMobilePhone.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + Toast.makeText(MainActivity.getInstance(), "姝e湪鍛煎彨鎵嬫満"+item.getMobilePhone(), Toast.LENGTH_SHORT).show(); + } + }); + rightTel.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view) { + Toast.makeText(MainActivity.getInstance(), "姝e湪鍛煎彨搴ф満"+item.getPhone(), Toast.LENGTH_SHORT).show(); + } + }); + rightPhoto.setImageURI(Uri.parse(AppApi.CHENXINGGROUND_IMAGEURL_BASE + item.getImagePath())); + selectedInterviewee = item; + } + + public void setVisitPurposeList(List<String> visitPurposeList) { + this.visitPurposeList = visitPurposeList; + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java new file mode 100644 index 0000000..7282216 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java @@ -0,0 +1,127 @@ +package cn.com.basic.face.fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.widget.CheckBox; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.base.MainUIBaseFragment; +import cn.com.basic.face.base.MainActivity; + +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class DeviceFragment extends MainUIBaseFragment implements View.OnClickListener{ + private View mViewLeft,mViewRight; + private RelativeLayout mLayoutWifi,mLayoutLandline,mLayoutSchool,mLayoutCamera1,mLayoutCamera2; + private TextView mTvWifi,mTvLandline,mTvSchool,mTvCamera1,mTvCamera2; + private CheckBox mCheckWifi,mCheckLandline,mCheckSchool,mCheckCamera1,mCheckCamera2; + private List<CheckBox> listCheck = new ArrayList<>(); + public static DeviceFragment newInstance() { + return new DeviceFragment(); + } + + @Override + public View addLeftLayout() { + mViewLeft = LayoutInflater.from(getActivity()).inflate(R.layout.device_manager_left,null); + mLayoutWifi = (RelativeLayout) mViewLeft.findViewById(R.id.device_wifi); + mLayoutLandline = (RelativeLayout) mViewLeft.findViewById(R.id.device_landline); + mLayoutSchool = (RelativeLayout) mViewLeft.findViewById(R.id.device_school); + mLayoutCamera1 = (RelativeLayout) mViewLeft.findViewById(R.id.device_camera1); + mLayoutCamera2 = (RelativeLayout) mViewLeft.findViewById(R.id.device_camera2); + + mTvWifi = (TextView) mLayoutWifi.findViewById(R.id.item_device_tv); + mCheckWifi = (CheckBox) mLayoutWifi.findViewById(R.id.item_device_check); + + mTvLandline = (TextView) mLayoutLandline.findViewById(R.id.item_device_tv); + mCheckLandline = (CheckBox) mLayoutLandline.findViewById(R.id.item_device_check); + + mTvSchool = (TextView) mLayoutSchool.findViewById(R.id.item_device_tv); + mCheckSchool = (CheckBox) mLayoutSchool.findViewById(R.id.item_device_check); + + mTvCamera1 = (TextView) mLayoutCamera1.findViewById(R.id.item_device_tv); + mCheckCamera1= (CheckBox) mLayoutCamera1.findViewById(R.id.item_device_check); + + mTvCamera2 = (TextView) mLayoutCamera2.findViewById(R.id.item_device_tv); + mCheckCamera2 = (CheckBox) mLayoutCamera2.findViewById(R.id.item_device_check); + listCheck.add(mCheckWifi); + listCheck.add(mCheckLandline); + listCheck.add(mCheckSchool); + listCheck.add(mCheckCamera1); + listCheck.add(mCheckCamera2); + setLeftCheck(mCheckWifi); + ViewUtils.inject(this, mViewLeft); + return mViewLeft; + } + + @Override + public View addRightLayout() { + mViewRight = LayoutInflater.from(getActivity()).inflate(R.layout.device_manager_right,null); + return mViewRight; + } + + @Override + protected void initListeners() { + mLayoutWifi.setOnClickListener(this); + mLayoutLandline.setOnClickListener(this); + mLayoutSchool.setOnClickListener(this); + mLayoutCamera1.setOnClickListener(this); + mLayoutCamera2.setOnClickListener(this); + } + + @Override + protected void initData() { + mTvWifi.setText(R.string.device_wifi); + mTvLandline.setText(R.string.device_landline); + mTvSchool.setText(R.string.device_school); + mTvCamera1.setText(R.string.device_camera1); + mTvCamera2.setText(R.string.device_camera2); + } + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.device_wifi: + setLeftCheck(mCheckWifi); + break; + case R.id.device_landline: + setLeftCheck(mCheckLandline); + break; + case R.id.device_school: + setLeftCheck(mCheckSchool); + break; + case R.id.device_camera1: + setLeftCheck(mCheckCamera1); + break; + case R.id.device_camera2: + setLeftCheck(mCheckCamera2); + break; + } + } + + /** + * 閫夋嫨鍣� + * @param checkBox + */ + private void setLeftCheck(CheckBox checkBox){ + for (CheckBox box:listCheck){ + box.setChecked(false); + } + checkBox.setChecked(true); + } + + @OnClick(R.id.device_manager_back) + public void back(View view){ + MainActivity.selectPage(0); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/HomeFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/HomeFragment.java new file mode 100644 index 0000000..c5040b9 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/HomeFragment.java @@ -0,0 +1,372 @@ +package cn.com.basic.face.fragment; + +import android.graphics.Rect; +import android.graphics.SurfaceTexture; +import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.widget.RadioButton; +import android.widget.RadioGroup; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.OneBottomRecylerViewAdapter; +import cn.com.basic.face.base.BaseFragment; +import cn.com.basic.face.service.VisitorCheckInMng; +import cn.com.basic.face.util.RtspFaceNative; +import cn.com.basic.face.util.WindowsUtil; +import cn.com.basic.face.widget.MyGLSurfaceView; +import com.camnter.easyrecyclerview.widget.EasyRecyclerView; +import com.orhanobut.logger.Logger; + +import java.util.ArrayList; +import java.util.List; + +import cn.com.basic.face.discern.query.item.FacePhotoItem; +import cn.com.basic.face.discern.query.item.VisitorQueryItem; + + +/** + * Created by zhangbo on 2017/2/15. + */ + +public class HomeFragment extends BaseFragment { + + private RadioGroup mRadioGroup; + private RadioButton mRadioButton1, mRadioButton2; + private View mRadioLine1, mRadioLine2; + private OneBottomRecylerViewAdapter mAdapter; + private List mList; + private EasyRecyclerView mRecyclerViewRegister, mRecyclerViewUser; + + //鎾斁 + + String mSourceString = "clips/testfile.mp4"; + + SurfaceView mSurfaceView1; + SurfaceView mSurfaceView2; + SurfaceHolder mSurfaceHolder1; + + VideoSink mSelectedVideoSink; + + + SurfaceHolderVideoSink mSurfaceHolder1VideoSink; + + VideoSink mNativeCodecPlayerVideoSink; + GLViewVideoSink mGLView1VideoSink; + boolean mCreated = false; + boolean mIsPlaying = false; + + /** Load jni .so on initialization */ + static { + //System.loadLibrary("rtspface");//xiuxi + } + + + private static HomeFragment instance = new HomeFragment(); + + public static HomeFragment getInstance() { + return instance; + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_one; + } + + @Override + protected void initViews(View view, Bundle savedInstanceState) { + mRadioGroup = (RadioGroup) view.findViewById(R.id.radio_group); + mRadioButton1 = (RadioButton) view.findViewById(R.id.radio1); + mRadioButton2 = (RadioButton) view.findViewById(R.id.radio2); + mRadioLine1 = view.findViewById(R.id.radio_line1); + mRadioLine2 = view.findViewById(R.id.radio_line2); + mRecyclerViewRegister = (EasyRecyclerView) view.findViewById(R.id.recyclerview_register); + mRecyclerViewUser = (EasyRecyclerView) view.findViewById(R.id.recyclerview_user); + mRadioButton1.setChecked(true); + mRecyclerViewRegister.addItemDecoration(new SpaceItemDecoration()); + GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2); + gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + mRecyclerViewRegister.setLayoutManager(gridLayoutManager); + mAdapter = new OneBottomRecylerViewAdapter(getActivity()); + + + mSurfaceView2 = (SurfaceView) view.findViewById(R.id.surfaceview2); + mSurfaceView1 = (SurfaceView) view.findViewById(R.id.surfaceview1); + RtspFaceNative.init(); + RtspFaceNative.setSurface(1, mSurfaceView1.getHolder().getSurface()); + RtspFaceNative.setSurface(2, mSurfaceView2.getHolder().getSurface()); + + mSurfaceHolder1 = mSurfaceView1.getHolder(); + + mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() { + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { + Logger.e( "surfaceChanged format=" + format + ", width=" + width + ", height=" + + height); + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + Logger.e( "surfaceCreated"); + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + Logger.e( "surfaceDestroyed"); + } + + }); + //surfaceview + if (mSurfaceHolder1VideoSink == null) { + mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1); + } + mSelectedVideoSink = mSurfaceHolder1VideoSink; + + + //openGL + if(mSurfaceView2 instanceof MyGLSurfaceView) { + ((MyGLSurfaceView)mSurfaceView2).onResume(); + } + if (mGLView1VideoSink == null) { + mGLView1VideoSink = new GLViewVideoSink(mSurfaceView2); + } + mSelectedVideoSink = mGLView1VideoSink; + + + //鎾斁寤惰繜锛堝垵濮嬪寲杈冩參锛屽彲鑳藉鑷存棤娉曟甯告挱鏀撅級 + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(5000); + if (!mCreated) { + if (mNativeCodecPlayerVideoSink == null) { + if (mSelectedVideoSink == null) { + return; + } + mSelectedVideoSink.useAsSinkForNative(); + mSurfaceHolder1VideoSink.useAsSinkForNative(); + //mSelectedVideoSink.useAsSinkForNative(); + //mSurfaceHolder1VideoSink.useAsSinkForNative(); + mNativeCodecPlayerVideoSink = mSelectedVideoSink; + } + if (mSourceString != null) { + //mCreated = createStreamingMediaPlayer(getResources().getAssets(), + // mSourceString); + mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream"); + mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream"); + ////mCreated = createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + } + } + if (mCreated) { + mIsPlaying = !mIsPlaying; + //setPlayingStreamingMediaPlayer(mIsPlaying); + } + + + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + thread.start();//xiuxi + } + + @Override + protected void initListeners() { + mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + case R.id.radio1: + mRadioLine1.setVisibility(View.VISIBLE); + mRadioLine2.setVisibility(View.INVISIBLE); + mRecyclerViewRegister.setVisibility(View.VISIBLE); + mRecyclerViewUser.setVisibility(View.GONE); + break; + case R.id.radio2: + mRadioLine1.setVisibility(View.INVISIBLE); + mRadioLine2.setVisibility(View.VISIBLE); + mRecyclerViewRegister.setVisibility(View.GONE); + mRecyclerViewUser.setVisibility(View.VISIBLE); + break; + } + } + }); + } + + @Override + protected void initData() { +// switchSurface(); + mList = new ArrayList(); + for (int i = 0; i < 125; i++) { + FacePhotoItem item = new FacePhotoItem(); + //item.setType(); + item.setName("寮犱笁"+i); + if (i % 3 == 0) { + item.setStatus("鏉ヨ鐧昏"); + } else { + item.setStatus("绛剧"); + } + if (i % 5 == 0) { + item.setWarning(""); + } else { + item.setWarning("璀﹀憡"); + } + mList.add(item); + } + VisitorCheckInMng.getInstance().findVisitorList(); + mAdapter.setList(mList); + mRecyclerViewRegister.setAdapter(mAdapter); + } + + public void visitorListChanged(List<VisitorQueryItem> list) { + mList.clear(); + mList.addAll(list); + mAdapter.setList(mList); + mRecyclerViewRegister.setAdapter(mAdapter); + } + + private class SpaceItemDecoration extends RecyclerView.ItemDecoration { + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); +// outRect.bottom = WindowsUtil.dip2px(getActivity(), 7); + outRect.right = WindowsUtil.dip2px(getActivity(), 15); + + if (parent.getChildLayoutPosition(view) == 0 || parent.getChildLayoutPosition(view) == 1) { + outRect.left = WindowsUtil.dip2px(getActivity(), 14); + } + if (parent.getChildLayoutPosition(view) % 2 == 0) { + outRect.bottom = WindowsUtil.dip2px(getActivity(), 7); + } + } + } + + void switchSurface() { + if (mCreated && mNativeCodecPlayerVideoSink != mSelectedVideoSink) { + // shutdown and recreate on other surface + Log.i("@@@", "shutting down player"); + RtspFaceNative.shutdown(1); + mCreated = false; + mSelectedVideoSink.useAsSinkForNative(); + mNativeCodecPlayerVideoSink = mSelectedVideoSink; + if (mSourceString != null) { + Log.i("@@@", "recreating player"); + //mCreated = createStreamingMediaPlayer(getResources().getAssets(), mSourceString); + mIsPlaying = false; + mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + ////mCreated = createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + } + } + } + + /** + * Called when the activity is about to be paused. + */ + @Override + public void onPause() { + mIsPlaying = false; + if(mSurfaceView2 instanceof MyGLSurfaceView) { + ((MyGLSurfaceView)mSurfaceView2).onPause(); + } + //setPlayingStreamingMediaPlayer(false);//xiuxi + super.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + if(mSurfaceView2 instanceof MyGLSurfaceView) { + ((MyGLSurfaceView)mSurfaceView2).onResume(); + } + } + + /** + * Called when the activity is about to be destroyed. + */ + @Override + public void onDestroy() { + RtspFaceNative.shutdown(1); + mCreated = false; + super.onDestroy(); + } + + + // VideoSink abstracts out the difference between Surface and SurfaceTexture + // aka SurfaceHolder and GLSurfaceView + static abstract class VideoSink { + + abstract void setFixedSize(int width, int height); + + abstract void useAsSinkForNative(); + + } + + static class SurfaceHolderVideoSink extends VideoSink { + + private final SurfaceHolder mSurfaceHolder; + + SurfaceHolderVideoSink(SurfaceHolder surfaceHolder) { + mSurfaceHolder = surfaceHolder; + } + + @Override + void setFixedSize(int width, int height) { + mSurfaceHolder.setFixedSize(width, height); + } + + @Override + void useAsSinkForNative() { + Surface s = mSurfaceHolder.getSurface(); + Log.i("@@@", "setting surface " + s); + RtspFaceNative.setSurface(1, s); + + + /*SurfaceTexture st = mSurfaceHolder.getSurfaceTexture(); + Surface s = new Surface(st); + RtspFaceNative.setSurface(2, s); + s.release();*/ + } + + } + + + static class GLViewVideoSink extends VideoSink { + + private final SurfaceView SurfaceView; + private final SurfaceHolder mSurfaceHolder; + + GLViewVideoSink(SurfaceView myGLSurfaceView) { + SurfaceView = myGLSurfaceView; + mSurfaceHolder = SurfaceView.getHolder(); + } + + @Override + void setFixedSize(int width, int height) { + mSurfaceHolder.setFixedSize(width, height); + } + + @Override + void useAsSinkForNative() { + if(SurfaceView instanceof MyGLSurfaceView) { + SurfaceTexture st = ((MyGLSurfaceView)SurfaceView).getSurfaceTexture(); + Surface s = new Surface(st); + RtspFaceNative.setSurface(2, s); + s.release(); + } else { + RtspFaceNative.setSurface(2, SurfaceView.getHolder().getSurface()); + } + + } + + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/PhoneCallFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/PhoneCallFragment.java new file mode 100644 index 0000000..ff38e1d --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/PhoneCallFragment.java @@ -0,0 +1,133 @@ +package cn.com.basic.face.fragment; + +import android.support.v7.widget.LinearLayoutManager; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.RadioGroup; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.VisitorRecyclerViewAdapter; +import cn.com.basic.face.base.MainUIBaseFragment; +import cn.com.basic.face.base.MainActivity; +import cn.com.basic.face.util.Constant; +import cn.com.basic.face.widget.VisitorView; +import com.camnter.easyrecyclerview.widget.EasyRecyclerView; +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class PhoneCallFragment extends MainUIBaseFragment { + + + private View mViewLeft,mViewRight; + private RadioGroup mRGTop,mRGClass; + private LinearLayout mLlRadioGroupClass; + private VisitorView mVisitorTo; + private VisitorRecyclerViewAdapter mAdapter; + private EasyRecyclerView mRecyclerView; + private List mList; + + + + public static PhoneCallFragment newInstance() { + return new PhoneCallFragment(); + } + @Override + public View addLeftLayout() { + + mViewLeft = LayoutInflater.from(getActivity()).inflate(R.layout.tel_phone_left,null); + mRGTop = (RadioGroup) mViewLeft.findViewById(R.id.visitor_register_radio); + mRGClass = (RadioGroup) mViewLeft.findViewById(R.id.visitor_register_check_class); + mLlRadioGroupClass = (LinearLayout) mViewLeft.findViewById(R.id.visitor_register_check_class_ll); + mRecyclerView = (EasyRecyclerView) mViewLeft.findViewById(R.id.visitor_register_recycler); + LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); + mRecyclerView.setLayoutManager(manager); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(),Constant.VISITOR_FROM); + ViewUtils.inject(this, mViewLeft); + + mLlRadioGroupClass.setVisibility(View.VISIBLE); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(), Constant.VISITOR_TO); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_NAME); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + + return mViewLeft; + } + + @Override + public View addRightLayout() { + mViewRight = LayoutInflater.from(getActivity()).inflate(R.layout.tel_phone_right,null); + mVisitorTo = (VisitorView) mViewRight.findViewById(R.id.tel_phone_to); + mVisitorTo.setType(Constant.VISITOR_TO); + mVisitorTo.setTitle("dasfasdfasdf"); + return mViewRight; + } + + @Override + protected void initListeners() { + mRGTop.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (radioGroup.getCheckedRadioButtonId()){ + case R.id.visitor_register_rb_left: + mLlRadioGroupClass.setVisibility(View.GONE); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(), Constant.VISITOR_FROM); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + break; + case R.id.visitor_register_rb_right: + mLlRadioGroupClass.setVisibility(View.VISIBLE); + mAdapter = new VisitorRecyclerViewAdapter(getActivity(), Constant.VISITOR_TO); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_NAME); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + break; + } + } + }); + mRGClass.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (radioGroup.getCheckedRadioButtonId()){ + case R.id.visitor_register_check_name: +// mAdapter.setVisitorToTextColor(VisitorRecyclerViewAdapter.TYPE_NAME); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_NAME); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + break; + case R.id.visitor_register_check_department: +// mAdapter.setVisitorToTextColor(VisitorRecyclerViewAdapter.TYPE_DEPARTMENT); + mAdapter.setVisitorToColor(VisitorRecyclerViewAdapter.TYPE_DEPARTMENT); + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + break; + } + } + }); + + } + + @Override + protected void initData() { + + mList = new ArrayList(); + for (int i=0;i<25;i++){ + mList.add(""); + } + mAdapter.setList(mList); + mRecyclerView.setAdapter(mAdapter); + } + + @OnClick(R.id.tel_phone_back) + public void back(View view) { + MainActivity.selectPage(0); + } + +} 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 new file mode 100644 index 0000000..7947d93 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java @@ -0,0 +1,303 @@ +package cn.com.basic.face.fragment; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.provider.MediaStore; +import android.view.Gravity; +import android.view.View; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.base.BaseFragment; +import cn.com.basic.face.service.DictionaryMng; +import cn.com.basic.face.service.RegisterMng; +import cn.com.basic.face.service.VisitorTypeMng; +import cn.com.basic.face.listeners.OkButtonClickedListener; + +import cn.com.basic.face.widget.BirthdayPickerDialog; +import cn.com.basic.face.widget.CountrySelectionPopup; +import cn.com.basic.face.widget.SingleSelectionPopup; +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.ViewInject; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import org.xutils.http.RequestParams; + +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import cn.com.basic.face.base.MainActivity; +import cn.com.basic.face.discern.entity.Person; +import cn.com.basic.face.discern.entity.VisitPersonType; + +/** + * Created by Administrator on 2017/2/20 0020. + */ +//@ContentView(value = R.layout.fragment_register) +public class RegisterFragment extends BaseFragment implements View.OnClickListener{ + + private static final int PICK_IMAGE_REQUEST = 1; + @ViewInject(value = R.id.register_tv_content, parentId = R.id.register_id_class) + private TextView identityTypeTv; + private TextView genderTv; + private TextView countryTv; + private TextView birthdayTv; + private TextView isitorvTypeTv; + private TextView mViewVisitorClassTitle; + + private EditText nameEt, phoneEt, identifyEt, companyEt,mViewRemarkContent; + private List mSexList; + private List mVisitorTypeList; + private List mCredentialsList; + private LinearLayout mBaseLayout; + + @ViewInject(R.id.register_name) + private View mViewName; + @ViewInject(R.id.register_gender) + private View mViewSex; + @ViewInject(R.id.register_country) + private View mViewNation; + @ViewInject(R.id.register_birthday) + private View mViewBirthday; + @ViewInject(R.id.register_visitor_class) + private View mViewVisitorClass; + @ViewInject(R.id.register_phone) + private View mViewPhone; + @ViewInject(R.id.register_id_class) + private View mViewIdClass; + @ViewInject(R.id.register_id_num) + private View mViewIdNumber; + @ViewInject(R.id.register_company) + private View mViewCompayName; + @ViewInject(R.id.register_remark) + private View mViewRemark; + + private String[] countryWordData; + private List<String> countryWordList; + private HashMap<String, List<String>> countryData; + + private static RegisterFragment instance = new RegisterFragment(); + + public static RegisterFragment getInstance() { + return instance; + } + @Override + protected int getLayoutId() { + return R.layout.fragment_register; + } + + @Override + protected void initViews(View view, Bundle savedInstanceState) { + mBaseLayout = (LinearLayout) view.findViewById(R.id.register_base); + ViewUtils.inject(this, mBaseLayout); + + genderTv = (TextView) mViewSex.findViewById(R.id.register_tv_content); + countryTv = (TextView) mViewNation.findViewById(R.id.register_tv_content); + birthdayTv= (TextView) mViewBirthday.findViewById(R.id.register_tv_content); + isitorvTypeTv = (TextView) mViewVisitorClass.findViewById(R.id.register_tv_content); + // mViewIdentityTypeContent = (TextView) mViewIdClass.findViewById(R.id.register_tv_content); + nameEt = (EditText) mViewName.findViewById(R.id.register_et_content); + phoneEt = (EditText) mViewPhone.findViewById(R.id.register_et_content); + identifyEt = (EditText) mViewIdNumber.findViewById(R.id.register_et_content); + companyEt = (EditText) mViewCompayName.findViewById(R.id.register_et_content); + mViewRemarkContent = (EditText) mViewRemark.findViewById(R.id.register_et_content); + + ((TextView) mViewName.findViewById(R.id.register_et_title)).setText(R.string.title_name); + ((TextView) mViewSex.findViewById(R.id.register_tv_title)).setText(R.string.title_sex); + ((TextView) mViewNation.findViewById(R.id.register_tv_title)).setText(R.string.title_nation); + ((TextView) mViewBirthday.findViewById(R.id.register_tv_title)).setText(R.string.title_birthday); + ((TextView) mViewVisitorClass.findViewById(R.id.register_tv_title)).setText(R.string.title_visitorClass); + ((TextView) mViewPhone.findViewById(R.id.register_et_title)).setText(R.string.title_phone); + ((TextView) mViewIdClass.findViewById(R.id.register_tv_title)).setText(R.string.title_idClass); + ((TextView) mViewIdNumber.findViewById(R.id.register_et_title)).setText(R.string.title_idNumber); + ((TextView) mViewCompayName.findViewById(R.id.register_et_title)).setText(R.string.title_companyName); + ((TextView) mViewRemark.findViewById(R.id.register_et_title)).setText(R.string.title_remark); + } + + @OnClick(R.id.register_save) + public void registerEdit(View view) { + + } + + @OnClick(R.id.register_add) + public void registerAdd(View v) { + RequestParams params = new RequestParams(); + + params.addBodyParameter(Person.FieldNames.name, nameEt.getText().toString()); + params.addBodyParameter(Person.FieldNames.phone, phoneEt.getText().toString()); + params.addBodyParameter(Person.FieldNames.gender, DictionaryMng.getInstance().getId(genderTv.getText().toString())); + params.addBodyParameter(Person.FieldNames.identityType, DictionaryMng.getInstance().getId(identityTypeTv.getText().toString())); + params.addBodyParameter(Person.FieldNames.country, DictionaryMng.getInstance().getId(countryTv.getText().toString())); + params.addBodyParameter(Person.FieldNames.identify, identifyEt.getText().toString()); + params.addBodyParameter(Person.FieldNames.birthday, birthdayTv.getText().toString()); + params.addBodyParameter("companyName", companyEt.getText().toString()); + + //visitor_type + params.addBodyParameter(VisitPersonType.FieldNames.visitorTypeId, VisitorTypeMng.getInstance().getId(isitorvTypeTv.getText().toString())); + params.addBodyParameter(VisitPersonType.FieldNames.registerCompanyId, "0"); + + RegisterMng.getInstance().add(params); + } + + @Override + protected void initData() { +// mVisitorTypeList = VisitorTypeMng.mVisitorTypeList; +// mSexList = DictionaryMng.mSexList; +// mCredentialsList = DictionaryMng.mCredentialsList; + } + + public void setVisitorTypeList(List visitorTypeList) { + this.mVisitorTypeList = visitorTypeList; + } + + public void setSexList(List sexList) { + this.mSexList = sexList; + } + + public void setCredentialsList(List credentialsList) { + this.mCredentialsList = credentialsList; + } + + @OnClick(R.id.register_gender) + public void selectGender(View view) { + SingleSelectionPopup popup = new SingleSelectionPopup(getActivity(),mSexList,"鎬у埆"); + popup.showAtLocation(mBaseLayout, Gravity.CENTER,0,0); + popup.addOkButtonClickedListener(new OkButtonClickedListener() { + @Override + public void onItemSelected(int position, Object o, String item) { + genderTv.setText(item); + } + }); + } + + public void setCountryData(String[] countryWordData, List<String> countryWordList, HashMap<String, List<String>> countryData) { + this.countryData = countryData; + this.countryWordList = countryWordList; + this.countryData = countryData; + } + + @OnClick(R.id.register_country) + public void selectCountry(View view) { + CountrySelectionPopup countrySelectionPopup = new CountrySelectionPopup(getActivity(), + countryWordData,countryWordList,countryData); + countrySelectionPopup.showAtLocation(mBaseLayout, Gravity.CENTER,0,0); + countrySelectionPopup.addOkButtonClickedListener(new OkButtonClickedListener() { + @Override + public void onItemSelected(int position, Object o, String item) { + countryTv.setText(item); + } + }); + } + + @OnClick(R.id.register_birthday) + public void selectBirthday(View view) { + Date date = new Date(); + BirthdayPickerDialog myDatePickerDialog=new BirthdayPickerDialog(getActivity(),android.R.style.Theme_Holo_Light_Dialog_NoActionBar, + new BirthdayPickerDialog.OnDateSetListener(){ + + @Override + public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { + int month=monthOfYear+1; + birthdayTv.setText(year+"-"+month+"-"+dayOfMonth); + } + },date); + myDatePickerDialog.myShow(); + } + + @OnClick(R.id.register_visitor_class) + public void selectVisitorType(View view) { + SingleSelectionPopup popup1 = new SingleSelectionPopup(getActivity(),mVisitorTypeList,"璁垮绫诲瀷"); + popup1.showAtLocation(mBaseLayout, Gravity.CENTER,0,0); + popup1.addOkButtonClickedListener(new OkButtonClickedListener() { + @Override + public void onItemSelected(int position, Object o, String item) { + isitorvTypeTv.setText(item); + } + }); + } + + @OnClick(R.id.register_id_class) + public void selectIdentityType(View view) { + SingleSelectionPopup popup2 = new SingleSelectionPopup(getActivity(),mCredentialsList,"璇佷欢绫诲瀷"); + popup2.showAtLocation(mBaseLayout, Gravity.CENTER,0,0); + popup2.addOkButtonClickedListener(new OkButtonClickedListener() { + @Override + public void onItemSelected(int position, Object o, String item) { + identityTypeTv.setText(item); + } + }); + } + + /** + * 閫夋嫨浜虹墿蹇収 + * @param view + */ + @OnClick(R.id.register_choose_photo) + public void selectPersonPhoto(View view) { + Toast.makeText(getActivity(), "閫夋嫨浜虹墿蹇収", Toast.LENGTH_SHORT).show(); + } + + /** + * 鐐瑰嚮涓婁紶鍥剧墖 + * @param view + */ + @OnClick(R.id.register_update__photo) + public void clickUploadPhoto(View view) { + Intent intent = new Intent(); + intent.setType("image/*"); + intent.setAction(Intent.ACTION_GET_CONTENT); + startActivityForResult(Intent.createChooser(intent, "閫夋嫨鍥剧墖"), PICK_IMAGE_REQUEST); + } + + @ViewInject(R.id.register_update__photo) + private ImageView ploadPhotoIv; + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK && data != null && data.getData() != null) { + + Uri uri = data.getData(); + + try { + Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri); + // Log.d(TAG, String.valueOf(bitmap));u + ploadPhotoIv.setImageBitmap(bitmap); +// ImageView imageView = (ImageView) findViewById(R.id.imageView); +// imageView.setImageBitmap(bitmap); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 璇佷欢蹇収 + * @param view + */ + @OnClick(R.id.register_idcard_photo) + public void identityPhoto(View view) { + Toast.makeText(getActivity(), "璇佷欢蹇収", Toast.LENGTH_SHORT).show(); + } + + @OnClick(R.id.register_back) + public void back(View view) { + MainActivity.selectPage(0); + } + + @Override + public void onClick(View v) {} + + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/VisitFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/VisitFragment.java new file mode 100644 index 0000000..3717694 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/VisitFragment.java @@ -0,0 +1,137 @@ +package cn.com.basic.face.fragment; + +import android.support.v7.widget.LinearLayoutManager; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.VisitorManagerListAdapter; +import cn.com.basic.face.base.MainUIBaseFragment; +import cn.com.basic.face.base.MainActivity; + +import com.camnter.easyrecyclerview.holder.EasyRecyclerViewHolder; +import com.camnter.easyrecyclerview.widget.EasyRecyclerView; +import com.lidroid.xutils.ViewUtils; +import com.lidroid.xutils.view.annotation.event.OnClick; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class VisitFragment extends MainUIBaseFragment implements EasyRecyclerViewHolder.OnItemClickListener{ + private View mViewLeft,mViewRight; + private LinearLayout mRowLayout1,mRowLayout2,mRowLayout3,mRowLayout4,mRowLayout5,mRowLayout6,mRowLayout7; + private TextView mRow1TextViewLeft,mRow1TextViewRight,mRow2TextViewLeft,mRow2TextViewRight,mRow3TextViewLeft,mRow3TextViewRight,mRow4TextViewLeft,mRow4TextViewRight, + mRow5TextViewLeft,mRow5TextViewRight,mRow6TextViewLeft,mRow6TextViewRight,mRow7TextViewLeft,mRow7TextViewRight; + private VisitorManagerListAdapter mAdapter; + private EasyRecyclerView mRecyclerView; + private int mOldPosition = 0,mNewPosition = 0; + public static VisitFragment newInstance(){ + return new VisitFragment(); + } + + + + @Override + public View addLeftLayout() { + mViewLeft = LayoutInflater.from(getActivity()).inflate(R.layout.visitor_manager_left,null); + mRecyclerView = (EasyRecyclerView) mViewLeft.findViewById(R.id.visitor_manager_recycler); + LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); + mRecyclerView.setLayoutManager(manager); + mAdapter = new VisitorManagerListAdapter(); + ViewUtils.inject(this, mViewLeft); + return mViewLeft; + } + + @Override + public View addRightLayout() { + mViewRight = LayoutInflater.from(getActivity()).inflate(R.layout.visitor_manager_right,null); + mRowLayout1 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row1); + mRowLayout2 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row2); + mRowLayout3 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row3); + mRowLayout4 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row4); + mRowLayout5 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row5); + mRowLayout6 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row6); + mRowLayout7 = (LinearLayout) mViewRight.findViewById(R.id.visitor_manager_row7); + + mRow1TextViewLeft = (TextView) mRowLayout1.findViewById(R.id.visitor_manager_row_title_left); + mRow1TextViewRight = (TextView) mRowLayout1.findViewById(R.id.visitor_manager_row_title_right); + mRow1TextViewLeft.setText(R.string.title_name); + mRow1TextViewRight.setText(R.string.title_phone); + + mRow2TextViewLeft = (TextView) mRowLayout2.findViewById(R.id.visitor_manager_row_title_left); + mRow2TextViewRight = (TextView) mRowLayout2.findViewById(R.id.visitor_manager_row_title_right); + mRow2TextViewLeft.setText(R.string.title_sex); + mRow2TextViewRight.setText(R.string.title_idClass); + + mRow3TextViewLeft = (TextView) mRowLayout3.findViewById(R.id.visitor_manager_row_title_left); + mRow3TextViewRight = (TextView) mRowLayout3.findViewById(R.id.visitor_manager_row_title_right); + mRow3TextViewLeft.setText(R.string.title_nation); + mRow3TextViewRight.setText(R.string.title_idNumber); + + mRow4TextViewLeft = (TextView) mRowLayout4.findViewById(R.id.visitor_manager_row_title_left); + mRow4TextViewRight = (TextView) mRowLayout4.findViewById(R.id.visitor_manager_row_title_right); + mRow4TextViewLeft.setText(R.string.title_birthday); + mRow4TextViewRight.setText(R.string.title_companyName); + + mRow5TextViewLeft = (TextView) mRowLayout5.findViewById(R.id.visitor_manager_row_title_left); + mRow5TextViewRight = (TextView) mRowLayout5.findViewById(R.id.visitor_manager_row_title_right); + mRow5TextViewLeft.setText(R.string.title_visitor); + mRow5TextViewRight.setText(R.string.title_visitor_thing); + + mRow6TextViewLeft = (TextView) mRowLayout6.findViewById(R.id.visitor_manager_row_title_left); + mRow6TextViewRight = (TextView) mRowLayout6.findViewById(R.id.visitor_manager_row_title_right); + mRow6TextViewLeft.setText(R.string.title_visitor_department); + mRow6TextViewRight.setText(R.string.title_visitor_state); + + mRow7TextViewLeft = (TextView) mRowLayout7.findViewById(R.id.visitor_manager_row_title_left); + mRow7TextViewRight = (TextView) mRowLayout7.findViewById(R.id.visitor_manager_row_title_right); + mRow7TextViewLeft.setText(R.string.title_visitor_start_time); + mRow7TextViewRight.setText(R.string.title_visitor_end_time); + return mViewRight; + } + + @Override + protected void initListeners() { + mAdapter.setOnItemClickListener(this); + } + + @Override + protected void initData() { + List list = new ArrayList(); + for (int i = 0;i<20;i++){ + list.add(""); + } + mAdapter.setList(list); + mRecyclerView.setAdapter(mAdapter); + } + + @Override + public void onItemClick(View convertView, int position) { + if (position ==0 ||position ==3 ||position ==8){ + + }else { + mNewPosition = position; + mAdapter.checkItemShow(mOldPosition,mNewPosition); + mOldPosition = mNewPosition; + mAdapter.getItem(position); + Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show(); +// Log.e("aaaaaaaaaaaaaaaaaa",position+""); +//// ((CheckBox)mRecyclerView.getChildAt(position).findViewById(R.id.item_visitor_info_check)).setChecked(true); +// CheckBox checkBox = (CheckBox) mRecyclerView.getChildAt(position).findViewById(R.id.item_visitor_info_check); +// checkBox.setChecked(true); + } + } + + @OnClick(R.id.visitor_manager_back) + public void back(View view) { + MainActivity.selectPage(0); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/listeners/OkButtonClickedListener.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/listeners/OkButtonClickedListener.java new file mode 100644 index 0000000..21b5f4d --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/listeners/OkButtonClickedListener.java @@ -0,0 +1,11 @@ +package cn.com.basic.face.listeners; + +/** + * Created by xiuxi on 2017/3/20. +*/ + +public interface OkButtonClickedListener { + + public void onItemSelected(int position, Object o, String item); + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountryModel.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountryModel.java new file mode 100644 index 0000000..d36e205 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountryModel.java @@ -0,0 +1,31 @@ +package cn.com.basic.face.model; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class CountryModel { + private String name; + + public CountryModel() { + } + + public CountryModel(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "CountryModel{" + + "name='" + name + '\'' + + '}'; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Countrys.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Countrys.java new file mode 100644 index 0000000..b0647c6 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Countrys.java @@ -0,0 +1,50 @@ +package cn.com.basic.face.model; + +import java.util.List; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class Countrys { + + /** + * name : A + * countrys : [{"country":"闃垮瘜姹�"},{"country":"婢冲ぇ鍒╀簹"}] + */ + + private String name; + private List<CountrysBean> countrys; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List<CountrysBean> getCountrys() { + return countrys; + } + + public void setCountrys(List<CountrysBean> countrys) { + this.countrys = countrys; + } + + public static class CountrysBean { + /** + * country : 闃垮瘜姹� + */ + + private String country; + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountrysModel.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountrysModel.java new file mode 100644 index 0000000..b0366a6 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/CountrysModel.java @@ -0,0 +1,46 @@ +package cn.com.basic.face.model; + +import java.util.List; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class CountrysModel { + private String name; + private List<CountryModel> countryModelList; + + public CountrysModel() { + super(); + } + + public CountrysModel(String name, List<CountryModel> countryModelList) { + super(); + this.name = name; + this.countryModelList = countryModelList; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List<CountryModel> getCountryModelList() { + return countryModelList; + } + + public void setCountryModelList(List<CountryModel> countryModelList) { + this.countryModelList = countryModelList; + } + + @Override + public String toString() { + return "CountrysModel{" + + "name='" + name + '\'' + + ", countryModelList=" + countryModelList + + '}'; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Person.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Person.java new file mode 100644 index 0000000..2cc5837 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/Person.java @@ -0,0 +1,8 @@ +package cn.com.basic.face.model; + +/** + * Created by Sinoe on 2017/2/27. + */ + +public class Person { +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/ResultMsg.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/ResultMsg.java new file mode 100644 index 0000000..23739cf --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/model/ResultMsg.java @@ -0,0 +1,42 @@ +package cn.com.basic.face.model; + +/** + * Created by Sinoe on 2017/3/6. + */ + +public class ResultMsg { + /** + * code : 0 + * info : + * message : + * time : + */ + private int code; + private String info; + private String message; + private long time; + public int getCode() { + return code; + } + public void setCode(int code) { + this.code = code; + } + public String getInfo() { + return info; + } + public void setInfo(String info) { + this.info = info; + } + public String getMessage() { + return message; + } + public void setMessage(String message) { + this.message = message; + } + public long getTime() { + return time; + } + public void setTime(long time) { + this.time = time; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/BaseMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/BaseMng.java new file mode 100644 index 0000000..e75cccb --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/BaseMng.java @@ -0,0 +1,36 @@ +package cn.com.basic.face.service; + +import java.util.HashMap; +import java.util.Map; + +public class BaseMng { + + public Map<String, String> idMap = new HashMap<String, String>(); + + public String getId(String name) { + return idMap.get(name); + } +/* + public <T> List<T> getSyncList(String url, Map<String, String> condition, Class<T> requiredType){ + RequestParams params = new RequestParams(AppApi.BASEURL+url); + addParameters(params, condition); + try { + ResultBean resultBean = x.http().getSync(params, ResultBean.class); + return resultBean.getListBeanOfType(requiredType); + } catch (Throwable throwable) { + throwable.printStackTrace(); + } + return null; + } + + private void addParameters(RequestParams params, Map<String, String> condition) { + try { + for (Map.Entry<String, String> entry : condition.entrySet()) { + params.addParameter(entry.getKey(), entry.getValue()); + } + } catch (Exception e) { + e.printStackTrace(); + } + }*/ + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/CompanyMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/CompanyMng.java new file mode 100644 index 0000000..104411e --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/CompanyMng.java @@ -0,0 +1,45 @@ +package cn.com.basic.face.service; + +import java.util.ArrayList; +import java.util.List; + +import cn.com.basic.face.discern.entity.Company; + +/** + * Created by xiuxi on 2017/3/22. + */ + +public class CompanyMng extends BaseMng { + + private static CompanyMng instance = new CompanyMng(); + + public static CompanyMng getInstance() { + return instance; + } + + + public static List<Company> companies = new ArrayList<Company>(); + + public void loadAll() { + loadCompanies(); + } + + private void loadCompanies() { + /*RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.COMPANY_LIST); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<Company> items = getList(Company.class); + mVisitorTypeList = new ArrayList<String>(); + for (Company item : items) { + mVisitorTypeList.add(item.getLabel()); + idMap.put(item.getLabel(), item.getId()+""); + } + } + + }); + */ + + } + + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java new file mode 100644 index 0000000..2a656f1 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java @@ -0,0 +1,116 @@ +package cn.com.basic.face.service; + +import cn.com.basic.face.fragment.RegisterFragment; +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.util.AppApi; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; +import cn.com.basic.face.discern.common.CommonVariables; +import cn.com.basic.face.discern.entity.Dictionary; + +public class DictionaryMng extends BaseMng { + + public static DictionaryMng instance = new DictionaryMng(); + + public static DictionaryMng getInstance() { + return instance; + } + + public static List<String> nationList = new ArrayList<String>(); + public static List<String> mCredentialsList = new ArrayList<String>(); + public static List<String> mSexList = new ArrayList<String>(); + public static List<String> countryWordList = new ArrayList<String>(); + public static HashMap<String,List<String>> countryData = new HashMap<String,List<String>>(); + public static String[] countryWordData = new String[]{}; + public static List<String> visitPurposeList = new ArrayList<String>(); + + public void loadAllDictionaryData() { + loadCountries(); + loadCredentialsList(); + loadSexList(); + loadVisitPurposeList(); + } + + public void loadCountries() { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); + params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.COUNTRY); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<Dictionary> items = getList(Dictionary.class); + countryWordData = new String[items.size()]; + int i=0; + for (Dictionary item : items) { + idMap.put(item.getName(), item.getId()+""); + nationList.add(item.getName()); + String firstLetter = item.getRemark(); + List list = countryData.get(firstLetter); + if (list == null) { + list = new ArrayList(); + countryData.put(firstLetter, list); + countryWordList.add(0, firstLetter); + } + list.add(item.getName()); + countryWordData[i] = item.getName(); + i++; + } + RegisterFragment.getInstance().setCountryData(countryWordData, countryWordList, countryData); + } + }); + + } + + public void loadCredentialsList() { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); + params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.CREDENTIALS); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<Dictionary> items = getList(Dictionary.class); + for (Dictionary item : items) { + idMap.put(item.getName(), item.getId()+""); + mCredentialsList.add(item.getName()); + } + RegisterFragment.getInstance().setCredentialsList(mCredentialsList); + } + }); + } + + private void loadSexList() { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); + params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.SEX); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<Dictionary> items = getList(Dictionary.class); + for (Dictionary item : items) { + idMap.put(item.getName(), item.getId()+""); + mSexList.add(item.getName()); + } + RegisterFragment.getInstance().setSexList(mSexList); + } + }); + + } + + private void loadVisitPurposeList() { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); + params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.VISIT_PURPOSE); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<Dictionary> items = getList(Dictionary.class); + for (Dictionary item : items) { + idMap.put(CommonVariables.DictionaryType.VISIT_PURPOSE+item.getName(), item.getId()+""); + visitPurposeList.add(item.getName()); + } + CheckInFragment.getInstance().setVisitPurposeList(visitPurposeList); + } + }); + } + + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/IntervieweeQueryMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/IntervieweeQueryMng.java new file mode 100644 index 0000000..0587281 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/IntervieweeQueryMng.java @@ -0,0 +1,37 @@ +package cn.com.basic.face.service; + +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.util.AppApi; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; +import cn.com.basic.face.discern.query.condition.IntervieweeQueryCondition; +import cn.com.basic.face.discern.query.item.IntervieweeQueryItem; + +/** + * Created by xiuxi on 2017/3/27. + */ + +public class IntervieweeQueryMng { + + public static IntervieweeQueryMng instance = new IntervieweeQueryMng(); + + public static IntervieweeQueryMng getInstance() { + return instance; + } + + public void queryInterviewee(String name, String orderBy, final boolean isClear) { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); + params.addBodyParameter(IntervieweeQueryCondition.FieldNames.companyId, "1"); + params.addBodyParameter(IntervieweeQueryCondition.FieldNames.name, name); + x.http().post(params, new BaseCommonCallBack() { + public void success() { + CheckInFragment.getInstance().listChanged(getList(IntervieweeQueryItem.class), isClear); + } + }); + + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PlaceMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PlaceMng.java new file mode 100644 index 0000000..e047203 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PlaceMng.java @@ -0,0 +1,49 @@ +package cn.com.basic.face.service; + +import android.widget.Toast; + +import cn.com.basic.face.base.BaseApplication; +import cn.com.basic.face.util.AppApi; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import java.util.List; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; +import cn.com.basic.face.discern.entity.Place; + +/** + * Created by xiuxi on 2017/3/28. + */ + +public class PlaceMng { + public static PlaceMng instance = new PlaceMng(); + + public static final String authorationId = "101"; + + public static PlaceMng getInstance() { + return instance; + } + + public void findPlace() { + try { + RequestParams params = new RequestParams(AppApi.BASEURL + AppApi.PLACE_LIST); + params.addBodyParameter(Place.FieldNames.authorizationId, authorationId); + x.http().post(params, new BaseCommonCallBack() { + public void success() { + List<Place> places = resultBean.getListBeanOfType(Place.class); + if (places.size() > 0) { + BaseApplication.getInstance().setPlace(places.get(0)); + } else { + Toast.makeText(BaseApplication.getInstance(), "鏁版嵁搴撲腑鎵句笉鍒拌璁惧", Toast.LENGTH_SHORT).show(); + } + } + }); + } catch (Throwable e) { + e.printStackTrace(); + Toast.makeText(BaseApplication.getInstance(), "鏁版嵁搴撲腑鎵句笉鍒拌璁惧", Toast.LENGTH_SHORT).show(); + } + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java new file mode 100644 index 0000000..f6815a8 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java @@ -0,0 +1,61 @@ +package cn.com.basic.face.service; + +import android.widget.Toast; + +import cn.com.basic.face.base.BaseApplication; +import cn.com.basic.face.util.AppApi; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import java.io.File; +import java.io.FileWriter; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; + +/** + * Created by xiuxi on 2017/3/23. + */ + +public class RegisterMng extends BaseMng { + + public static RegisterMng instance = new RegisterMng(); + + public static RegisterMng getInstance() { + return instance; + } + + public void add(RequestParams params) { + + try { + File path = BaseApplication.getInstance().getFilesDir(); + File f1 = new File(path, "1.txt"); + if (!f1.exists()) { + f1.createNewFile(); + } + File f2 = new File(path, "2.txt"); + if (!f2.exists()) { + f2.createNewFile(); + } + FileWriter fw1 = new FileWriter(f1); + fw1.write("test1"); + fw1.close(); + FileWriter fw2 = new FileWriter(f2); + fw2.write("test2"); + fw2.close(); + params.setUri(AppApi.BASEURL+AppApi.REGISTER_ADD); + params.addBodyParameter("file1", f1); + params.addBodyParameter("file2", f2); + x.http().post(params, new BaseCommonCallBack() { + @Override + public void success() { + Toast.makeText(BaseApplication.getInstance(),"娣诲姞鎴愬姛", Toast.LENGTH_SHORT).show(); + } + }); + }catch(Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorCheckInMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorCheckInMng.java new file mode 100644 index 0000000..0774dc2 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorCheckInMng.java @@ -0,0 +1,101 @@ +package cn.com.basic.face.service; + +import android.widget.Toast; + +import cn.com.basic.face.base.BaseApplication; +import cn.com.basic.face.fragment.HomeFragment; +import cn.com.basic.face.fragment.CheckInFragment; +import cn.com.basic.face.util.AppApi; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; +import cn.com.basic.face.discern.query.condition.VisitorQueryCondition; +import cn.com.basic.face.discern.query.item.VisitorQueryItem; + +/** + * 鏉ヨ鐧昏 + */ + +public class VisitorCheckInMng { + + public static VisitorCheckInMng instance = new VisitorCheckInMng(); + + public static VisitorCheckInMng getInstance() { + return instance; + } + + /** + * 鏌ヨ鏉ヨ浜哄憳鍒楄〃 + */ + public void findVisitorList(String pageNum, String name, final boolean isClear) { + //id锛屽悕绉帮紝澶村儚璺緞锛岃仈绯荤數璇濓紝鍏徃鍚嶇О锛岃瘉浠剁紪鍙� + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.VISITOR_LIST); + params.addBodyParameter(VisitorQueryCondition.FieldNames.notCompanyId, BaseApplication.getInstance().getPlace().getCompanyId()); + params.addBodyParameter(VisitorQueryCondition.FieldNames.name, name); + x.http().post(params, new BaseCommonCallBack() { + public void success() { + CheckInFragment.getInstance().listChanged(getList(VisitorQueryItem.class), isClear); + } + }); + } + + /** + * 鏌ヨ鏉ヨ浜哄憳鍒楄〃 + */ + public void findVisitorList() { + //id锛屽悕绉帮紝澶村儚璺緞锛岃仈绯荤數璇濓紝鍏徃鍚嶇О锛岃瘉浠剁紪鍙� + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.VISITOR_LIST); + params.addBodyParameter(VisitorQueryCondition.FieldNames.notCompanyId, BaseApplication.getInstance().getPlace().getCompanyId()); + x.http().post(params, new BaseCommonCallBack() { + public void success() { + HomeFragment.getInstance().visitorListChanged(getList(VisitorQueryItem.class)); + } + }); + } + + /** + * 鏌ヨ琚闂汉鍛樺垪琛� + */ + public void findIntervieweeList(String pageNum, String name, final boolean isClear) { +// RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); +// params.addBodyParameter(IntervieweeQueryCondition.FieldNames.companyId, "1"); +// params.addBodyParameter(IntervieweeQueryCondition.FieldNames.name, name); +// x.http().post(params, new BaseCommonCallBack() { +// public void success() { +// VisitorRegisterFragment.getInstance().listChanged(getList(IntervieweeQueryItem.class), isClear); +// } +// }); + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.VISITOR_LIST); + params.addBodyParameter(VisitorQueryCondition.FieldNames.companyId, BaseApplication.getInstance().getPlace().getCompanyId()); + params.addBodyParameter(VisitorQueryCondition.FieldNames.name, name); + x.http().post(params, new BaseCommonCallBack() { + public void success() { + CheckInFragment.getInstance().listChanged(getList(VisitorQueryItem.class), isClear); + } + }); + } + + /** + * 娣诲姞璁垮璁板綍 + * @param params + */ + public void add(RequestParams params) { + + params.setUri(AppApi.BASEURL+AppApi.CHECK_IN_ADD); + x.http().post(params, new BaseCommonCallBack() { + @Override + public void success() { + Toast.makeText(BaseApplication.getInstance(),"娣诲姞鎴愬姛", Toast.LENGTH_SHORT).show(); + } + }); + + } + + + /** + * 鏌ヨ鎷滆浜嬬敱鍒楄〃 + */ + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorQueryMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorQueryMng.java new file mode 100644 index 0000000..d635041 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorQueryMng.java @@ -0,0 +1,22 @@ +package cn.com.basic.face.service; + +/** + * Created by xiuxi on 2017/3/27. + */ + +public class VisitorQueryMng { + + private static VisitorQueryMng instance = new VisitorQueryMng(); + public static VisitorQueryMng getInstance() { + return instance; + } + + public void queryVisitor() { + + + + + } + + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorTypeMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorTypeMng.java new file mode 100644 index 0000000..937e837 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/VisitorTypeMng.java @@ -0,0 +1,81 @@ +package cn.com.basic.face.service; + +import cn.com.basic.face.fragment.RegisterFragment; +import cn.com.basic.face.util.AppApi; +import cn.com.basic.face.util.MultipartUtility; + +import org.xutils.http.RequestParams; +import org.xutils.x; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.com.basic.face.discern.common.BaseCommonCallBack; +import cn.com.basic.face.discern.query.item.VistorTypeQueryItem; + +/** + * Created by xiuxi on 2017/3/22. + */ + +public class VisitorTypeMng extends BaseMng { + + public static VisitorTypeMng instance = new VisitorTypeMng(); + + public static VisitorTypeMng getInstance() { + return instance; + } + + public static List<String> mVisitorTypeList = new ArrayList<String>(); + + public void loadAll() { + loadVisitorTypeList(); + } + + private void loadVisitorTypeList() { + RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.VISITOR_TYPE_LIST); + x.http().get(params, new BaseCommonCallBack() { + public void success() { + List<VistorTypeQueryItem> items = getList(VistorTypeQueryItem.class); + mVisitorTypeList = new ArrayList<String>(); + for (VistorTypeQueryItem item : items) { + mVisitorTypeList.add(item.getLabel()); + idMap.put(item.getLabel(), item.getId()+""); + } + RegisterFragment.getInstance().setVisitorTypeList(mVisitorTypeList); + } + + }); + } + + private void uploadMedia() { + try { + + String charset = "UTF-8"; + File uploadFile1 = new File("/sdcard/myvideo.mp4"); + String requestURL = AppApi.BASEURL+AppApi.REGISTER_ADD; + + MultipartUtility multipart = new MultipartUtility(requestURL, charset); + +// multipart.addHeaderField("User-Agent", "CodeJava"); +// multipart.addHeaderField("Test-Header", "Header-Value"); + + multipart.addFormField("friend_id", "Cool Pictures"); + multipart.addFormField("userid", "Java,upload,Spring"); + + multipart.addFilePart("uploadedfile", uploadFile1); + + List<String> response = multipart.finish(); + + //Log.v("rht", "SERVER REPLIED:"); + + for (String line : response) { + //Log.v("rht", "Line : "+line); + + } + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java new file mode 100644 index 0000000..e2d2b53 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java @@ -0,0 +1,22 @@ +package cn.com.basic.face.util; + +public class AppApi { + public final static String CHENXINGGROUND_IMAGEURL_BASE = "http://192.168.1.27:8080/ssm/img/"; + public final static String CHENXINGARGEEMRNT = "";// 鍗忚鍓嶇紑 + public final static String BASEURL = "http://192.168.1.27:8080/ssm/"; + + public final static String VISITOR_TYPE_LIST = "VisitorType/v_list.do"; + + public final static String DICTIONARY_TYPE_LIST = "Dictionary/v_list.do"; //鏁版嵁瀛楀吀 + + public static final String REGISTER_ADD = "Person/o_add.do"; //璁垮娉ㄥ唽 + + public static final String QUERY_INTERVIEWEE = "queryInterviewee/v_read.do";//琚浜哄垪琛� + + public final static String PLACE_LIST = "Place/v_list.do"; //璁惧鍒楄〃 + + public final static String VISITOR_LIST = "queryVisitor/v_list.do"; //璁垮鍒楄〃 + + public static final String CHECK_IN_ADD = "Visit/o_add.do"; //娣诲姞璁块棶璁板綍 + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Constant.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Constant.java new file mode 100644 index 0000000..116b660 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Constant.java @@ -0,0 +1,9 @@ +package cn.com.basic.face.util; + +/** + * Created by Sinoe on 2017/2/23. + */ + +public class Constant { + public static final int VISITOR_TO = 1,VISITOR_FROM = 2; +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CountryPresenter.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CountryPresenter.java new file mode 100644 index 0000000..f442ef8 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CountryPresenter.java @@ -0,0 +1,90 @@ +package cn.com.basic.face.util; + +import android.content.Context; +import android.content.res.AssetManager; + +import cn.com.basic.face.model.CountryModel; +import cn.com.basic.face.model.CountrysModel; + +import java.io.InputStream; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class CountryPresenter { + + protected String mCurrentCountrysWord; + protected String mCurrentCountryName; + protected String[] mCountryWordDatas; + protected Map<String, String[]> mCountryDatasMap = new HashMap<>(); + + private Context mContext; + + public CountryPresenter(Context mContext) { + this.mContext = mContext; + initCountrys(); + } + + private void initCountrys() { + List<CountrysModel> countrysModelList = null; + AssetManager asset = mContext.getAssets(); + try { + InputStream input = asset.open("countrys.xml"); + SAXParserFactory spf = SAXParserFactory.newInstance(); + SAXParser parser = spf.newSAXParser(); + XmlParserHandler handler = new XmlParserHandler(); + parser.parse(input, handler); + input.close(); + countrysModelList = handler.getDataList(); + if (countrysModelList != null && !countrysModelList.isEmpty()) { + mCurrentCountrysWord = countrysModelList.get(0).getName(); + List<CountryModel> countryList = countrysModelList.get(0).getCountryModelList(); + if (countryList != null && !countryList.isEmpty()) { + mCurrentCountryName = countryList.get(0).getName(); + } + } + mCountryWordDatas = new String[countrysModelList.size()]; + for (int i = 0; i < countrysModelList.size(); i++) { + mCountryWordDatas[i] = countrysModelList.get(i).getName(); + List<CountryModel> countryModelList = countrysModelList.get(i).getCountryModelList(); + String[] CountryNames = new String[countryModelList.size()]; + for (int j = 0; j < countryModelList.size(); j++) { + CountryNames[j] = countryModelList.get(j).getName(); + } + mCountryDatasMap.put(countrysModelList.get(i).getName(), CountryNames); + } + } catch (Throwable e) { + e.printStackTrace(); + } + } + + + public String[] getCountryWordData() { + if (mCountryWordDatas == null) { + initCountrys(); + } + return mCountryWordDatas; + } + public HashMap<String, List<String>> getCountryData() { + HashMap<String, List<String>> cityDataMap = new HashMap<>(); + if (mCountryDatasMap == null) { + initCountrys(); + } + for (int i = 0; i < mCountryDatasMap.size(); i++) { + String[] cities = mCountryDatasMap.get(mCountryWordDatas[i]); + if (cities == null) { + cities = new String[]{""}; + } + cityDataMap.put(mCountryWordDatas[i], Arrays.asList(cities)); + } + return cityDataMap; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/GetNetResultJson.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/GetNetResultJson.java new file mode 100644 index 0000000..bb3ffe9 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/GetNetResultJson.java @@ -0,0 +1,53 @@ +package cn.com.basic.face.util; + + +import com.lzy.okhttputils.OkHttpUtils; +import com.lzy.okhttputils.callback.FileCallback; +import com.lzy.okhttputils.callback.StringCallback; + +import java.io.File; + +import okhttp3.Call; +import okhttp3.Response; + +/** + * Created by Sinoe on 2017/3/6. + */ + +public class GetNetResultJson { + public String getResultJson(String url){ + OkHttpUtils.post(url) + .tag(this) + .params("","") + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + + } + }); + OkHttpUtils.post(url) + .tag(this) + .params("","") + .execute(new FileCallback() { + @Override + public void onSuccess(File file, Call call, Response response) { + + } + }); + return null; + } + + public static String post(String url){ + String fullUrl = UrlUtil.BaseUrl+url; + OkHttpUtils.post(fullUrl) + .params("","") + .execute(new StringCallback() { + @Override + public void onSuccess(String s, Call call, Response response) { + + } + }); + return null; + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/JsonPares.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/JsonPares.java new file mode 100644 index 0000000..82e869b --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/JsonPares.java @@ -0,0 +1,27 @@ +package cn.com.basic.face.util; + +import cn.com.basic.face.model.ResultMsg; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + * Created by Sinoe on 2017/3/6. + */ + +public class JsonPares { + //鍩虹瑙f瀽 + public static ResultMsg getResultMsg(String json) { + ResultMsg msg = new ResultMsg(); + try { + JSONObject object = new JSONObject(json); + msg.setCode(object.getInt("code")); + msg.setInfo(object.getString("info")); + msg.setMessage(object.getString("message")); + msg.setTime(object.getLong("time")); + } catch (JSONException e) { + e.printStackTrace(); + } + return msg; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MultipartUtility.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MultipartUtility.java new file mode 100644 index 0000000..33ffff1 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MultipartUtility.java @@ -0,0 +1,157 @@ +package cn.com.basic.face.util; + +import java.util.List; + +import java.io.BufferedReader; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; + +/** + * This utility class provides an abstraction layer for sending multipart HTTP + * POST requests to a web server. + * + * @author www.codejava.net + */ +public class MultipartUtility { + private final String boundary; + private static final String LINE_FEED = "\r\n"; + private HttpURLConnection httpConn; + private String charset; + private OutputStream outputStream; + private PrintWriter writer; + + /** + * This constructor initializes a new HTTP POST request with content type + * is set to multipart/form-data + * + * @param requestURL + * @param charset + * @throws IOException + */ + public MultipartUtility(String requestURL, String charset) + throws IOException { + this.charset = charset; + + // creates a unique boundary based on time stamp + boundary = "===" + System.currentTimeMillis() + "==="; + + URL url = new URL(requestURL); + httpConn = (HttpURLConnection) url.openConnection(); + httpConn.setUseCaches(false); + httpConn.setDoOutput(true); // indicates POST method + httpConn.setDoInput(true); + httpConn.setRequestProperty("Content-Type", + "multipart/form-data; boundary=" + boundary); + httpConn.setRequestProperty("User-Agent", "CodeJava Agent"); + httpConn.setRequestProperty("Test", "Bonjour"); + outputStream = httpConn.getOutputStream(); + writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), + true); + } + + /** + * Adds a form field to the request + * + * @param name field name + * @param value field value + */ + public void addFormField(String name, String value) { + writer.append("--" + boundary).append(LINE_FEED); + writer.append("Content-Disposition: form-data; name=\"" + name + "\"") + .append(LINE_FEED); + writer.append("Content-Type: text/plain; charset=" + charset).append( + LINE_FEED); + writer.append(LINE_FEED); + writer.append(value).append(LINE_FEED); + writer.flush(); + } + + /** + * Adds a upload file section to the request + * + * @param fieldName name attribute in <input type="file" name="..." /> + * @param uploadFile a File to be uploaded + * @throws IOException + */ + public void addFilePart(String fieldName, File uploadFile) + throws IOException { + String fileName = uploadFile.getName(); + writer.append("--" + boundary).append(LINE_FEED); + writer.append( + "Content-Disposition: form-data; name=\"" + fieldName + + "\"; filename=\"" + fileName + "\"") + .append(LINE_FEED); + writer.append( + "Content-Type: " + + URLConnection.guessContentTypeFromName(fileName)) + .append(LINE_FEED); + writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); + writer.append(LINE_FEED); + writer.flush(); + + FileInputStream inputStream = new FileInputStream(uploadFile); + byte[] buffer = new byte[4096]; + int bytesRead = -1; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + outputStream.flush(); + inputStream.close(); + + writer.append(LINE_FEED); + writer.flush(); + } + + /** + * Adds a header field to the request. + * + * @param name - name of the header field + * @param value - value of the header field + */ + public void addHeaderField(String name, String value) { + writer.append(name + ": " + value).append(LINE_FEED); + writer.flush(); + } + + /** + * Completes the request and receives response from the server. + * + * @return a list of Strings as response in case the server returned + * status OK, otherwise an exception is thrown. + * @throws IOException + */ + public List<String> finish() throws IOException { + List<String> response = new ArrayList<String>(); + + writer.append(LINE_FEED).flush(); + writer.append("--" + boundary + "--").append(LINE_FEED); + writer.close(); + + // checks server's status code first + int status = httpConn.getResponseCode(); + if (status == HttpURLConnection.HTTP_OK) { + BufferedReader reader = new BufferedReader(new InputStreamReader( + httpConn.getInputStream())); + String line = null; + while ((line = reader.readLine()) != null) { + response.add(line); + } + reader.close(); + httpConn.disconnect(); + } else { + throw new IOException("Server returned non-OK status: " + status); + } + + return response; + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..0746e56 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java @@ -0,0 +1,33 @@ +package cn.com.basic.face.util; + +import android.view.Surface; + +/** + * Created by xiuxi on 2017/3/21. + */ + +public class RtspFaceNative { + +// public static native void init(); +// public static native void setSurface(int cameraIdx, Surface surface); +// public static native boolean createPlayer(int cameraIdx, String uri); +// public static native void shutdown(int cameraIdx); +// // typedef void (* Java_com_example_nativecodec_NativeCodec_FaceCallback_func)(int cameraIdx, int count); +// public static native boolean setFaceCallback(int cameraIdx, String func); +// public static native void lockFace(int cameraIdx); +// public static native void releaseFace(int cameraIdx); +// public static native boolean getFaceList(int cameraIdx, byte[] faceListPb); +// public static native boolean getFaceImages(int cameraIdx, byte[] faceImagesIdx, byte[] faceImages); + + public static void init() {}; + public static void setSurface(int cameraIdx, Surface surface){}; + public static boolean createPlayer(int cameraIdx, String uri){return true;}; + public static void shutdown(int cameraIdx){}; + // typedef void (* Java_com_example_nativecodec_NativeCodec_FaceCallback_func)(int cameraIdx, int count); + public static boolean setFaceCallback(int cameraIdx, String func){return true;}; + public static void lockFace(int cameraIdx){}; + public static void releaseFace(int cameraIdx){}; + public static boolean getFaceList(int cameraIdx, byte[] faceListPb){return true;};//浜岃繘鍒� + public static boolean getFaceImages(int cameraIdx, byte[] faceImagesIdx, byte[] faceImages){return true;};//鍥剧墖 + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/StreamUtils.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/StreamUtils.java new file mode 100644 index 0000000..ff9c775 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/StreamUtils.java @@ -0,0 +1,45 @@ +package cn.com.basic.face.util; + +import android.content.Context; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class StreamUtils { + + public static String get(Context context, int id) { + InputStream stream = context.getResources().openRawResource(id); + return read(stream); + } + + public static String read(InputStream stream) { + return read(stream, "utf-8"); + } + + public static String read(InputStream is, String encode) { + if (is != null) { + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(is, encode)); + StringBuilder sb = new StringBuilder(); + String line = null; + while ((line = reader.readLine()) != null) { + sb.append(line + "\n"); + } + is.close(); + return sb.toString(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return ""; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/TabNameUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/TabNameUtil.java new file mode 100644 index 0000000..895b437 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/TabNameUtil.java @@ -0,0 +1,26 @@ +package cn.com.basic.face.util; + +import com.bsk.zhangbo.demoforbsk.R; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public class TabNameUtil { + private static String tabName0 = "瀹炴椂鐩戞帶"; + private static String tabName1 = "浜哄憳娉ㄥ唽"; + private static String tabName2 = "鏉ヨ鐧昏"; + private static String tabName3 = "鐢佃瘽鍛煎彨"; + private static String tabName4= "璁垮绠$悊"; + private static String tabName5 = "鑰冨嫟璁板綍"; + private static String tabName6 = "璁惧绠$悊"; + public static String[] tabNames = {tabName0, tabName1, tabName2, tabName3, tabName4, tabName5, tabName6}; + private static int drawable1 = R.drawable.tab_main_0; + private static int drawable2 =R.drawable.tab_main_1; + private static int drawable3 = R.drawable.tab_main_2; + private static int drawable4 = R.drawable.tab_main_3; + private static int drawable5 = R.drawable.tab_main_4; + private static int drawable6 = R.drawable.tab_main_5; + private static int drawable7 = R.drawable.tab_main_6; + public static int[] tabIcons = {drawable1, drawable2, drawable3, drawable4, drawable5, drawable6, drawable7}; +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UrlUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UrlUtil.java new file mode 100644 index 0000000..9bc1fd3 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UrlUtil.java @@ -0,0 +1,9 @@ +package cn.com.basic.face.util; + +/** + * Created by Sinoe on 2017/3/6. + */ + +public class UrlUtil { + public static String BaseUrl = "http://192.168.1.102:8080/ssm"; +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/WindowsUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/WindowsUtil.java new file mode 100644 index 0000000..953b9c8 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/WindowsUtil.java @@ -0,0 +1,26 @@ +package cn.com.basic.face.util; + +import android.content.Context; + +/** + * Created by zhangbo on 2017/2/15. + */ + +public class WindowsUtil { + + /** + * 鏍规嵁鎵嬫満鐨勫垎杈ㄧ巼浠� dp 鐨勫崟浣� 杞垚涓� px(鍍忕礌) + */ + public static int dip2px(Context context, float dpValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } + + /** + * 鏍规嵁鎵嬫満鐨勫垎杈ㄧ巼浠� px(鍍忕礌) 鐨勫崟浣� 杞垚涓� dp + */ + public static int px2dip(Context context, float pxValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / scale + 0.5f); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/XmlParserHandler.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/XmlParserHandler.java new file mode 100644 index 0000000..79950e7 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/XmlParserHandler.java @@ -0,0 +1,58 @@ +package cn.com.basic.face.util; + +import cn.com.basic.face.model.CountryModel; +import cn.com.basic.face.model.CountrysModel; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class XmlParserHandler extends DefaultHandler { + private List<CountrysModel> countrysModelList = new ArrayList<>(); + + public XmlParserHandler() { + + } + public List<CountrysModel> getDataList() { + return countrysModelList; + } + @Override + public void startDocument() throws SAXException { + } + CountrysModel countrysModel = new CountrysModel(); + CountryModel countryModel = new CountryModel(); + + @Override + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + if (qName.equals("word")) { + countrysModel = new CountrysModel(); + countrysModel.setName(attributes.getValue(0)); + countrysModel.setCountryModelList(new ArrayList<CountryModel>()); + } else if (qName.equals("country")) { + countryModel = new CountryModel(); + countryModel.setName(attributes.getValue(0)); + } + } + @Override + public void endElement(String uri, String localName, String qName) + throws SAXException { + if (qName.equals("country")) { + countrysModel.getCountryModelList().add(countryModel); + } else if (qName.equals("word")) { + countrysModelList.add(countrysModel); + } + } + + @Override + public void characters(char[] ch, int start, int length) + throws SAXException { + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/BirthdayPickerDialog.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/BirthdayPickerDialog.java new file mode 100644 index 0000000..759e3ee --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/BirthdayPickerDialog.java @@ -0,0 +1,123 @@ +package cn.com.basic.face.widget; + +import android.app.AlertDialog; +import android.app.DatePickerDialog; +import android.content.Context; +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.DatePicker; + +import com.bsk.zhangbo.demoforbsk.R; + +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class BirthdayPickerDialog extends AlertDialog implements + DatePicker.OnDateChangedListener{ + + + private static final String YEAR = "year"; + private static final String MONTH = "month"; + private static final String DAY = "day"; + + private final DatePicker mDatePicker; + private final OnDateSetListener mDateSetListener; + private final Calendar mCalendar; + + private boolean mTitleNeedsUpdate = true; + + private View view; + public BirthdayPickerDialog(Context context, int theme, OnDateSetListener listener, Date date) { + super(context,theme); + mDateSetListener = listener; + mCalendar = Calendar.getInstance(Locale.CHINA); + mCalendar.setTime(date); + Context themeContext = getContext(); + LayoutInflater inflater = LayoutInflater.from(themeContext); + view = inflater.inflate(R.layout.dialog_date_picker, null); + view.setBackgroundColor(Color.WHITE); + //setView(view); + + +// setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this); +// setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this); +// setButtonPanelLayoutHint(LAYOUT_HINT_SIDE); + + mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); + mDatePicker.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this); + // mDatePicker.setValidationCallback(mValidationCallback); + //瀹炵幇鑷繁鐨勬爣棰樺拰ok鎸夐挳 + //setTitle("閫夋嫨鏃ユ湡:"); + setButton(); + } + + @Override + public void onDateChanged(DatePicker datePicker, int year, int month, int day) { + mDatePicker.init(year, month, day, this); + } + + + /** + * The callback used to indicate the user is done filling in the date. + */ + public interface OnDateSetListener { + + /** + * @param view The view associated with this listener. + * @param year The year that was set. + * @param monthOfYear The month that was set (0-11) for compatibility + * with {@link java.util.Calendar}. + * @param dayOfMonth The day of the month that was set. + */ + void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth); + } + + private void setButton() { + //鑾峰彇鑷繁瀹氫箟鐨勫搷搴旀寜閽苟璁剧疆鐩戝惉锛岀洿鎺ヨ皟鐢ㄦ瀯閫犳椂浼犺繘鏉ョ殑CallBack鎺ュ彛锛堜负浜嗙渷鍔诧紝娌℃湁鑷繁鍐欐帴鍙o紝鐩存帴鐢ㄤ箣鍓嶆湰绫诲畾涔夊ソ鐨勶級鍚屾椂鍏抽棴瀵硅瘽妗嗐�� + view.findViewById(R.id.date_picker_ok).setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mDateSetListener != null) { + // Clearing focus forces the dialog to commit any pending + // changes, e.g. typed text in a NumberPicker. + mDatePicker.clearFocus(); + mDateSetListener.onDateSet(mDatePicker, mDatePicker.getYear(), + mDatePicker.getMonth(), mDatePicker.getDayOfMonth()); + cancel(); + } + } + }); + view.findViewById(R.id.date_picker_cancle).setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + cancel(); + } + }); + } + + public void myShow() { + //鑷繁瀹炵幇show鏂规硶锛屼富瑕佹槸涓轰簡鎶妔etContentView鏂规硶鏀惧埌show鏂规硶鍚庨潰锛屽惁鍒欎細鎶ラ敊銆� + show(); + setContentView(view); + } + @NonNull + @Override + public Bundle onSaveInstanceState() { + return super.onSaveInstanceState(); + } + + @Override + public void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/CountrySelectionPopup.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/CountrySelectionPopup.java new file mode 100644 index 0000000..9b48d92 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/CountrySelectionPopup.java @@ -0,0 +1,155 @@ +package cn.com.basic.face.widget; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.support.v7.widget.AppCompatTextView; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.MyWheelAdapter; + +import cn.com.basic.face.listeners.OkButtonClickedListener; +import cn.com.basic.face.util.CountryPresenter; + +import com.wx.wheelview.widget.WheelView; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * Created by Sinoe on 2017/2/28. + */ + +public class CountrySelectionPopup extends PopupWindow implements View.OnClickListener, WheelView.OnWheelItemSelectedListener { + private Context mContext; + private View view; + private TextView mTvConfirm, mTvCancel; + private WheelView mWheelViewTitle, mWheelViewName; + private HashMap<String, List<String>> countryData; + private List<String> countryWordList; + private List<String> countryList; + private CountryPresenter countryPresenter; + + public CountrySelectionPopup(Context context, String[] countryWordData, List<String> countryWordList, HashMap<String, List<String>> countryData) { + + this.mContext = context; + countryPresenter = new CountryPresenter(context); + view = LayoutInflater.from(context).inflate(R.layout.pop_country, null); + mWheelViewTitle = (WheelView) view.findViewById(R.id.pop_country_title); + mWheelViewTitle.setOnWheelItemSelectedListener(this); + mWheelViewName = (WheelView) view.findViewById(R.id.pop_country_name); + mWheelViewName.setOnWheelItemSelectedListener(this); + mTvCancel = (TextView) view.findViewById(R.id.pop_country_cancel); + mTvConfirm = (TextView) view.findViewById(R.id.pop_country_confirm); + mTvCancel.setOnClickListener(this); + mTvConfirm.setOnClickListener(this); + + //String[] countryWordData = DictionaryMng.countryWordData; + this.countryWordList = countryWordList;//DictionaryMng.countryWordList; + this.countryData = countryData;//DictionaryMng.countryData; + + countryList = countryData.get(countryWordList.get(mWheelViewTitle.getSelection())); + + mWheelViewTitle.setWheelAdapter(new MyWheelAdapter(context)); + mWheelViewTitle.setSkin(WheelView.Skin.Holo); + mWheelViewTitle.setWheelSize(5); + mWheelViewTitle.setBackgroundResource(R.color.colorBackground); + mWheelViewName.setWheelAdapter(new MyWheelAdapter(context)); + mWheelViewName.setSkin(WheelView.Skin.Holo); + mWheelViewName.setWheelSize(5); + mWheelViewName.setBackgroundResource(R.color.colorBackground); + WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); + style.selectedTextColor = Color.parseColor("#11c3e3"); + style.textColor = Color.parseColor("#bcc6cf"); + style.selectedTextSize = 22; + style.textSize = 16; + style.holoBorderColor = Color.parseColor("#11c3e3"); + mWheelViewTitle.setStyle(style); + mWheelViewName.setStyle(style); + initData(); + //澶栭儴鍙偣鍑� + setOutsideTouchable(true); + + view.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + View popLayout = view.findViewById(R.id.pop_single_ll); + int top = popLayout.getTop(); + int bottom = popLayout.getBottom(); + int left = popLayout.getLeft(); + int right = popLayout.getRight(); + int y = (int) motionEvent.getY(); + int x = (int) motionEvent.getX(); + if (motionEvent.getAction() == MotionEvent.ACTION_UP) { + if (y < top || y > bottom) { + dismiss(); + } + if (x < left || x > right) { + dismiss(); + } + + } + return true; + } + }); + + /* + 璁剧疆绐楀彛鐗瑰緛 + */ + //璁剧疆瑙嗗浘 + this.setContentView(this.view); + //璁剧疆绐楀彛瀹介珮 + this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); + this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); + //璁剧疆寮瑰嚭绐楀彛鍙偣鍑� + this.setFocusable(true); + //瀹炰緥鍖朇olor + ColorDrawable colorDrawable = new ColorDrawable(0x7f000000); + this.setBackgroundDrawable(colorDrawable); + this.setAnimationStyle(R.style.PopupAnimation); + } + + @Override + public void onClick(View view) { + if (view instanceof AppCompatTextView) { + if (((AppCompatTextView) view).getText().equals("纭")) { + for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { + if (mWheelViewTitle.getCurrentPosition() >= 0) { + countryList = countryData.get(countryWordList.get(mWheelViewTitle.getCurrentPosition())); + okButtonClickedListener.onItemSelected(0, null, countryList.get(mWheelViewName.getCurrentPosition())); + } + } + dismiss(); + } + if (((AppCompatTextView) view).getText().equals("鍙栨秷")) { + dismiss(); + } + } + } + + @Override + public void onItemSelected(int position, Object o) { + countryList = countryData.get(countryWordList.get(mWheelViewTitle.getCurrentPosition())); + } + + private void initData() { + mWheelViewTitle.setWheelData(countryWordList); + mWheelViewTitle.join(mWheelViewName); + mWheelViewTitle.joinDatas(countryData); + mWheelViewName.setWheelData(countryList); + } + + private List<OkButtonClickedListener> okButtonClickedListeners = new ArrayList<OkButtonClickedListener>(); + + public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) { + this.okButtonClickedListeners.add(okButtonClickedListener); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/InfoTextView.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/InfoTextView.java new file mode 100644 index 0000000..d8b31ce --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/InfoTextView.java @@ -0,0 +1,110 @@ +package cn.com.basic.face.widget; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; + +/** + * Created by Sinoe on 2017/2/22. + */ + +public class InfoTextView extends LinearLayout{ + + + private Context mContext; + private TextView mLeftTextView,mRightTextView; + private String mLeftTextString,mRightTextString; + private int mBetweenMargin,mLeftTextSize,mRightTextSize,mLeftTextColor,mRightTextColor,mBackgroundColor; + private int mDefaultMargin = 0; + private int mDefaultTextSize = 0; + private int mDefaultTextColor = 0xff515b64; + private int mDefaultBackgroundColor = 0xffffffff; + private LayoutParams mLeftLayoutParams,mRightLayoutParams; + public InfoTextView(Context context) { + super(context); + } + + public InfoTextView(Context context, AttributeSet attrs) { + super(context, attrs); + getAttr(attrs); + initLayout(); + } + + + /** + * 鍒濆鍖栧竷灞� + */ + private void initLayout(){ + this.setBackgroundColor(mBackgroundColor); + this.setOrientation(HORIZONTAL); + initLeftText(); + initRightText(); + } + + /** + * 鑾峰彇瀹氫箟灞炴�у�� + * @param attrs + */ + private void getAttr(AttributeSet attrs){ + TypedArray typedArray = mContext.obtainStyledAttributes(attrs, R.styleable.VisitorView); + mLeftTextString = typedArray.getString(R.styleable.VisitorView_vLeftTextString); + mRightTextString = typedArray.getString(R.styleable.VisitorView_vRightTextString); + mBetweenMargin = typedArray.getDimensionPixelSize(R.styleable.VisitorView_vBetweenMargin,mDefaultMargin); + mLeftTextSize = typedArray.getDimensionPixelSize(R.styleable.VisitorView_vLeftTextSize,mDefaultTextSize); + mRightTextSize = typedArray.getDimensionPixelSize(R.styleable.VisitorView_vRightTextSize,mDefaultTextSize); + mLeftTextColor = typedArray.getColor(R.styleable.VisitorView_vLeftTextColor,mDefaultTextColor); + mRightTextColor = typedArray.getColor(R.styleable.VisitorView_vRightTextColor,mDefaultTextColor); + mBackgroundColor = typedArray.getColor(R.styleable.VisitorView_vBackgroundColor,mDefaultBackgroundColor); + typedArray.recycle(); + } + + /** + * 鍒濆鍖栧乏杈规枃瀛� + */ + private void initLeftText(){ + mLeftTextView = new TextView(mContext); + mLeftLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + mLeftTextView.setLayoutParams(mLeftLayoutParams); + mLeftTextView.setText(mLeftTextString); + setTextColor(mLeftTextView,mLeftTextColor); + setTextSize(mLeftTextView,mLeftTextSize); + addView(mLeftTextView); + } + + /** + * 鍒濆鍖栧彸杈规枃瀛� + */ + private void initRightText(){ + mRightTextView = new TextView(mContext); + mRightLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + mRightTextView.setLayoutParams(mRightLayoutParams); + mRightTextView.setText(mRightTextString); + setTextColor(mRightTextView,mRightTextColor); + setTextSize(mRightTextView,mRightTextSize); + addView(mRightTextView); + } + + + /** + * 璁剧疆瀛椾綋棰滆壊 + * @param textView textview瀵硅薄 + * @param color 鏂囧瓧棰滆壊 + */ + private void setTextColor(TextView textView,int color){ + textView.setTextColor(color); + } + + /** + * 璁剧疆瀛椾綋澶у皬 + * @param textView textview瀵硅薄 + * @param size 鏂囧瓧澶у皬 + */ + private void setTextSize(TextView textView,int size){ + textView.setTextSize(size); + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/MyGLSurfaceView.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/MyGLSurfaceView.java new file mode 100644 index 0000000..ac1d913 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/MyGLSurfaceView.java @@ -0,0 +1,356 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package cn.com.basic.face.widget; + +import android.content.Context; +import android.graphics.SurfaceTexture; +import android.opengl.GLES20; +import android.opengl.GLSurfaceView; +import android.opengl.Matrix; +import android.os.SystemClock; +import android.util.AttributeSet; +import android.util.Log; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; + +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +public class MyGLSurfaceView extends GLSurfaceView { + + MyRenderer mRenderer; + + public MyGLSurfaceView(Context context) { + this(context, null); + } + + public MyGLSurfaceView(Context context, AttributeSet attributeSet) { + super(context, attributeSet); + init(); + } + + private void init() { + setEGLContextClientVersion(2); + mRenderer = new MyRenderer(); + setRenderer(mRenderer); + Log.i("@@@", "setrenderer"); + } + + @Override + public void onPause() { + mRenderer.onPause(); + super.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + mRenderer.onResume(); + } + + public SurfaceTexture getSurfaceTexture() { + return mRenderer.getSurfaceTexture(); + } +} + +class MyRenderer implements GLSurfaceView.Renderer, SurfaceTexture.OnFrameAvailableListener { + + public MyRenderer() { + mVertices = ByteBuffer.allocateDirect(mVerticesData.length + * FLOAT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asFloatBuffer(); + mVertices.put(mVerticesData).position(0); + + Matrix.setIdentityM(mSTMatrix, 0); + } + public void onPause() { + } + + public void onResume() { + mLastTime = SystemClock.elapsedRealtimeNanos(); + } + + @Override + public void onDrawFrame(GL10 glUnused) { + synchronized(this) { + if (updateSurface) { + mSurface.updateTexImage(); + + mSurface.getTransformMatrix(mSTMatrix); + updateSurface = false; + } + } + + +// Logger.e("onDrawFrame"); + // Ignore the passed-in GL10 interface, and use the GLES20 + // class's static methods instead. + GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); + GLES20.glUseProgram(mProgram); + checkGlError("glUseProgram"); + + GLES20.glActiveTexture(GLES20.GL_TEXTURE0); + GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID); + + mVertices.position(VERTICES_DATA_POS_OFFSET); + GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false, + VERTICES_DATA_STRIDE_BYTES, mVertices); + checkGlError("glVertexAttribPointer maPosition"); + GLES20.glEnableVertexAttribArray(maPositionHandle); + checkGlError("glEnableVertexAttribArray maPositionHandle"); + + mVertices.position(VERTICES_DATA_UV_OFFSET); + GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false, + VERTICES_DATA_STRIDE_BYTES, mVertices); + checkGlError("glVertexAttribPointer maTextureHandle"); + GLES20.glEnableVertexAttribArray(maTextureHandle); + checkGlError("glEnableVertexAttribArray maTextureHandle"); + +// long now = SystemClock.elapsedRealtimeNanos(); +// mRunTime += (now - mLastTime); +// mLastTime = now; +// double d = ((double)mRunTime) / 1000000000; + Matrix.setIdentityM(mMMatrix, 0); +// Matrix.rotateM(mMMatrix, 0, 30, (float)Math.sin(d), (float)Math.cos(d), 0); //鍔ㄦ�佺煩闃� +// Matrix.rotateM(mMMatrix, 0, 0, 0, 0, 0); + //Matrix.rotateM(mMMatrix, 0, 0, 0.5f, 0.5f,0); + Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0); + Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0); + + GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0); + GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0); + + GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); + checkGlError("glDrawArrays"); + } + + @Override + public void onSurfaceChanged(GL10 glUnused, int width, int height) { + // Ignore the passed-in GL10 interface, and use the GLES20 + // class's static methods instead. + GLES20.glViewport(0, 0, width, height); + mRatio = (float) width / height; + Matrix.frustumM(mProjMatrix, 0, -mRatio, mRatio, -1, 1, 2, 7); + } + + @Override + public void onSurfaceCreated(GL10 glUnused, EGLConfig config) { + // Ignore the passed-in GL10 interface, and use the GLES20 + // class's static methods instead. + + /* Set up alpha blending and an Android background color */ + GLES20.glEnable(GLES20.GL_BLEND); + GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); + GLES20.glClearColor(0.643f, 0.776f, 0.223f, 1.0f); + + /* Set up shaders and handles to their variables */ + mProgram = createProgram(mVertexShader, mFragmentShader); + if (mProgram == 0) { + return; + } + maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition"); + checkGlError("glGetAttribLocation aPosition"); + if (maPositionHandle == -1) { + throw new RuntimeException("Could not get attrib location for aPosition"); + } + maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord"); + checkGlError("glGetAttribLocation aTextureCoord"); + if (maTextureHandle == -1) { + throw new RuntimeException("Could not get attrib location for aTextureCoord"); + } + + muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix"); + checkGlError("glGetUniformLocation uMVPMatrix"); + if (muMVPMatrixHandle == -1) { + throw new RuntimeException("Could not get attrib location for uMVPMatrix"); + } + + muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix"); + checkGlError("glGetUniformLocation uSTMatrix"); + if (muSTMatrixHandle == -1) { + throw new RuntimeException("Could not get attrib location for uSTMatrix"); + } + + /* + * Create our texture. This has to be done each time the + * surface is created. + */ + + int[] textures = new int[1]; + GLES20.glGenTextures(1, textures, 0); + + mTextureID = textures[0]; + GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID); + checkGlError("glBindTexture mTextureID"); + + // Can't do mipmapping with camera source + GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, + GLES20.GL_NEAREST); + GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, + GLES20.GL_LINEAR); + // Clamp to edge is the only option + GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, + GLES20.GL_CLAMP_TO_EDGE); + GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, + GLES20.GL_CLAMP_TO_EDGE); + checkGlError("glTexParameteri mTextureID"); + + /* + * Create the SurfaceTexture that will feed this textureID, and pass it to the camera + */ + + mSurface = new SurfaceTexture(mTextureID); + mSurface.setOnFrameAvailableListener(this); + + Matrix.setLookAtM(mVMatrix, 0, + 0, 0, 2f, + 0f, 0f, 0f, + 0f, 1.0f, 0.0f); + + synchronized(this) { + updateSurface = false; + } + } + + @Override + synchronized public void onFrameAvailable(SurfaceTexture surface) { + /* For simplicity, SurfaceTexture calls here when it has new + * data available. Call may come in from some random thread, + * so let's be safe and use synchronize. No OpenGL calls can be done here. + */ + updateSurface = true; + //Log.v(TAG, "onFrameAvailable " + surface.getTimestamp()); + } + + private int loadShader(int shaderType, String source) { + int shader = GLES20.glCreateShader(shaderType); + if (shader != 0) { + GLES20.glShaderSource(shader, source); + GLES20.glCompileShader(shader); + int[] compiled = new int[1]; + GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0); + if (compiled[0] == 0) { + Log.e(TAG, "Could not compile shader " + shaderType + ":"); + Log.e(TAG, GLES20.glGetShaderInfoLog(shader)); + GLES20.glDeleteShader(shader); + shader = 0; + } + } + return shader; + } + + private int createProgram(String vertexSource, String fragmentSource) { + int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource); + if (vertexShader == 0) { + return 0; + } + int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource); + if (pixelShader == 0) { + return 0; + } + + int program = GLES20.glCreateProgram(); + if (program != 0) { + GLES20.glAttachShader(program, vertexShader); + checkGlError("glAttachShader"); + GLES20.glAttachShader(program, pixelShader); + checkGlError("glAttachShader"); + GLES20.glLinkProgram(program); + int[] linkStatus = new int[1]; + GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0); + if (linkStatus[0] != GLES20.GL_TRUE) { + Log.e(TAG, "Could not link program: "); + Log.e(TAG, GLES20.glGetProgramInfoLog(program)); + GLES20.glDeleteProgram(program); + program = 0; + } + } + return program; + } + + private void checkGlError(String op) { + int error; + while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) { + Log.e(TAG, op + ": glError " + error); + throw new RuntimeException(op + ": glError " + error); + } + } + + private static final int FLOAT_SIZE_BYTES = 4; + private static final int VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES; + private static final int VERTICES_DATA_POS_OFFSET = 0; + private static final int VERTICES_DATA_UV_OFFSET = 3; + private final float[] mVerticesData = { + // X, Y, Z, U, V + -1.25f, -1.0f, 0, 0.f, 0.f, + 1.25f, -1.0f, 0, 1.f, 0.f, + -1.25f, 1.0f, 0, 0.f, 1.f, + 1.25f, 1.0f, 0, 1.f, 1.f, + }; + + private FloatBuffer mVertices; + + private final String mVertexShader = + "uniform mat4 uMVPMatrix;\n" + + "uniform mat4 uSTMatrix;\n" + + "attribute vec4 aPosition;\n" + + "attribute vec4 aTextureCoord;\n" + + "varying vec2 vTextureCoord;\n" + + "void main() {\n" + + " gl_Position = uMVPMatrix * aPosition;\n" + + " vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" + + "}\n"; + + private final String mFragmentShader = + "#extension GL_OES_EGL_image_external : require\n" + + "precision mediump float;\n" + + "varying vec2 vTextureCoord;\n" + + "uniform samplerExternalOES sTexture;\n" + + "void main() {\n" + + " gl_FragColor = texture2D(sTexture, vTextureCoord);\n" + + "}\n"; + + private float[] mMVPMatrix = new float[16]; + private float[] mProjMatrix = new float[16]; + private float[] mMMatrix = new float[16];// 鍏蜂綋鐗╀綋鐨�3D鍙樻崲鐭╅樀锛屽寘鎷棆杞�佸钩绉汇�佺缉鏀� + + private float[] mVMatrix = new float[16]; + private float[] mSTMatrix = new float[16]; + + private int mProgram; + private int mTextureID; + private int muMVPMatrixHandle; + private int muSTMatrixHandle; + private int maPositionHandle; + private int maTextureHandle; + + private float mRatio = 1.0f; + private SurfaceTexture mSurface; + private boolean updateSurface = false; + private long mLastTime = -1; + private long mRunTime = 0; + + private static final String TAG = "MyRenderer"; + + // Magic key + private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65; + + public SurfaceTexture getSurfaceTexture() { + return mSurface; + } +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/SingleSelectionPopup.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/SingleSelectionPopup.java new file mode 100644 index 0000000..6b5aee9 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/SingleSelectionPopup.java @@ -0,0 +1,141 @@ +package cn.com.basic.face.widget; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.MyWheelAdapter; +import cn.com.basic.face.listeners.OkButtonClickedListener; +import com.wx.wheelview.widget.WheelView; + +import java.util.ArrayList; +import java.util.List; + +import cn.com.basic.face.discern.entity.Dictionary; + +/** + * Created by Sinoe on 2017/2/27. + */ + +public class SingleSelectionPopup extends PopupWindow implements View.OnClickListener,WheelView.OnWheelItemSelectedListener{ + private View view; + private TextView mTvConfirm,mTvCancel,mTvTitle; + private List mList; + private WheelView mWheelView; + private Context mContext; + public SingleSelectionPopup(Context context, List mList,String mTitle) { + this.mContext = context; + view = LayoutInflater.from(context).inflate(R.layout.pop_single_selection,null); + this.mList = mList; + mTvTitle = (TextView) view.findViewById(R.id.pop_single_title); + if (mTitle !=null && mTitle.length() > 0){ + mTvTitle.setText(mTitle); + }else { + mTvTitle.setText("鏍囬"); + } + mWheelView = (WheelView) view.findViewById(R.id. pop_single_wheel); + mWheelView.setOnWheelItemSelectedListener(this); + mTvCancel = (TextView) view.findViewById(R.id.pop_single_cancel); + mTvConfirm = (TextView) view.findViewById(R.id.pop_single_confirm); + mTvCancel.setOnClickListener(this); + mTvConfirm.setOnClickListener(this); + mWheelView.setWheelAdapter(new MyWheelAdapter(context)); + mWheelView.setSkin(WheelView.Skin.Holo); + if (mList != null && mList.size() > 0) { + mWheelView.setWheelData(mList); + } + mWheelView.setWheelSize(5); + mWheelView.setBackgroundResource(R.color.colorBackground); + WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); + style.selectedTextColor = Color.parseColor("#11c3e3"); + style.textColor = Color.parseColor("#bcc6cf"); + style.selectedTextSize = 22; + style.textSize = 16; + style.holoBorderColor = Color.parseColor("#11c3e3"); + mWheelView.setStyle(style); + + //澶栭儴鍙偣鍑� + setOutsideTouchable(true); + + view.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + View popLayout = view.findViewById(R.id.pop_single_ll); + int top = popLayout.getTop(); + int bottom = popLayout.getBottom(); + int left = popLayout.getLeft(); + int right = popLayout.getRight(); + int y = (int) motionEvent.getY(); + int x = (int) motionEvent.getX(); + if (motionEvent.getAction() == MotionEvent.ACTION_UP){ + if (y<top || y> bottom){ + dismiss(); + } + if (x < left || x > right){ + dismiss(); + } + + } + return true; + } + }); + + /* + 璁剧疆绐楀彛鐗瑰緛 + */ + //璁剧疆瑙嗗浘 + this.setContentView(this.view); + //璁剧疆绐楀彛瀹介珮 + this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); + this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); + //璁剧疆寮瑰嚭绐楀彛鍙偣鍑� + this.setFocusable(true); + //瀹炰緥鍖朇olor + ColorDrawable colorDrawable = new ColorDrawable(0x7f000000); + this.setBackgroundDrawable(colorDrawable); + this.setAnimationStyle(R.style.PopupAnimation); + } + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.pop_single_cancel: + dismiss(); + break; + case R.id.pop_single_confirm: + for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { + if (mWheelView.getCurrentPosition() >= 0) { + Object o = mList.get(mWheelView.getCurrentPosition()); + String item = ""; + if (o instanceof Dictionary) { + item = ((Dictionary) o).getName(); + } else { + item = o+""; + } + okButtonClickedListener.onItemSelected(mWheelView.getCurrentPosition(), o, item); + } + } + dismiss(); + break; + } + } + + @Override + public void onItemSelected(int position, Object o) { + //Toast.makeText(mContext,mList.get(position),Toast.LENGTH_SHORT).show(); + } + + private List<OkButtonClickedListener> okButtonClickedListeners = new ArrayList<OkButtonClickedListener>(); + + public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) { + this.okButtonClickedListeners.add(okButtonClickedListener); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitPurposePopup.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitPurposePopup.java new file mode 100644 index 0000000..f9a1fa6 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitPurposePopup.java @@ -0,0 +1,144 @@ +package cn.com.basic.face.widget; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; +import cn.com.basic.face.adapter.MyWheelAdapter; +import cn.com.basic.face.listeners.OkButtonClickedListener; +import com.wx.wheelview.widget.WheelView; + +import java.util.ArrayList; +import java.util.List; + +import cn.com.basic.face.discern.entity.Dictionary; + +/** + * Created by Sinoe on 2017/2/27. + */ + +public class VisitPurposePopup extends PopupWindow implements View.OnClickListener,WheelView.OnWheelItemSelectedListener{ + private View view; + private TextView mTvConfirm,mTvCancel,mTvTitle; + private List mList; + private WheelView mWheelView; + private Context mContext; + public VisitPurposePopup(Context context, List mList, String mTitle) { + this.mContext = context; + view = LayoutInflater.from(context).inflate(R.layout.visit_purpose_popup,null); + this.mList = mList; + mTvTitle = (TextView) view.findViewById(R.id.pop_single_title); + if (mTitle !=null && mTitle.length() > 0){ + mTvTitle.setText(mTitle); + }else { + mTvTitle.setText("鏍囬"); + } + mWheelView = (WheelView) view.findViewById(R.id. pop_single_wheel); + mWheelView.setOnWheelItemSelectedListener(this); + mTvCancel = (TextView) view.findViewById(R.id.pop_single_cancel); + mTvConfirm = (TextView) view.findViewById(R.id.pop_single_confirm); + mTvCancel.setOnClickListener(this); + mTvConfirm.setOnClickListener(this); + mWheelView.setWheelAdapter(new MyWheelAdapter(context)); + mWheelView.setSkin(WheelView.Skin.Holo); + if (mList != null && mList.size() > 0) { + mWheelView.setWheelData(mList); + } + mWheelView.setWheelSize(5); + mWheelView.setBackgroundResource(R.color.colorBackground); + WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); + style.selectedTextColor = Color.parseColor("#11c3e3"); + style.textColor = Color.parseColor("#bcc6cf"); + style.selectedTextSize = 22; + style.textSize = 16; + style.holoBorderColor = Color.parseColor("#11c3e3"); + mWheelView.setStyle(style); + + //澶栭儴鍙偣鍑� + setOutsideTouchable(true); + + view.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + View popLayout = view.findViewById(R.id.pop_single_ll); + int top = popLayout.getTop(); + int bottom = popLayout.getBottom(); + int left = popLayout.getLeft(); + int right = popLayout.getRight(); + int y = (int) motionEvent.getY(); + int x = (int) motionEvent.getX(); + if (motionEvent.getAction() == MotionEvent.ACTION_UP){ + if (y<top || y> bottom){ + dismiss(); + } + if (x < left || x > right){ + dismiss(); + } + + } + return true; + } + }); + + /* + 璁剧疆绐楀彛鐗瑰緛 + */ + //璁剧疆瑙嗗浘 + this.setContentView(this.view); + //璁剧疆绐楀彛瀹介珮 + this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT); + this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT); + //璁剧疆寮瑰嚭绐楀彛鍙偣鍑� + this.setFocusable(true); + //瀹炰緥鍖朇olor + ColorDrawable colorDrawable = new ColorDrawable(0x7f000000); + this.setBackgroundDrawable(colorDrawable); + this.setAnimationStyle(R.style.PopupAnimation); + } + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.pop_single_cancel: + dismiss(); + break; + case R.id.pop_single_add: + dismiss(); + break; + case R.id.pop_single_confirm: + for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { + if (mWheelView.getCurrentPosition() >= 0) { + Object o = mList.get(mWheelView.getCurrentPosition()); + String item = ""; + if (o instanceof Dictionary) { + item = ((Dictionary) o).getName(); + } else { + item = o+""; + } + okButtonClickedListener.onItemSelected(mWheelView.getCurrentPosition(), o, item); + } + } + dismiss(); + break; + } + } + + @Override + public void onItemSelected(int position, Object o) { + //Toast.makeText(mContext,mList.get(position),Toast.LENGTH_SHORT).show(); + } + + private List<OkButtonClickedListener> okButtonClickedListeners = new ArrayList<OkButtonClickedListener>(); + + public void addOkButtonClickedListener(OkButtonClickedListener okButtonClickedListener) { + this.okButtonClickedListeners.add(okButtonClickedListener); + } + +} diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitorView.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitorView.java new file mode 100644 index 0000000..5eee3b0 --- /dev/null +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/VisitorView.java @@ -0,0 +1,58 @@ +package cn.com.basic.face.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bsk.zhangbo.demoforbsk.R; + +import static cn.com.basic.face.util.Constant.VISITOR_TO; + +/** + * Created by Sinoe on 2017/2/22. + */ + +public class VisitorView extends LinearLayout{ + private Context mContext; + private TextView mTvTitle,mTvPhone,mTvCompany,mTvCardId,mTvDepartment,mTvWork,mBtnLandline,mBtnMobile; + private LinearLayout mLayoutTo,mLayoutFrom; + public VisitorView(Context context) { + super(context); + } + + public VisitorView(Context context, AttributeSet attrs) { + super(context, attrs); + this.mContext = context; + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + inflater.inflate(R.layout.view_visitor,this); + mLayoutTo = (LinearLayout) findViewById(R.id.visitor_to_ll); + mLayoutFrom = (LinearLayout) findViewById(R.id.visitor_from_ll); + mTvTitle = (TextView) findViewById(R.id.visitor_title); + } + + /** + * 璁剧疆绫诲瀷 + * @param type + */ + public void setType(int type){ + if (type == VISITOR_TO){ + mLayoutTo.setVisibility(VISIBLE); + mLayoutFrom.setVisibility(GONE); + }else { + mLayoutTo.setVisibility(GONE); + mLayoutFrom.setVisibility(VISIBLE); + } + } + + /** + * 璁剧疆鏍囬 + * @param title + */ + public void setTitle(String title){ + mTvTitle.setText(title); + } + + +} -- Gitblit v1.8.0