├── .gitignore ├── .idea ├── .name ├── codeStyleSettings.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dictionaries │ └── Liang.xml ├── encodings.xml ├── gradle.xml ├── libraries │ ├── animated_vector_drawable_23_2_1.xml │ ├── appcompat_v7_23_2_1.xml │ ├── core_3_2_1.xml │ ├── support_annotations_23_2_1.xml │ ├── support_v4_23_2_1.xml │ └── support_vector_drawable_23_2_1.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── CamServer ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs └── src │ ├── ServerMain.java │ ├── Utility.java │ └── com │ ├── gl │ └── shared │ │ └── Data.java │ └── yjm │ └── shared │ └── Data.java ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── gl │ │ ├── camera │ │ ├── model │ │ │ ├── MyCamera.java │ │ │ └── MyCameraEx.java │ │ ├── service │ │ │ ├── CameraApplication.java │ │ │ ├── FloatWindowService.java │ │ │ └── NetworkChangeReceiver.java │ │ ├── util │ │ │ ├── BitmapUtility.java │ │ │ └── Preference.java │ │ └── view │ │ │ ├── FloatWindowSmallView.java │ │ │ ├── MainActivity.java │ │ │ └── MyWindowManager.java │ │ └── shared │ │ └── Data.java │ ├── jniLibs │ ├── armeabi-v7a │ │ ├── libopencv_calib3d.a │ │ ├── libopencv_core.a │ │ ├── libopencv_features2d.a │ │ ├── libopencv_flann.a │ │ ├── libopencv_highgui.a │ │ ├── libopencv_imgcodecs.a │ │ ├── libopencv_imgproc.a │ │ ├── libopencv_java3.so │ │ ├── libopencv_ml.a │ │ ├── libopencv_objdetect.a │ │ ├── libopencv_photo.a │ │ ├── libopencv_shape.a │ │ ├── libopencv_stitching.a │ │ ├── libopencv_superres.a │ │ ├── libopencv_ts.a │ │ ├── libopencv_video.a │ │ ├── libopencv_videoio.a │ │ └── libopencv_videostab.a │ └── x86 │ │ ├── libopencv_calib3d.a │ │ ├── libopencv_core.a │ │ ├── libopencv_features2d.a │ │ ├── libopencv_flann.a │ │ ├── libopencv_highgui.a │ │ ├── libopencv_imgcodecs.a │ │ ├── libopencv_imgproc.a │ │ ├── libopencv_java3.so │ │ ├── libopencv_ml.a │ │ ├── libopencv_objdetect.a │ │ ├── libopencv_photo.a │ │ ├── libopencv_shape.a │ │ ├── libopencv_stitching.a │ │ ├── libopencv_superres.a │ │ ├── libopencv_video.a │ │ ├── libopencv_videoio.a │ │ └── libopencv_videostab.a │ └── res │ ├── layout │ ├── activity_main.xml │ ├── float_window.xml │ ├── view_face_detection.xml │ └── view_quality.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── import-summary.txt ├── openCVLibrary310 ├── build.gradle ├── lint.xml └── src │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ └── org │ │ └── opencv │ │ └── engine │ │ └── OpenCVEngineInterface.aidl │ ├── java │ └── org │ │ └── opencv │ │ ├── android │ │ ├── AsyncServiceHelper.java │ │ ├── BaseLoaderCallback.java │ │ ├── Camera2Renderer.java │ │ ├── CameraBridgeViewBase.java │ │ ├── CameraGLRendererBase.java │ │ ├── CameraGLSurfaceView.java │ │ ├── CameraRenderer.java │ │ ├── FpsMeter.java │ │ ├── InstallCallbackInterface.java │ │ ├── JavaCameraView.java │ │ ├── LoaderCallbackInterface.java │ │ ├── OpenCVLoader.java │ │ ├── StaticHelper.java │ │ └── Utils.java │ │ ├── calib3d │ │ ├── Calib3d.java │ │ ├── StereoBM.java │ │ ├── StereoMatcher.java │ │ └── StereoSGBM.java │ │ ├── core │ │ ├── Algorithm.java │ │ ├── Core.java │ │ ├── CvException.java │ │ ├── CvType.java │ │ ├── DMatch.java │ │ ├── KeyPoint.java │ │ ├── Mat.java │ │ ├── MatOfByte.java │ │ ├── MatOfDMatch.java │ │ ├── MatOfDouble.java │ │ ├── MatOfFloat.java │ │ ├── MatOfFloat4.java │ │ ├── MatOfFloat6.java │ │ ├── MatOfInt.java │ │ ├── MatOfInt4.java │ │ ├── MatOfKeyPoint.java │ │ ├── MatOfPoint.java │ │ ├── MatOfPoint2f.java │ │ ├── MatOfPoint3.java │ │ ├── MatOfPoint3f.java │ │ ├── MatOfRect.java │ │ ├── Point.java │ │ ├── Point3.java │ │ ├── Range.java │ │ ├── Rect.java │ │ ├── RotatedRect.java │ │ ├── Scalar.java │ │ ├── Size.java │ │ └── TermCriteria.java │ │ ├── features2d │ │ ├── DescriptorExtractor.java │ │ ├── DescriptorMatcher.java │ │ ├── FeatureDetector.java │ │ └── Features2d.java │ │ ├── imgcodecs │ │ └── Imgcodecs.java │ │ ├── imgproc │ │ ├── CLAHE.java │ │ ├── Imgproc.java │ │ ├── LineSegmentDetector.java │ │ ├── Moments.java │ │ └── Subdiv2D.java │ │ ├── ml │ │ ├── ANN_MLP.java │ │ ├── Boost.java │ │ ├── DTrees.java │ │ ├── EM.java │ │ ├── KNearest.java │ │ ├── LogisticRegression.java │ │ ├── Ml.java │ │ ├── NormalBayesClassifier.java │ │ ├── RTrees.java │ │ ├── SVM.java │ │ ├── StatModel.java │ │ └── TrainData.java │ │ ├── objdetect │ │ ├── BaseCascadeClassifier.java │ │ ├── CascadeClassifier.java │ │ ├── HOGDescriptor.java │ │ └── Objdetect.java │ │ ├── photo │ │ ├── AlignExposures.java │ │ ├── AlignMTB.java │ │ ├── CalibrateCRF.java │ │ ├── CalibrateDebevec.java │ │ ├── CalibrateRobertson.java │ │ ├── MergeDebevec.java │ │ ├── MergeExposures.java │ │ ├── MergeMertens.java │ │ ├── MergeRobertson.java │ │ ├── Photo.java │ │ ├── Tonemap.java │ │ ├── TonemapDrago.java │ │ ├── TonemapDurand.java │ │ ├── TonemapMantiuk.java │ │ └── TonemapReinhard.java │ │ ├── utils │ │ └── Converters.java │ │ ├── video │ │ ├── BackgroundSubtractor.java │ │ ├── BackgroundSubtractorKNN.java │ │ ├── BackgroundSubtractorMOG2.java │ │ ├── DenseOpticalFlow.java │ │ ├── DualTVL1OpticalFlow.java │ │ ├── KalmanFilter.java │ │ └── Video.java │ │ └── videoio │ │ ├── VideoCapture.java │ │ ├── VideoWriter.java │ │ └── Videoio.java │ └── res │ └── values │ └── attrs.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | 39 | # Keystore files 40 | *.jks 41 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Camera -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dictionaries/Liang.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | qrcode 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 26 | 27 | -------------------------------------------------------------------------------- /.idea/libraries/animated_vector_drawable_23_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/appcompat_v7_23_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/core_3_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/support_annotations_23_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/support_v4_23_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/support_vector_drawable_23_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /CamServer/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CamServer/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | CamServer 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /CamServer/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.7 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.7 12 | -------------------------------------------------------------------------------- /CamServer/src/ServerMain.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/CamServer/src/ServerMain.java -------------------------------------------------------------------------------- /CamServer/src/Utility.java: -------------------------------------------------------------------------------- 1 | import java.io.File; 2 | import java.io.FileWriter; 3 | import java.io.IOException; 4 | import java.text.SimpleDateFormat; 5 | import java.util.Date; 6 | 7 | 8 | public class Utility { 9 | public static String getNow() { 10 | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ").format(new Date()); 11 | } 12 | 13 | // public static void writeLog(String log) { 14 | // File file = new File("/root"); 15 | // String br; 16 | // if (file.exists()) { 17 | // file = new File("/root/server.log"); 18 | // br = "\n"; 19 | // } else { 20 | // file = new File("D:\\server.log"); 21 | // br = "\r\n"; 22 | // } 23 | // FileWriter fileWriter; 24 | // try { 25 | // fileWriter = new FileWriter(file, true); 26 | // fileWriter.append(getNow() + log + br); 27 | // fileWriter.close(); 28 | // } catch (IOException e) { 29 | // e.printStackTrace(); 30 | // } 31 | // } 32 | } 33 | -------------------------------------------------------------------------------- /CamServer/src/com/gl/shared/Data.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/CamServer/src/com/gl/shared/Data.java -------------------------------------------------------------------------------- /CamServer/src/com/yjm/shared/Data.java: -------------------------------------------------------------------------------- 1 | package com.gl.shared; 2 | 3 | import java.io.ByteArrayInputStream; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.IOException; 6 | import java.io.InputStream; 7 | import java.io.ObjectInputStream; 8 | import java.io.ObjectOutputStream; 9 | import java.io.Serializable; 10 | import java.util.zip.GZIPInputStream; 11 | import java.util.zip.GZIPOutputStream; 12 | 13 | public class Data implements Serializable { 14 | private static final long serialVersionUID = -7768683932651126083L; 15 | public static final short TAG_HELLO = 0;//������ 16 | public static final short TAG_START_FRONT = 1;//����ǰ����ͷ 17 | public static final short TAG_START_BACK = 2;//����������ͷ 18 | public static final short TAG_STOP = 3;//ֹͣ��� 19 | public static final short TAG_VIDEO = 4;//��Ƶ���� 20 | public static final short TAG_ERR_PASSWORD = 5;//������� 21 | public static final short TAG_CAM_CONN_TO_SERVER = 6;//����ض����ӵ������� 22 | public static final short TAG_MON_CONN_TO_SERVER = 7;//��ض����ӵ������� 23 | private String password; 24 | byte[] data; 25 | short tag; 26 | 27 | public String getPassword() { 28 | return password; 29 | } 30 | 31 | public void setPassword(String password) { 32 | this.password = password; 33 | } 34 | 35 | public byte[] getData() { 36 | try { 37 | return depress(data); 38 | } catch (IOException e) { 39 | e.printStackTrace(); 40 | } 41 | return null; 42 | } 43 | 44 | public void setData(byte[] data) { 45 | try { 46 | this.data = compress(data); 47 | } catch (IOException e) { 48 | e.printStackTrace(); 49 | } 50 | } 51 | 52 | public int getTag() { 53 | return tag; 54 | } 55 | 56 | public void setTag(short tag) { 57 | this.tag = tag; 58 | } 59 | 60 | 61 | public Data(short tag, String password) { 62 | this.tag = tag; 63 | this.password = password; 64 | } 65 | 66 | public Data(short tag) { 67 | this.tag = tag; 68 | } 69 | 70 | public Data(byte[] data) { 71 | this.tag = TAG_VIDEO; 72 | this.data = data; 73 | } 74 | 75 | public static Data fromBytes(byte[] bytes) throws IOException, 76 | ClassNotFoundException { 77 | ObjectInputStream inputStream = new ObjectInputStream( 78 | new ByteArrayInputStream(bytes)); 79 | Data data = (Data) inputStream.readObject(); 80 | return data; 81 | } 82 | 83 | public static Data fromInputStream(InputStream inputStream) { 84 | Data data = null; 85 | try { 86 | ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); 87 | data = (Data) objectInputStream.readObject(); 88 | } catch (IOException | ClassNotFoundException e) { 89 | e.printStackTrace(); 90 | return null; 91 | } 92 | return data; 93 | } 94 | 95 | private byte[] compress(byte[] bytes) throws IOException { 96 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 97 | GZIPOutputStream gzipOutputStream = new GZIPOutputStream(baos); 98 | gzipOutputStream.write(bytes); 99 | gzipOutputStream.close(); 100 | return baos.toByteArray(); 101 | } 102 | 103 | private byte[] depress(byte[] bytes) throws IOException { 104 | ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 105 | GZIPInputStream gzipInputStream = new GZIPInputStream(bais); 106 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 107 | int len; 108 | byte[] buf = new byte[1024]; 109 | while ((len = gzipInputStream.read(buf)) != -1) { 110 | baos.write(buf, 0, len); 111 | } 112 | baos.close(); 113 | gzipInputStream.close(); 114 | return baos.toByteArray(); 115 | } 116 | 117 | public byte[] toBytes() throws IOException { 118 | ByteArrayOutputStream arrStream = new ByteArrayOutputStream(); 119 | ObjectOutputStream objStream = new ObjectOutputStream(arrStream); 120 | objStream.writeObject(this); 121 | objStream.close(); 122 | return arrStream.toByteArray(); 123 | } 124 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Camera 2 | 视频监控系统-监控端 3 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion '23.0.3' 6 | 7 | defaultConfig { 8 | applicationId "com.gl.camera" 9 | minSdkVersion 15 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | compile 'com.google.zxing:core:3.2.1' 25 | compile 'com.android.support:appcompat-v7:23.2.1' 26 | compile project(':openCVLibrary310') 27 | } 28 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\Liang\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/service/CameraApplication.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.service; 2 | 3 | import android.app.Application; 4 | import android.util.Log; 5 | 6 | import org.opencv.android.OpenCVLoader; 7 | 8 | /** 9 | * Created by Liang on 2016/5/30. 10 | */ 11 | public class CameraApplication extends Application { 12 | @Override 13 | public void onCreate() { 14 | super.onCreate(); 15 | if (!OpenCVLoader.initDebug()) { 16 | Log.e(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), not working."); 17 | } else { 18 | Log.d(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), working."); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/service/FloatWindowService.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.service; 2 | 3 | import android.app.ActivityManager; 4 | import android.app.ActivityManager.RunningTaskInfo; 5 | import android.app.Notification; 6 | import android.app.PendingIntent; 7 | import android.app.Service; 8 | import android.content.Context; 9 | import android.content.Intent; 10 | import android.content.pm.PackageManager; 11 | import android.content.pm.ResolveInfo; 12 | import android.os.Handler; 13 | import android.os.IBinder; 14 | import android.support.v7.app.NotificationCompat; 15 | import android.util.Log; 16 | 17 | import com.gl.camera.R; 18 | import com.gl.camera.view.MainActivity; 19 | import com.gl.camera.view.MyWindowManager; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | import java.util.Timer; 24 | import java.util.TimerTask; 25 | 26 | public class FloatWindowService extends Service { 27 | private static String TAG = "MyCamera"; 28 | /** 29 | * 用于在线程中创建或移除悬浮窗。 30 | */ 31 | private Handler handler = new Handler(); 32 | 33 | /** 34 | * 定时器,定时进行检测当前应该创建还是移除悬浮窗。 35 | */ 36 | private Timer timer; 37 | 38 | @Override 39 | public IBinder onBind(Intent intent) { 40 | return null; 41 | } 42 | 43 | @Override 44 | public void onCreate() { 45 | super.onCreate(); 46 | Intent intent = new Intent(this, MainActivity.class); 47 | PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); 48 | Notification notification = new NotificationCompat.Builder(this). 49 | setSmallIcon(R.mipmap.ic_launcher). 50 | setContentTitle("Camera"). 51 | setContentText("监控服务已启动"). 52 | setContentIntent(pendingIntent).build(); 53 | startForeground(1, notification); 54 | } 55 | 56 | @Override 57 | public int onStartCommand(Intent intent, int flags, int startId) { 58 | // 开启定时器,每隔0.5秒刷新一次 59 | Log.i(TAG, "服务启动"); 60 | if (timer != null) { 61 | timer.cancel(); 62 | //移除悬浮窗 63 | MyWindowManager.removeSmallWindow(getApplicationContext()); 64 | } 65 | timer = new Timer(); 66 | timer.scheduleAtFixedRate(new RefreshTask(), 0, 500); 67 | 68 | return super.onStartCommand(intent, flags, startId); 69 | } 70 | 71 | @Override 72 | public void onDestroy() { 73 | super.onDestroy(); 74 | // Service被终止的同时也停止定时器继续运行 75 | timer.cancel(); 76 | timer = null; 77 | } 78 | 79 | class RefreshTask extends TimerTask { 80 | @Override 81 | public void run() { 82 | // 当前界面是桌面,且没有悬浮窗显示,则创建悬浮窗。 83 | if (isHome() && !MyWindowManager.isWindowShowing()) { 84 | handler.post(new Runnable() { 85 | @Override 86 | public void run() { 87 | MyWindowManager.createSmallWindow(getApplicationContext()); 88 | Log.i(TAG, "启动悬浮窗"); 89 | } 90 | }); 91 | } 92 | // 当前界面不是桌面,且有悬浮窗显示,则移除悬浮窗。 93 | // else if (!isHome() && MyWindowManager.isWindowShowing()) { 94 | // handler.post(new Runnable() { 95 | // @Override 96 | // public void run() { 97 | // MyWindowManager.removeSmallWindow(getApplicationContext()); 98 | // } 99 | // }); 100 | // } 101 | } 102 | 103 | } 104 | 105 | /** 106 | * 判断当前界面是否是桌面 107 | */ 108 | private boolean isHome() { 109 | ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 110 | List rti = mActivityManager.getRunningTasks(1); 111 | return getHomes().contains(rti.get(0).topActivity.getPackageName()); 112 | } 113 | 114 | /** 115 | * 获得属于桌面的应用的应用包名称 116 | * 117 | * @return 返回包含所有包名的字符串列表 118 | */ 119 | private List getHomes() { 120 | List names = new ArrayList(); 121 | PackageManager packageManager = this.getPackageManager(); 122 | Intent intent = new Intent(Intent.ACTION_MAIN); 123 | intent.addCategory(Intent.CATEGORY_HOME); 124 | List resolveInfo = packageManager.queryIntentActivities(intent, 125 | PackageManager.MATCH_DEFAULT_ONLY); 126 | for (ResolveInfo ri : resolveInfo) { 127 | names.add(ri.activityInfo.packageName); 128 | } 129 | return names; 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/service/NetworkChangeReceiver.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.service; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.net.ConnectivityManager; 7 | import android.net.NetworkInfo; 8 | import android.support.v4.content.LocalBroadcastManager; 9 | import android.util.Log; 10 | 11 | /** 12 | * Created by Liang on 2016/5/25. 13 | */ 14 | public class NetworkChangeReceiver extends BroadcastReceiver { 15 | private static final String TAG = "NetworkChangeReceiver"; 16 | 17 | @Override 18 | public void onReceive(Context context, Intent intent) { 19 | ConnectivityManager connectionManager = (ConnectivityManager) 20 | context.getSystemService(Context.CONNECTIVITY_SERVICE); 21 | NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo(); 22 | LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); 23 | if (networkInfo != null && networkInfo.isAvailable()) { 24 | // localBroadcastManager.sendBroadcast(new Intent("com.gl.camera.RESTART_LISTEN")); 25 | Log.i(TAG, "网络可用"); 26 | } else { 27 | Log.i(TAG, "网络不可用"); 28 | // localBroadcastManager.sendBroadcast(new Intent("com.gl.camera.STOP_LISTEN")); 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/util/BitmapUtility.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.util; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.Matrix; 5 | 6 | import com.google.zxing.BarcodeFormat; 7 | import com.google.zxing.MultiFormatWriter; 8 | import com.google.zxing.WriterException; 9 | import com.google.zxing.common.BitMatrix; 10 | 11 | import org.opencv.core.Core; 12 | import org.opencv.core.Mat; 13 | import org.opencv.core.MatOfFloat; 14 | import org.opencv.core.MatOfInt; 15 | import org.opencv.imgproc.Imgproc; 16 | 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | /** 21 | * Created by Liang on 2016/5/5. 22 | */ 23 | public class BitmapUtility { 24 | public final static int WHITE = 0xFFFFFFFF; 25 | public final static int BLACK = 0xFF000000; 26 | public final static int WIDTH = 800; 27 | public final static int HEIGHT = 800; 28 | 29 | public static Bitmap RotateBitmap(Bitmap source, float angle) { 30 | Matrix matrix = new Matrix(); 31 | matrix.postRotate(angle); 32 | return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); 33 | } 34 | 35 | public static Bitmap encodeAsBitmap(String str) throws WriterException { 36 | BitMatrix result; 37 | try { 38 | result = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, null); 39 | } catch (IllegalArgumentException iae) { 40 | // Unsupported format 41 | return null; 42 | } 43 | 44 | int width = result.getWidth(); 45 | int height = result.getHeight(); 46 | int[] pixels = new int[width * height]; 47 | for (int y = 0; y < height; y++) { 48 | int offset = y * width; 49 | for (int x = 0; x < width; x++) { 50 | pixels[offset + x] = result.get(x, y) ? BLACK : WHITE; 51 | } 52 | } 53 | 54 | Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 55 | bitmap.setPixels(pixels, 0, width, 0, 0, width, height); 56 | return bitmap; 57 | } 58 | 59 | /** 60 | * 将图片进行处理,变成灰图再转化为直方图 61 | */ 62 | public static Mat histogram(Mat img) { 63 | Mat b_hist = null; 64 | Mat grayMat = new Mat(); 65 | Imgproc.cvtColor(img, grayMat, Imgproc.COLOR_RGB2GRAY, 4); 66 | List bgr_planes = new ArrayList<>(); 67 | Core.split(grayMat, bgr_planes); 68 | MatOfInt histSize = new MatOfInt(256); 69 | final MatOfFloat histRange = new MatOfFloat(0f, 256f); 70 | boolean accumulate = false; 71 | b_hist = new Mat(); 72 | //生成直方图 73 | Imgproc.calcHist(bgr_planes, new MatOfInt(0), new Mat(), b_hist, histSize, histRange, accumulate); 74 | grayMat.release(); 75 | histSize.release(); 76 | histRange.release(); 77 | for (Mat mat : bgr_planes) { 78 | mat.release(); 79 | } 80 | return b_hist; 81 | } 82 | 83 | /* 84 | * 比较两个直方图 85 | * @param hist1直方图1 86 | * @param hist2直方图2 87 | * @param similarity相似度 88 | * @return 两张图片的相似度高于Similarity时返回true,否则返回false 89 | * */ 90 | public static boolean compareMat(Mat hist1, Mat hist2, int similarity) { 91 | //该算法约相似,值越小 92 | double rate = 0; 93 | rate = Imgproc.compareHist(hist1, hist2, Imgproc.CV_COMP_BHATTACHARYYA);//巴氏系数 94 | if ((1 - rate) * 100 > similarity) 95 | return true; 96 | return false; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/util/Preference.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.util; 2 | 3 | import android.content.Context; 4 | import android.content.SharedPreferences; 5 | import android.preference.PreferenceManager; 6 | 7 | /** 8 | * Created by Liang on 2016/4/7. 9 | */ 10 | public class Preference { 11 | private static Preference preference; 12 | private SharedPreferences sharedPreferences; 13 | 14 | public static Preference getInstance(Context context) { 15 | if (preference == null) { 16 | preference = new Preference(context); 17 | } 18 | return preference; 19 | } 20 | 21 | private Preference(Context context) { 22 | sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); 23 | } 24 | 25 | public void setPort(int port) { 26 | SharedPreferences.Editor editor = sharedPreferences.edit(); 27 | editor.putInt("port", port); 28 | editor.apply(); 29 | } 30 | 31 | public int getPort() { 32 | return sharedPreferences.getInt("port", -1); 33 | } 34 | 35 | public void setPassword(String password) { 36 | SharedPreferences.Editor editor = sharedPreferences.edit(); 37 | editor.putString("password", password); 38 | editor.apply(); 39 | } 40 | 41 | public String getPassword() { 42 | return sharedPreferences.getString("password", "no password"); 43 | } 44 | 45 | public void setQuality(int quality) { 46 | SharedPreferences.Editor editor = sharedPreferences.edit(); 47 | editor.putInt("quality", quality); 48 | editor.apply(); 49 | } 50 | 51 | public int getQuality() { 52 | return sharedPreferences.getInt("quality", 20); 53 | } 54 | 55 | public void setResolution(int resolution) { 56 | SharedPreferences.Editor editor = sharedPreferences.edit(); 57 | editor.putInt("resolution", resolution); 58 | editor.apply(); 59 | } 60 | 61 | public int getResolution() { 62 | return sharedPreferences.getInt("resolution", 20); 63 | } 64 | 65 | public void setFPS(int fps) { 66 | SharedPreferences.Editor editor = sharedPreferences.edit(); 67 | editor.putInt("fps", fps); 68 | editor.apply(); 69 | } 70 | 71 | public int getFPS() { 72 | return sharedPreferences.getInt("fps", 15); 73 | } 74 | 75 | public void setDeviceId(String deviceId) { 76 | SharedPreferences.Editor editor = sharedPreferences.edit(); 77 | editor.putString("DeviceId", deviceId); 78 | editor.apply(); 79 | } 80 | 81 | public String getDeviceId() { 82 | return sharedPreferences.getString("DeviceId", ""); 83 | } 84 | 85 | public void setEmail(String email) { 86 | SharedPreferences.Editor editor = sharedPreferences.edit(); 87 | editor.putString("email", email); 88 | editor.apply(); 89 | } 90 | 91 | public String getEmail() { 92 | return sharedPreferences.getString("email", ""); 93 | } 94 | 95 | public void setFrequency(int frequency) { 96 | SharedPreferences.Editor editor = sharedPreferences.edit(); 97 | editor.putInt("frequency", frequency); 98 | editor.apply(); 99 | } 100 | 101 | public int getFrequency() { 102 | return sharedPreferences.getInt("frequency", 15); 103 | } 104 | 105 | public void setDrop(boolean drop) { 106 | SharedPreferences.Editor editor = sharedPreferences.edit(); 107 | editor.putBoolean("drop", drop); 108 | editor.apply(); 109 | } 110 | 111 | public boolean getDrop() { 112 | return sharedPreferences.getBoolean("drop", false); 113 | } 114 | 115 | public void setDropSimilarity(int dropSimilarity) { 116 | SharedPreferences.Editor editor = sharedPreferences.edit(); 117 | editor.putInt("DropSimilarity", dropSimilarity); 118 | editor.apply(); 119 | } 120 | 121 | public int getDropSimilarity() { 122 | return sharedPreferences.getInt("DropSimilarity", 80); 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/camera/view/MyWindowManager.java: -------------------------------------------------------------------------------- 1 | package com.gl.camera.view; 2 | 3 | import android.content.Context; 4 | import android.graphics.PixelFormat; 5 | import android.view.Gravity; 6 | import android.view.WindowManager; 7 | import android.view.WindowManager.LayoutParams; 8 | 9 | public class MyWindowManager { 10 | 11 | /** 12 | * 小悬浮窗View的实例 13 | */ 14 | private static FloatWindowSmallView smallWindow; 15 | 16 | /** 17 | * 小悬浮窗View的参数 18 | */ 19 | private static LayoutParams smallWindowParams; 20 | 21 | /** 22 | * 用于控制在屏幕上添加或移除悬浮窗 23 | */ 24 | private static WindowManager mWindowManager; 25 | 26 | /** 27 | * 创建一个小悬浮窗。初始位置为屏幕的右部中间位置。 28 | * 29 | * @param context 必须为应用程序的Context. 30 | */ 31 | public static void createSmallWindow(Context context) { 32 | WindowManager windowManager = getWindowManager(context); 33 | if (smallWindow == null) { 34 | smallWindow = new FloatWindowSmallView(context); 35 | if (smallWindowParams == null) { 36 | smallWindowParams = new LayoutParams(); 37 | smallWindowParams.type = LayoutParams.TYPE_PHONE; 38 | smallWindowParams.format = PixelFormat.RGBA_8888; 39 | smallWindowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL 40 | | LayoutParams.FLAG_NOT_FOCUSABLE; 41 | smallWindowParams.gravity = Gravity.LEFT | Gravity.TOP; 42 | smallWindowParams.width = 1; 43 | smallWindowParams.height = 1; 44 | smallWindowParams.x = 0; 45 | smallWindowParams.y = 0; 46 | } 47 | windowManager.addView(smallWindow, smallWindowParams); 48 | } 49 | } 50 | 51 | /** 52 | * 将小悬浮窗从屏幕上移除。 53 | * 54 | * @param context 必须为应用程序的Context. 55 | */ 56 | public static void removeSmallWindow(Context context) { 57 | if (smallWindow != null) { 58 | WindowManager windowManager = getWindowManager(context); 59 | windowManager.removeView(smallWindow); 60 | smallWindow = null; 61 | } 62 | } 63 | 64 | 65 | /** 66 | * 是否有悬浮窗(包括小悬浮窗和大悬浮窗)显示在屏幕上。 67 | * 68 | * @return 有悬浮窗显示在桌面上返回true,没有的话返回false。 69 | */ 70 | public static boolean isWindowShowing() { 71 | return smallWindow != null; 72 | } 73 | 74 | /** 75 | * 如果WindowManager还未创建,则创建一个新的WindowManager返回。否则返回当前已创建的WindowManager。 76 | * 77 | * @param context 必须为应用程序的Context. 78 | * @return WindowManager的实例,用于控制在屏幕上添加或移除悬浮窗。 79 | */ 80 | private static WindowManager getWindowManager(Context context) { 81 | if (mWindowManager == null) { 82 | mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 83 | } 84 | return mWindowManager; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /app/src/main/java/com/gl/shared/Data.java: -------------------------------------------------------------------------------- 1 | package com.gl.shared; 2 | 3 | import java.io.ByteArrayInputStream; 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.IOException; 6 | import java.io.InputStream; 7 | import java.io.ObjectInputStream; 8 | import java.io.ObjectOutputStream; 9 | import java.io.Serializable; 10 | import java.util.zip.GZIPInputStream; 11 | import java.util.zip.GZIPOutputStream; 12 | 13 | public class Data implements Serializable { 14 | private static final long serialVersionUID = -7768683932651126083L; 15 | public static final short TAG_HELLO = 0;//心跳包 16 | public static final short TAG_START_FRONT = 1;//启动前摄像头 17 | public static final short TAG_START_BACK = 2;//启动后摄像头 18 | public static final short TAG_STOP = 3;//停止监控 19 | public static final short TAG_VIDEO = 4;//视频数据 20 | public static final short TAG_ERR_PASSWORD = 5;//密码错误 21 | public static final short TAG_CAM_CONN_TO_SERVER = 6;//被监控端连接到服务器 22 | public static final short TAG_MON_CONN_TO_SERVER = 7;//监控端连接到服务器 23 | private String password; 24 | byte[] data; 25 | short tag; 26 | 27 | public String getPassword() { 28 | return password; 29 | } 30 | 31 | public void setPassword(String password) { 32 | this.password = password; 33 | } 34 | 35 | public byte[] getData() { 36 | try { 37 | return depress(data); 38 | } catch (IOException e) { 39 | e.printStackTrace(); 40 | } 41 | return null; 42 | } 43 | 44 | public void setData(byte[] data) { 45 | try { 46 | this.data = compress(data); 47 | } catch (IOException e) { 48 | e.printStackTrace(); 49 | } 50 | } 51 | 52 | public int getTag() { 53 | return tag; 54 | } 55 | 56 | public void setTag(short tag) { 57 | this.tag = tag; 58 | } 59 | 60 | 61 | public Data(short tag, String password) { 62 | this.tag = tag; 63 | this.password = password; 64 | } 65 | 66 | public Data(short tag) { 67 | this.tag = tag; 68 | } 69 | 70 | public Data(byte[] data) { 71 | this.tag = TAG_VIDEO; 72 | this.data = data; 73 | } 74 | 75 | public static Data fromBytes(byte[] bytes) throws IOException, 76 | ClassNotFoundException { 77 | ObjectInputStream inputStream = new ObjectInputStream( 78 | new ByteArrayInputStream(bytes)); 79 | Data data = (Data) inputStream.readObject(); 80 | return data; 81 | } 82 | 83 | public static Data fromInputStream(InputStream inputStream) { 84 | Data data = null; 85 | try { 86 | ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); 87 | data = (Data) objectInputStream.readObject(); 88 | } catch (IOException | ClassNotFoundException e) { 89 | e.printStackTrace(); 90 | return null; 91 | } 92 | return data; 93 | } 94 | 95 | private byte[] compress(byte[] bytes) throws IOException { 96 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 97 | GZIPOutputStream gzipOutputStream = new GZIPOutputStream(baos); 98 | gzipOutputStream.write(bytes); 99 | gzipOutputStream.close(); 100 | return baos.toByteArray(); 101 | } 102 | 103 | private byte[] depress(byte[] bytes) throws IOException { 104 | ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 105 | GZIPInputStream gzipInputStream = new GZIPInputStream(bais); 106 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 107 | int len; 108 | byte[] buf = new byte[1024]; 109 | while ((len = gzipInputStream.read(buf)) != -1) { 110 | baos.write(buf, 0, len); 111 | } 112 | baos.close(); 113 | gzipInputStream.close(); 114 | return baos.toByteArray(); 115 | } 116 | 117 | public byte[] toBytes() throws IOException { 118 | ByteArrayOutputStream arrStream = new ByteArrayOutputStream(); 119 | ObjectOutputStream objStream = new ObjectOutputStream(arrStream); 120 | objStream.writeObject(this); 121 | objStream.close(); 122 | return arrStream.toByteArray(); 123 | } 124 | } -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_calib3d.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_calib3d.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_core.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_core.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_features2d.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_features2d.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_flann.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_flann.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_highgui.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_highgui.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_imgcodecs.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_imgcodecs.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_imgproc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_imgproc.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_java3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_java3.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_ml.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_ml.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_objdetect.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_objdetect.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_photo.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_photo.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_shape.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_shape.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_stitching.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_stitching.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_superres.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_superres.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_ts.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_ts.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_video.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_video.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_videoio.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_videoio.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libopencv_videostab.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/armeabi-v7a/libopencv_videostab.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_calib3d.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_calib3d.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_core.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_core.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_features2d.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_features2d.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_flann.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_flann.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_highgui.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_highgui.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_imgcodecs.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_imgcodecs.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_imgproc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_imgproc.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_java3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_java3.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_ml.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_ml.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_objdetect.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_objdetect.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_photo.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_photo.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_shape.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_shape.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_stitching.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_stitching.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_superres.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_superres.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_video.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_video.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_videoio.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_videoio.a -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libopencv_videostab.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pwrliang/Camera/4f95ee1116974a066e70897fdb238903c7f40e09/app/src/main/jniLibs/x86/libopencv_videostab.a -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 22 | 23 |