VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/BaseCommonCallBack.java
@@ -1,8 +1,11 @@ package cn.com.basic.face.discern.common; import android.widget.Toast; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.bsk.zhangbo.demoforbsk.base.BaseApplication; import org.xutils.common.Callback; @@ -56,7 +59,7 @@ @Override public void onError(Throwable ex, boolean isOnCallback) { System.out.print("hello"); Toast.makeText(BaseApplication.getApplication(), "网络连接失败", Toast.LENGTH_SHORT ).show(); } @Override VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
@@ -42,7 +42,9 @@ public class DictionaryType { public static final String SEX = "sex"; } public static final String CREDENTIALS = "credentials"; public static final String NATION = "nation"; } } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/base/BaseApplication.java
@@ -2,6 +2,9 @@ import android.app.Application; import com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service.DictionaryService; import com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service.VisitorTypeService; import com.bsk.zhangbo.demoforbsk.util.RtspFaceNative; import com.facebook.drawee.backends.pipeline.Fresco; import com.lzy.okhttputils.OkHttpUtils; import com.lzy.okhttputils.model.HttpHeaders; @@ -14,12 +17,22 @@ */ public class BaseApplication extends Application{ private static BaseApplication application; public static BaseApplication getApplication() { return application; } @Override public void onCreate() { super.onCreate(); x.Ext.init(this); Fresco.initialize(this); initOkHttpUtils(); application = this; DictionaryService.loadAllDictionaryData(); VisitorTypeService.loadAll(); } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/base/BaseFragment.java
@@ -32,7 +32,6 @@ return this.view; } /** * 跳转到指定的Activity * VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/com/bsk/zhangbo/demoforbsk/service/DictionaryService.java
New file @@ -0,0 +1,112 @@ package com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service; import com.bsk.zhangbo.demoforbsk.util.AppApi; import net.sourceforge.pinyin4j.PinyinHelper; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import cn.com.basic.face.discern.common.BaseCommonCallBack; import cn.com.basic.face.discern.common.CommonVariables; import cn.com.basic.face.discern.entity.Dictionary; import cn.com.basic.face.discern.query.item.VistorTypeQueryItem; public class DictionaryService { 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 Map<String, String> idMap = new HashMap<String, 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 void loadAllDictionaryData() { loadNation(); loadCredentialsList(); loadSexList(); } public static String getPinYinFirstLetter(String str) { StringBuffer sb = new StringBuffer(); try { sb.setLength(0); char c = str.charAt(0); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c); if (pinyinArray != null) { sb.append(pinyinArray[0].charAt(0)); } else { sb.append(c); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } public static void loadNation() { RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST); params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.NATION); 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 captialLetter = item.getRemark();//getPinYinFirstLetter(nation.getName()).toUpperCase(); List list = countryData.get(captialLetter); if (list == null) { list = new ArrayList(); countryData.put(captialLetter, list); countryWordList.add(0, captialLetter); } list.add(item.getName()); countryWordData[i] = item.getName(); i++; } } }); } public static 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()); } } }); } private static 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()); } } }); } public static String getId(String name) { return idMap.get(name); } } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/com/bsk/zhangbo/demoforbsk/service/VisitorTypeService.java
New file @@ -0,0 +1,48 @@ package com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service; import com.bsk.zhangbo.demoforbsk.util.AppApi; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; 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 VisitorTypeService { public static List<String> mVisitorTypeList; public static Map<String, String> idMap = new HashMap<String, String>(); public static void loadAll() { loadVisitorTypeList(); } private static 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()+""); } } }); } public static String getId(String name) { return idMap.get(name); } } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/ui/fragment/OneFragment.java
@@ -4,6 +4,7 @@ import android.graphics.Rect; import android.graphics.SurfaceTexture; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; @@ -16,12 +17,14 @@ import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import android.widget.VideoView; import com.bsk.zhangbo.demoforbsk.R; import com.bsk.zhangbo.demoforbsk.adapter.MyFragmentPagerAdapter; import com.bsk.zhangbo.demoforbsk.adapter.OneBottomRecylerViewAdapter; import com.bsk.zhangbo.demoforbsk.base.BaseFragment; import com.bsk.zhangbo.demoforbsk.ui.activity.TestARGB8888Activity; import com.bsk.zhangbo.demoforbsk.util.RtspFaceNative; import com.bsk.zhangbo.demoforbsk.util.WindowsUtil; import com.bsk.zhangbo.demoforbsk.widget.MyGLSurfaceView; import com.camnter.easyrecyclerview.widget.EasyRecyclerView; @@ -31,6 +34,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; /** @@ -46,7 +50,6 @@ private List mList; private EasyRecyclerView mRecyclerViewRegister, mRecyclerViewUser; //播放 String mSourceString = "clips/testfile.mp4"; @@ -56,41 +59,18 @@ SurfaceHolder mSurfaceHolder1; VideoSink mSelectedVideoSink; VideoSink mNativeCodecPlayerVideoSink; SurfaceHolderVideoSink mSurfaceHolder1VideoSink; VideoSink mNativeCodecPlayerVideoSink; GLViewVideoSink mGLView1VideoSink; boolean mCreated = false; boolean mIsPlaying = false; // SurfaceHolderVideoSink mSurfaceHolder1VideoSink; // VideoSink mSelectedVideoSink; // VideoSink mNativeCodecPlayerVideoSink; // SurfaceView mSurfaceView1; // SurfaceHolder mSurfaceHolder1; // boolean mCreated = false; // boolean mIsPlaying = false; // String mSourceString = "clips/testfile.mp4"; /** * Native methods, implemented in jni folder */ // public static native void createEngine(); // // public static native boolean createStreamingMediaPlayer(AssetManager assetMgr, String filename); // // public static native void setPlayingStreamingMediaPlayer(boolean isPlaying); // // public static native void shutdown(); // // public static native void setSurface(Surface surface); // // public static native void rewindStreamingMediaPlayer(); /** Load jni .so on initialization */ static { //System.loadLibrary("native-codec-jni");//xiuxi System.loadLibrary("rtspface");//xiuxi } @@ -122,6 +102,15 @@ mGLView1 = (MyGLSurfaceView) view.findViewById(R.id.surfaceview2); mSurfaceView1 = (SurfaceView) view.findViewById(R.id.surfaceview1); RtspFaceNative.init(); try { Thread.sleep(3000); }catch (Exception e) { e.printStackTrace(); } RtspFaceNative.setSurface(1, mSurfaceView1.getHolder().getSurface()); RtspFaceNative.setSurface(2, mGLView1.getHolder().getSurface()); mSurfaceHolder1 = mSurfaceView1.getHolder(); mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() { @@ -144,10 +133,10 @@ }); //surfaceview // if (mSurfaceHolder1VideoSink == null) { // mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1); // } // mSelectedVideoSink = mSurfaceHolder1VideoSink; if (mSurfaceHolder1VideoSink == null) { mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1); } mSelectedVideoSink = mSurfaceHolder1VideoSink; //openGL @@ -170,16 +159,22 @@ return; } mSelectedVideoSink.useAsSinkForNative(); mSurfaceHolder1VideoSink.useAsSinkForNative(); //mSelectedVideoSink.useAsSinkForNative(); //mSurfaceHolder1VideoSink.useAsSinkForNative(); mNativeCodecPlayerVideoSink = mSelectedVideoSink; } if (mSourceString != null) { mCreated = createStreamingMediaPlayer(getResources().getAssets(), mSourceString); //mCreated = createStreamingMediaPlayer(getResources().getAssets(), // mSourceString); 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"); } } if (mCreated) { mIsPlaying = !mIsPlaying; setPlayingStreamingMediaPlayer(mIsPlaying); //setPlayingStreamingMediaPlayer(mIsPlaying); } @@ -188,7 +183,7 @@ } } }); //thread.start();//xiuxi thread.start();//xiuxi } @Override @@ -253,14 +248,17 @@ if (mCreated && mNativeCodecPlayerVideoSink != mSelectedVideoSink) { // shutdown and recreate on other surface Log.i("@@@", "shutting down player"); shutdown(); RtspFaceNative.shutdown(1); mCreated = false; mSelectedVideoSink.useAsSinkForNative(); mNativeCodecPlayerVideoSink = mSelectedVideoSink; if (mSourceString != null) { Log.i("@@@", "recreating player"); mCreated = createStreamingMediaPlayer(getResources().getAssets(), mSourceString); //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"); } } } @@ -287,30 +285,11 @@ */ @Override public void onDestroy() { shutdown(); RtspFaceNative.shutdown(1); mCreated = false; super.onDestroy(); } /** * Native methods, implemented in jni folder */ // public static native void createEngine(); public static native boolean createStreamingMediaPlayer(AssetManager assetMgr, String filename); public static native void setPlayingStreamingMediaPlayer(boolean isPlaying); public static native void shutdown(); public static native void setSurface(Surface surface); public static native void rewindStreamingMediaPlayer(); /** Load jni .so on initialization */ static { //System.loadLibrary("native-codec-jni");//xiuxi } // VideoSink abstracts out the difference between Surface and SurfaceTexture // aka SurfaceHolder and GLSurfaceView @@ -339,7 +318,13 @@ void useAsSinkForNative() { Surface s = mSurfaceHolder.getSurface(); Log.i("@@@", "setting surface " + s); setSurface(s); RtspFaceNative.setSurface(1, s); /*SurfaceTexture st = mSurfaceHolder.getSurfaceTexture(); Surface s = new Surface(st); RtspFaceNative.setSurface(2, s); s.release();*/ } } @@ -361,7 +346,7 @@ void useAsSinkForNative() { SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture(); Surface s = new Surface(st); setSurface(s); RtspFaceNative.setSurface(2, s); s.release(); } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/ui/fragment/RegisterFragment.java
@@ -7,10 +7,11 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.bsk.zhangbo.demoforbsk.R; import com.bsk.zhangbo.demoforbsk.base.BaseFragment; import com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service.DictionaryService; import com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service.VisitorTypeService; import com.bsk.zhangbo.demoforbsk.listeners.OkButtonClickedListener; import com.bsk.zhangbo.demoforbsk.util.AppApi; import com.bsk.zhangbo.demoforbsk.widget.BirthdayPickerDialog; @@ -42,6 +43,7 @@ private List mSexList; private List mVisitorTypeList; private List mCredentialsList; private List mNationList; private LinearLayout mBaseLayout; private int mNowYear; private int mNowMonth; @@ -125,47 +127,10 @@ @Override protected void initData() { loadVisitorTypeList(); loadSexList(); loadCredentialsList(); } private void loadCredentialsList() { mCredentialsList = new ArrayList<>(); mCredentialsList.add("名片"); mCredentialsList.add("身份证"); mViewIdClassContent.setText(""+mCredentialsList.get(0)); } 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() { mSexList = getList(Dictionary.class); mViewVisitorClassContent.setText(((Dictionary)mSexList.get(0)).getName()+""); } }); } 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>(); mViewVisitorClassContent.setText(items.get(0).getLabel()); for (VistorTypeQueryItem item : items) { mVisitorTypeList.add(item.getLabel()); } } }); mVisitorTypeList = VisitorTypeService.mVisitorTypeList; mSexList = DictionaryService.mSexList; mCredentialsList = DictionaryService.mCredentialsList; mNationList = DictionaryService.nationList; } @Override VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/util/RtspFaceNative.java
New file @@ -0,0 +1,23 @@ package com.bsk.zhangbo.demoforbsk.util; import android.content.res.AssetManager; 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); } VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/widget/CountrySelectionPopup.java
@@ -19,15 +19,26 @@ import com.bsk.zhangbo.demoforbsk.R; import com.bsk.zhangbo.demoforbsk.adapter.MyWheelAdapter; import com.bsk.zhangbo.demoforbsk.com.bsk.zhangbo.demoforbsk.service.DictionaryService; import com.bsk.zhangbo.demoforbsk.listeners.OkButtonClickedListener; import com.bsk.zhangbo.demoforbsk.util.AppApi; import com.bsk.zhangbo.demoforbsk.util.CountryPresenter; import com.wx.wheelview.widget.WheelView; import net.sourceforge.pinyin4j.PinyinHelper; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.ArrayList; import java.util.Arrays; 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; /** * Created by Sinoe on 2017/2/28. @@ -44,6 +55,7 @@ private CountryPresenter countryPresenter; public CountrySelectionPopup(Context context) { this.mContext = context; countryPresenter = new CountryPresenter(context); view = LayoutInflater.from(context).inflate(R.layout.pop_country, null); @@ -56,9 +68,10 @@ mTvCancel.setOnClickListener(this); mTvConfirm.setOnClickListener(this); String[] countryWordData = countryPresenter.getCountryWordData(); countryWordList = Arrays.asList(countryWordData); countryData = countryPresenter.getCountryData(); String[] countryWordData = DictionaryService.countryWordData; countryWordList = DictionaryService.countryWordList; countryData = DictionaryService.countryData; countryList = countryData.get(countryWordList.get(mWheelViewTitle.getSelection())); mWheelViewTitle.setWheelAdapter(new MyWheelAdapter(context)); @@ -125,9 +138,14 @@ if (view instanceof AppCompatTextView) { if (((AppCompatTextView) view).getText().equals("确认")) { for (OkButtonClickedListener okButtonClickedListener : okButtonClickedListeners) { countryList = countryData.get(countryWordList.get(mWheelViewTitle.getCurrentPosition())); okButtonClickedListener.onItemSelected(0, null, countryList.get(mWheelViewName.getCurrentPosition())); 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(); } } @@ -144,7 +162,6 @@ mWheelViewTitle.joinDatas(countryData); mWheelViewName.setWheelData(countryList); } private List<OkButtonClickedListener> okButtonClickedListeners = new ArrayList<OkButtonClickedListener>(); VisitFace/DemoForBsk/app/src/main/java/com/bsk/zhangbo/demoforbsk/widget/SingleSelectionPopup.java
@@ -49,7 +49,9 @@ mTvConfirm.setOnClickListener(this); mWheelView.setWheelAdapter(new MyWheelAdapter(context)); mWheelView.setSkin(WheelView.Skin.Holo); mWheelView.setWheelData(mList); if (mList != null && mList.size() > 0) { mWheelView.setWheelData(mList); } mWheelView.setWheelSize(5); mWheelView.setBackgroundResource(R.color.colorBackground); WheelView.WheelViewStyle style = new WheelView.WheelViewStyle(); VisitFace/DemoForBsk/app/src/main/res/layout/fragment_one.xml
@@ -16,10 +16,15 @@ android:layout_height="match_parent" android:layout_weight="1" > <SurfaceView <!--<SurfaceView android:id="@+id/surfaceview1" android:layout_width="match_parent" android:layout_height="match_parent"/> --> <SurfaceView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/surfaceview1" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="@dimen/view_size_50"