From db2c035c3406d310af30094ec2bbf55ab396bf83 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期二, 01 八月 2017 18:25:46 +0800
Subject: [PATCH] 

---
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/thread/StartCameraThread.java      |   44 ++++++++++++++++++++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java             |    8 ++++
 VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml                                       |    1 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java |   36 +++++++-----------
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java       |    8 ++++
 5 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml b/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
index 11fab83..ddc924b 100644
--- a/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
+++ b/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
@@ -21,7 +21,6 @@
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
-
     <application
         android:name="cn.com.basic.face.base.BaseApplication"
         android:allowBackup="true"
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
index e370a78..d2eb97a 100644
--- 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
@@ -112,6 +112,14 @@
     private DeviceQueryItem camera1;
     private DeviceQueryItem camera2;
 
+    public DeviceQueryItem getCamera2() {
+        return camera2;
+    }
+
+    public DeviceQueryItem getCamera1() {
+        return camera1;
+    }
+
     public void clearAll() {
         fragment_device_left_wifi_check_box.setChecked(false);
         fragment_device_left_lan_check_box.setChecked(false);
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
index 8f85a83..d4910ea 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
@@ -22,6 +22,7 @@
 import cn.com.basic.face.base.MainActivity;
 import cn.com.basic.face.discern.common.CommonVariables;
 import cn.com.basic.face.service.DeviceMng;
+import cn.com.basic.face.thread.StartCameraThread;
 import cn.com.basic.face.util.RtspFaceNative;
 
 import cn.com.basic.face.service.SurveillanceMng;
@@ -67,6 +68,8 @@
     @ViewInject(R.id.fragment_surveillance_bottom_linear_layout)
     private LinearLayout fragment_surveillance_bottom_linear_layout;
 
+    StartCameraThread startEnterCameraThread = null;
+    StartCameraThread startExitCameraThread = null;
 
     static boolean useNative = false;
 
@@ -181,8 +184,6 @@
         if (CommonVariables.FACE_SERVER) {
             fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mPreview);
             fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mDraw);
-            //fragment_supervisory_exit_camera_relative_layout.setVisibility(View.GONE);
-            //fragment_surveillance_bottom_linear_layout.setVisibility(View.GONE);
         }
         fragment_supervisory_enter_camera.getHolder().addCallback(new SurfaceHolder.Callback() {
             public void surfaceCreated(SurfaceHolder holder) {
@@ -190,37 +191,28 @@
                     new SurveillancePhotoEmulateThread().start();
                 }
                 if (useNative) {
-                    RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.IN), fragment_supervisory_enter_camera.getHolder().getSurface());
-                    RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.IN), DeviceMng.getInstance().getCamera1Address());
-                    RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.IN), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
+                    synchronized (MainActivity.getInstance()) {
+                        startEnterCameraThread = new StartCameraThread(Integer.parseInt(CommonVariables.Camera.IN), fragment_supervisory_enter_camera.getHolder().getSurface());
+                        startEnterCameraThread.start();
+                    }
                 }
             }
 
             public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
-            public void surfaceDestroyed(SurfaceHolder holder) {
-                System.out.println("surfaceDestroyed");
-            }
+            public void surfaceDestroyed(SurfaceHolder holder) { }
         });
         fragment_supervisory_exit_camera.getHolder().addCallback(new SurfaceHolder.Callback() {
             public void surfaceCreated(SurfaceHolder holder) {
                 if (useNative) {
-                    RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.OUT), fragment_supervisory_exit_camera.getHolder().getSurface());
-                    RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.OUT), DeviceMng.getInstance().getCamera2Address());
-                    RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.OUT), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
+                    synchronized (MainActivity.getInstance()) {
+                        startEnterCameraThread = new StartCameraThread(Integer.parseInt(CommonVariables.Camera.OUT), fragment_supervisory_exit_camera.getHolder().getSurface());
+                        startEnterCameraThread.start();
+                    }
                 }
             }
 
-            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-                System.out.print("width="+width+",height="+height);
-//                if (useNative) {
-//                    RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.IN), fragment_supervisory_enter_camera.getHolder().getSurface());
-//                    RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.IN), DeviceMng.getInstance().getCamera1Address());
-//                    RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.IN), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
-//                }
-            }
-            public void surfaceDestroyed(SurfaceHolder holder) {
-                System.out.println("surfaceDestroyed");
-            }
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { }
+            public void surfaceDestroyed(SurfaceHolder holder) { }
         });
         new SurveillanceMng.SurveillanceListThread().start();
     }
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
index 297acfa..ce58361 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
@@ -233,6 +233,10 @@
         String password = "admin12345";
         String ip = "192.168.1.70";
         String port = "554";
+        DeviceQueryItem camera2 = DeviceFragment.getInstance().getCamera2();
+        if (camera2 != null) {
+            return "rtsp://admin:admin12345@"+camera2.getIp()+":554/h264/ch1/main/av_stream";
+        }
         return "rtsp://admin:admin12345@192.168.1.202:554/h264/ch1/main/av_stream";
     }
 
@@ -241,6 +245,10 @@
         String password = "a1234567";
         String ip = "192.168.1.68";
         String port = "554";
+        DeviceQueryItem camera1 = DeviceFragment.getInstance().getCamera1();
+        if (camera1 != null) {
+            return "rtsp://admin:admin12345@"+camera1.getIp()+":554/h264/ch1/main/av_stream";
+        }
         return "rtsp://admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream";
     }
 
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/thread/StartCameraThread.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/thread/StartCameraThread.java
new file mode 100644
index 0000000..abcf158
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/thread/StartCameraThread.java
@@ -0,0 +1,44 @@
+package cn.com.basic.face.thread;
+
+import android.view.Surface;
+
+import cn.com.basic.face.discern.common.CommonVariables;
+import cn.com.basic.face.discern.query.item.DeviceQueryItem;
+import cn.com.basic.face.fragment.DeviceFragment;
+import cn.com.basic.face.service.DeviceMng;
+import cn.com.basic.face.util.RtspFaceNative;
+
+public class StartCameraThread extends Thread {
+
+    private int inOrOutCamera;
+    private Surface surface;
+
+    public StartCameraThread(int inOrOutCamera, Surface surface) {
+        this.inOrOutCamera = inOrOutCamera;
+        this.surface = surface;
+    }
+
+    @Override
+    public void run() {
+        while (true) {
+            try {
+                DeviceQueryItem camera1 = DeviceFragment.getInstance().getCamera1();
+                DeviceQueryItem camera2 = DeviceFragment.getInstance().getCamera2();
+                if(camera1 != null && camera2 != null) {
+                    RtspFaceNative.setSurface(inOrOutCamera, surface);
+                    if(inOrOutCamera == Integer.parseInt(CommonVariables.Camera.IN)) {
+                        RtspFaceNative.createPlayer(inOrOutCamera, DeviceMng.getInstance().getCamera1Address());
+                    } else {
+                        RtspFaceNative.createPlayer(inOrOutCamera, DeviceMng.getInstance().getCamera2Address());
+                    }
+                    RtspFaceNative.setFaceCallback(inOrOutCamera, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
+                    break;
+                }
+                Thread.sleep(10*1000);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+}

--
Gitblit v1.8.0