diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.classpath b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.classpath
new file mode 100644
index 00000000..53812747
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.classpath
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.project b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.project
new file mode 100644
index 00000000..308ea940
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.project
@@ -0,0 +1,33 @@
+
+
+ RecorderActivity
+
+
+
+
+
+ com.android.ide.eclipse.adt.ResourceManagerBuilder
+
+
+
+
+ com.android.ide.eclipse.adt.PreCompilerBuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ com.android.ide.eclipse.adt.ApkBuilder
+
+
+
+
+
+ com.android.ide.eclipse.adt.AndroidNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.core.resources.prefs b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..99f26c02
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.jdt.core.prefs b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..b080d2dd
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/AndroidManifest.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/AndroidManifest.xml
new file mode 100644
index 00000000..618c81aa
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/AndroidManifest.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/AndroidManifest.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/AndroidManifest.xml
new file mode 100644
index 00000000..618c81aa
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/AndroidManifest.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/BuildConfig.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/BuildConfig.class
new file mode 100644
index 00000000..4444e7d5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/BuildConfig.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$attr.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$attr.class
new file mode 100644
index 00000000..98e683f4
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$attr.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$dimen.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$dimen.class
new file mode 100644
index 00000000..7a618fce
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$dimen.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$drawable.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$drawable.class
new file mode 100644
index 00000000..57d8949e
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$drawable.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$id.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$id.class
new file mode 100644
index 00000000..a30c5a65
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$id.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$layout.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$layout.class
new file mode 100644
index 00000000..f98db375
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$layout.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$menu.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$menu.class
new file mode 100644
index 00000000..35c08d48
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$menu.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$string.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$string.class
new file mode 100644
index 00000000..11b1e50f
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$string.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$style.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$style.class
new file mode 100644
index 00000000..af76903b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R$style.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R.class
new file mode 100644
index 00000000..f01b7bee
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/R.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/constant/Constant.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/constant/Constant.class
new file mode 100644
index 00000000..242a8f6d
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/constant/Constant.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class
new file mode 100644
index 00000000..32f0d4e6
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/CameraManager.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/CameraManager.class
new file mode 100644
index 00000000..50308e16
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/CameraManager.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager$AudioRecordRunnable.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager$AudioRecordRunnable.class
new file mode 100644
index 00000000..08cce644
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager$AudioRecordRunnable.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager.class
new file mode 100644
index 00000000..7a55c419
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/util/RecorderManager.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/view/CameraView.class b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/view/CameraView.class
new file mode 100644
index 00000000..0e337556
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/bin/classes/org/bytedeco/javacv/view/CameraView.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/BuildConfig.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/BuildConfig.java
new file mode 100644
index 00000000..c1c45d78
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/BuildConfig.java
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package org.bytedeco.javacv;
+
+public final class BuildConfig {
+ public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/R.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/R.java
new file mode 100644
index 00000000..5ab3b5bd
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/gen/org/bytedeco/javacv/R.java
@@ -0,0 +1,71 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package org.bytedeco.javacv;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+ */
+ public static final int activity_horizontal_margin=0x7f040000;
+ public static final int activity_vertical_margin=0x7f040001;
+ }
+ public static final class drawable {
+ public static final int ic_launcher=0x7f020000;
+ }
+ public static final class id {
+ public static final int action_settings=0x7f080002;
+ public static final int record_layout=0x7f080000;
+ public static final int recorder_control=0x7f080001;
+ }
+ public static final class layout {
+ public static final int activity_main=0x7f030000;
+ public static final int main=0x7f030001;
+ }
+ public static final class menu {
+ public static final int main=0x7f070000;
+ }
+ public static final class string {
+ public static final int action_settings=0x7f050001;
+ public static final int app_name=0x7f050000;
+ public static final int hello_world=0x7f050002;
+ }
+ public static final class style {
+ /**
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+
+
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+
+
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+
+ API 11 theme customizations can go here.
+
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+
+ API 14 theme customizations can go here.
+ */
+ public static final int AppBaseTheme=0x7f060000;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppTheme=0x7f060001;
+ }
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/ic_launcher-web.png b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/ic_launcher-web.png
new file mode 100644
index 00000000..a18cbb48
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/ic_launcher-web.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/android-support-v4.jar b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/android-support-v4.jar
new file mode 100644
index 00000000..cf12d283
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/android-support-v4.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libavcodec.so b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libavcodec.so
new file mode 100644
index 00000000..8c28d196
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libavcodec.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libtbb.so b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libtbb.so
new file mode 100644
index 00000000..e0ee92e5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/armeabi/libtbb.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/ffmpeg.jar b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/ffmpeg.jar
new file mode 100644
index 00000000..03c64e11
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/ffmpeg.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacpp.jar b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacpp.jar
new file mode 100644
index 00000000..2228cfa8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacpp.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacv.jar b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacv.jar
new file mode 100644
index 00000000..a1d46f9a
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/javacv.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/opencv.jar b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/opencv.jar
new file mode 100644
index 00000000..e93fe3d6
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/libs/opencv.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/proguard-project.txt b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/proguard-project.txt
new file mode 100644
index 00000000..f2fe1559
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/project.properties b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/project.properties
new file mode 100644
index 00000000..ce39f2d0
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-18
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-hdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 00000000..288b6655
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-hdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-mdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 00000000..6ae570b4
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-mdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..d4fb7cd9
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xxhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..85a60815
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/drawable-xxhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/activity_main.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/activity_main.xml
new file mode 100644
index 00000000..168c9b8c
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/activity_main.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/main.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/main.xml
new file mode 100644
index 00000000..682f87ec
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/layout/main.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/menu/main.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/menu/main.xml
new file mode 100644
index 00000000..c0020282
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/menu/main.xml
@@ -0,0 +1,9 @@
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw600dp/dimens.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw600dp/dimens.xml
new file mode 100644
index 00000000..44f01db7
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw600dp/dimens.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw720dp-land/dimens.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw720dp-land/dimens.xml
new file mode 100644
index 00000000..61e3fa8f
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-sw720dp-land/dimens.xml
@@ -0,0 +1,9 @@
+
+
+
+ 128dp
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v11/styles.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v11/styles.xml
new file mode 100644
index 00000000..3c02242a
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v11/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v14/styles.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v14/styles.xml
new file mode 100644
index 00000000..a91fd037
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values-v14/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/dimens.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/dimens.xml
new file mode 100644
index 00000000..55c1e590
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/dimens.xml
@@ -0,0 +1,7 @@
+
+
+
+ 16dp
+ 16dp
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/strings.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/strings.xml
new file mode 100644
index 00000000..ef7aae79
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/strings.xml
@@ -0,0 +1,8 @@
+
+
+
+ Samples for JavaCv
+ Settings
+ Hello world!
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/styles.xml b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/styles.xml
new file mode 100644
index 00000000..6ce89c7b
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/res/values/styles.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/constant/Constant.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/constant/Constant.java
new file mode 100644
index 00000000..54df2d4d
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/constant/Constant.java
@@ -0,0 +1,7 @@
+package org.bytedeco.javacv.constant;
+
+public class Constant {
+ public static int imageWidth = 320;
+ public static int imageHeight = 240;
+ public static int frameRate = 30;
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/sample/RecordActivity.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/sample/RecordActivity.java
new file mode 100644
index 00000000..99e1f713
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/sample/RecordActivity.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2012,2013 Qianliang Zhang, Shawn Van Every, Samuel Audet
+ *
+ */
+
+package org.bytedeco.javacv.sample;
+
+import org.bytedeco.javacv.R;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.hardware.Camera;
+import android.os.Bundle;
+import android.os.PowerManager;
+import android.util.Log;
+import android.view.Display;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import org.bytedeco.javacv.util.RecorderManager;
+import org.bytedeco.javacv.view.CameraView;
+
+public class RecordActivity extends Activity implements OnClickListener {
+
+ private final static String CLASS_LABEL = "RecordActivity";
+ private final static String LOG_TAG = CLASS_LABEL;
+
+ private PowerManager.WakeLock mWakeLock;
+
+ private CameraView cameraView;
+
+ /* layout setting */
+ private final int bg_screen_bx = 232;
+ private final int bg_screen_by = 128;
+ private final int bg_screen_width = 700;
+ private final int bg_screen_height = 500;
+ private final int bg_width = 1123;
+ private final int bg_height = 715;
+ private final int live_width = 640;
+ private final int live_height = 480;
+ private int screenWidth, screenHeight;
+ private Button btnRecorderControl;
+
+ RecorderManager mManager;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+
+ setContentView(R.layout.main);
+
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, CLASS_LABEL);
+ mWakeLock.acquire();
+
+ initLayout();
+ }
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ if (mWakeLock == null) {
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, CLASS_LABEL);
+ mWakeLock.acquire();
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ if (mWakeLock != null) {
+ mWakeLock.release();
+ mWakeLock = null;
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ mManager.recording = false;
+
+ if (cameraView != null) {
+ cameraView.stopPreview();
+ }
+
+ if (mWakeLock != null) {
+ mWakeLock.release();
+ mWakeLock = null;
+ }
+ }
+
+
+ private void initLayout() {
+
+ RelativeLayout.LayoutParams layoutParam = null;
+ LayoutInflater myInflate = null;
+ myInflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ RelativeLayout topLayout = new RelativeLayout(this);
+ setContentView(topLayout);
+ /* get size of screen */
+ Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
+ screenWidth = display.getWidth();
+ screenHeight = display.getHeight();
+ LinearLayout preViewLayout = (LinearLayout) myInflate.inflate(R.layout.main, null);
+ layoutParam = new RelativeLayout.LayoutParams(screenWidth, screenHeight);
+ topLayout.addView(preViewLayout, layoutParam);
+
+ /* add control button: start and stop */
+ btnRecorderControl = (Button) findViewById(R.id.recorder_control);
+ btnRecorderControl.setText("Start");
+ btnRecorderControl.setOnClickListener(this);
+
+ /* add camera view */
+ int display_width_d = (int) (1.0 * bg_screen_width * screenWidth / bg_width);
+ int display_height_d = (int) (1.0 * bg_screen_height * screenHeight / bg_height);
+ int prev_rw, prev_rh;
+ if (1.0 * display_width_d / display_height_d > 1.0 * live_width / live_height) {
+ prev_rh = display_height_d;
+ prev_rw = (int) (1.0 * display_height_d * live_width / live_height);
+ } else {
+ prev_rw = display_width_d;
+ prev_rh = (int) (1.0 * display_width_d * live_height / live_width);
+ }
+ layoutParam = new RelativeLayout.LayoutParams(prev_rw, prev_rh);
+ layoutParam.topMargin = (int) (1.0 * bg_screen_by * screenHeight / bg_height);
+ layoutParam.leftMargin = (int) (1.0 * bg_screen_bx * screenWidth / bg_width);
+
+ mManager = RecorderManager.getInstance();
+
+ cameraView = new CameraView(this, mManager);
+ topLayout.addView(cameraView, layoutParam);
+ Log.i(LOG_TAG, "cameara preview start: OK");
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (mManager.recording) {
+ mManager.stopRecording();
+ }
+
+ finish();
+
+ return true;
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+
+ @Override
+ public void onClick(View v) {
+
+ if (!mManager.recording) {
+ mManager.startRecording();
+ Log.w(LOG_TAG, "Start Button Pushed");
+ btnRecorderControl.setText("Stop");
+ } else {
+ // This will trigger the audio recording loop to stop and then set isRecorderStart = false;
+ mManager.stopRecording();
+ Log.w(LOG_TAG, "Stop Button Pushed");
+ btnRecorderControl.setText("Start");
+ }
+ }
+
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/CameraManager.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/CameraManager.java
new file mode 100644
index 00000000..497886ba
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/CameraManager.java
@@ -0,0 +1,131 @@
+package org.bytedeco.javacv.util;
+
+import java.util.Collections;
+import java.util.List;
+
+import android.annotation.SuppressLint;
+import android.graphics.ImageFormat;
+import android.hardware.Camera;
+import android.hardware.Camera.Parameters;
+import android.hardware.Camera.Size;
+import android.os.Build;
+import android.text.TextUtils;
+
+/***
+ * easy to mamage and use Camera
+ * @author haogg
+ */
+public class CameraManager {
+ /***Camera.CameraInfo.CAMERA_FACING_BACK */
+ static int mCameraId=Camera.CameraInfo.CAMERA_FACING_BACK;
+
+ private static Camera mCamera=null;
+
+ private static Parameters mParameters=null;
+
+ private static List supportedPreviewSizes=null;
+
+ private static int mFrameRate;
+
+ private static List rates;
+
+ @SuppressLint("NewApi")
+ public static Camera getCamera(){
+ if (mCameraId != Camera.CameraInfo.CAMERA_FACING_BACK && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
+ mCamera = Camera.open(mCameraId);
+ else
+ mCamera = Camera.open();
+
+ mParameters = mCamera.getParameters();
+ supportedPreviewSizes = mParameters.getSupportedPreviewSizes();
+ fixParameters(mParameters);
+ mCamera.setParameters(mParameters);
+
+ return mCamera;
+ }
+
+ /***In order to get a better preview:
+ * 1. focusmode
+ * 2. framerate
+ * 3. whitestablization
+ * 4. ....
+ * */
+ @SuppressLint("NewApi")
+ private static void fixParameters(Parameters mParameters2) {
+ if (mParameters == null)
+ return;
+
+ //FrameRate
+ if (rates==null) {
+ rates = mParameters.getSupportedPreviewFrameRates();
+ Collections.sort(rates);
+ }
+ if (rates != null) {
+ mFrameRate=rates.get(rates.size() - 1);
+ }
+ mParameters.setPreviewFrameRate(mFrameRate);
+
+ //PreviewSize
+ mParameters.setPreviewSize(640, 480);// 3:2
+
+ //?
+ mParameters.setPreviewFormat(ImageFormat.NV21);
+
+ // set focus mode
+ String mode = checkFocusMode();
+
+ // sansung need to handle special
+ if (TextUtils.isEmpty(mode)) {
+ mParameters.setFocusMode(mode);
+ }
+
+ // set camera scene
+ // if (mCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT && isSupported(mParameters.getSupportedSceneModes(), Camera.Parameters.SCENE_MODE_PORTRAIT))
+ // mParameters.setSceneMode(Camera.Parameters.SCENE_MODE_PORTRAIT);
+
+ //whiteBalandce
+ if (isKeyInList(mParameters.getSupportedWhiteBalance(), "auto"))
+ mParameters.setWhiteBalance("auto");
+
+ //stabilization
+ if ("true".equals(mParameters.get("video-stabilization-supported")))
+ mParameters.set("video-stabilization", "true");
+ }
+
+ @SuppressLint("NewApi")
+ public static Camera switchCamera(int cameraId) {
+ if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD){
+ mCameraId=0;
+ }else{
+ if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
+ mCameraId = Camera.CameraInfo.CAMERA_FACING_FRONT;
+ } else {
+ mCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
+ }
+ }
+ return getCamera();
+ }
+
+ /***check the autofocus mode*/
+ private static String checkFocusMode() {
+
+ if (mParameters != null) {
+
+ List focusModes = mParameters.getSupportedFocusModes();
+ if ((Build.MODEL.startsWith("GT-I950") || Build.MODEL.endsWith("SCH-I959") || Build.MODEL.endsWith("MEIZU MX3")) && isKeyInList(focusModes, "continuous-picture")) {
+ return "continuous-picture";
+ } else if (isKeyInList(focusModes, "continuous-video")) {
+ return "continuous-video";
+ } else if (isKeyInList(focusModes, "auto")) {
+ return "auto";
+ }
+ }
+ return null;
+ }
+
+ /** check whether the key exists in the list */
+ private static boolean isKeyInList(List list, String key) {
+ return list != null && list.contains(key);
+ }
+
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/RecorderManager.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/RecorderManager.java
new file mode 100644
index 00000000..3514ff56
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/util/RecorderManager.java
@@ -0,0 +1,285 @@
+package org.bytedeco.javacv.util;
+
+import java.nio.ByteBuffer;
+import java.nio.ShortBuffer;
+
+import org.bytedeco.javacv.FFmpegFrameRecorder;
+import org.bytedeco.javacv.Frame;
+import org.bytedeco.javacv.constant.Constant;
+
+import android.hardware.Camera;
+import android.hardware.Camera.PreviewCallback;
+import android.media.AudioFormat;
+import android.media.AudioRecord;
+import android.media.MediaRecorder;
+import android.util.Log;
+/**
+ * ***responsible for record video and audio*
+ * @author Qianliang Zhang, Shawn Van Every, Samuel Audet,haogg
+ *
+ */
+public class RecorderManager implements PreviewCallback{
+ private static RecorderManager mManager=null;
+ private String LOG_TAG="RecorderManager";
+
+ //-------------------------
+ // get an instance
+ //-------------------------
+ public RecorderManager() {
+ super();
+ }
+
+ public static RecorderManager getInstance(){
+ if(mManager==null){
+ synchronized (RecorderManager.class) {
+ if(mManager==null){
+ mManager=new RecorderManager();
+ }
+ }
+ }
+ return mManager;
+ }
+
+
+ public boolean recording = false;
+
+ /** The number of seconds in the continuous record loop (or 0 to disable loop). */
+ final int RECORD_LENGTH = 10;
+ int imagesIndex, samplesIndex;
+ Frame[] images;
+ long[] timestamps;
+ ShortBuffer[] samples;
+ private Frame yuvImage = null;
+ /***path for output video*/
+ private String ffmpeg_link = "/mnt/sdcard/a_qule.flv";
+
+ private FFmpegFrameRecorder recorder;
+ private int sampleAudioRateInHz = 44100;
+
+
+ /* audio data getting thread */
+ private AudioRecord audioRecord;
+ private AudioRecordRunnable audioRecordRunnable;
+ private Thread audioThread;
+ volatile boolean runAudioThread = true;
+
+
+ long startTime = 0;
+
+
+
+ public void startRecording() {
+
+ initRecorder();
+
+ try {
+ recorder.start();
+ startTime = System.currentTimeMillis();
+ recording = true;
+ audioThread.start();
+
+ } catch (FFmpegFrameRecorder.Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ //---------------------------------------
+ // initialize ffmpeg_recorder
+ //---------------------------------------
+ private void initRecorder() {
+
+ Log.w(LOG_TAG,"init recorder");
+
+ if (RECORD_LENGTH > 0) {
+ imagesIndex = 0;
+ images = new Frame[RECORD_LENGTH * Constant.frameRate];
+ timestamps = new long[images.length];
+ for (int i = 0; i < images.length; i++) {
+ images[i] = new Frame(Constant.imageWidth, Constant.imageHeight, Frame.DEPTH_UBYTE, 2);
+ timestamps[i] = -1;
+ }
+ } else if (yuvImage == null) {
+ yuvImage = new Frame(Constant.imageWidth, Constant.imageHeight, Frame.DEPTH_UBYTE, 2);
+ Log.i(LOG_TAG, "create yuvImage");
+ }
+
+ Log.i(LOG_TAG, "ffmpeg_url: " + ffmpeg_link);
+ recorder = new FFmpegFrameRecorder(ffmpeg_link, Constant.imageWidth, Constant.imageHeight, 1);
+ recorder.setFormat("flv");
+ recorder.setSampleRate(sampleAudioRateInHz);
+ // Set in the surface changed method
+ recorder.setFrameRate(Constant.frameRate);
+
+ Log.i(LOG_TAG, "recorder initialize success");
+
+ audioRecordRunnable = new AudioRecordRunnable();
+ audioThread = new Thread(audioRecordRunnable);
+ runAudioThread = true;
+ }
+
+ //---------------------------------------------
+ // audio thread, gets and encodes audio data
+ //---------------------------------------------
+ class AudioRecordRunnable implements Runnable {
+
+ @Override
+ public void run() {
+ android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
+
+ // Audio
+ int bufferSize;
+ ShortBuffer audioData;
+ int bufferReadResult;
+
+ bufferSize = AudioRecord.getMinBufferSize(sampleAudioRateInHz,
+ AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
+ audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleAudioRateInHz,
+ AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
+
+ if (RECORD_LENGTH > 0) {
+ samplesIndex = 0;
+ samples = new ShortBuffer[RECORD_LENGTH * sampleAudioRateInHz * 2 / bufferSize + 1];
+ for (int i = 0; i < samples.length; i++) {
+ samples[i] = ShortBuffer.allocate(bufferSize);
+ }
+ } else {
+ audioData = ShortBuffer.allocate(bufferSize);
+ }
+
+ Log.d(LOG_TAG, "audioRecord.startRecording()");
+ audioRecord.startRecording();
+
+ /* ffmpeg_audio encoding loop */
+ while (runAudioThread) {
+ if (RECORD_LENGTH > 0) {
+ audioData = samples[samplesIndex++ % samples.length];
+ audioData.position(0).limit(0);
+ }
+ //Log.v(LOG_TAG,"recording? " + recording);
+ bufferReadResult = audioRecord.read(audioData.array(), 0, audioData.capacity());
+ audioData.limit(bufferReadResult);
+ if (bufferReadResult > 0) {
+ Log.v(LOG_TAG,"bufferReadResult: " + bufferReadResult);
+ // If "recording" isn't true when start this thread, it never get's set according to this if statement...!!!
+ // Why? Good question...
+ if (recording) {
+ if (RECORD_LENGTH <= 0) try {
+ recorder.recordSamples(audioData);
+ //Log.v(LOG_TAG,"recording " + 1024*i + " to " + 1024*i+1024);
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ Log.v(LOG_TAG,"AudioThread Finished, release audioRecord");
+
+ /* encoding finish, release recorder */
+ if (audioRecord != null) {
+ audioRecord.stop();
+ audioRecord.release();
+ audioRecord = null;
+ Log.v(LOG_TAG,"audioRecord released");
+ }
+ }
+ }
+
+ public void stopRecording() {
+
+ runAudioThread = false;
+ try {
+ audioThread.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ audioRecordRunnable = null;
+ audioThread = null;
+
+ if (recorder != null && recording) {
+ if (RECORD_LENGTH > 0) {
+ Log.v(LOG_TAG,"Writing frames");
+ try {
+ int firstIndex = imagesIndex % samples.length;
+ int lastIndex = (imagesIndex - 1) % images.length;
+ if (imagesIndex <= images.length) {
+ firstIndex = 0;
+ lastIndex = imagesIndex - 1;
+ }
+ if ((startTime = timestamps[lastIndex] - RECORD_LENGTH * 1000000L) < 0) {
+ startTime = 0;
+ }
+ if (lastIndex < firstIndex) {
+ lastIndex += images.length;
+ }
+ for (int i = firstIndex; i <= lastIndex; i++) {
+ long t = timestamps[i % timestamps.length] - startTime;
+ if (t >= 0) {
+ if (t > recorder.getTimestamp()) {
+ recorder.setTimestamp(t);
+ }
+ recorder.record(images[i % images.length]);
+ }
+ }
+
+ firstIndex = samplesIndex % samples.length;
+ lastIndex = (samplesIndex - 1) % samples.length;
+ if (samplesIndex <= samples.length) {
+ firstIndex = 0;
+ lastIndex = samplesIndex - 1;
+ }
+ if (lastIndex < firstIndex) {
+ lastIndex += samples.length;
+ }
+ for (int i = firstIndex; i <= lastIndex; i++) {
+ recorder.recordSamples(samples[i % samples.length]);
+ }
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ recording = false;
+ Log.v(LOG_TAG,"Finishing recording, calling stop and release on recorder");
+ try {
+ recorder.stop();
+ recorder.release();
+ } catch (FFmpegFrameRecorder.Exception e) {
+ e.printStackTrace();
+ }
+ recorder = null;
+
+ }
+ }
+
+ /***define actions to do while displaing the preview frame.Called by CameraView */
+ @Override
+ public void onPreviewFrame(byte[] data, Camera camera) {
+ if (audioRecord == null || audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
+ startTime = System.currentTimeMillis();
+ return;
+ }
+ if (RECORD_LENGTH > 0) {
+ int i = imagesIndex++ % images.length;
+ yuvImage = images[i];
+ timestamps[i] = 1000 * (System.currentTimeMillis() - startTime);
+ }
+ /* get video data */
+ if (yuvImage != null && recording) {
+ ((ByteBuffer)yuvImage.image[0].position(0)).put(data);
+
+ if (RECORD_LENGTH <= 0) try {
+ Log.v(LOG_TAG,"Writing Frame");
+ long t = 1000 * (System.currentTimeMillis() - startTime);
+ if (t > recorder.getTimestamp()) {
+ recorder.setTimestamp(t);
+ }
+ recorder.record(yuvImage);
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/view/CameraView.java b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/view/CameraView.java
new file mode 100644
index 00000000..44e06136
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/RecorderActivity/src/org/bytedeco/javacv/view/CameraView.java
@@ -0,0 +1,128 @@
+package org.bytedeco.javacv.view;
+
+import java.io.IOException;
+import java.util.logging.Logger;
+
+import org.bytedeco.javacv.constant.Constant;
+import org.bytedeco.javacv.util.CameraManager;
+
+import android.content.Context;
+import android.hardware.Camera;
+import android.hardware.Camera.PreviewCallback;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+//---------------------------------------------
+// camera thread, gets and encodes video data
+//---------------------------------------------
+public class CameraView extends SurfaceView implements SurfaceHolder.Callback, PreviewCallback {
+
+ private String LOG_TAG="SurfaceView";
+
+ private SurfaceHolder mHolder;
+ private Camera mCamera;
+ private boolean isPreviewOn = false;
+ /***during preview, we can do somthing like image processing..,etc*/
+ private PreviewCallback mPreviewCallbackDelegate;
+
+ private CameraView(Context context, Camera camera,PreviewCallback _previewCallbackDelegate) {
+ super(context);
+ Log.w("camera","camera view");
+ mCamera = camera;
+ mHolder = getHolder();
+ mPreviewCallbackDelegate=_previewCallbackDelegate;
+ mHolder.addCallback(CameraView.this);
+ mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+ mCamera.setPreviewCallback(CameraView.this);
+ }
+
+ private CameraView(Context context, Camera camera) {
+ super(context);
+ Log.w("camera","camera view");
+ mCamera = camera;
+ mHolder = getHolder();
+ mPreviewCallbackDelegate=null;
+ mHolder.addCallback(CameraView.this);
+ mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+ mCamera.setPreviewCallback(CameraView.this);
+ }
+
+ public CameraView(Context context, PreviewCallback _previewCallbackDelegate) {
+ super(context);
+ Log.w("camera","camera view");
+ mCamera = CameraManager.getCamera();
+ Log.w("CameraView", "camera:"+String.valueOf(mCamera==null));
+ mHolder = getHolder();
+ mPreviewCallbackDelegate=_previewCallbackDelegate;
+ mHolder.addCallback(CameraView.this);
+ mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+ mCamera.setPreviewCallback(CameraView.this);
+ }
+
+ @Override
+ public void surfaceCreated(SurfaceHolder holder) {
+ try {
+ mCamera.setPreviewDisplay(holder);
+ } catch (IOException exception) {
+ mCamera.release();
+ mCamera = null;
+ }
+ }
+
+ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+ Log.v(LOG_TAG,"Setting Constant.imageWidth: " + Constant.imageWidth + " Constant.imageHeight: " + Constant.imageHeight + " frameRate: " + Constant.frameRate);
+ Camera.Parameters camParams = mCamera.getParameters();
+ camParams.setPreviewSize(Constant.imageWidth, Constant.imageHeight);
+
+ Log.v(LOG_TAG,"Preview Framerate: " + camParams.getPreviewFrameRate());
+
+ camParams.setPreviewFrameRate(Constant.frameRate);
+ mCamera.setParameters(camParams);
+ startPreview();
+ }
+
+ @Override
+ public void surfaceDestroyed(SurfaceHolder holder) {
+ try {
+ mHolder.addCallback(null);
+ mCamera.setPreviewCallback(null);
+ } catch (RuntimeException e) {
+ // The camera has probably just been released, ignore.
+ }
+ }
+
+ public void startPreview() {
+ if (!isPreviewOn && mCamera != null) {
+ isPreviewOn = true;
+ mCamera.startPreview();
+ }
+ }
+
+ public void stopPreview() {
+ if (isPreviewOn && mCamera != null) {
+ isPreviewOn = false;
+ }
+
+ if(mCamera != null) {
+ mCamera.stopPreview();
+ mCamera.setPreviewCallback(null);
+ mCamera.release();
+ mCamera = null;
+ }
+ }
+
+ @Override
+ public void onPreviewFrame(byte[] data, Camera camera) {
+ if(mPreviewCallbackDelegate!=null){
+ mPreviewCallbackDelegate.onPreviewFrame(data, camera);
+ }
+ }
+
+ //logic is not complete,
+ public void switchCamera(int cameraFrontOrBack){
+ stopPreview();
+ mCamera=CameraManager.switchCamera(cameraFrontOrBack);
+ startPreview();
+ }
+}
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.classpath b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.classpath
new file mode 100644
index 00000000..1457e3c3
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.classpath
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.project b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.project
new file mode 100644
index 00000000..c6d649a1
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.project
@@ -0,0 +1,33 @@
+
+
+ SamplesForJavaCv---Eclipse
+
+
+
+
+
+ com.android.ide.eclipse.adt.ResourceManagerBuilder
+
+
+
+
+ com.android.ide.eclipse.adt.PreCompilerBuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ com.android.ide.eclipse.adt.ApkBuilder
+
+
+
+
+
+ com.android.ide.eclipse.adt.AndroidNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.core.resources.prefs b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..99f26c02
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.jdt.core.prefs b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..b080d2dd
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/AndroidManifest.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/AndroidManifest.xml
new file mode 100644
index 00000000..c71ad3cb
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/AndroidManifest.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/AndroidManifest.xml
new file mode 100644
index 00000000..c71ad3cb
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/SamplesForJavaCv---Eclipse.apk b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/SamplesForJavaCv---Eclipse.apk
new file mode 100644
index 00000000..036c1aaf
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/SamplesForJavaCv---Eclipse.apk differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes.dex b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes.dex
new file mode 100644
index 00000000..3cd8c3e8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes.dex differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/BuildConfig.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/BuildConfig.class
new file mode 100644
index 00000000..4444e7d5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/BuildConfig.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$attr.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$attr.class
new file mode 100644
index 00000000..98e683f4
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$attr.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$dimen.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$dimen.class
new file mode 100644
index 00000000..7a618fce
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$dimen.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$drawable.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$drawable.class
new file mode 100644
index 00000000..57d8949e
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$drawable.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$id.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$id.class
new file mode 100644
index 00000000..26ae0f27
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$id.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$layout.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$layout.class
new file mode 100644
index 00000000..3f173457
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$layout.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$menu.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$menu.class
new file mode 100644
index 00000000..75114b3b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$menu.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$string.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$string.class
new file mode 100644
index 00000000..b36fe14e
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$string.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$style.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$style.class
new file mode 100644
index 00000000..7c3e6081
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R$style.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R.class
new file mode 100644
index 00000000..f01b7bee
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/R.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$AudioRecordRunnable.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$AudioRecordRunnable.class
new file mode 100644
index 00000000..74b39f13
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$AudioRecordRunnable.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$CameraView.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$CameraView.class
new file mode 100644
index 00000000..f8fd8609
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity$CameraView.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class
new file mode 100644
index 00000000..245d92a6
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/classes/org/bytedeco/javacv/sample/RecordActivity.class differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/android-support-v4-c85e585531485c0108839a760d7037f6.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/android-support-v4-c85e585531485c0108839a760d7037f6.jar
new file mode 100644
index 00000000..a45267c1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/android-support-v4-c85e585531485c0108839a760d7037f6.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/ffmpeg-73b20ad61e677ecaf003fba5a66cb8d9.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/ffmpeg-73b20ad61e677ecaf003fba5a66cb8d9.jar
new file mode 100644
index 00000000..660b9081
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/ffmpeg-73b20ad61e677ecaf003fba5a66cb8d9.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacpp-e80d2aff2bda34a25edb47954c9a2a5f.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacpp-e80d2aff2bda34a25edb47954c9a2a5f.jar
new file mode 100644
index 00000000..750a76d8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacpp-e80d2aff2bda34a25edb47954c9a2a5f.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacv-efec0b251414e1e47dd8391347eef5c5.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacv-efec0b251414e1e47dd8391347eef5c5.jar
new file mode 100644
index 00000000..da65b34b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/javacv-efec0b251414e1e47dd8391347eef5c5.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/opencv-b6e8f3295716ed686a8eac7d3eaad323.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/opencv-b6e8f3295716ed686a8eac7d3eaad323.jar
new file mode 100644
index 00000000..0ffee339
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/dexedLibs/opencv-b6e8f3295716ed686a8eac7d3eaad323.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-hdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-hdpi/ic_launcher.png
new file mode 100644
index 00000000..efa7c5f1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-hdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-mdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-mdpi/ic_launcher.png
new file mode 100644
index 00000000..ec27f2ea
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-mdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..92fc57d0
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xxhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..b6f8f4e9
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/res/crunch/drawable-xxhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/resources.ap_ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/resources.ap_
new file mode 100644
index 00000000..1dde1abc
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/bin/resources.ap_ differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/BuildConfig.java b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/BuildConfig.java
new file mode 100644
index 00000000..c1c45d78
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/BuildConfig.java
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package org.bytedeco.javacv;
+
+public final class BuildConfig {
+ public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/R.java b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/R.java
new file mode 100644
index 00000000..64a8afb3
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/gen/org/bytedeco/javacv/R.java
@@ -0,0 +1,72 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package org.bytedeco.javacv;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+ */
+ public static final int activity_horizontal_margin=0x7f040000;
+ public static final int activity_vertical_margin=0x7f040001;
+ }
+ public static final class drawable {
+ public static final int ic_launcher=0x7f020000;
+ }
+ public static final class id {
+ public static final int action_settings=0x7f080003;
+ public static final int record_layout=0x7f080000;
+ public static final int recorder_control=0x7f080002;
+ public static final int textView1=0x7f080001;
+ }
+ public static final class layout {
+ public static final int activity_main=0x7f030000;
+ public static final int main=0x7f030001;
+ }
+ public static final class menu {
+ public static final int main=0x7f070000;
+ }
+ public static final class string {
+ public static final int action_settings=0x7f050001;
+ public static final int app_name=0x7f050000;
+ public static final int hello_world=0x7f050002;
+ }
+ public static final class style {
+ /**
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+
+
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+
+
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+
+ API 11 theme customizations can go here.
+
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+
+ API 14 theme customizations can go here.
+ */
+ public static final int AppBaseTheme=0x7f060000;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppTheme=0x7f060001;
+ }
+}
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/ic_launcher-web.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/ic_launcher-web.png
new file mode 100644
index 00000000..a18cbb48
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/ic_launcher-web.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/android-support-v4.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/android-support-v4.jar
new file mode 100644
index 00000000..cf12d283
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/android-support-v4.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavcodec.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavcodec.so
new file mode 100644
index 00000000..8c28d196
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavcodec.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavdevice.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavdevice.so
new file mode 100644
index 00000000..4ab38fdc
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavdevice.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavfilter.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavfilter.so
new file mode 100644
index 00000000..786ef7d1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavfilter.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavformat.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavformat.so
new file mode 100644
index 00000000..8dfa07af
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavformat.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavutil.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavutil.so
new file mode 100644
index 00000000..eb34681b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libavutil.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavcodec.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavcodec.so
new file mode 100644
index 00000000..a2e0c6c2
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavcodec.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavdevice.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavdevice.so
new file mode 100644
index 00000000..a043e01c
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavdevice.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavfilter.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavfilter.so
new file mode 100644
index 00000000..159ef150
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavfilter.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavformat.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavformat.so
new file mode 100644
index 00000000..05462c3d
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavformat.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavutil.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavutil.so
new file mode 100644
index 00000000..2e8f90c9
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniavutil.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnicvkernels.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnicvkernels.so
new file mode 100644
index 00000000..44ceaec8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnicvkernels.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_calib3d.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_calib3d.so
new file mode 100644
index 00000000..21820538
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_calib3d.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_contrib.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_contrib.so
new file mode 100644
index 00000000..ea5e8411
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_contrib.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_core.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_core.so
new file mode 100644
index 00000000..d38c22c2
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_core.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_features2d.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_features2d.so
new file mode 100644
index 00000000..466cecc1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_features2d.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_flann.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_flann.so
new file mode 100644
index 00000000..5c3d8f50
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_flann.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_highgui.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_highgui.so
new file mode 100644
index 00000000..70e1a510
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_highgui.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_imgproc.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_imgproc.so
new file mode 100644
index 00000000..466ea18b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_imgproc.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_legacy.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_legacy.so
new file mode 100644
index 00000000..6c6cb71d
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_legacy.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_ml.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_ml.so
new file mode 100644
index 00000000..05267755
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_ml.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_nonfree.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_nonfree.so
new file mode 100644
index 00000000..12cbc45f
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_nonfree.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_objdetect.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_objdetect.so
new file mode 100644
index 00000000..2a45adc1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_objdetect.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_photo.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_photo.so
new file mode 100644
index 00000000..09f81652
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_photo.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_stitching.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_stitching.so
new file mode 100644
index 00000000..473940af
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_stitching.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_superres.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_superres.so
new file mode 100644
index 00000000..9373c90d
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_superres.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_video.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_video.so
new file mode 100644
index 00000000..6960368e
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_video.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_videostab.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_videostab.so
new file mode 100644
index 00000000..bc2dcca5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniopencv_videostab.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnipostproc.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnipostproc.so
new file mode 100644
index 00000000..f2028705
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjnipostproc.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswresample.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswresample.so
new file mode 100644
index 00000000..912c66b8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswresample.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswscale.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswscale.so
new file mode 100644
index 00000000..be80a766
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libjniswscale.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.2.0.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.2.0.so
new file mode 100644
index 00000000..aac6634b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.2.0.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.3.3.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.3.3.so
new file mode 100644
index 00000000..d523f69d
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r2.3.3.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r3.0.1.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r3.0.1.so
new file mode 100644
index 00000000..e386bf4f
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r3.0.1.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.0.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.0.so
new file mode 100644
index 00000000..028ab7d1
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.0.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.3.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.3.so
new file mode 100644
index 00000000..48cbdd09
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.0.3.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.1.1.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.1.1.so
new file mode 100644
index 00000000..7fe50875
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.1.1.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.2.0.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.2.0.so
new file mode 100644
index 00000000..15827d81
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.2.0.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.3.0.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.3.0.so
new file mode 100644
index 00000000..ec1edfb0
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.3.0.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.4.0.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.4.0.so
new file mode 100644
index 00000000..1bcd7339
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libnative_camera_r4.4.0.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_calib3d.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_calib3d.so
new file mode 100644
index 00000000..e20a5014
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_calib3d.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_contrib.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_contrib.so
new file mode 100644
index 00000000..2fcbac15
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_contrib.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_core.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_core.so
new file mode 100644
index 00000000..a62b35f4
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_core.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_features2d.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_features2d.so
new file mode 100644
index 00000000..aaa8d9a8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_features2d.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_flann.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_flann.so
new file mode 100644
index 00000000..90727e36
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_flann.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_gpu.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_gpu.so
new file mode 100644
index 00000000..ebfa3e9f
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_gpu.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_highgui.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_highgui.so
new file mode 100644
index 00000000..cc57d33b
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_highgui.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_imgproc.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_imgproc.so
new file mode 100644
index 00000000..21a02fb0
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_imgproc.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_legacy.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_legacy.so
new file mode 100644
index 00000000..b905dd85
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_legacy.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_ml.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_ml.so
new file mode 100644
index 00000000..b61042d8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_ml.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_nonfree.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_nonfree.so
new file mode 100644
index 00000000..30915ef2
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_nonfree.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_objdetect.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_objdetect.so
new file mode 100644
index 00000000..ed347e98
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_objdetect.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_photo.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_photo.so
new file mode 100644
index 00000000..2ef29346
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_photo.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_stitching.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_stitching.so
new file mode 100644
index 00000000..380c4472
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_stitching.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_superres.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_superres.so
new file mode 100644
index 00000000..526bbd35
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_superres.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_video.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_video.so
new file mode 100644
index 00000000..b62ff07a
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_video.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_videostab.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_videostab.so
new file mode 100644
index 00000000..1a2586d5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libopencv_videostab.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libpostproc.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libpostproc.so
new file mode 100644
index 00000000..47a24017
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libpostproc.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswresample.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswresample.so
new file mode 100644
index 00000000..550da711
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswresample.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswscale.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswscale.so
new file mode 100644
index 00000000..4b4b48de
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libswscale.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libtbb.so b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libtbb.so
new file mode 100644
index 00000000..e0ee92e5
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/armeabi/libtbb.so differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/ffmpeg.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/ffmpeg.jar
new file mode 100644
index 00000000..03c64e11
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/ffmpeg.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacpp.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacpp.jar
new file mode 100644
index 00000000..2228cfa8
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacpp.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacv.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacv.jar
new file mode 100644
index 00000000..a1d46f9a
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/javacv.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/opencv.jar b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/opencv.jar
new file mode 100644
index 00000000..e93fe3d6
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/libs/opencv.jar differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/proguard-project.txt b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/proguard-project.txt
new file mode 100644
index 00000000..f2fe1559
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/project.properties b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/project.properties
new file mode 100644
index 00000000..ce39f2d0
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-18
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-hdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 00000000..288b6655
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-hdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-mdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 00000000..6ae570b4
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-mdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..d4fb7cd9
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xxhdpi/ic_launcher.png b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..85a60815
Binary files /dev/null and b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/drawable-xxhdpi/ic_launcher.png differ
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/activity_main.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/activity_main.xml
new file mode 100644
index 00000000..168c9b8c
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/activity_main.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/main.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/main.xml
new file mode 100644
index 00000000..91d048fd
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/layout/main.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/menu/main.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/menu/main.xml
new file mode 100644
index 00000000..c0020282
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/menu/main.xml
@@ -0,0 +1,9 @@
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw600dp/dimens.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw600dp/dimens.xml
new file mode 100644
index 00000000..44f01db7
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw600dp/dimens.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw720dp-land/dimens.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw720dp-land/dimens.xml
new file mode 100644
index 00000000..61e3fa8f
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-sw720dp-land/dimens.xml
@@ -0,0 +1,9 @@
+
+
+
+ 128dp
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v11/styles.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v11/styles.xml
new file mode 100644
index 00000000..3c02242a
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v11/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v14/styles.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v14/styles.xml
new file mode 100644
index 00000000..a91fd037
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values-v14/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/dimens.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/dimens.xml
new file mode 100644
index 00000000..55c1e590
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/dimens.xml
@@ -0,0 +1,7 @@
+
+
+
+ 16dp
+ 16dp
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/strings.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/strings.xml
new file mode 100644
index 00000000..ef7aae79
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/strings.xml
@@ -0,0 +1,8 @@
+
+
+
+ Samples for JavaCv
+ Settings
+ Hello world!
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/styles.xml b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/styles.xml
new file mode 100644
index 00000000..6ce89c7b
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/res/values/styles.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/src/org/bytedeco/javacv/sample/RecordActivity.java b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/src/org/bytedeco/javacv/sample/RecordActivity.java
new file mode 100644
index 00000000..a5ad244c
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/SamplesForJavaCv---Eclipse/src/org/bytedeco/javacv/sample/RecordActivity.java
@@ -0,0 +1,559 @@
+/*
+ * Copyright (C) 2012,2013 Qianliang Zhang, Shawn Van Every, Samuel Audet
+ *
+ * IMPORTANT - Make sure the AndroidManifest.xml file looks like this:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * And the res/layout/main.xml file like this:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+package org.bytedeco.javacv.sample;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.hardware.Camera;
+import android.hardware.Camera.PreviewCallback;
+import android.media.AudioFormat;
+import android.media.AudioRecord;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.PowerManager;
+import android.util.Log;
+import android.view.Display;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import java.io.IOException;
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+import java.nio.ShortBuffer;
+
+import org.bytedeco.javacv.Frame;
+import org.bytedeco.javacv.FFmpegFrameRecorder;
+import org.bytedeco.javacv.R;
+
+public class RecordActivity extends Activity implements OnClickListener {
+
+ private final static String CLASS_LABEL = "RecordActivity";
+ private final static String LOG_TAG = CLASS_LABEL;
+
+ private PowerManager.WakeLock mWakeLock;
+
+ private String ffmpeg_link = "/mnt/sdcard/stream.flv";
+
+ long startTime = 0;
+ boolean recording = false;
+
+ private FFmpegFrameRecorder recorder;
+
+ private boolean isPreviewOn = false;
+
+ private int sampleAudioRateInHz = 44100;
+ private int imageWidth = 320;
+ private int imageHeight = 240;
+ private int frameRate = 30;
+
+ /* audio data getting thread */
+ private AudioRecord audioRecord;
+ private AudioRecordRunnable audioRecordRunnable;
+ private Thread audioThread;
+ volatile boolean runAudioThread = true;
+
+ /* video data getting thread */
+ private Camera cameraDevice;
+ private CameraView cameraView;
+
+ private Frame yuvImage = null;
+
+ /* layout setting */
+ private final int bg_screen_bx = 232;
+ private final int bg_screen_by = 128;
+ private final int bg_screen_width = 700;
+ private final int bg_screen_height = 500;
+ private final int bg_width = 1123;
+ private final int bg_height = 715;
+ private final int live_width = 640;
+ private final int live_height = 480;
+ private int screenWidth, screenHeight;
+ private Button btnRecorderControl;
+
+ /** The number of seconds in the continuous record loop (or 0 to disable loop). */
+ final int RECORD_LENGTH = 3;
+ Frame[] images;
+ long[] timestamps;
+ ShortBuffer[] samples;
+ int imagesIndex, samplesIndex;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+
+ setContentView(R.layout.main);
+
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, CLASS_LABEL);
+ mWakeLock.acquire();
+
+ initLayout();
+ }
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ if (mWakeLock == null) {
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, CLASS_LABEL);
+ mWakeLock.acquire();
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ if (mWakeLock != null) {
+ mWakeLock.release();
+ mWakeLock = null;
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ recording = false;
+
+ if (cameraView != null) {
+ cameraView.stopPreview();
+ }
+
+ if(cameraDevice != null) {
+ cameraDevice.stopPreview();
+ cameraDevice.release();
+ cameraDevice = null;
+ }
+
+ if (mWakeLock != null) {
+ mWakeLock.release();
+ mWakeLock = null;
+ }
+ }
+
+
+ private void initLayout() {
+
+ /* get size of screen */
+ Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
+ screenWidth = display.getWidth();
+ screenHeight = display.getHeight();
+ RelativeLayout.LayoutParams layoutParam = null;
+ LayoutInflater myInflate = null;
+ myInflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ RelativeLayout topLayout = new RelativeLayout(this);
+ setContentView(topLayout);
+ LinearLayout preViewLayout = (LinearLayout) myInflate.inflate(R.layout.main, null);
+ layoutParam = new RelativeLayout.LayoutParams(screenWidth, screenHeight);
+ topLayout.addView(preViewLayout, layoutParam);
+
+ /* add control button: start and stop */
+ btnRecorderControl = (Button) findViewById(R.id.recorder_control);
+ btnRecorderControl.setText("Start");
+ btnRecorderControl.setOnClickListener(this);
+
+ /* add camera view */
+ int display_width_d = (int) (1.0 * bg_screen_width * screenWidth / bg_width);
+ int display_height_d = (int) (1.0 * bg_screen_height * screenHeight / bg_height);
+ int prev_rw, prev_rh;
+ if (1.0 * display_width_d / display_height_d > 1.0 * live_width / live_height) {
+ prev_rh = display_height_d;
+ prev_rw = (int) (1.0 * display_height_d * live_width / live_height);
+ } else {
+ prev_rw = display_width_d;
+ prev_rh = (int) (1.0 * display_width_d * live_height / live_width);
+ }
+ layoutParam = new RelativeLayout.LayoutParams(prev_rw, prev_rh);
+ layoutParam.topMargin = (int) (1.0 * bg_screen_by * screenHeight / bg_height);
+ layoutParam.leftMargin = (int) (1.0 * bg_screen_bx * screenWidth / bg_width);
+
+ cameraDevice = Camera.open();
+ Log.i(LOG_TAG, "cameara open");
+ cameraView = new CameraView(this, cameraDevice);
+ topLayout.addView(cameraView, layoutParam);
+ Log.i(LOG_TAG, "cameara preview start: OK");
+ }
+
+ //---------------------------------------
+ // initialize ffmpeg_recorder
+ //---------------------------------------
+ private void initRecorder() {
+
+ Log.w(LOG_TAG,"init recorder");
+
+ if (RECORD_LENGTH > 0) {
+ imagesIndex = 0;
+ images = new Frame[RECORD_LENGTH * frameRate];
+ timestamps = new long[images.length];
+ for (int i = 0; i < images.length; i++) {
+ images[i] = new Frame(imageWidth, imageHeight, Frame.DEPTH_UBYTE, 2);
+ timestamps[i] = -1;
+ }
+ } else if (yuvImage == null) {
+ yuvImage = new Frame(imageWidth, imageHeight, Frame.DEPTH_UBYTE, 2);
+ Log.i(LOG_TAG, "create yuvImage");
+ }
+
+ Log.i(LOG_TAG, "ffmpeg_url: " + ffmpeg_link);
+ recorder = new FFmpegFrameRecorder(ffmpeg_link, imageWidth, imageHeight, 1);
+ recorder.setFormat("flv");
+ recorder.setSampleRate(sampleAudioRateInHz);
+ // Set in the surface changed method
+ recorder.setFrameRate(frameRate);
+
+ Log.i(LOG_TAG, "recorder initialize success");
+
+ audioRecordRunnable = new AudioRecordRunnable();
+ audioThread = new Thread(audioRecordRunnable);
+ runAudioThread = true;
+ }
+
+ public void startRecording() {
+
+ initRecorder();
+
+ try {
+ recorder.start();
+ startTime = System.currentTimeMillis();
+ recording = true;
+ audioThread.start();
+
+ } catch (FFmpegFrameRecorder.Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void stopRecording() {
+
+ runAudioThread = false;
+ try {
+ audioThread.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ audioRecordRunnable = null;
+ audioThread = null;
+
+ if (recorder != null && recording) {
+ if (RECORD_LENGTH > 0) {
+ Log.v(LOG_TAG,"Writing frames");
+ try {
+
+ int firstIndex = imagesIndex % samples.length;
+ int lastIndex = (imagesIndex - 1) % images.length;
+ if (imagesIndex <= images.length) {
+ firstIndex = 0;
+ lastIndex = imagesIndex - 1;
+ }
+ if ((startTime = timestamps[lastIndex] - RECORD_LENGTH * 1000000L) < 0) {
+ startTime = 0;
+ }
+ if (lastIndex < firstIndex) {
+ lastIndex += images.length;
+ }
+ for (int i = firstIndex; i <= lastIndex; i++) {
+ long t = timestamps[i % timestamps.length] - startTime;
+ if (t >= 0) {
+ if (t > recorder.getTimestamp()) {
+ recorder.setTimestamp(t);
+ }
+ recorder.record(images[i % images.length]);
+ }
+ }
+
+ firstIndex = samplesIndex % samples.length;
+ lastIndex = (samplesIndex - 1) % samples.length;
+ if (samplesIndex <= samples.length) {
+ firstIndex = 0;
+ lastIndex = samplesIndex - 1;
+ }
+ if (lastIndex < firstIndex) {
+ lastIndex += samples.length;
+ }
+ for (int i = firstIndex; i <= lastIndex; i++) {
+ recorder.recordSamples(samples[i % samples.length]);
+ }
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ recording = false;
+ Log.v(LOG_TAG,"Finishing recording, calling stop and release on recorder");
+ try {
+ recorder.stop();
+ recorder.release();
+ } catch (FFmpegFrameRecorder.Exception e) {
+ e.printStackTrace();
+ }
+ recorder = null;
+
+ }
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (recording) {
+ stopRecording();
+ }
+
+ finish();
+
+ return true;
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+
+
+ //---------------------------------------------
+ // audio thread, gets and encodes audio data
+ //---------------------------------------------
+ class AudioRecordRunnable implements Runnable {
+
+ @Override
+ public void run() {
+ android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
+
+ // Audio
+ int bufferSize;
+ ShortBuffer audioData;
+ int bufferReadResult;
+
+ bufferSize = AudioRecord.getMinBufferSize(sampleAudioRateInHz,
+ AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
+ audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleAudioRateInHz,
+ AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
+
+ if (RECORD_LENGTH > 0) {
+ samplesIndex = 0;
+ samples = new ShortBuffer[RECORD_LENGTH * sampleAudioRateInHz * 2 / bufferSize + 1];
+ for (int i = 0; i < samples.length; i++) {
+ samples[i] = ShortBuffer.allocate(bufferSize);
+ }
+ } else {
+ audioData = ShortBuffer.allocate(bufferSize);
+ }
+
+ Log.d(LOG_TAG, "audioRecord.startRecording()");
+ audioRecord.startRecording();
+
+ /* ffmpeg_audio encoding loop */
+ while (runAudioThread) {
+ if (RECORD_LENGTH > 0) {
+ audioData = samples[samplesIndex++ % samples.length];
+ audioData.position(0).limit(0);
+ }
+ //Log.v(LOG_TAG,"recording? " + recording);
+ bufferReadResult = audioRecord.read(audioData.array(), 0, audioData.capacity());
+ audioData.limit(bufferReadResult);
+ if (bufferReadResult > 0) {
+ Log.v(LOG_TAG,"bufferReadResult: " + bufferReadResult);
+ // If "recording" isn't true when start this thread, it never get's set according to this if statement...!!!
+ // Why? Good question...
+ if (recording) {
+ if (RECORD_LENGTH <= 0) try {
+ recorder.recordSamples(audioData);
+ //Log.v(LOG_TAG,"recording " + 1024*i + " to " + 1024*i+1024);
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ Log.v(LOG_TAG,"AudioThread Finished, release audioRecord");
+
+ /* encoding finish, release recorder */
+ if (audioRecord != null) {
+ audioRecord.stop();
+ audioRecord.release();
+ audioRecord = null;
+ Log.v(LOG_TAG,"audioRecord released");
+ }
+ }
+ }
+
+ //---------------------------------------------
+ // camera thread, gets and encodes video data
+ //---------------------------------------------
+ class CameraView extends SurfaceView implements SurfaceHolder.Callback, PreviewCallback {
+
+ private SurfaceHolder mHolder;
+ private Camera mCamera;
+
+ public CameraView(Context context, Camera camera) {
+ super(context);
+ Log.w("camera","camera view");
+ mCamera = camera;
+ mHolder = getHolder();
+ mHolder.addCallback(CameraView.this);
+ mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+ mCamera.setPreviewCallback(CameraView.this);
+ }
+
+ @Override
+ public void surfaceCreated(SurfaceHolder holder) {
+ try {
+ stopPreview();
+ mCamera.setPreviewDisplay(holder);
+ } catch (IOException exception) {
+ mCamera.release();
+ mCamera = null;
+ }
+ }
+
+ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+ Log.v(LOG_TAG,"Setting imageWidth: " + imageWidth + " imageHeight: " + imageHeight + " frameRate: " + frameRate);
+ Camera.Parameters camParams = mCamera.getParameters();
+ camParams.setPreviewSize(imageWidth, imageHeight);
+
+ Log.v(LOG_TAG,"Preview Framerate: " + camParams.getPreviewFrameRate());
+
+ camParams.setPreviewFrameRate(frameRate);
+ mCamera.setParameters(camParams);
+ startPreview();
+ }
+
+ @Override
+ public void surfaceDestroyed(SurfaceHolder holder) {
+ try {
+ mHolder.addCallback(null);
+ mCamera.setPreviewCallback(null);
+ } catch (RuntimeException e) {
+ // The camera has probably just been released, ignore.
+ }
+ }
+
+ public void startPreview() {
+ if (!isPreviewOn && mCamera != null) {
+ isPreviewOn = true;
+ mCamera.startPreview();
+ }
+ }
+
+ public void stopPreview() {
+ if (isPreviewOn && mCamera != null) {
+ isPreviewOn = false;
+ mCamera.stopPreview();
+ }
+ }
+
+ @Override
+ public void onPreviewFrame(byte[] data, Camera camera) {
+ if (audioRecord == null || audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
+ startTime = System.currentTimeMillis();
+ return;
+ }
+ if (RECORD_LENGTH > 0) {
+ int i = imagesIndex++ % images.length;
+ yuvImage = images[i];
+ timestamps[i] = 1000 * (System.currentTimeMillis() - startTime);
+ }
+ /* get video data */
+ if (yuvImage != null && recording) {
+ ((ByteBuffer)yuvImage.image[0].position(0)).put(data);
+
+ if (RECORD_LENGTH <= 0) try {
+ Log.v(LOG_TAG,"Writing Frame");
+ long t = 1000 * (System.currentTimeMillis() - startTime);
+ if (t > recorder.getTimestamp()) {
+ recorder.setTimestamp(t);
+ }
+ recorder.record(yuvImage);
+ } catch (FFmpegFrameRecorder.Exception e) {
+ Log.v(LOG_TAG,e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (!recording) {
+ startRecording();
+ Log.w(LOG_TAG, "Start Button Pushed");
+ btnRecorderControl.setText("Stop");
+ } else {
+ // This will trigger the audio recording loop to stop and then set isRecorderStart = false;
+ stopRecording();
+ Log.w(LOG_TAG, "Stop Button Pushed");
+ btnRecorderControl.setText("Start");
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/AndroidSamples/samplesForEclipse/readme.md b/samples/AndroidSamples/samplesForEclipse/readme.md
new file mode 100644
index 00000000..6bd2d6eb
--- /dev/null
+++ b/samples/AndroidSamples/samplesForEclipse/readme.md
@@ -0,0 +1,27 @@
+## Classify the mixed and Cofused android samples
+
+**1. target**
+
+ make those android samples tidy and easy to get and use。
+
+
+**2. to-do**
+
+1. classify those samples
+2. provide pack-to-use projects for each sample.
+3. provide 2 versions [ AS and Eclipse ] for android samples
+
+**3. Samples Classification**
+
+1. RecorderActivity
+2. FacePreview
+
+**4. RecorderActivity--Eclipse**
+
+1. to set up a eclipse project,you need to put the `openffmpeg.jar`、`javacpp.jar`、`javacv.jar`、`opencv.jar`
+into the dir `/libs`.and extract the jars thar names like`xx-platform` into `/libs/armeabi`. This is weird. But Samuel Audet said these jar files which name like `xx-platform` and `xx` can appear in one project at the same time.
+
+**5. RecorderActivity--Android studio**
+
+to-do
+